@nodetool-ai/runtime 0.7.0-rc.23 → 0.8.1

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 (665) hide show
  1. package/README.md +29 -0
  2. package/dist/.nodetool-build-stamp +1 -0
  3. package/dist/agent-memory.d.ts +118 -0
  4. package/dist/agent-memory.d.ts.map +1 -0
  5. package/dist/agent-memory.js +186 -0
  6. package/dist/agent-memory.js.map +1 -0
  7. package/dist/async-local-storage.d.ts +20 -0
  8. package/dist/async-local-storage.d.ts.map +1 -0
  9. package/dist/async-local-storage.js +28 -0
  10. package/dist/async-local-storage.js.map +1 -0
  11. package/dist/blender-executor.d.ts +93 -0
  12. package/dist/blender-executor.d.ts.map +1 -0
  13. package/dist/blender-executor.js +294 -0
  14. package/dist/blender-executor.js.map +1 -0
  15. package/dist/comfy-executor.d.ts +23 -1
  16. package/dist/comfy-executor.d.ts.map +1 -1
  17. package/dist/comfy-executor.js +234 -55
  18. package/dist/comfy-executor.js.map +1 -1
  19. package/dist/context-packer.d.ts +1 -1
  20. package/dist/context-packer.d.ts.map +1 -1
  21. package/dist/context-packer.js +23 -25
  22. package/dist/context-packer.js.map +1 -1
  23. package/dist/context.d.ts +954 -127
  24. package/dist/context.d.ts.map +1 -1
  25. package/dist/context.js +2424 -513
  26. package/dist/context.js.map +1 -1
  27. package/dist/cost-reconciler.d.ts +32 -0
  28. package/dist/cost-reconciler.d.ts.map +1 -0
  29. package/dist/cost-reconciler.js +21 -0
  30. package/dist/cost-reconciler.js.map +1 -0
  31. package/dist/entities.d.ts +33 -0
  32. package/dist/entities.d.ts.map +1 -0
  33. package/dist/entities.js +43 -0
  34. package/dist/entities.js.map +1 -0
  35. package/dist/external-media-fetch.d.ts +29 -0
  36. package/dist/external-media-fetch.d.ts.map +1 -0
  37. package/dist/external-media-fetch.js +38 -0
  38. package/dist/external-media-fetch.js.map +1 -0
  39. package/dist/generation-receipt.d.ts +86 -0
  40. package/dist/generation-receipt.d.ts.map +1 -0
  41. package/dist/generation-receipt.js +137 -0
  42. package/dist/generation-receipt.js.map +1 -0
  43. package/dist/generation-registry.d.ts +67 -0
  44. package/dist/generation-registry.d.ts.map +1 -0
  45. package/dist/generation-registry.js +126 -0
  46. package/dist/generation-registry.js.map +1 -0
  47. package/dist/google/client.d.ts +196 -0
  48. package/dist/google/client.d.ts.map +1 -0
  49. package/dist/google/client.js +396 -0
  50. package/dist/google/client.js.map +1 -0
  51. package/dist/google/index.d.ts +3 -0
  52. package/dist/google/index.d.ts.map +1 -0
  53. package/dist/google/index.js +3 -0
  54. package/dist/google/index.js.map +1 -0
  55. package/dist/google/token.d.ts +15 -0
  56. package/dist/google/token.d.ts.map +1 -0
  57. package/dist/google/token.js +24 -0
  58. package/dist/google/token.js.map +1 -0
  59. package/dist/host-binaries.d.ts +106 -0
  60. package/dist/host-binaries.d.ts.map +1 -0
  61. package/dist/host-binaries.js +344 -0
  62. package/dist/host-binaries.js.map +1 -0
  63. package/dist/image-codec.d.ts +74 -0
  64. package/dist/image-codec.d.ts.map +1 -0
  65. package/dist/image-codec.js +273 -0
  66. package/dist/image-codec.js.map +1 -0
  67. package/dist/index.d.ts +56 -6
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +43 -4
  70. package/dist/index.js.map +1 -1
  71. package/dist/invocation-account.d.ts +43 -0
  72. package/dist/invocation-account.d.ts.map +1 -0
  73. package/dist/invocation-account.js +60 -0
  74. package/dist/invocation-account.js.map +1 -0
  75. package/dist/media-ref-bytes.d.ts +19 -0
  76. package/dist/media-ref-bytes.d.ts.map +1 -0
  77. package/dist/media-ref-bytes.js +181 -0
  78. package/dist/media-ref-bytes.js.map +1 -0
  79. package/dist/node-executor.d.ts +113 -2
  80. package/dist/node-executor.d.ts.map +1 -1
  81. package/dist/permission-gate.d.ts +152 -0
  82. package/dist/permission-gate.d.ts.map +1 -0
  83. package/dist/permission-gate.js +87 -0
  84. package/dist/permission-gate.js.map +1 -0
  85. package/dist/prefixed-storage-adapter.d.ts +33 -0
  86. package/dist/prefixed-storage-adapter.d.ts.map +1 -0
  87. package/dist/prefixed-storage-adapter.js +70 -0
  88. package/dist/prefixed-storage-adapter.js.map +1 -0
  89. package/dist/prompt-asset-refs.d.ts +222 -0
  90. package/dist/prompt-asset-refs.d.ts.map +1 -0
  91. package/dist/prompt-asset-refs.js +751 -0
  92. package/dist/prompt-asset-refs.js.map +1 -0
  93. package/dist/provider-cache.d.ts +3 -0
  94. package/dist/provider-cache.d.ts.map +1 -0
  95. package/dist/provider-cache.js +8 -0
  96. package/dist/provider-cache.js.map +1 -0
  97. package/dist/providers/aki-provider.d.ts +33 -10
  98. package/dist/providers/aki-provider.d.ts.map +1 -1
  99. package/dist/providers/aki-provider.js +84 -77
  100. package/dist/providers/aki-provider.js.map +1 -1
  101. package/dist/providers/alibaba-provider.d.ts +39 -0
  102. package/dist/providers/alibaba-provider.d.ts.map +1 -0
  103. package/dist/providers/alibaba-provider.js +86 -0
  104. package/dist/providers/alibaba-provider.js.map +1 -0
  105. package/dist/providers/anthropic-provider.d.ts +52 -3
  106. package/dist/providers/anthropic-provider.d.ts.map +1 -1
  107. package/dist/providers/anthropic-provider.js +1020 -338
  108. package/dist/providers/anthropic-provider.js.map +1 -1
  109. package/dist/providers/atlascloud-provider.d.ts +101 -0
  110. package/dist/providers/atlascloud-provider.d.ts.map +1 -0
  111. package/dist/providers/atlascloud-provider.js +1009 -0
  112. package/dist/providers/atlascloud-provider.js.map +1 -0
  113. package/dist/providers/atlascloud-transport.d.ts +100 -0
  114. package/dist/providers/atlascloud-transport.d.ts.map +1 -0
  115. package/dist/providers/atlascloud-transport.js +364 -0
  116. package/dist/providers/atlascloud-transport.js.map +1 -0
  117. package/dist/providers/atlascloud-webhook-registry.d.ts +35 -0
  118. package/dist/providers/atlascloud-webhook-registry.d.ts.map +1 -0
  119. package/dist/providers/atlascloud-webhook-registry.js +104 -0
  120. package/dist/providers/atlascloud-webhook-registry.js.map +1 -0
  121. package/dist/providers/audio-mime.d.ts +11 -0
  122. package/dist/providers/audio-mime.d.ts.map +1 -0
  123. package/dist/providers/audio-mime.js +46 -0
  124. package/dist/providers/audio-mime.js.map +1 -0
  125. package/dist/providers/base-provider.d.ts +481 -24
  126. package/dist/providers/base-provider.d.ts.map +1 -1
  127. package/dist/providers/base-provider.js +1259 -42
  128. package/dist/providers/base-provider.js.map +1 -1
  129. package/dist/providers/cassette-provider.d.ts +217 -0
  130. package/dist/providers/cassette-provider.d.ts.map +1 -0
  131. package/dist/providers/cassette-provider.js +502 -0
  132. package/dist/providers/cassette-provider.js.map +1 -0
  133. package/dist/providers/cerebras-provider.d.ts +6 -12
  134. package/dist/providers/cerebras-provider.d.ts.map +1 -1
  135. package/dist/providers/cerebras-provider.js +8 -33
  136. package/dist/providers/cerebras-provider.js.map +1 -1
  137. package/dist/providers/claude-agent-provider.d.ts +131 -68
  138. package/dist/providers/claude-agent-provider.d.ts.map +1 -1
  139. package/dist/providers/claude-agent-provider.js +1095 -515
  140. package/dist/providers/claude-agent-provider.js.map +1 -1
  141. package/dist/providers/codex-provider.d.ts +82 -0
  142. package/dist/providers/codex-provider.d.ts.map +1 -0
  143. package/dist/providers/codex-provider.js +492 -0
  144. package/dist/providers/codex-provider.js.map +1 -0
  145. package/dist/providers/cohere-provider.d.ts +5 -2
  146. package/dist/providers/cohere-provider.d.ts.map +1 -1
  147. package/dist/providers/cohere-provider.js +9 -2
  148. package/dist/providers/cohere-provider.js.map +1 -1
  149. package/dist/providers/comfy-cloud-provider.d.ts +30 -0
  150. package/dist/providers/comfy-cloud-provider.d.ts.map +1 -0
  151. package/dist/providers/comfy-cloud-provider.js +42 -0
  152. package/dist/providers/comfy-cloud-provider.js.map +1 -0
  153. package/dist/providers/content-filter.d.ts +46 -0
  154. package/dist/providers/content-filter.d.ts.map +1 -0
  155. package/dist/providers/content-filter.js +92 -0
  156. package/dist/providers/content-filter.js.map +1 -0
  157. package/dist/providers/context-exceeded.d.ts +37 -0
  158. package/dist/providers/context-exceeded.d.ts.map +1 -0
  159. package/dist/providers/context-exceeded.js +114 -0
  160. package/dist/providers/context-exceeded.js.map +1 -0
  161. package/dist/providers/context-window.d.ts +44 -0
  162. package/dist/providers/context-window.d.ts.map +1 -0
  163. package/dist/providers/context-window.js +145 -0
  164. package/dist/providers/context-window.js.map +1 -0
  165. package/dist/providers/contract/index.d.ts +4 -0
  166. package/dist/providers/contract/index.d.ts.map +1 -0
  167. package/dist/providers/contract/index.js +4 -0
  168. package/dist/providers/contract/index.js.map +1 -0
  169. package/dist/providers/contract/probe-manifest.d.ts +75 -0
  170. package/dist/providers/contract/probe-manifest.d.ts.map +1 -0
  171. package/dist/providers/contract/probe-manifest.js +379 -0
  172. package/dist/providers/contract/probe-manifest.js.map +1 -0
  173. package/dist/providers/contract/probe-runner.d.ts +57 -0
  174. package/dist/providers/contract/probe-runner.d.ts.map +1 -0
  175. package/dist/providers/contract/probe-runner.js +180 -0
  176. package/dist/providers/contract/probe-runner.js.map +1 -0
  177. package/dist/providers/contract/redact.d.ts +29 -0
  178. package/dist/providers/contract/redact.d.ts.map +1 -0
  179. package/dist/providers/contract/redact.js +113 -0
  180. package/dist/providers/contract/redact.js.map +1 -0
  181. package/dist/providers/core-tools.d.ts +74 -0
  182. package/dist/providers/core-tools.d.ts.map +1 -0
  183. package/dist/providers/core-tools.js +127 -0
  184. package/dist/providers/core-tools.js.map +1 -0
  185. package/dist/providers/cost-calculator.d.ts +69 -50
  186. package/dist/providers/cost-calculator.d.ts.map +1 -1
  187. package/dist/providers/cost-calculator.js +207 -397
  188. package/dist/providers/cost-calculator.js.map +1 -1
  189. package/dist/providers/credential-check.d.ts +45 -0
  190. package/dist/providers/credential-check.d.ts.map +1 -0
  191. package/dist/providers/credential-check.js +159 -0
  192. package/dist/providers/credential-check.js.map +1 -0
  193. package/dist/providers/custom-model-kinds.d.ts +33 -0
  194. package/dist/providers/custom-model-kinds.d.ts.map +1 -0
  195. package/dist/providers/custom-model-kinds.js +96 -0
  196. package/dist/providers/custom-model-kinds.js.map +1 -0
  197. package/dist/providers/custom-openai-provider.d.ts +81 -0
  198. package/dist/providers/custom-openai-provider.d.ts.map +1 -0
  199. package/dist/providers/custom-openai-provider.js +182 -0
  200. package/dist/providers/custom-openai-provider.js.map +1 -0
  201. package/dist/providers/custom-provider-registry.d.ts +19 -0
  202. package/dist/providers/custom-provider-registry.d.ts.map +1 -0
  203. package/dist/providers/custom-provider-registry.js +52 -0
  204. package/dist/providers/custom-provider-registry.js.map +1 -0
  205. package/dist/providers/deepseek-provider.d.ts +8 -14
  206. package/dist/providers/deepseek-provider.d.ts.map +1 -1
  207. package/dist/providers/deepseek-provider.js +6 -35
  208. package/dist/providers/deepseek-provider.js.map +1 -1
  209. package/dist/providers/defaults.d.ts +12 -0
  210. package/dist/providers/defaults.d.ts.map +1 -0
  211. package/dist/providers/defaults.js +12 -0
  212. package/dist/providers/defaults.js.map +1 -0
  213. package/dist/providers/elevenlabs-provider.d.ts +49 -0
  214. package/dist/providers/elevenlabs-provider.d.ts.map +1 -0
  215. package/dist/providers/elevenlabs-provider.js +142 -0
  216. package/dist/providers/elevenlabs-provider.js.map +1 -0
  217. package/dist/providers/entity-references.d.ts +31 -0
  218. package/dist/providers/entity-references.d.ts.map +1 -0
  219. package/dist/providers/entity-references.js +113 -0
  220. package/dist/providers/entity-references.js.map +1 -0
  221. package/dist/providers/evolink-provider.d.ts +38 -0
  222. package/dist/providers/evolink-provider.d.ts.map +1 -0
  223. package/dist/providers/evolink-provider.js +304 -0
  224. package/dist/providers/evolink-provider.js.map +1 -0
  225. package/dist/providers/fake-provider.d.ts +72 -1
  226. package/dist/providers/fake-provider.d.ts.map +1 -1
  227. package/dist/providers/fake-provider.js +203 -1
  228. package/dist/providers/fake-provider.js.map +1 -1
  229. package/dist/providers/fal-generations.d.ts +106 -0
  230. package/dist/providers/fal-generations.d.ts.map +1 -0
  231. package/dist/providers/fal-generations.js +286 -0
  232. package/dist/providers/fal-generations.js.map +1 -0
  233. package/dist/providers/fal-provider.d.ts +171 -7
  234. package/dist/providers/fal-provider.d.ts.map +1 -1
  235. package/dist/providers/fal-provider.js +1369 -64
  236. package/dist/providers/fal-provider.js.map +1 -1
  237. package/dist/providers/fal-queue.d.ts +47 -0
  238. package/dist/providers/fal-queue.d.ts.map +1 -0
  239. package/dist/providers/fal-queue.js +231 -0
  240. package/dist/providers/fal-queue.js.map +1 -0
  241. package/dist/providers/gemini-provider.d.ts +148 -8
  242. package/dist/providers/gemini-provider.d.ts.map +1 -1
  243. package/dist/providers/gemini-provider.js +1500 -316
  244. package/dist/providers/gemini-provider.js.map +1 -1
  245. package/dist/providers/gmi-provider.d.ts +21 -0
  246. package/dist/providers/gmi-provider.d.ts.map +1 -0
  247. package/dist/providers/gmi-provider.js +34 -0
  248. package/dist/providers/gmi-provider.js.map +1 -0
  249. package/dist/providers/gpt-image-size.d.ts +3 -0
  250. package/dist/providers/gpt-image-size.d.ts.map +1 -0
  251. package/dist/providers/gpt-image-size.js +37 -0
  252. package/dist/providers/gpt-image-size.js.map +1 -0
  253. package/dist/providers/groq-provider.d.ts +9 -12
  254. package/dist/providers/groq-provider.d.ts.map +1 -1
  255. package/dist/providers/groq-provider.js +19 -33
  256. package/dist/providers/groq-provider.js.map +1 -1
  257. package/dist/providers/groq-request.d.ts +38 -0
  258. package/dist/providers/groq-request.d.ts.map +1 -0
  259. package/dist/providers/groq-request.js +138 -0
  260. package/dist/providers/groq-request.js.map +1 -0
  261. package/dist/providers/higgsfield-provider.d.ts +30 -0
  262. package/dist/providers/higgsfield-provider.d.ts.map +1 -0
  263. package/dist/providers/higgsfield-provider.js +131 -0
  264. package/dist/providers/higgsfield-provider.js.map +1 -0
  265. package/dist/providers/higgsfield-transport.d.ts +106 -0
  266. package/dist/providers/higgsfield-transport.d.ts.map +1 -0
  267. package/dist/providers/higgsfield-transport.js +182 -0
  268. package/dist/providers/higgsfield-transport.js.map +1 -0
  269. package/dist/providers/http-transport.d.ts +74 -0
  270. package/dist/providers/http-transport.d.ts.map +1 -0
  271. package/dist/providers/http-transport.js +152 -0
  272. package/dist/providers/http-transport.js.map +1 -0
  273. package/dist/providers/huggingface-provider.d.ts +71 -3
  274. package/dist/providers/huggingface-provider.d.ts.map +1 -1
  275. package/dist/providers/huggingface-provider.js +230 -34
  276. package/dist/providers/huggingface-provider.js.map +1 -1
  277. package/dist/providers/image-mime.d.ts +39 -0
  278. package/dist/providers/image-mime.d.ts.map +1 -0
  279. package/dist/providers/image-mime.js +111 -0
  280. package/dist/providers/image-mime.js.map +1 -0
  281. package/dist/providers/image-ref.d.ts +21 -0
  282. package/dist/providers/image-ref.d.ts.map +1 -0
  283. package/dist/providers/image-ref.js +44 -0
  284. package/dist/providers/image-ref.js.map +1 -0
  285. package/dist/providers/index.d.ts +84 -8
  286. package/dist/providers/index.d.ts.map +1 -1
  287. package/dist/providers/index.js +239 -56
  288. package/dist/providers/index.js.map +1 -1
  289. package/dist/providers/jina-provider.d.ts +10 -2
  290. package/dist/providers/jina-provider.d.ts.map +1 -1
  291. package/dist/providers/jina-provider.js +16 -7
  292. package/dist/providers/jina-provider.js.map +1 -1
  293. package/dist/providers/kie-provider.d.ts +170 -9
  294. package/dist/providers/kie-provider.d.ts.map +1 -1
  295. package/dist/providers/kie-provider.js +1176 -228
  296. package/dist/providers/kie-provider.js.map +1 -1
  297. package/dist/providers/kie-webhook-registry.d.ts +28 -0
  298. package/dist/providers/kie-webhook-registry.d.ts.map +1 -0
  299. package/dist/providers/kie-webhook-registry.js +91 -0
  300. package/dist/providers/kie-webhook-registry.js.map +1 -0
  301. package/dist/providers/llama-provider.d.ts +21 -37
  302. package/dist/providers/llama-provider.d.ts.map +1 -1
  303. package/dist/providers/llama-provider.js +43 -354
  304. package/dist/providers/llama-provider.js.map +1 -1
  305. package/dist/providers/lmstudio-provider.d.ts +4 -7
  306. package/dist/providers/lmstudio-provider.d.ts.map +1 -1
  307. package/dist/providers/lmstudio-provider.js +24 -15
  308. package/dist/providers/lmstudio-provider.js.map +1 -1
  309. package/dist/providers/manifest-models.d.ts +341 -1
  310. package/dist/providers/manifest-models.d.ts.map +1 -1
  311. package/dist/providers/manifest-models.js +1106 -22
  312. package/dist/providers/manifest-models.js.map +1 -1
  313. package/dist/providers/media-mime.d.ts +14 -0
  314. package/dist/providers/media-mime.d.ts.map +1 -0
  315. package/dist/providers/media-mime.js +35 -0
  316. package/dist/providers/media-mime.js.map +1 -0
  317. package/dist/providers/meshy-provider.d.ts +14 -1
  318. package/dist/providers/meshy-provider.d.ts.map +1 -1
  319. package/dist/providers/meshy-provider.js +76 -46
  320. package/dist/providers/meshy-provider.js.map +1 -1
  321. package/dist/providers/meta-provider.d.ts +22 -0
  322. package/dist/providers/meta-provider.d.ts.map +1 -0
  323. package/dist/providers/meta-provider.js +54 -0
  324. package/dist/providers/meta-provider.js.map +1 -0
  325. package/dist/providers/minimax-provider.d.ts +25 -18
  326. package/dist/providers/minimax-provider.d.ts.map +1 -1
  327. package/dist/providers/minimax-provider.js +211 -72
  328. package/dist/providers/minimax-provider.js.map +1 -1
  329. package/dist/providers/mistral-provider.d.ts +6 -12
  330. package/dist/providers/mistral-provider.d.ts.map +1 -1
  331. package/dist/providers/mistral-provider.js +10 -34
  332. package/dist/providers/mistral-provider.js.map +1 -1
  333. package/dist/providers/moonshot-provider.d.ts +11 -15
  334. package/dist/providers/moonshot-provider.d.ts.map +1 -1
  335. package/dist/providers/moonshot-provider.js +33 -23
  336. package/dist/providers/moonshot-provider.js.map +1 -1
  337. package/dist/providers/node-llama-cpp-provider.d.ts +98 -0
  338. package/dist/providers/node-llama-cpp-provider.d.ts.map +1 -0
  339. package/dist/providers/node-llama-cpp-provider.js +479 -0
  340. package/dist/providers/node-llama-cpp-provider.js.map +1 -0
  341. package/dist/providers/nodetool-provider.d.ts +49 -0
  342. package/dist/providers/nodetool-provider.d.ts.map +1 -0
  343. package/dist/providers/nodetool-provider.js +224 -0
  344. package/dist/providers/nodetool-provider.js.map +1 -0
  345. package/dist/providers/oauth/browser-launcher.d.ts +23 -0
  346. package/dist/providers/oauth/browser-launcher.d.ts.map +1 -0
  347. package/dist/providers/oauth/browser-launcher.js +45 -0
  348. package/dist/providers/oauth/browser-launcher.js.map +1 -0
  349. package/dist/providers/oauth/claude-code-credentials.d.ts +74 -0
  350. package/dist/providers/oauth/claude-code-credentials.d.ts.map +1 -0
  351. package/dist/providers/oauth/claude-code-credentials.js +133 -0
  352. package/dist/providers/oauth/claude-code-credentials.js.map +1 -0
  353. package/dist/providers/oauth/claude-code-login.d.ts +124 -0
  354. package/dist/providers/oauth/claude-code-login.d.ts.map +1 -0
  355. package/dist/providers/oauth/claude-code-login.js +230 -0
  356. package/dist/providers/oauth/claude-code-login.js.map +1 -0
  357. package/dist/providers/oauth/claude-code-oauth-client.d.ts +111 -0
  358. package/dist/providers/oauth/claude-code-oauth-client.d.ts.map +1 -0
  359. package/dist/providers/oauth/claude-code-oauth-client.js +207 -0
  360. package/dist/providers/oauth/claude-code-oauth-client.js.map +1 -0
  361. package/dist/providers/oauth/errors.d.ts +54 -0
  362. package/dist/providers/oauth/errors.d.ts.map +1 -0
  363. package/dist/providers/oauth/errors.js +79 -0
  364. package/dist/providers/oauth/errors.js.map +1 -0
  365. package/dist/providers/oauth/index.d.ts +105 -0
  366. package/dist/providers/oauth/index.d.ts.map +1 -0
  367. package/dist/providers/oauth/index.js +167 -0
  368. package/dist/providers/oauth/index.js.map +1 -0
  369. package/dist/providers/oauth/jwt-claims.d.ts +23 -0
  370. package/dist/providers/oauth/jwt-claims.d.ts.map +1 -0
  371. package/dist/providers/oauth/jwt-claims.js +67 -0
  372. package/dist/providers/oauth/jwt-claims.js.map +1 -0
  373. package/dist/providers/oauth/local-callback-server.d.ts +60 -0
  374. package/dist/providers/oauth/local-callback-server.d.ts.map +1 -0
  375. package/dist/providers/oauth/local-callback-server.js +148 -0
  376. package/dist/providers/oauth/local-callback-server.js.map +1 -0
  377. package/dist/providers/oauth/oauth-client.d.ts +55 -0
  378. package/dist/providers/oauth/oauth-client.d.ts.map +1 -0
  379. package/dist/providers/oauth/oauth-client.js +161 -0
  380. package/dist/providers/oauth/oauth-client.js.map +1 -0
  381. package/dist/providers/oauth/openai-oauth-provider.d.ts +129 -0
  382. package/dist/providers/oauth/openai-oauth-provider.d.ts.map +1 -0
  383. package/dist/providers/oauth/openai-oauth-provider.js +265 -0
  384. package/dist/providers/oauth/openai-oauth-provider.js.map +1 -0
  385. package/dist/providers/oauth/pkce-helper.d.ts +43 -0
  386. package/dist/providers/oauth/pkce-helper.d.ts.map +1 -0
  387. package/dist/providers/oauth/pkce-helper.js +57 -0
  388. package/dist/providers/oauth/pkce-helper.js.map +1 -0
  389. package/dist/providers/oauth/redaction.d.ts +22 -0
  390. package/dist/providers/oauth/redaction.d.ts.map +1 -0
  391. package/dist/providers/oauth/redaction.js +59 -0
  392. package/dist/providers/oauth/redaction.js.map +1 -0
  393. package/dist/providers/oauth/secure-credential-store.d.ts +67 -0
  394. package/dist/providers/oauth/secure-credential-store.d.ts.map +1 -0
  395. package/dist/providers/oauth/secure-credential-store.js +73 -0
  396. package/dist/providers/oauth/secure-credential-store.js.map +1 -0
  397. package/dist/providers/oauth/token-store.d.ts +53 -0
  398. package/dist/providers/oauth/token-store.d.ts.map +1 -0
  399. package/dist/providers/oauth/token-store.js +78 -0
  400. package/dist/providers/oauth/token-store.js.map +1 -0
  401. package/dist/providers/oauth/types.d.ts +64 -0
  402. package/dist/providers/oauth/types.d.ts.map +1 -0
  403. package/dist/providers/oauth/types.js +12 -0
  404. package/dist/providers/oauth/types.js.map +1 -0
  405. package/dist/providers/object-tracking.d.ts +47 -0
  406. package/dist/providers/object-tracking.d.ts.map +1 -0
  407. package/dist/providers/object-tracking.js +46 -0
  408. package/dist/providers/object-tracking.js.map +1 -0
  409. package/dist/providers/offline-model-index.d.ts +20 -0
  410. package/dist/providers/offline-model-index.d.ts.map +1 -0
  411. package/dist/providers/offline-model-index.js +112 -0
  412. package/dist/providers/offline-model-index.js.map +1 -0
  413. package/dist/providers/ollama-provider.d.ts +28 -1
  414. package/dist/providers/ollama-provider.d.ts.map +1 -1
  415. package/dist/providers/ollama-provider.js +193 -43
  416. package/dist/providers/ollama-provider.js.map +1 -1
  417. package/dist/providers/openai-compat/client.d.ts +57 -0
  418. package/dist/providers/openai-compat/client.d.ts.map +1 -0
  419. package/dist/providers/openai-compat/client.js +157 -0
  420. package/dist/providers/openai-compat/client.js.map +1 -0
  421. package/dist/providers/openai-compat/decode.d.ts +36 -0
  422. package/dist/providers/openai-compat/decode.d.ts.map +1 -0
  423. package/dist/providers/openai-compat/decode.js +55 -0
  424. package/dist/providers/openai-compat/decode.js.map +1 -0
  425. package/dist/providers/openai-compat/errors.d.ts +54 -0
  426. package/dist/providers/openai-compat/errors.d.ts.map +1 -0
  427. package/dist/providers/openai-compat/errors.js +144 -0
  428. package/dist/providers/openai-compat/errors.js.map +1 -0
  429. package/dist/providers/openai-compat/index.d.ts +8 -0
  430. package/dist/providers/openai-compat/index.d.ts.map +1 -0
  431. package/dist/providers/openai-compat/index.js +5 -0
  432. package/dist/providers/openai-compat/index.js.map +1 -0
  433. package/dist/providers/openai-compat/sse.d.ts +14 -0
  434. package/dist/providers/openai-compat/sse.d.ts.map +1 -0
  435. package/dist/providers/openai-compat/sse.js +69 -0
  436. package/dist/providers/openai-compat/sse.js.map +1 -0
  437. package/dist/providers/openai-compat/types.d.ts +75 -0
  438. package/dist/providers/openai-compat/types.d.ts.map +1 -0
  439. package/dist/providers/openai-compat/types.js +9 -0
  440. package/dist/providers/openai-compat/types.js.map +1 -0
  441. package/dist/providers/openai-compat-provider.d.ts +90 -0
  442. package/dist/providers/openai-compat-provider.d.ts.map +1 -0
  443. package/dist/providers/openai-compat-provider.js +282 -0
  444. package/dist/providers/openai-compat-provider.js.map +1 -0
  445. package/dist/providers/openai-provider.d.ts +89 -26
  446. package/dist/providers/openai-provider.d.ts.map +1 -1
  447. package/dist/providers/openai-provider.js +990 -105
  448. package/dist/providers/openai-provider.js.map +1 -1
  449. package/dist/providers/openrouter-provider.d.ts +6 -12
  450. package/dist/providers/openrouter-provider.d.ts.map +1 -1
  451. package/dist/providers/openrouter-provider.js +24 -53
  452. package/dist/providers/openrouter-provider.js.map +1 -1
  453. package/dist/providers/provider-call-failure.d.ts +39 -0
  454. package/dist/providers/provider-call-failure.d.ts.map +1 -0
  455. package/dist/providers/provider-call-failure.js +132 -0
  456. package/dist/providers/provider-call-failure.js.map +1 -0
  457. package/dist/providers/provider-error.d.ts +59 -0
  458. package/dist/providers/provider-error.d.ts.map +1 -0
  459. package/dist/providers/provider-error.js +165 -0
  460. package/dist/providers/provider-error.js.map +1 -0
  461. package/dist/providers/provider-generations.d.ts +99 -0
  462. package/dist/providers/provider-generations.d.ts.map +1 -0
  463. package/dist/providers/provider-generations.js +71 -0
  464. package/dist/providers/provider-generations.js.map +1 -0
  465. package/dist/providers/provider-queue.d.ts +62 -0
  466. package/dist/providers/provider-queue.d.ts.map +1 -0
  467. package/dist/providers/provider-queue.js +28 -0
  468. package/dist/providers/provider-queue.js.map +1 -0
  469. package/dist/providers/provider-registry.d.ts +33 -14
  470. package/dist/providers/provider-registry.d.ts.map +1 -1
  471. package/dist/providers/provider-registry.js +85 -68
  472. package/dist/providers/provider-registry.js.map +1 -1
  473. package/dist/providers/provider-request-log.d.ts +53 -0
  474. package/dist/providers/provider-request-log.d.ts.map +1 -0
  475. package/dist/providers/provider-request-log.js +157 -0
  476. package/dist/providers/provider-request-log.js.map +1 -0
  477. package/dist/providers/provider-session.d.ts +3 -0
  478. package/dist/providers/provider-session.d.ts.map +1 -0
  479. package/dist/providers/provider-session.js +10 -0
  480. package/dist/providers/provider-session.js.map +1 -0
  481. package/dist/providers/provider-transport.d.ts +11 -0
  482. package/dist/providers/provider-transport.d.ts.map +1 -0
  483. package/dist/providers/provider-transport.js +11 -0
  484. package/dist/providers/provider-transport.js.map +1 -0
  485. package/dist/providers/python-provider.d.ts +20 -12
  486. package/dist/providers/python-provider.d.ts.map +1 -1
  487. package/dist/providers/python-provider.js +185 -25
  488. package/dist/providers/python-provider.js.map +1 -1
  489. package/dist/providers/replicate-provider.d.ts +89 -7
  490. package/dist/providers/replicate-provider.d.ts.map +1 -1
  491. package/dist/providers/replicate-provider.js +801 -65
  492. package/dist/providers/replicate-provider.js.map +1 -1
  493. package/dist/providers/replicate-retry.d.ts +30 -0
  494. package/dist/providers/replicate-retry.d.ts.map +1 -0
  495. package/dist/providers/replicate-retry.js +97 -0
  496. package/dist/providers/replicate-retry.js.map +1 -0
  497. package/dist/providers/responses-api.d.ts +27 -0
  498. package/dist/providers/responses-api.d.ts.map +1 -0
  499. package/dist/providers/responses-api.js +297 -0
  500. package/dist/providers/responses-api.js.map +1 -0
  501. package/dist/providers/reve-provider.d.ts +45 -0
  502. package/dist/providers/reve-provider.d.ts.map +1 -0
  503. package/dist/providers/reve-provider.js +159 -0
  504. package/dist/providers/reve-provider.js.map +1 -0
  505. package/dist/providers/rodin-provider.d.ts +23 -1
  506. package/dist/providers/rodin-provider.d.ts.map +1 -1
  507. package/dist/providers/rodin-provider.js +89 -51
  508. package/dist/providers/rodin-provider.js.map +1 -1
  509. package/dist/providers/safe-url.d.ts +70 -0
  510. package/dist/providers/safe-url.d.ts.map +1 -0
  511. package/dist/providers/safe-url.js +277 -0
  512. package/dist/providers/safe-url.js.map +1 -0
  513. package/dist/providers/scripted-provider.d.ts +9 -0
  514. package/dist/providers/scripted-provider.d.ts.map +1 -1
  515. package/dist/providers/scripted-provider.js +86 -10
  516. package/dist/providers/scripted-provider.js.map +1 -1
  517. package/dist/providers/structured-output.d.ts +42 -0
  518. package/dist/providers/structured-output.d.ts.map +1 -0
  519. package/dist/providers/structured-output.js +83 -0
  520. package/dist/providers/structured-output.js.map +1 -0
  521. package/dist/providers/together-provider.d.ts +19 -16
  522. package/dist/providers/together-provider.d.ts.map +1 -1
  523. package/dist/providers/together-provider.js +103 -225
  524. package/dist/providers/together-provider.js.map +1 -1
  525. package/dist/providers/topaz-provider.d.ts +44 -0
  526. package/dist/providers/topaz-provider.d.ts.map +1 -0
  527. package/dist/providers/topaz-provider.js +239 -0
  528. package/dist/providers/topaz-provider.js.map +1 -0
  529. package/dist/providers/types.d.ts +603 -4
  530. package/dist/providers/types.d.ts.map +1 -1
  531. package/dist/providers/types.js +81 -1
  532. package/dist/providers/types.js.map +1 -1
  533. package/dist/providers/useapi-provider.d.ts +27 -0
  534. package/dist/providers/useapi-provider.d.ts.map +1 -0
  535. package/dist/providers/useapi-provider.js +266 -0
  536. package/dist/providers/useapi-provider.js.map +1 -0
  537. package/dist/providers/video-duration.d.ts +6 -0
  538. package/dist/providers/video-duration.d.ts.map +1 -0
  539. package/dist/providers/video-duration.js +63 -0
  540. package/dist/providers/video-duration.js.map +1 -0
  541. package/dist/providers/video-frame-fallback.d.ts +39 -0
  542. package/dist/providers/video-frame-fallback.d.ts.map +1 -0
  543. package/dist/providers/video-frame-fallback.js +155 -0
  544. package/dist/providers/video-frame-fallback.js.map +1 -0
  545. package/dist/providers/video-frames.d.ts +61 -0
  546. package/dist/providers/video-frames.d.ts.map +1 -0
  547. package/dist/providers/video-frames.js +208 -0
  548. package/dist/providers/video-frames.js.map +1 -0
  549. package/dist/providers/video-mime.d.ts +14 -0
  550. package/dist/providers/video-mime.d.ts.map +1 -0
  551. package/dist/providers/video-mime.js +44 -0
  552. package/dist/providers/video-mime.js.map +1 -0
  553. package/dist/providers/video-to-audio.d.ts +34 -0
  554. package/dist/providers/video-to-audio.d.ts.map +1 -0
  555. package/dist/providers/video-to-audio.js +62 -0
  556. package/dist/providers/video-to-audio.js.map +1 -0
  557. package/dist/providers/vllm-provider.d.ts +22 -8
  558. package/dist/providers/vllm-provider.d.ts.map +1 -1
  559. package/dist/providers/vllm-provider.js +48 -23
  560. package/dist/providers/vllm-provider.js.map +1 -1
  561. package/dist/providers/voyage-provider.d.ts +10 -2
  562. package/dist/providers/voyage-provider.d.ts.map +1 -1
  563. package/dist/providers/voyage-provider.js +16 -7
  564. package/dist/providers/voyage-provider.js.map +1 -1
  565. package/dist/providers/xai-provider.d.ts +54 -13
  566. package/dist/providers/xai-provider.d.ts.map +1 -1
  567. package/dist/providers/xai-provider.js +299 -22
  568. package/dist/providers/xai-provider.js.map +1 -1
  569. package/dist/python-bridge-base.d.ts +358 -0
  570. package/dist/python-bridge-base.d.ts.map +1 -0
  571. package/dist/python-bridge-base.js +1557 -0
  572. package/dist/python-bridge-base.js.map +1 -0
  573. package/dist/python-bridge-codec.d.ts +28 -0
  574. package/dist/python-bridge-codec.d.ts.map +1 -0
  575. package/dist/python-bridge-codec.js +39 -0
  576. package/dist/python-bridge-codec.js.map +1 -0
  577. package/dist/python-bridge-factory.d.ts +52 -0
  578. package/dist/python-bridge-factory.d.ts.map +1 -0
  579. package/dist/python-bridge-factory.js +69 -0
  580. package/dist/python-bridge-factory.js.map +1 -0
  581. package/dist/python-bridge-framing.d.ts +68 -0
  582. package/dist/python-bridge-framing.d.ts.map +1 -0
  583. package/dist/python-bridge-framing.js +91 -0
  584. package/dist/python-bridge-framing.js.map +1 -0
  585. package/dist/python-bridge-types.d.ts +545 -2
  586. package/dist/python-bridge-types.d.ts.map +1 -1
  587. package/dist/python-bridge-types.js +49 -1
  588. package/dist/python-bridge-types.js.map +1 -1
  589. package/dist/python-graph-resolver.d.ts +57 -0
  590. package/dist/python-graph-resolver.d.ts.map +1 -0
  591. package/dist/python-graph-resolver.js +79 -0
  592. package/dist/python-graph-resolver.js.map +1 -0
  593. package/dist/python-node-executor.d.ts +36 -4
  594. package/dist/python-node-executor.d.ts.map +1 -1
  595. package/dist/python-node-executor.js +177 -86
  596. package/dist/python-node-executor.js.map +1 -1
  597. package/dist/python-stdio-bridge.d.ts +18 -37
  598. package/dist/python-stdio-bridge.d.ts.map +1 -1
  599. package/dist/python-stdio-bridge.js +148 -475
  600. package/dist/python-stdio-bridge.js.map +1 -1
  601. package/dist/python-websocket-bridge.d.ts +140 -0
  602. package/dist/python-websocket-bridge.d.ts.map +1 -0
  603. package/dist/python-websocket-bridge.js +561 -0
  604. package/dist/python-websocket-bridge.js.map +1 -0
  605. package/dist/python-worker-stderr.d.ts +4 -0
  606. package/dist/python-worker-stderr.d.ts.map +1 -0
  607. package/dist/python-worker-stderr.js +24 -0
  608. package/dist/python-worker-stderr.js.map +1 -0
  609. package/dist/recommended-models.d.ts +2 -2
  610. package/dist/recommended-models.d.ts.map +1 -1
  611. package/dist/recommended-models.js +24 -4
  612. package/dist/recommended-models.js.map +1 -1
  613. package/dist/recoverable-node-error.d.ts +31 -0
  614. package/dist/recoverable-node-error.d.ts.map +1 -0
  615. package/dist/recoverable-node-error.js +37 -0
  616. package/dist/recoverable-node-error.js.map +1 -0
  617. package/dist/redact-params.d.ts +13 -0
  618. package/dist/redact-params.d.ts.map +1 -0
  619. package/dist/redact-params.js +57 -0
  620. package/dist/redact-params.js.map +1 -0
  621. package/dist/sandbox-module-catalog.d.ts +43 -0
  622. package/dist/sandbox-module-catalog.d.ts.map +1 -0
  623. package/dist/sandbox-module-catalog.js +25 -0
  624. package/dist/sandbox-module-catalog.js.map +1 -0
  625. package/dist/storage-workspace.d.ts +59 -0
  626. package/dist/storage-workspace.d.ts.map +1 -0
  627. package/dist/storage-workspace.js +426 -0
  628. package/dist/storage-workspace.js.map +1 -0
  629. package/dist/swappable-python-bridge.d.ts +83 -0
  630. package/dist/swappable-python-bridge.d.ts.map +1 -0
  631. package/dist/swappable-python-bridge.js +246 -0
  632. package/dist/swappable-python-bridge.js.map +1 -0
  633. package/dist/telemetry.d.ts +7 -0
  634. package/dist/telemetry.d.ts.map +1 -1
  635. package/dist/telemetry.js +23 -0
  636. package/dist/telemetry.js.map +1 -1
  637. package/dist/testing.d.ts +81 -0
  638. package/dist/testing.d.ts.map +1 -0
  639. package/dist/testing.js +130 -0
  640. package/dist/testing.js.map +1 -0
  641. package/dist/token-counter.d.ts +30 -0
  642. package/dist/token-counter.d.ts.map +1 -0
  643. package/dist/token-counter.js +156 -0
  644. package/dist/token-counter.js.map +1 -0
  645. package/dist/trace-exporters.d.ts +10 -0
  646. package/dist/trace-exporters.d.ts.map +1 -1
  647. package/dist/trace-exporters.js +59 -20
  648. package/dist/trace-exporters.js.map +1 -1
  649. package/dist/tracing-helpers.d.ts +45 -4
  650. package/dist/tracing-helpers.d.ts.map +1 -1
  651. package/dist/tracing-helpers.js +62 -19
  652. package/dist/tracing-helpers.js.map +1 -1
  653. package/dist/turn-budget.d.ts +278 -0
  654. package/dist/turn-budget.d.ts.map +1 -0
  655. package/dist/turn-budget.js +365 -0
  656. package/dist/turn-budget.js.map +1 -0
  657. package/dist/variable-channel.d.ts +48 -0
  658. package/dist/variable-channel.d.ts.map +1 -0
  659. package/dist/variable-channel.js +110 -0
  660. package/dist/variable-channel.js.map +1 -0
  661. package/dist/workspace.d.ts +119 -0
  662. package/dist/workspace.d.ts.map +1 -0
  663. package/dist/workspace.js +112 -0
  664. package/dist/workspace.js.map +1 -0
  665. package/package.json +107 -19
