@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,42 @@
1
+ /**
2
+ * Comfy Cloud Provider — the registry entry behind the `COMFY_API_KEY` secret.
3
+ *
4
+ * It runs no generation itself. The `lib.comfy` nodes submit ComfyUI graphs to
5
+ * cloud.comfy.org through the Comfy SDK and do all the work; this class exists
6
+ * for what registration gives every provider: credential resolution, the
7
+ * settings card in Settings → Models & Providers, `isProviderConfigured`,
8
+ * `getContainerEnv` for deployments, and a provider id to write on cost
9
+ * records.
10
+ *
11
+ * No `getAvailable*Models` overrides. The Comfy API v2 enumerates no models —
12
+ * a ComfyUI graph names its own checkpoints — so the derived capability list
13
+ * is deliberately just chat's two entries, and chat itself throws.
14
+ *
15
+ * The same key authenticates partner API nodes inside a submitted graph, which
16
+ * the SDK passes as `extra_data.api_key_comfy_org`.
17
+ *
18
+ * API keys: https://platform.comfy.org
19
+ */
20
+ import { BaseProvider } from "./base-provider.js";
21
+ import { PROVIDER_IDS } from "@nodetool-ai/protocol";
22
+ export class ComfyCloudProvider extends BaseProvider {
23
+ apiKey;
24
+ static requiredSecrets() {
25
+ return ["COMFY_API_KEY"];
26
+ }
27
+ constructor(secrets = {}) {
28
+ super(PROVIDER_IDS.COMFY_CLOUD);
29
+ this.apiKey = secrets["COMFY_API_KEY"] ?? "";
30
+ }
31
+ getContainerEnv() {
32
+ return { COMFY_API_KEY: this.apiKey };
33
+ }
34
+ async generateMessage(_args) {
35
+ throw new Error("comfy_cloud does not support chat generation");
36
+ }
37
+ // eslint-disable-next-line require-yield
38
+ async *generateMessages(_args) {
39
+ throw new Error("comfy_cloud does not support chat generation");
40
+ }
41
+ }
42
+ //# sourceMappingURL=comfy-cloud-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"comfy-cloud-provider.js","sourceRoot":"","sources":["../../src/providers/comfy-cloud-provider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGrD,MAAM,OAAO,kBAAmB,SAAQ,YAAY;IACjC,MAAM,CAAS;IAEhC,MAAM,CAAU,eAAe;QAC7B,OAAO,CAAC,eAAe,CAAC,CAAC;IAC3B,CAAC;IAED,YAAY,OAAO,GAA4B,EAAE;QAC/C,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,GAAI,OAAO,CAAC,eAAe,CAAY,IAAI,EAAE,CAAC;IAC3D,CAAC;IAEQ,eAAe;QACtB,OAAO,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAqD;QAErD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;IAED,yCAAyC;IACzC,KAAK,CAAC,CAAC,gBAAgB,CACrB,KAAsD;QAEtD,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IAClE,CAAC;CACF"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Content-filter refusals, as a class apart from hard errors.
3
+ *
4
+ * Veo 3.1 filtered one shot of a five-shot trailer on an ordinary cinematic
5
+ * prompt ("a lighthouse in a storm"), the same prompt passed on retry, and the
6
+ * blocked take was not charged. Classified as a hard error, that refusal fails
7
+ * the node, fails the run, and discards the four shots already generated and
8
+ * paid for.
9
+ *
10
+ * So a refusal gets its own class. `ProcessingContext.runProviderPrediction`
11
+ * retries it a bounded number of times, and the kernel actor drops the item
12
+ * instead of the run when the invocation is one item of a fan-out.
13
+ *
14
+ * A provider that gives us structured evidence (Veo's `raiMediaFilteredReasons`)
15
+ * throws the class directly. For the rest, {@link isContentFilterRefusal}
16
+ * matches the message text, because that is all a provider hands back.
17
+ */
18
+ /** Extra attempts after a refusal, before the refusal reaches the node. */
19
+ export declare const CONTENT_FILTER_MAX_RETRIES = 2;
20
+ /** Delay before attempt N+1 after a refusal. */
21
+ export declare function contentFilterRetryDelayMs(attempt: number): number;
22
+ /**
23
+ * A provider refused to generate because its content filter rejected the
24
+ * prompt or the result. Not a failure of the request — the same request often
25
+ * succeeds on a retry.
26
+ */
27
+ export declare class ContentFilterRefusal extends Error {
28
+ /** Provider id as the runtime knows it (e.g. `gemini`). */
29
+ readonly provider?: string;
30
+ readonly model?: string;
31
+ /** Provider-supplied reason codes, when it gives any. */
32
+ readonly reasons?: readonly string[];
33
+ constructor(message: string, opts?: {
34
+ provider?: string;
35
+ model?: string;
36
+ reasons?: readonly string[];
37
+ });
38
+ }
39
+ /** True for {@link ContentFilterRefusal} from any copy of this package. */
40
+ export declare function isContentFilterRefusalError(error: unknown): error is ContentFilterRefusal;
41
+ /**
42
+ * True when this failure is a content-filter refusal — the class, or a message
43
+ * carrying one of the phrasings providers use for it.
44
+ */
45
+ export declare function isContentFilterRefusal(error: unknown): boolean;
46
+ //# sourceMappingURL=content-filter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-filter.d.ts","sourceRoot":"","sources":["../../src/providers/content-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH,2EAA2E;AAC3E,eAAO,MAAM,0BAA0B,IAAI,CAAC;AAE5C,gDAAgD;AAChD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,2DAA2D;IAC3D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,yDAAyD;IACzD,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAErC,YACE,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;QACJ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;KACxB,EAOP;CACF;AA6BD,2EAA2E;AAC3E,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,oBAAoB,CAE/B;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI9D"}
@@ -0,0 +1,92 @@
1
+ /**
2
+ * Content-filter refusals, as a class apart from hard errors.
3
+ *
4
+ * Veo 3.1 filtered one shot of a five-shot trailer on an ordinary cinematic
5
+ * prompt ("a lighthouse in a storm"), the same prompt passed on retry, and the
6
+ * blocked take was not charged. Classified as a hard error, that refusal fails
7
+ * the node, fails the run, and discards the four shots already generated and
8
+ * paid for.
9
+ *
10
+ * So a refusal gets its own class. `ProcessingContext.runProviderPrediction`
11
+ * retries it a bounded number of times, and the kernel actor drops the item
12
+ * instead of the run when the invocation is one item of a fan-out.
13
+ *
14
+ * A provider that gives us structured evidence (Veo's `raiMediaFilteredReasons`)
15
+ * throws the class directly. For the rest, {@link isContentFilterRefusal}
16
+ * matches the message text, because that is all a provider hands back.
17
+ */
18
+ import { isObjectLike, isString } from "@nodetool-ai/protocol";
19
+ /** Extra attempts after a refusal, before the refusal reaches the node. */
20
+ export const CONTENT_FILTER_MAX_RETRIES = 2;
21
+ /** Delay before attempt N+1 after a refusal. */
22
+ export function contentFilterRetryDelayMs(attempt) {
23
+ return Math.min(1_000 * 2 ** (attempt - 1), 8_000);
24
+ }
25
+ /**
26
+ * A provider refused to generate because its content filter rejected the
27
+ * prompt or the result. Not a failure of the request — the same request often
28
+ * succeeds on a retry.
29
+ */
30
+ export class ContentFilterRefusal extends Error {
31
+ /** Provider id as the runtime knows it (e.g. `gemini`). */
32
+ provider;
33
+ model;
34
+ /** Provider-supplied reason codes, when it gives any. */
35
+ reasons;
36
+ constructor(message, opts = {}) {
37
+ super(message);
38
+ this.name = "ContentFilterRefusal";
39
+ this.provider = opts.provider;
40
+ this.model = opts.model;
41
+ this.reasons = opts.reasons;
42
+ }
43
+ }
44
+ /**
45
+ * Phrasings providers use when their filter — not the request — is what
46
+ * failed. Each entry names the provider it came from.
47
+ */
48
+ const REFUSAL_PATTERNS = [
49
+ // Google Veo / Vertex RAI: "... videos were filtered out because they
50
+ // violated Vertex AI's usage guidelines", and the raw response field.
51
+ /filtered out because .*violat/i,
52
+ /\brai[_ ]?(?:media[_ ]?)?filtered/i,
53
+ // Gemini text and image: blocked prompt / blocked candidate.
54
+ /\bPROHIBITED_CONTENT\b/,
55
+ /blocked (?:due to|by) (?:the )?safety/i,
56
+ // OpenAI images and moderation.
57
+ /rejected as a result of our safety system/i,
58
+ /\bcontent[_ ]policy[_ ]violation\b/i,
59
+ /\bmoderation_blocked\b/i,
60
+ // Azure OpenAI.
61
+ /content management policy/i,
62
+ // FAL / Replicate / KIE image and video models.
63
+ /\bnsfw\b[^.]*\bdetect/i,
64
+ /flagged as sensitive/i,
65
+ /\bsensitive words?\b/i,
66
+ // Phrasings shared across providers.
67
+ /\b(?:content|safety) filters?\b/i,
68
+ /violates? (?:our |the )?(?:content|usage) (?:polic|guideline)/i
69
+ ];
70
+ /** True for {@link ContentFilterRefusal} from any copy of this package. */
71
+ export function isContentFilterRefusalError(error) {
72
+ return error instanceof Error && error.name === "ContentFilterRefusal";
73
+ }
74
+ /**
75
+ * True when this failure is a content-filter refusal — the class, or a message
76
+ * carrying one of the phrasings providers use for it.
77
+ */
78
+ export function isContentFilterRefusal(error) {
79
+ if (isContentFilterRefusalError(error))
80
+ return true;
81
+ const message = refusalText(error);
82
+ return message !== "" && REFUSAL_PATTERNS.some((p) => p.test(message));
83
+ }
84
+ function refusalText(error) {
85
+ if (isString(error))
86
+ return error;
87
+ if (isObjectLike(error) && "message" in error && isString(error.message)) {
88
+ return error.message;
89
+ }
90
+ return "";
91
+ }
92
+ //# sourceMappingURL=content-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"content-filter.js","sourceRoot":"","sources":["../../src/providers/content-filter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAE/D,2EAA2E;AAC3E,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AAE5C,gDAAgD;AAChD,MAAM,UAAU,yBAAyB,CAAC,OAAe;IACvD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,2DAA2D;IAClD,QAAQ,CAAU;IAClB,KAAK,CAAU;IACxB,yDAAyD;IAChD,OAAO,CAAqB;IAErC,YACE,OAAe,EACf,IAAI,GAIA,EAAE;QAEN,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,gBAAgB,GAAsB;IAC1C,sEAAsE;IACtE,sEAAsE;IACtE,gCAAgC;IAChC,oCAAoC;IACpC,6DAA6D;IAC7D,wBAAwB;IACxB,wCAAwC;IACxC,gCAAgC;IAChC,4CAA4C;IAC5C,qCAAqC;IACrC,yBAAyB;IACzB,gBAAgB;IAChB,4BAA4B;IAC5B,gDAAgD;IAChD,wBAAwB;IACxB,uBAAuB;IACvB,uBAAuB;IACvB,qCAAqC;IACrC,kCAAkC;IAClC,gEAAgE;CACjE,CAAC;AAEF,2EAA2E;AAC3E,MAAM,UAAU,2BAA2B,CACzC,KAAc;IAEd,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,sBAAsB,CAAC;AACzE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAc;IACnD,IAAI,2BAA2B,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACnC,OAAO,OAAO,KAAK,EAAE,IAAI,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,IAAI,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,YAAY,CAAC,KAAK,CAAC,IAAI,SAAS,IAAI,KAAK,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACzE,OAAO,KAAK,CAAC,OAAO,CAAC;IACvB,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Recognizing "the prompt did not fit the model's context window".
3
+ *
4
+ * Each provider reports the overflow its own way, and a caller that cannot tell
5
+ * it apart from any other failure has nothing to do but hand the user a
6
+ * provider error they cannot act on. Mapping every provider's signal onto one
7
+ * code is what lets the caller shorten the transcript and try again.
8
+ *
9
+ * A recognizer takes what its provider produces on that failure — the parsed
10
+ * error body from the wire, or the `Error` the provider threw carrying it — and
11
+ * names the signal that fired, so a check can tell a match on the provider's
12
+ * documented field apart from a match on its English message text.
13
+ *
14
+ * Where the signals come from:
15
+ * - **Anthropic**: `stop_reason: "model_context_window_exceeded"` (the SDK's
16
+ * `BetaStopReason` union) when generation runs into the window, and a 400
17
+ * `invalid_request_error` reading "prompt is too long" when the input alone
18
+ * overflows it. Both are stated in the Claude API's "Context window overflow
19
+ * behavior". Older models answer the same overflow with "input length and
20
+ * `max_tokens` exceed context limit".
21
+ * - **OpenAI**: `error.code: "context_length_exceeded"` on a 400
22
+ * `invalid_request_error`; the `openai` SDK lifts that field onto
23
+ * `APIError.code`. The message reads "This model's maximum context length
24
+ * is …".
25
+ * - **Gemini**: HTTP 400 `INVALID_ARGUMENT` whose message reads "The input
26
+ * token count (N) exceeds the maximum number of tokens allowed (M)". Google's
27
+ * error reference enumerates no code for it, so the message is the signal.
28
+ */
29
+ /** Which of a provider's signals identified the overflow. */
30
+ export type ContextExceededSignal = "stop_reason" | "error_code" | "message";
31
+ /** @see {@link ContextExceededSignal} for what the return value names. */
32
+ export declare function anthropicContextExceeded(raw: unknown): ContextExceededSignal | null;
33
+ /** @see {@link ContextExceededSignal} for what the return value names. */
34
+ export declare function openAIContextExceeded(raw: unknown): ContextExceededSignal | null;
35
+ /** @see {@link ContextExceededSignal} for what the return value names. */
36
+ export declare function geminiContextExceeded(raw: unknown): ContextExceededSignal | null;
37
+ //# sourceMappingURL=context-exceeded.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-exceeded.d.ts","sourceRoot":"","sources":["../../src/providers/context-exceeded.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,6DAA6D;AAC7D,MAAM,MAAM,qBAAqB,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,CAAC;AAqC7E,0EAA0E;AAC1E,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,OAAO,GACX,qBAAqB,GAAG,IAAI,CAQ9B;AAKD,0EAA0E;AAC1E,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,GACX,qBAAqB,GAAG,IAAI,CAK9B;AA+BD,0EAA0E;AAC1E,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,GACX,qBAAqB,GAAG,IAAI,CAG9B"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * Recognizing "the prompt did not fit the model's context window".
3
+ *
4
+ * Each provider reports the overflow its own way, and a caller that cannot tell
5
+ * it apart from any other failure has nothing to do but hand the user a
6
+ * provider error they cannot act on. Mapping every provider's signal onto one
7
+ * code is what lets the caller shorten the transcript and try again.
8
+ *
9
+ * A recognizer takes what its provider produces on that failure — the parsed
10
+ * error body from the wire, or the `Error` the provider threw carrying it — and
11
+ * names the signal that fired, so a check can tell a match on the provider's
12
+ * documented field apart from a match on its English message text.
13
+ *
14
+ * Where the signals come from:
15
+ * - **Anthropic**: `stop_reason: "model_context_window_exceeded"` (the SDK's
16
+ * `BetaStopReason` union) when generation runs into the window, and a 400
17
+ * `invalid_request_error` reading "prompt is too long" when the input alone
18
+ * overflows it. Both are stated in the Claude API's "Context window overflow
19
+ * behavior". Older models answer the same overflow with "input length and
20
+ * `max_tokens` exceed context limit".
21
+ * - **OpenAI**: `error.code: "context_length_exceeded"` on a 400
22
+ * `invalid_request_error`; the `openai` SDK lifts that field onto
23
+ * `APIError.code`. The message reads "This model's maximum context length
24
+ * is …".
25
+ * - **Gemini**: HTTP 400 `INVALID_ARGUMENT` whose message reads "The input
26
+ * token count (N) exceeds the maximum number of tokens allowed (M)". Google's
27
+ * error reference enumerates no code for it, so the message is the signal.
28
+ */
29
+ import { isRecord, isString } from "@nodetool-ai/protocol";
30
+ function stringField(source, key) {
31
+ const value = source[key];
32
+ return isString(value) ? value : "";
33
+ }
34
+ /**
35
+ * The fields to test, read from either shape a recognizer is handed: a parsed
36
+ * response body, which nests the failure under `error`, or an SDK error object,
37
+ * which carries that nested body on `.error` and lifts `code` onto itself.
38
+ */
39
+ function failureFields(raw) {
40
+ const roots = [];
41
+ if (isRecord(raw)) {
42
+ roots.push(raw);
43
+ if (isRecord(raw.error))
44
+ roots.push(raw.error);
45
+ }
46
+ const fields = { message: "", code: "", stopReason: "" };
47
+ for (const root of roots) {
48
+ fields.message = fields.message || stringField(root, "message");
49
+ fields.code = fields.code || stringField(root, "code");
50
+ fields.stopReason = fields.stopReason || stringField(root, "stop_reason");
51
+ }
52
+ return fields;
53
+ }
54
+ const ANTHROPIC_STOP_REASON = "model_context_window_exceeded";
55
+ const ANTHROPIC_OVERFLOW = /prompt is too long|exceed context limit|exceeds context limit/i;
56
+ /** @see {@link ContextExceededSignal} for what the return value names. */
57
+ export function anthropicContextExceeded(raw) {
58
+ const { message, stopReason } = failureFields(raw);
59
+ // The provider turns that stop reason into an error of its own, so the name
60
+ // is matched in text as well as in the field it arrived on.
61
+ if (stopReason === ANTHROPIC_STOP_REASON)
62
+ return "stop_reason";
63
+ if (message.includes(ANTHROPIC_STOP_REASON))
64
+ return "stop_reason";
65
+ if (ANTHROPIC_OVERFLOW.test(message))
66
+ return "message";
67
+ return null;
68
+ }
69
+ const OPENAI_ERROR_CODE = "context_length_exceeded";
70
+ const OPENAI_OVERFLOW = /maximum context length|context window of this model/i;
71
+ /** @see {@link ContextExceededSignal} for what the return value names. */
72
+ export function openAIContextExceeded(raw) {
73
+ const { message, code } = failureFields(raw);
74
+ if (code === OPENAI_ERROR_CODE)
75
+ return "error_code";
76
+ if (OPENAI_OVERFLOW.test(message))
77
+ return "message";
78
+ return null;
79
+ }
80
+ const GEMINI_MAX_TOKENS = "exceeds the maximum number of tokens allowed";
81
+ const GEMINI_TOKEN_COUNT = "input token count";
82
+ const GEMINI_EXCEEDS = "exceeds";
83
+ /**
84
+ * Gemini's overflow message, scanned rather than matched with a pattern.
85
+ *
86
+ * The wildcard form of this — `input token count[^.]*exceeds` — is quadratic on
87
+ * a message that repeats "input token count" and never says "exceeds": each
88
+ * repetition is another start position from which the engine runs to the end
89
+ * and backtracks. On 20 000 repetitions it takes ten seconds. The message is
90
+ * provider text, so its shape is not ours to bound, which is why the pattern is
91
+ * replaced rather than annotated.
92
+ *
93
+ * Scanning says the same thing in linear time: the count and the verb in one
94
+ * sentence. Only the first occurrence is considered, which is the one in the
95
+ * message Google documents; walking every occurrence would restore the
96
+ * quadratic scan this exists to remove.
97
+ */
98
+ function geminiOverflowMessage(message) {
99
+ const text = message.toLowerCase();
100
+ if (text.includes(GEMINI_MAX_TOKENS))
101
+ return true;
102
+ const start = text.indexOf(GEMINI_TOKEN_COUNT);
103
+ if (start === -1)
104
+ return false;
105
+ const rest = text.slice(start + GEMINI_TOKEN_COUNT.length);
106
+ const stop = rest.indexOf(".");
107
+ return (stop === -1 ? rest : rest.slice(0, stop)).includes(GEMINI_EXCEEDS);
108
+ }
109
+ /** @see {@link ContextExceededSignal} for what the return value names. */
110
+ export function geminiContextExceeded(raw) {
111
+ const { message } = failureFields(raw);
112
+ return geminiOverflowMessage(message) ? "message" : null;
113
+ }
114
+ //# sourceMappingURL=context-exceeded.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-exceeded.js","sourceRoot":"","sources":["../../src/providers/context-exceeded.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * How many input tokens a provider route accepts for one model.
3
+ *
4
+ * Chat compaction fires at a fraction of this number, so a wrong answer is a
5
+ * thread that either compacts far too early (a 1M window treated as 200k) or
6
+ * never compacts before the provider refuses it. The sources, most trusted
7
+ * first:
8
+ *
9
+ * 1. The provider's own Models API ({@link BaseProvider.getContextWindow}),
10
+ * e.g. Anthropic's `max_input_tokens`, which also reflects the betas the
11
+ * provider sends with every request.
12
+ * 2. models.dev, keyed by provider route and model. The same model has
13
+ * different limits on different routes, so a model id alone is never
14
+ * looked up across providers.
15
+ * 3. {@link CONTEXT_WINDOW_FALLBACK}, logged as a warning, when neither knows.
16
+ */
17
+ import type { BaseProvider } from "./base-provider.js";
18
+ /**
19
+ * Window assumed when no source knows the model. Conservative on purpose: an
20
+ * early compaction costs one summarizer call, a late one costs the turn.
21
+ */
22
+ export declare const CONTEXT_WINDOW_FALLBACK = 128000;
23
+ export declare const MODELS_DEV_URL = "https://models.dev/api.json";
24
+ /** Drop the cached models.dev catalog. Tests use it between cases. */
25
+ export declare function resetModelsDevCache(): void;
26
+ /**
27
+ * The input limit models.dev lists for one model on one provider route, or
28
+ * null. `limit.input` is preferred over `limit.context` because a route that
29
+ * reserves part of the window for output lists the smaller number as input.
30
+ */
31
+ export declare function modelsDevContextWindow(providerId: string, model: string, fetchFn?: typeof fetch): Promise<number | null>;
32
+ export type ContextWindowSource = "provider" | "models.dev" | "fallback";
33
+ export interface ContextWindow {
34
+ tokens: number;
35
+ source: ContextWindowSource;
36
+ }
37
+ /**
38
+ * Resolve the input window for `model` on `provider`. Never throws: every
39
+ * source is best-effort, and the last one is a constant.
40
+ */
41
+ export declare function resolveContextWindow(provider: BaseProvider, model: string, options?: {
42
+ fetchFn?: typeof fetch;
43
+ }): Promise<ContextWindow>;
44
+ //# sourceMappingURL=context-window.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-window.d.ts","sourceRoot":"","sources":["../../src/providers/context-window.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAIvD;;;GAGG;AACH,eAAO,MAAM,uBAAuB,SAAU,CAAC;AAE/C,eAAO,MAAM,cAAc,gCAAgC,CAAC;AA8C5D,sEAAsE;AACtE,wBAAgB,mBAAmB,IAAI,IAAI,CAG1C;AAyCD;;;;GAIG;AACH,wBAAsB,sBAAsB,CAC1C,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,OAAO,KAAyC,GACxD,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAQxB;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;AAEzE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,YAAY,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,KAAK,CAAA;CAAO,GACvC,OAAO,CAAC,aAAa,CAAC,CA2BxB"}
@@ -0,0 +1,145 @@
1
+ /**
2
+ * How many input tokens a provider route accepts for one model.
3
+ *
4
+ * Chat compaction fires at a fraction of this number, so a wrong answer is a
5
+ * thread that either compacts far too early (a 1M window treated as 200k) or
6
+ * never compacts before the provider refuses it. The sources, most trusted
7
+ * first:
8
+ *
9
+ * 1. The provider's own Models API ({@link BaseProvider.getContextWindow}),
10
+ * e.g. Anthropic's `max_input_tokens`, which also reflects the betas the
11
+ * provider sends with every request.
12
+ * 2. models.dev, keyed by provider route and model. The same model has
13
+ * different limits on different routes, so a model id alone is never
14
+ * looked up across providers.
15
+ * 3. {@link CONTEXT_WINDOW_FALLBACK}, logged as a warning, when neither knows.
16
+ */
17
+ import { createLogger } from "@nodetool-ai/config";
18
+ import { PROVIDER_IDS } from "@nodetool-ai/protocol";
19
+ const log = createLogger("nodetool.runtime.providers.context-window");
20
+ /**
21
+ * Window assumed when no source knows the model. Conservative on purpose: an
22
+ * early compaction costs one summarizer call, a late one costs the turn.
23
+ */
24
+ export const CONTEXT_WINDOW_FALLBACK = 128_000;
25
+ export const MODELS_DEV_URL = "https://models.dev/api.json";
26
+ /** How long a fetched catalog is trusted before it is fetched again. */
27
+ const CATALOG_TTL_MS = 24 * 60 * 60 * 1000;
28
+ /** How long a failed fetch is remembered, so an offline machine is not retried every turn. */
29
+ const CATALOG_FAILURE_TTL_MS = 10 * 60 * 1000;
30
+ const CATALOG_TIMEOUT_MS = 5_000;
31
+ /**
32
+ * NodeTool provider id → models.dev provider key, for the ids that differ or
33
+ * that models.dev lists. A provider missing here has no route entry there
34
+ * (local runtimes, NodeTool's own managed models) and falls through.
35
+ */
36
+ const MODELS_DEV_PROVIDER = {
37
+ [PROVIDER_IDS.OPENAI]: "openai",
38
+ [PROVIDER_IDS.ANTHROPIC]: "anthropic",
39
+ [PROVIDER_IDS.GEMINI]: "google",
40
+ [PROVIDER_IDS.GROQ]: "groq",
41
+ [PROVIDER_IDS.MISTRAL]: "mistral",
42
+ [PROVIDER_IDS.MOONSHOT]: "moonshotai",
43
+ [PROVIDER_IDS.MINIMAX]: "minimax",
44
+ [PROVIDER_IDS.DEEPSEEK]: "deepseek",
45
+ [PROVIDER_IDS.XAI]: "xai",
46
+ [PROVIDER_IDS.COHERE]: "cohere",
47
+ [PROVIDER_IDS.OPENROUTER]: "openrouter",
48
+ [PROVIDER_IDS.TOGETHER]: "togetherai",
49
+ [PROVIDER_IDS.ALIBABA]: "alibaba",
50
+ [PROVIDER_IDS.CEREBRAS]: "cerebras",
51
+ [PROVIDER_IDS.META]: "llama",
52
+ [PROVIDER_IDS.HUGGINGFACE]: "huggingface"
53
+ };
54
+ let catalogCache = null;
55
+ let catalogInFlight = null;
56
+ /** Drop the cached models.dev catalog. Tests use it between cases. */
57
+ export function resetModelsDevCache() {
58
+ catalogCache = null;
59
+ catalogInFlight = null;
60
+ }
61
+ async function loadModelsDevCatalog(fetchFn) {
62
+ if (catalogCache && catalogCache.expires > Date.now()) {
63
+ return catalogCache.catalog;
64
+ }
65
+ if (catalogInFlight)
66
+ return catalogInFlight;
67
+ catalogInFlight = (async () => {
68
+ try {
69
+ const response = await fetchFn(MODELS_DEV_URL, {
70
+ signal: AbortSignal.timeout(CATALOG_TIMEOUT_MS)
71
+ });
72
+ if (!response.ok)
73
+ throw new Error(`HTTP ${response.status}`);
74
+ const catalog = (await response.json());
75
+ catalogCache = { catalog, expires: Date.now() + CATALOG_TTL_MS };
76
+ return catalog;
77
+ }
78
+ catch (err) {
79
+ log.warn("models.dev catalog unavailable", {
80
+ error: err instanceof Error ? err.message : String(err)
81
+ });
82
+ catalogCache = {
83
+ catalog: null,
84
+ expires: Date.now() + CATALOG_FAILURE_TTL_MS
85
+ };
86
+ return null;
87
+ }
88
+ finally {
89
+ catalogInFlight = null;
90
+ }
91
+ })();
92
+ return catalogInFlight;
93
+ }
94
+ /** A positive integer token count, or null for anything else. */
95
+ function tokenCount(value) {
96
+ return typeof value === "number" && Number.isFinite(value) && value > 0
97
+ ? Math.floor(value)
98
+ : null;
99
+ }
100
+ /**
101
+ * The input limit models.dev lists for one model on one provider route, or
102
+ * null. `limit.input` is preferred over `limit.context` because a route that
103
+ * reserves part of the window for output lists the smaller number as input.
104
+ */
105
+ export async function modelsDevContextWindow(providerId, model, fetchFn = globalThis.fetch.bind(globalThis)) {
106
+ const route = MODELS_DEV_PROVIDER[providerId];
107
+ if (!route)
108
+ return null;
109
+ const catalog = await loadModelsDevCatalog(fetchFn);
110
+ const models = catalog?.[route]?.models;
111
+ if (!models)
112
+ return null;
113
+ const entry = models[model] ?? models[model.replace(/^models\//, "")];
114
+ return tokenCount(entry?.limit?.input) ?? tokenCount(entry?.limit?.context);
115
+ }
116
+ /**
117
+ * Resolve the input window for `model` on `provider`. Never throws: every
118
+ * source is best-effort, and the last one is a constant.
119
+ */
120
+ export async function resolveContextWindow(provider, model, options = {}) {
121
+ try {
122
+ const fromProvider = tokenCount(await provider.getContextWindow(model));
123
+ if (fromProvider !== null) {
124
+ return { tokens: fromProvider, source: "provider" };
125
+ }
126
+ }
127
+ catch (err) {
128
+ log.debug("Provider context window lookup failed", {
129
+ provider: provider.provider,
130
+ model,
131
+ error: err instanceof Error ? err.message : String(err)
132
+ });
133
+ }
134
+ const fromCatalog = await modelsDevContextWindow(provider.provider, model, options.fetchFn);
135
+ if (fromCatalog !== null) {
136
+ return { tokens: fromCatalog, source: "models.dev" };
137
+ }
138
+ log.warn("Context window unknown; assuming the fallback", {
139
+ provider: provider.provider,
140
+ model,
141
+ tokens: CONTEXT_WINDOW_FALLBACK
142
+ });
143
+ return { tokens: CONTEXT_WINDOW_FALLBACK, source: "fallback" };
144
+ }
145
+ //# sourceMappingURL=context-window.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-window.js","sourceRoot":"","sources":["../../src/providers/context-window.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { PROBE_MANIFEST, probeProviders, type LiveProbeSpec, type ProbeManifestEntry, type ProbeProvider } from "./probe-manifest.js";
2
+ export { formatProbeReport, runProbes, type ProbeReport, type ProbeResult, type ProbeStatus, type RunProbesOptions } from "./probe-runner.js";
3
+ export { redactText, summarizeShape, SHAPE_LITERAL_KEYS } from "./redact.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/providers/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EACd,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,SAAS,EACT,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { PROBE_MANIFEST, probeProviders } from "./probe-manifest.js";
2
+ export { formatProbeReport, runProbes } from "./probe-runner.js";
3
+ export { redactText, summarizeShape, SHAPE_LITERAL_KEYS } from "./redact.js";
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/providers/contract/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,cAAc,EAIf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,iBAAiB,EACjB,SAAS,EAKV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC"}