@@ -0,0 +1,180 @@
1
+ /**
2
+ * Runs the live half of the provider contract probes.
3
+ *
4
+ * One request per manifest entry, decoded by the production decoder the entry
5
+ * names. The two ways a probe fails are reported apart: a **network failure**
6
+ * means we never got a body to judge (DNS, timeout, 5xx, a non-JSON gateway
7
+ * page), and a **schema failure** means the provider answered and the response
8
+ * no longer decodes into what NodeTool needs. Only the second is a contract
9
+ * break; treating them alike would turn every flaky night into a false alarm.
10
+ *
11
+ * Nothing here writes a cassette, and nothing retains a response body: what a
12
+ * run keeps is the shape (see `summarizeShape`).
13
+ */
14
+ import { redactText, summarizeShape } from "./redact.js";
15
+ import { PROBE_MANIFEST } from "./probe-manifest.js";
16
+ /** A body that never reached the decoder: the run has nothing to judge. */
17
+ class NetworkProbeError extends Error {
18
+ }
19
+ async function readJsonBody(response, entry) {
20
+ const acceptsHttpError = entry.live?.acceptsHttpError ?? false;
21
+ const text = await response.text();
22
+ if (!response.ok && !acceptsHttpError) {
23
+ throw new NetworkProbeError(`HTTP ${response.status}: ${redactText(text, 200)}`);
24
+ }
25
+ try {
26
+ return JSON.parse(text);
27
+ }
28
+ catch {
29
+ // A gateway error page is a network-layer problem, not a contract change.
30
+ throw new NetworkProbeError(`response body is not JSON (HTTP ${response.status}): ${redactText(text, 200)}`);
31
+ }
32
+ }
33
+ export async function runProbes(options = {}) {
34
+ const env = options.env ?? {};
35
+ const fetchImpl = options.fetchImpl ?? globalThis.fetch.bind(globalThis);
36
+ const entries = options.entries ?? PROBE_MANIFEST;
37
+ const timeoutMs = options.timeoutMs ?? 60_000;
38
+ const now = options.now ?? (() => Date.now());
39
+ const results = [];
40
+ const perProvider = {};
41
+ for (const entry of entries) {
42
+ const spent = (perProvider[entry.provider] ??= { requests: 0, costUsd: 0 });
43
+ const base = {
44
+ id: entry.id,
45
+ provider: entry.provider,
46
+ target: entry.target,
47
+ decoder: entry.decoder
48
+ };
49
+ const live = entry.live;
50
+ if (!live) {
51
+ results.push({
52
+ ...base,
53
+ status: "skipped",
54
+ reason: `fixture only: ${entry.liveGap ?? "no live probe declared"}`,
55
+ durationMs: 0,
56
+ requests: 0,
57
+ costUsd: 0
58
+ });
59
+ continue;
60
+ }
61
+ const credential = live.credential ? (env[live.credential] ?? "") : "";
62
+ if (live.credential && !credential) {
63
+ results.push({
64
+ ...base,
65
+ status: "skipped",
66
+ reason: `${live.credential} is not set`,
67
+ durationMs: 0,
68
+ requests: 0,
69
+ costUsd: 0
70
+ });
71
+ continue;
72
+ }
73
+ if (spent.requests + 1 > live.maxRequests) {
74
+ results.push({
75
+ ...base,
76
+ status: "skipped",
77
+ reason: `request budget for ${entry.provider} is spent (${live.maxRequests})`,
78
+ durationMs: 0,
79
+ requests: 0,
80
+ costUsd: 0
81
+ });
82
+ continue;
83
+ }
84
+ if (spent.costUsd + live.estimatedCostUsd > live.maxCostUsd) {
85
+ results.push({
86
+ ...base,
87
+ status: "skipped",
88
+ reason: `cost budget for ${entry.provider} is spent (USD ${live.maxCostUsd})`,
89
+ durationMs: 0,
90
+ requests: 0,
91
+ costUsd: 0
92
+ });
93
+ continue;
94
+ }
95
+ const startedAt = now();
96
+ const controller = new AbortController();
97
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
98
+ let status = "passed";
99
+ let reason;
100
+ let shape;
101
+ try {
102
+ const { url, init } = live.request(env, credential);
103
+ let body;
104
+ try {
105
+ const response = await fetchImpl(url, {
106
+ ...init,
107
+ signal: controller.signal
108
+ });
109
+ body = await readJsonBody(response, entry);
110
+ }
111
+ catch (err) {
112
+ throw err instanceof NetworkProbeError
113
+ ? err
114
+ : new NetworkProbeError(err.message);
115
+ }
116
+ shape = summarizeShape(body);
117
+ entry.check(body);
118
+ }
119
+ catch (err) {
120
+ status = err instanceof NetworkProbeError ? "network-failure" : "schema-failure";
121
+ reason = redactText(err.message);
122
+ }
123
+ finally {
124
+ clearTimeout(timer);
125
+ }
126
+ spent.requests += 1;
127
+ spent.costUsd += live.estimatedCostUsd;
128
+ results.push({
129
+ ...base,
130
+ status,
131
+ reason,
132
+ durationMs: now() - startedAt,
133
+ requests: 1,
134
+ costUsd: live.estimatedCostUsd,
135
+ shape
136
+ });
137
+ }
138
+ const totals = {
139
+ passed: 0,
140
+ schemaFailures: 0,
141
+ networkFailures: 0,
142
+ skipped: 0,
143
+ requests: 0,
144
+ costUsd: 0
145
+ };
146
+ for (const r of results) {
147
+ if (r.status === "passed")
148
+ totals.passed++;
149
+ else if (r.status === "schema-failure")
150
+ totals.schemaFailures++;
151
+ else if (r.status === "network-failure")
152
+ totals.networkFailures++;
153
+ else if (r.status === "skipped")
154
+ totals.skipped++;
155
+ totals.requests += r.requests;
156
+ totals.costUsd += r.costUsd;
157
+ }
158
+ return {
159
+ startedAt: new Date(now()).toISOString(),
160
+ results,
161
+ totals,
162
+ perProvider
163
+ };
164
+ }
165
+ /** One line per probe, for a CI log. */
166
+ export function formatProbeReport(report) {
167
+ const icon = {
168
+ passed: "✓",
169
+ "schema-failure": "✗",
170
+ "network-failure": "~",
171
+ skipped: "·"
172
+ };
173
+ const lines = report.results.map((r) => `${icon[r.status]} ${r.id.padEnd(28)} ${r.status}` +
174
+ (r.reason ? ` — ${r.reason}` : ""));
175
+ lines.push(`\n${report.totals.passed} passed, ${report.totals.schemaFailures} schema failures, ` +
176
+ `${report.totals.networkFailures} network failures, ${report.totals.skipped} skipped ` +
177
+ `(${report.totals.requests} requests, ~USD ${report.totals.costUsd.toFixed(4)})`);
178
+ return lines.join("\n");
179
+ }
180
+ //# sourceMappingURL=probe-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"probe-runner.js","sourceRoot":"","sources":["../../../src/providers/contract/probe-runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Artifact redaction for the provider contract probes.
3
+ *
4
+ * A probe run keeps something about the live response so a human can read why
5
+ * it failed, and a live response carries credentials in echoed headers, the
6
+ * prompt, model output, request ids, and pre-signed result URLs. Rather than
7
+ * denylisting those one by one — a list that is wrong the first time a
8
+ * provider adds a field — the retained artifact is a *shape*: every leaf
9
+ * becomes its type name, and only a small allowlist of enum-like keys keeps
10
+ * its literal value. A probe checks structure, so structure is all it needs.
11
+ */
12
+ /**
13
+ * Keys whose values stay literal. Each is an enum or a small closed set that
14
+ * carries no prompt, credential, identifier, or URL — and each is exactly what
15
+ * a contract failure is usually about.
16
+ */
17
+ export declare const SHAPE_LITERAL_KEYS: ReadonlySet<string>;
18
+ /**
19
+ * Reduce a value to its shape. Strings become `"string(len)"`, numbers
20
+ * `"number"`, and so on; an allowlisted key keeps a short literal instead.
21
+ */
22
+ export declare function summarizeShape(value: unknown, depth?: number): unknown;
23
+ /**
24
+ * Redact free text a probe wants to keep — an error message, which can quote
25
+ * a body. Strips anything that looks like a credential or a URL query string,
26
+ * then truncates.
27
+ */
28
+ export declare function redactText(text: string, maxLength?: number): string;
29
+ //# sourceMappingURL=redact.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../../../src/providers/contract/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAejD,CAAC;AAaH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,SAAI,GAAG,OAAO,CAsBjE;AAcD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,CA0BhE"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Artifact redaction for the provider contract probes.
3
+ *
4
+ * A probe run keeps something about the live response so a human can read why
5
+ * it failed, and a live response carries credentials in echoed headers, the
6
+ * prompt, model output, request ids, and pre-signed result URLs. Rather than
7
+ * denylisting those one by one — a list that is wrong the first time a
8
+ * provider adds a field — the retained artifact is a *shape*: every leaf
9
+ * becomes its type name, and only a small allowlist of enum-like keys keeps
10
+ * its literal value. A probe checks structure, so structure is all it needs.
11
+ */
12
+ /**
13
+ * Keys whose values stay literal. Each is an enum or a small closed set that
14
+ * carries no prompt, credential, identifier, or URL — and each is exactly what
15
+ * a contract failure is usually about.
16
+ */
17
+ export const SHAPE_LITERAL_KEYS = new Set([
18
+ "object",
19
+ "role",
20
+ "type",
21
+ "state",
22
+ "status",
23
+ "code",
24
+ "finish_reason",
25
+ "finishReason",
26
+ "blockReason",
27
+ "mime_type",
28
+ "mimeType",
29
+ "content_type",
30
+ "modality",
31
+ "successFlag"
32
+ ]);
33
+ /** Longest array the artifact keeps; the rest is reported as a count. */
34
+ const MAX_ARRAY_ITEMS = 3;
35
+ /** Deepest nesting the artifact keeps. */
36
+ const MAX_DEPTH = 8;
37
+ function literalKind(value) {
38
+ if (value === null)
39
+ return "null";
40
+ if (Array.isArray(value))
41
+ return "array";
42
+ return typeof value;
43
+ }
44
+ /**
45
+ * Reduce a value to its shape. Strings become `"string(len)"`, numbers
46
+ * `"number"`, and so on; an allowlisted key keeps a short literal instead.
47
+ */
48
+ export function summarizeShape(value, depth = 0) {
49
+ if (depth > MAX_DEPTH)
50
+ return "…";
51
+ if (value === null)
52
+ return "null";
53
+ if (Array.isArray(value)) {
54
+ const head = value
55
+ .slice(0, MAX_ARRAY_ITEMS)
56
+ .map((item) => summarizeShape(item, depth + 1));
57
+ return value.length > MAX_ARRAY_ITEMS
58
+ ? [...head, `…${value.length - MAX_ARRAY_ITEMS} more`]
59
+ : head;
60
+ }
61
+ if (typeof value === "object") {
62
+ const out = {};
63
+ for (const [key, item] of Object.entries(value)) {
64
+ out[key] = SHAPE_LITERAL_KEYS.has(key)
65
+ ? shortLiteral(item)
66
+ : summarizeShape(item, depth + 1);
67
+ }
68
+ return out;
69
+ }
70
+ if (typeof value === "string")
71
+ return `string(${value.length})`;
72
+ return literalKind(value);
73
+ }
74
+ /**
75
+ * An allowlisted key's value, kept literal but bounded: a long string under an
76
+ * allowlisted name is a value someone reused that key for, not an enum.
77
+ */
78
+ function shortLiteral(value) {
79
+ if (typeof value === "string") {
80
+ return value.length <= 32 ? value : `string(${value.length})`;
81
+ }
82
+ if (typeof value === "number" || typeof value === "boolean")
83
+ return value;
84
+ return summarizeShape(value);
85
+ }
86
+ /**
87
+ * Redact free text a probe wants to keep — an error message, which can quote
88
+ * a body. Strips anything that looks like a credential or a URL query string,
89
+ * then truncates.
90
+ */
91
+ export function redactText(text, maxLength = 400) {
92
+ const scrubbed = text
93
+ // Bearer/Key headers and `"api_key": "…"`-style pairs.
94
+ .replace(/\b(Bearer|Key)\s+[A-Za-z0-9._-]{8,}/gi, "$1 [redacted]")
95
+ .replace(/("?(?:api[_-]?key|apikey|token|secret|password|authorization|credential)"?\s*[:=]\s*"?)[^",\s}]+/gi, "$1[redacted]")
96
+ // Credential-shaped tokens wherever they sit, including inside a message
97
+ // a provider echoed back ("Incorrect API key provided: sk-…").
98
+ .replace(/\b(?:sk|pk|rk|ak|gsk|xai|fal|kie|hf|nvapi|AIza)[-_][A-Za-z0-9_-]{8,}/gi, "[redacted-credential]")
99
+ .replace(/\b[A-Za-z0-9_-]{32,}\b/g, "[redacted-token]")
100
+ // Any URL: the path may identify a user and the query may sign it.
101
+ .replace(/https?:\/\/[^\s"']+/gi, (url) => {
102
+ try {
103
+ return `${new URL(url).origin}/[redacted]`;
104
+ }
105
+ catch {
106
+ return "[redacted-url]";
107
+ }
108
+ });
109
+ return scrubbed.length > maxLength
110
+ ? `${scrubbed.slice(0, maxLength)}…`
111
+ : scrubbed;
112
+ }
113
+ //# sourceMappingURL=redact.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../../src/providers/contract/redact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ /**
2
+ * The NodeTool tools that mirror a Claude Agent SDK built-in.
3
+ *
4
+ * Two rules follow from that mirroring, and this module is the one place both
5
+ * read:
6
+ *
7
+ * 1. **Top level, not CodeAct.** Every provider gets these as ordinary tool
8
+ * definitions instead of finding them behind `execute_code`. They are the
9
+ * shapes every frontier model is trained on, so a tool call costs less than
10
+ * a sandbox round trip that only forwards one.
11
+ * 2. **The built-in wins on the Claude Agent SDK.** That provider runs the
12
+ * SDK's own agent loop, which already ships `Read`/`Write`/`Grep`/… . A
13
+ * NodeTool copy next to the built-in is a second surface for one capability,
14
+ * so {@link SDK_NATIVE_TOOL_REPLACEMENTS} names the ones the built-in
15
+ * replaces outright and the provider drops them from its MCP toolset.
16
+ */
17
+ /**
18
+ * Tools lifted out of the CodeAct sandbox and offered top level, for every
19
+ * provider. Membership is decided by "the Claude Agent SDK has a built-in for
20
+ * this", not by how often the tool is used.
21
+ */
22
+ export declare const CORE_TOOL_NAMES: ReadonlySet<string>;
23
+ /**
24
+ * Discovery: which providers, models and node types this install actually has.
25
+ *
26
+ * These are lookups whose answer decides what the model writes next, and a
27
+ * wrong answer is expensive — a hallucinated model id or node type fails at
28
+ * generation time, after the run has been paid for. A lookup is also exactly
29
+ * the shape a tool call fits: one question, one answer, nothing to compose.
30
+ * Routing it through a code action costs a sandbox round trip and hides the
31
+ * result behind whatever the action chose to return.
32
+ *
33
+ * They stay on the belt, so `nodetool.models.pick()` inside an action and the
34
+ * graph planner's own searches keep working; what changes is the documented
35
+ * path.
36
+ */
37
+ export declare const DISCOVERY_TOOL_NAMES: ReadonlySet<string>;
38
+ /**
39
+ * Every tool offered as an ordinary tool call next to `execute_code`:
40
+ * {@link CORE_TOOL_NAMES} plus {@link DISCOVERY_TOOL_NAMES}. The two sets are
41
+ * kept apart because only the core set has SDK built-ins behind it — the
42
+ * substitution in {@link SDK_NATIVE_TOOL_REPLACEMENTS} must never reach a
43
+ * discovery tool, which no built-in covers.
44
+ */
45
+ export declare const DIRECT_TOOL_NAMES: ReadonlySet<string>;
46
+ /**
47
+ * NodeTool tool name → the Claude Agent SDK built-in that replaces it. Only
48
+ * true replacements are listed. Three members of {@link CORE_TOOL_NAMES} are
49
+ * deliberately absent:
50
+ *
51
+ * - `list_directory` — `Glob` matches a pattern; it does not list a directory.
52
+ * - `browser` / `http_request` / `download_file` — `WebFetch` is a prompted GET
53
+ * that writes nothing, so it covers none of the three in full.
54
+ * - `run_subtask` — `Task` spawns an SDK agent holding SDK tools. The child
55
+ * would lose the NodeTool toolbelt the parent passed it.
56
+ */
57
+ export declare const SDK_NATIVE_TOOL_REPLACEMENTS: ReadonlyMap<string, string>;
58
+ /**
59
+ * The replacements that resolve paths. NodeTool's versions are contained to the
60
+ * run's workspace directory; the SDK's built-ins resolve against the session
61
+ * `cwd`. Substituting one for the other is only equivalent when that `cwd` is
62
+ * the workspace, so a caller that passes no workspace directory keeps the
63
+ * NodeTool tools.
64
+ */
65
+ export declare const SDK_NATIVE_WORKSPACE_SCOPED: ReadonlySet<string>;
66
+ /**
67
+ * The SDK built-ins that replace a NodeTool tool for this call.
68
+ *
69
+ * @param toolNames Tool names the caller offered.
70
+ * @param workspaceDir The session `cwd`. Without it the path-scoped
71
+ * replacements are skipped — see {@link SDK_NATIVE_WORKSPACE_SCOPED}.
72
+ */
73
+ export declare function sdkNativeReplacements(toolNames: Iterable<string>, workspaceDir?: string): Set<string>;
74
+ //# sourceMappingURL=core-tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-tools.d.ts","sourceRoot":"","sources":["../../src/providers/core-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAiB9C,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB,EAAE,WAAW,CAAC,MAAM,CASnD,CAAC;AAEH;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAGhD,CAAC;AAEH;;;;;;;;;;GAUG;AACH,eAAO,MAAM,4BAA4B,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAUpE,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,2BAA2B,EAAE,WAAW,CAAC,MAAM,CAM1D,CAAC;AAEH;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,EAC3B,YAAY,CAAC,EAAE,MAAM,GACpB,GAAG,CAAC,MAAM,CAAC,CAQb"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * The NodeTool tools that mirror a Claude Agent SDK built-in.
3
+ *
4
+ * Two rules follow from that mirroring, and this module is the one place both
5
+ * read:
6
+ *
7
+ * 1. **Top level, not CodeAct.** Every provider gets these as ordinary tool
8
+ * definitions instead of finding them behind `execute_code`. They are the
9
+ * shapes every frontier model is trained on, so a tool call costs less than
10
+ * a sandbox round trip that only forwards one.
11
+ * 2. **The built-in wins on the Claude Agent SDK.** That provider runs the
12
+ * SDK's own agent loop, which already ships `Read`/`Write`/`Grep`/… . A
13
+ * NodeTool copy next to the built-in is a second surface for one capability,
14
+ * so {@link SDK_NATIVE_TOOL_REPLACEMENTS} names the ones the built-in
15
+ * replaces outright and the provider drops them from its MCP toolset.
16
+ */
17
+ /**
18
+ * Tools lifted out of the CodeAct sandbox and offered top level, for every
19
+ * provider. Membership is decided by "the Claude Agent SDK has a built-in for
20
+ * this", not by how often the tool is used.
21
+ */
22
+ export const CORE_TOOL_NAMES = new Set([
23
+ // Read / Write / Edit / Glob / Grep.
24
+ "read_file",
25
+ "write_file",
26
+ "edit_file",
27
+ "list_directory",
28
+ "glob",
29
+ "grep",
30
+ // WebSearch / WebFetch.
31
+ "web_search",
32
+ "browser",
33
+ "http_request",
34
+ "download_file",
35
+ // TodoWrite.
36
+ "todo_write",
37
+ // Task.
38
+ "run_subtask"
39
+ ]);
40
+ /**
41
+ * Discovery: which providers, models and node types this install actually has.
42
+ *
43
+ * These are lookups whose answer decides what the model writes next, and a
44
+ * wrong answer is expensive — a hallucinated model id or node type fails at
45
+ * generation time, after the run has been paid for. A lookup is also exactly
46
+ * the shape a tool call fits: one question, one answer, nothing to compose.
47
+ * Routing it through a code action costs a sandbox round trip and hides the
48
+ * result behind whatever the action chose to return.
49
+ *
50
+ * They stay on the belt, so `nodetool.models.pick()` inside an action and the
51
+ * graph planner's own searches keep working; what changes is the documented
52
+ * path.
53
+ */
54
+ export const DISCOVERY_TOOL_NAMES = new Set([
55
+ // Providers and models.
56
+ "find_model",
57
+ "list_models",
58
+ "list_provider_models",
59
+ // Node types.
60
+ "search_nodes",
61
+ "get_node_info",
62
+ "list_nodes"
63
+ ]);
64
+ /**
65
+ * Every tool offered as an ordinary tool call next to `execute_code`:
66
+ * {@link CORE_TOOL_NAMES} plus {@link DISCOVERY_TOOL_NAMES}. The two sets are
67
+ * kept apart because only the core set has SDK built-ins behind it — the
68
+ * substitution in {@link SDK_NATIVE_TOOL_REPLACEMENTS} must never reach a
69
+ * discovery tool, which no built-in covers.
70
+ */
71
+ export const DIRECT_TOOL_NAMES = new Set([
72
+ ...CORE_TOOL_NAMES,
73
+ ...DISCOVERY_TOOL_NAMES
74
+ ]);
75
+ /**
76
+ * NodeTool tool name → the Claude Agent SDK built-in that replaces it. Only
77
+ * true replacements are listed. Three members of {@link CORE_TOOL_NAMES} are
78
+ * deliberately absent:
79
+ *
80
+ * - `list_directory` — `Glob` matches a pattern; it does not list a directory.
81
+ * - `browser` / `http_request` / `download_file` — `WebFetch` is a prompted GET
82
+ * that writes nothing, so it covers none of the three in full.
83
+ * - `run_subtask` — `Task` spawns an SDK agent holding SDK tools. The child
84
+ * would lose the NodeTool toolbelt the parent passed it.
85
+ */
86
+ export const SDK_NATIVE_TOOL_REPLACEMENTS = new Map([
87
+ ["read_file", "Read"],
88
+ ["write_file", "Write"],
89
+ ["edit_file", "Edit"],
90
+ ["glob", "Glob"],
91
+ ["grep", "Grep"],
92
+ ["web_search", "WebSearch"],
93
+ ["todo_write", "TodoWrite"]
94
+ ]);
95
+ /**
96
+ * The replacements that resolve paths. NodeTool's versions are contained to the
97
+ * run's workspace directory; the SDK's built-ins resolve against the session
98
+ * `cwd`. Substituting one for the other is only equivalent when that `cwd` is
99
+ * the workspace, so a caller that passes no workspace directory keeps the
100
+ * NodeTool tools.
101
+ */
102
+ export const SDK_NATIVE_WORKSPACE_SCOPED = new Set([
103
+ "read_file",
104
+ "write_file",
105
+ "edit_file",
106
+ "glob",
107
+ "grep"
108
+ ]);
109
+ /**
110
+ * The SDK built-ins that replace a NodeTool tool for this call.
111
+ *
112
+ * @param toolNames Tool names the caller offered.
113
+ * @param workspaceDir The session `cwd`. Without it the path-scoped
114
+ * replacements are skipped — see {@link SDK_NATIVE_WORKSPACE_SCOPED}.
115
+ */
116
+ export function sdkNativeReplacements(toolNames, workspaceDir) {
117
+ const replaced = new Set();
118
+ for (const name of toolNames) {
119
+ if (!SDK_NATIVE_TOOL_REPLACEMENTS.has(name))
120
+ continue;
121
+ if (!workspaceDir && SDK_NATIVE_WORKSPACE_SCOPED.has(name))
122
+ continue;
123
+ replaced.add(name);
124
+ }
125
+ return replaced;
126
+ }
127
+ //# sourceMappingURL=core-tools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core-tools.js","sourceRoot":"","sources":["../../src/providers/core-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;GAIG;AACH,MAAM,CAAC,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IAC1D,qCAAqC;IACrC,WAAW;IACX,YAAY;IACZ,WAAW;IACX,gBAAgB;IAChB,MAAM;IACN,MAAM;IACN,wBAAwB;IACxB,YAAY;IACZ,SAAS;IACT,cAAc;IACd,eAAe;IACf,aAAa;IACb,YAAY;IACZ,QAAQ;IACR,aAAa;CACd,CAAC,CAAC;AAEH;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,wBAAwB;IACxB,YAAY;IACZ,aAAa;IACb,sBAAsB;IACtB,cAAc;IACd,cAAc;IACd,eAAe;IACf,YAAY;CACb,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAwB,IAAI,GAAG,CAAC;IAC5D,GAAG,eAAe;IAClB,GAAG,oBAAoB;CACxB,CAAC,CAAC;AAEH;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAgC,IAAI,GAAG,CAC9E;IACE,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,YAAY,EAAE,OAAO,CAAC;IACvB,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,MAAM,EAAE,MAAM,CAAC;IAChB,CAAC,YAAY,EAAE,WAAW,CAAC;IAC3B,CAAC,YAAY,EAAE,WAAW,CAAC;CAC5B,CACF,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAwB,IAAI,GAAG,CAAC;IACtE,WAAW;IACX,YAAY;IACZ,WAAW;IACX,MAAM;IACN,MAAM;CACP,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CACnC,SAA2B,EAC3B,YAAqB;IAErB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,4BAA4B,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACtD,IAAI,CAAC,YAAY,IAAI,2BAA2B,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QACrE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}