@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,273 @@
1
+ /**
2
+ * Image codec helpers for the raw-RGBA in-flight format.
3
+ *
4
+ * GPU image ops emit `ImageRef`s whose `data` is raw straight-alpha RGBA8
5
+ * (marked by `mimeType === RAW_RGBA_MIME`) so adjacent GPU ops skip the codec.
6
+ * Any boundary that needs portable bytes (client, storage, file save, the
7
+ * Python bridge) lazily encodes them to PNG via these helpers. Everything else
8
+ * must go through the shared decode/encode paths rather than assume `data` is
9
+ * already an encoded image.
10
+ */
11
+ import { importHidden } from "@nodetool-ai/config";
12
+ import { isRawRgbaImage } from "@nodetool-ai/protocol";
13
+ let _sharpPromise = null;
14
+ /**
15
+ * Actionable error for a missing/broken `sharp` native addon, thrown by the
16
+ * raw-RGBA → PNG encoder when {@link loadSharp} resolves null and no Canvas
17
+ * fallback applies.
18
+ */
19
+ export const SHARP_UNAVAILABLE_MESSAGE = "The 'sharp' image codec is unavailable. It is a native addon that must be " +
20
+ "installed for this runtime (run `npm install sharp` in the server install, " +
21
+ "or reinstall it for your platform/arch — e.g. musl or a serverless target). " +
22
+ "Raw-RGBA images cannot be encoded to PNG here without sharp or a Canvas.";
23
+ /**
24
+ * Lazily load `sharp`. Resolves `null` — never throws an opaque module-load
25
+ * error — off Node (browser/edge) or when the Node native addon can't load
26
+ * (musl, unbundled serverless, ABI mismatch, partial install). A rejected
27
+ * attempt is never cached, so a fixed install is picked up on the next call.
28
+ * Callers handle `null` with a Canvas fallback or a clear, actionable error.
29
+ */
30
+ async function loadSharp() {
31
+ if (!_sharpPromise) {
32
+ // The attempt rejects when the import throws (broken addon: musl, ABI
33
+ // mismatch, partial install) so the `.catch` below can drop it from the
34
+ // cache and a later, fixed install is picked up. A legitimate off-Node
35
+ // `null` resolves and is cached — there is nothing to retry there.
36
+ const attempt = (async () => {
37
+ const mod = await importHidden("sharp");
38
+ if (!mod)
39
+ return null;
40
+ return "default" in mod ? mod.default : mod;
41
+ })();
42
+ _sharpPromise = attempt;
43
+ attempt.catch(() => {
44
+ if (_sharpPromise === attempt)
45
+ _sharpPromise = null;
46
+ });
47
+ }
48
+ // Never surface an opaque module-load error to callers; a broken addon is
49
+ // reported as `null` (caller falls back to Canvas or a clear, actionable
50
+ // error). The cache reset above already happened on the rejected attempt.
51
+ return _sharpPromise.catch(() => null);
52
+ }
53
+ /** Encode raw straight-alpha RGBA8 pixels to PNG bytes. */
54
+ export async function encodeRawRgbaToPng(data, width, height) {
55
+ const sharp = await loadSharp();
56
+ if (!sharp) {
57
+ // No sharp (off Node, or a Node target where the addon won't load). Use
58
+ // OffscreenCanvas when the runtime exposes one (a bundled browser/edge or a
59
+ // Node build with Canvas); otherwise fail with a clear, actionable error.
60
+ if (typeof OffscreenCanvas !== "undefined") {
61
+ const canvas = new OffscreenCanvas(width, height);
62
+ const ctx = canvas.getContext("2d");
63
+ if (!ctx)
64
+ throw new Error("OffscreenCanvas 2D context unavailable");
65
+ ctx.putImageData(new ImageData(new Uint8ClampedArray(data), width, height), 0, 0);
66
+ const blob = await canvas.convertToBlob({ type: "image/png" });
67
+ return new Uint8Array(await blob.arrayBuffer());
68
+ }
69
+ throw new Error(SHARP_UNAVAILABLE_MESSAGE);
70
+ }
71
+ const png = await sharp(Buffer.from(data.buffer, data.byteOffset, data.byteLength), { raw: { width, height, channels: 4 } })
72
+ .png()
73
+ .toBuffer();
74
+ return new Uint8Array(png);
75
+ }
76
+ /**
77
+ * If `ref` is a raw-RGBA image, return an equivalent ImageRef with `data`
78
+ * encoded to PNG and `mimeType` set to `image/png`; otherwise return it
79
+ * unchanged. Use at any boundary that must hand out a portable image.
80
+ */
81
+ export async function encodeRawImageRef(ref) {
82
+ if (!isRawRgbaImage(ref))
83
+ return ref;
84
+ const png = await encodeRawRgbaToPng(ref.data, ref.width, ref.height);
85
+ return { ...ref, data: png, mimeType: "image/png" };
86
+ }
87
+ /**
88
+ * Where an SVG can name a resource: an `href` / `xlink:href` attribute, and a
89
+ * CSS `url()`. Used to *split* the markup, so each piece that follows is where
90
+ * one value begins.
91
+ *
92
+ * Splitting rather than matching the values is the whole point, and it took
93
+ * two CodeQL findings to arrive at. A regex that matches a value restarts at
94
+ * the next candidate when it fails, and a value scan that runs to the end of
95
+ * the document on each of n candidates is quadratic: `"url(" + 2000 spaces`
96
+ * never finished against the first version, and `"url(".repeat(400_000)`
97
+ * took 15s against the second. Pieces, by contrast, partition the document —
98
+ * bounded work per piece sums to linear however many openers there are.
99
+ */
100
+ const REFERENCE_OPENER = /(url\(|(?:xlink:)?href\s*=\s*)/i;
101
+ /** Longest value the screen reads. Past this it is not a URL anyone meant. */
102
+ const MAX_REFERENCE_VALUE = 2048;
103
+ const isSpace = (ch) => ch === " " || ch === "\t" || ch === "\n" || ch === "\r" || ch === "\f";
104
+ /** Characters that end a reference value in either syntax. */
105
+ const VALUE_END = new Set([")", '"', "'", ">", " ", "\t", "\n", "\r", "\f"]);
106
+ /**
107
+ * Read the value out of the text following an opener.
108
+ *
109
+ * Truncating at {@link MAX_REFERENCE_VALUE} is safe in the direction that
110
+ * matters: the value is only tested for a `#` or `data:` prefix, and a
111
+ * truncated value keeps its prefix — so a long `data:` payload still reads as
112
+ * internal, and anything else still reads as external.
113
+ */
114
+ function referenceValue(piece) {
115
+ let i = 0;
116
+ while (i < piece.length && isSpace(piece[i]))
117
+ i++;
118
+ if (piece[i] === '"' || piece[i] === "'")
119
+ i++;
120
+ const start = i;
121
+ const limit = Math.min(piece.length, start + MAX_REFERENCE_VALUE);
122
+ while (i < limit && !VALUE_END.has(piece[i]))
123
+ i++;
124
+ return piece.slice(start, i);
125
+ }
126
+ /**
127
+ * Whether a reference points outside the document. A fragment (`#id`) and a
128
+ * `data:` payload are self-contained; an empty value names nothing.
129
+ */
130
+ function isExternalReference(value) {
131
+ if (!value)
132
+ return false;
133
+ if (value.startsWith("#"))
134
+ return false;
135
+ return !value.slice(0, 5).toLowerCase().startsWith("data:");
136
+ }
137
+ /** The first reference in this markup that points outside it, if any. */
138
+ function firstExternalReference(markup) {
139
+ // One capture group, so `split` interleaves: text, opener, text, opener, …
140
+ // Every even index from 2 up is the text a value starts in.
141
+ const parts = markup.split(REFERENCE_OPENER);
142
+ for (let i = 2; i < parts.length; i += 2) {
143
+ const value = referenceValue(parts[i]);
144
+ if (isExternalReference(value))
145
+ return value;
146
+ }
147
+ return null;
148
+ }
149
+ /** Largest SVG this rasterizer will hand to the decoder. */
150
+ const MAX_SVG_BYTES = 8 * 1024 * 1024;
151
+ /** Longest side an SVG is rendered at when the caller names no `minSide`. */
152
+ const SVG_FALLBACK_SIDE = 1024;
153
+ /** Ceiling on the raster an SVG is rendered into, whatever `minSide` asks for. */
154
+ const MAX_SVG_RASTER_SIDE = 4096;
155
+ /**
156
+ * Rasterize SVG markup to PNG bytes.
157
+ *
158
+ * Vector sources reach the raster paths (a vision provider's image block, a
159
+ * crop, a downscale) only through here. Two rules the caller does not have to
160
+ * know about:
161
+ *
162
+ * - **No external references.** The decoder behind `sharp` is librsvg, which
163
+ * resolves `href` and `url()` against the process's own filesystem and
164
+ * network. Since the markup here is written by a model or uploaded by
165
+ * whoever, a document that reaches outward is refused by name rather than
166
+ * rendered — the error tells the caller to inline the resource.
167
+ * - **A usable size.** An SVG that declares `width="24"` renders to a 24px
168
+ * PNG, which is not something a model can read. `minSide` scales the render
169
+ * up so the result is worth looking at, defaulting to
170
+ * {@link SVG_FALLBACK_SIDE}.
171
+ */
172
+ export async function rasterizeSvg(bytes, opts = {}) {
173
+ if (bytes.byteLength > MAX_SVG_BYTES) {
174
+ throw new Error(`SVG is ${bytes.byteLength} bytes, over the ${MAX_SVG_BYTES}-byte limit for rasterization.`);
175
+ }
176
+ const markup = new TextDecoder("utf-8", { fatal: false }).decode(bytes);
177
+ const external = firstExternalReference(markup);
178
+ if (external !== null) {
179
+ throw new Error(`Refusing to render an SVG that references "${external}". ` +
180
+ `The renderer would fetch it from this host's filesystem or network. ` +
181
+ `Inline the resource as a data: URI, or drop the reference.`);
182
+ }
183
+ const sharp = await loadSharp();
184
+ if (!sharp) {
185
+ throw new Error(SHARP_UNAVAILABLE_MESSAGE);
186
+ }
187
+ const buffer = Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength);
188
+ const intrinsic = await sharp(buffer).metadata();
189
+ const srcSide = Math.max(intrinsic.width ?? 0, intrinsic.height ?? 0);
190
+ const targetSide = Math.min(opts.minSide ?? SVG_FALLBACK_SIDE, MAX_SVG_RASTER_SIDE);
191
+ // librsvg scales the whole render by DPI, so a density is how an SVG is asked
192
+ // for more pixels than it declares; 72 is the 1:1 baseline. The density is
193
+ // left unbounded because what it produces is not: the render lands at
194
+ // `targetSide` however few units the document declares, so a `width="0.01"`
195
+ // document costs the same pixels as any other.
196
+ const density = srcSide > 0 && srcSide < targetSide
197
+ ? Math.ceil((72 * targetSide) / srcSide)
198
+ : 72;
199
+ let pipeline = sharp(buffer, { density, failOn: "none" });
200
+ if (opts.maxSide && opts.maxSide > 0) {
201
+ pipeline = pipeline.resize({
202
+ width: opts.maxSide,
203
+ height: opts.maxSide,
204
+ fit: "inside",
205
+ withoutEnlargement: true
206
+ });
207
+ }
208
+ const { data, info } = await pipeline
209
+ .png()
210
+ .toBuffer({ resolveWithObject: true });
211
+ return { data: new Uint8Array(data), width: info.width, height: info.height };
212
+ }
213
+ /**
214
+ * Decode encoded image bytes (PNG/JPEG/WebP/…), optionally crop to a pixel
215
+ * `region` and/or downscale so the longest side fits `maxSide`, then re-encode
216
+ * to PNG. Used by the `view_image` tool to load only the pixels an agent asks
217
+ * for — a region crop and a "low" detail downscale both cut the token cost of
218
+ * the image the model actually sees.
219
+ *
220
+ * Coordinates are clamped to the image bounds, so an over-large or partly
221
+ * out-of-frame region yields the overlapping area rather than an error. When
222
+ * `sharp` is unavailable (off Node, or a broken native addon) the original
223
+ * bytes are returned unchanged with `width`/`height` 0 — the caller still gets
224
+ * a viewable full image, just uncropped. In that pass-through case the returned
225
+ * `mimeType` is `opts.sourceMime` (the caller's known format) so the bytes are
226
+ * never mislabeled; it falls back to `image/png` only when the caller didn't
227
+ * provide one.
228
+ */
229
+ export async function extractImageRegion(bytes, opts = {}) {
230
+ const sharp = await loadSharp();
231
+ if (!sharp) {
232
+ // No re-encode happened — keep the true source mime rather than claiming
233
+ // PNG for what may be JPEG/WebP/GIF bytes (which a vision provider rejects).
234
+ return {
235
+ data: bytes,
236
+ mimeType: opts.sourceMime || "image/png",
237
+ width: 0,
238
+ height: 0
239
+ };
240
+ }
241
+ let pipeline = sharp(Buffer.from(bytes.buffer, bytes.byteOffset, bytes.byteLength), {
242
+ failOn: "none"
243
+ });
244
+ const meta = await pipeline.metadata();
245
+ const srcW = meta.width ?? 0;
246
+ const srcH = meta.height ?? 0;
247
+ const region = opts.region;
248
+ if (region) {
249
+ const left = Math.max(0, Math.min(Math.floor(region.x), Math.max(0, srcW - 1)));
250
+ const top = Math.max(0, Math.min(Math.floor(region.y), Math.max(0, srcH - 1)));
251
+ const maxW = srcW ? srcW - left : Math.floor(region.width);
252
+ const maxH = srcH ? srcH - top : Math.floor(region.height);
253
+ const width = Math.max(1, Math.min(Math.floor(region.width), maxW));
254
+ const height = Math.max(1, Math.min(Math.floor(region.height), maxH));
255
+ pipeline = pipeline.extract({ left, top, width, height });
256
+ }
257
+ if (opts.maxSide && opts.maxSide > 0) {
258
+ pipeline = pipeline.resize({
259
+ width: opts.maxSide,
260
+ height: opts.maxSide,
261
+ fit: "inside",
262
+ withoutEnlargement: true
263
+ });
264
+ }
265
+ const { data, info } = await pipeline.png().toBuffer({ resolveWithObject: true });
266
+ return {
267
+ data: new Uint8Array(data),
268
+ mimeType: "image/png",
269
+ width: info.width,
270
+ height: info.height
271
+ };
272
+ }
273
+ //# sourceMappingURL=image-codec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"image-codec.js","sourceRoot":"","sources":["../src/image-codec.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,18 +1,68 @@
1
1
  /**
2
2
  * @nodetool-ai/runtime – Public API
3
3
  */
4
- export { ProcessingContext, MemoryCache, InMemoryStorageAdapter, FileStorageAdapter, S3StorageAdapter, resolveWorkspacePath, type AssetOutputMode, type CacheAdapter, type S3Client, type StorageAdapter } from "./context.js";
4
+ export { ProcessingContext, ACTIVE_MODEL_CONTEXT_KEY, type ActiveModelSelection, MemoryCache, resolveWorkspacePath, setDefaultModelInterfaces, getDefaultModelInterfaces, mediaResolverFor, type AssetOutputMode, type CacheAdapter, type AssetInfoEntry, type FolderAssetEntry, type ProcessingContextModelInterfaces, type EntityUpsertArgs, type GenerationRequest, type GenerationResult, type GenerationRunOptions, type GenerationLifecycleHooks, GenerationAlreadyAcceptedError, type InjectedTool, type StorageAdapter, type StorageEntry, type StorageListResult, type StorageStat } from "./context.js";
5
+ export { WorkspacePathError, WorkspaceNotLocalError, observeWorkspace, type Workspace, type WorkspaceChange, type WorkspaceEntry, type WorkspaceStat } from "./workspace.js";
6
+ export { StorageWorkspace, createWorkspace, createLocalWorkspace } from "./storage-workspace.js";
7
+ export { PrefixedStorageAdapter } from "./prefixed-storage-adapter.js";
8
+ export type { SandboxModuleCatalog } from "./sandbox-module-catalog.js";
9
+ export { getProcessSandboxModuleCatalog, refuseSandboxDelivery, setProcessSandboxModuleCatalog } from "./sandbox-module-catalog.js";
10
+ export { AgentMemory, memoryKeys, type MemoryEntry, type MemoryFilter, type MemoryKind, type MemoryListener } from "./agent-memory.js";
5
11
  export * from "./providers/index.js";
6
- export { initTelemetry, getTracer, type TelemetryOptions } from "./telemetry.js";
12
+ export { initTelemetry, shutdownTelemetry, getTracer, type TelemetryOptions } from "./telemetry.js";
7
13
  export { spanToRecord, JsonlFileSpanExporter, StdoutSpanExporter, type TraceRecord, type StdoutFormat } from "./trace-exporters.js";
8
- export { withAgentSpan, withAgentSpanGen, withWorkflowSpan, withNodeSpan, withSpanGen, setLastUsage, consumeLastUsage, peekLastUsage, createUsageSlot, type AgentSpanKind, type LlmUsage } from "./tracing-helpers.js";
14
+ export { withAgentSpan, withAgentSpanGen, withSpan, withWorkflowSpan, withNodeSpan, withSpanGen, setLastUsage, consumeLastUsage, peekLastUsage, createUsageSlot, type AgentSpanKind, type LlmUsage } from "./tracing-helpers.js";
15
+ export { RecoverableNodeError, isRecoverableNodeError } from "./recoverable-node-error.js";
16
+ export { createInvocationAccount, inInvocationAccount, recordInvocationCost, recordInvocationAsset, currentInvocationAccount, type InvocationAccount } from "./invocation-account.js";
17
+ export { recordGenerationReceipt, recordGenerationProviderResult, recordGenerationReceiptAsync, recordGenerationBindingAsync, runWithGenerationReceipt, currentGenerationReceipt, currentGenerationProviderRequestOptions, isAuthoritativeProviderTerminalError, GenerationScopeError, type GenerationReceiptScopeOptions, type GenerationProviderRequestOptions } from "./generation-receipt.js";
18
+ export { HIGGSFIELD_BASE, HiggsfieldApiError, higgsfieldSubmit, higgsfieldGetStatus, higgsfieldGetStatusByRequestId, higgsfieldAwaitResult, higgsfieldCancel, higgsfieldCancelByRequestId, higgsfieldEstimate, higgsfieldCreateUploadUrl, higgsfieldUploadMedia, higgsfieldOutputUrls, higgsfieldDownloadResult } from "./providers/higgsfield-transport.js";
19
+ export type { HiggsfieldCredentials, HiggsfieldStatus, HiggsfieldSubmission, HiggsfieldUpload, HiggsfieldEstimate } from "./providers/higgsfield-transport.js";
20
+ export { generationRegistry, type GenerationOutcome, type CompletedGeneration } from "./generation-registry.js";
21
+ export { redactGenerationParams } from "./redact-params.js";
22
+ export { CostCappedTurnBudget, CompositeTurnBudget, createRunBudget, createDeadline, createSemaphore, createCounter, isRunBudget, budgetFromContext, RUN_BUDGET_CONTEXT_KEY, BUDGET_EXHAUSTION_KINDS, TURN_REFUSALS, type TurnBudget, type TurnReservation, type TurnReservationHandle, type CostCappedTurnBudgetOptions, type CompositeTurnBudgetOptions, type CreateRunBudgetOptions, type RunBudget, type RunTurnBudget, type BudgetExhaustion, type BudgetExhaustionKind, type TurnRefusal, type Deadline, type Semaphore, type Release, type Counter } from "./turn-budget.js";
9
23
  export { packContext, type PackedContext } from "./context-packer.js";
24
+ export { resolveEntities, type EntityLibraryContext } from "./entities.js";
25
+ export { isZodSchema, parseWithTypeCoercion, zodToJsonSchema, type JsonSchema, type ZodOrJsonSchema } from "@nodetool-ai/protocol/zod-schema";
26
+ export { VariableChannel } from "./variable-channel.js";
27
+ export { countTokens, truncateToTokens } from "./token-counter.js";
10
28
  export { PythonStdioBridge, type PythonBridgeOptions, type PythonNodeMetadata, type ExecuteResult, type ProgressEvent, type PythonWorkerLoadError, type PythonWorkerStatus } from "./python-stdio-bridge.js";
29
+ import { PythonBridgeBase } from "./python-bridge-base.js";
30
+ export { PythonBridgeBase };
31
+ export type { UnifiedModelLike, ExecuteIdentity, JobBoundary, PythonJobLifecycle, ModelEvictRequest, ModelEvictResult, ModelDownloadRequest, ModelDownloadUpdate, ComfyStatusInfo, ComfyEvent, ComfyExecuteOptions, ComfyExecuteResult, ComfyModelDownloadRequest, ComfyModelDownloadUpdate, ComfyModelInfo, BlenderExecuteJob, BlenderStatusInfo, BlenderEvent, BlenderExecuteOptions, BlenderExecuteResult } from "./python-bridge-types.js";
32
+ export { WebsocketPythonBridge, type WebsocketPythonBridgeOptions } from "./python-websocket-bridge.js";
33
+ export { createPythonBridge, onPythonBridgeCreated } from "./python-bridge-factory.js";
34
+ export type { PythonBridgeObserver } from "./python-bridge-factory.js";
35
+ export { encodeFrame, FrameDecoder, FrameSizeError, DEFAULT_MAX_BRIDGE_FRAME_SIZE, type FrameDecoderOptions } from "./python-bridge-framing.js";
36
+ export { SwappableBridge } from "./swappable-python-bridge.js";
37
+ /**
38
+ * Transport-agnostic public handle for a Python worker bridge. An interface
39
+ * (not the concrete base) so both the stdio/WebSocket bridges and the
40
+ * {@link SwappableBridge} wrapper satisfy it — consumers hold one stable
41
+ * reference whose behavior follows the active worker.
42
+ */
43
+ export type { PythonBridge } from "./python-bridge-types.js";
11
44
  export { BRIDGE_PROTOCOL_VERSION, MIN_NODETOOL_CORE_VERSION } from "@nodetool-ai/protocol/bridge-protocol";
45
+ export { encodeRawRgbaToPng, encodeRawImageRef, extractImageRegion, rasterizeSvg } from "./image-codec.js";
46
+ export type { ImageRegion } from "./image-codec.js";
12
47
  export { PythonNodeExecutor } from "./python-node-executor.js";
13
- export { type NodeExecutor, type StreamingInputs, type StreamingOutputs } from "./node-executor.js";
14
- export { executeComfy } from "./comfy-executor.js";
15
- export type { ComfyExecutorResult, ComfyImage, ComfyProgressEvent, ComfyExecutionHandle } from "./comfy-executor.js";
48
+ export { connectPythonBridgeForGraph, resolvePythonNodeExecutor } from "./python-graph-resolver.js";
49
+ export { loadMediaRefBytes, type MediaRefValue } from "./media-ref-bytes.js";
50
+ export { fetchExternalMedia, privateMediaFetchAllowed } from "./external-media-fetch.js";
51
+ export { assetRefToPromptToken, classifyAssetToken, classifyTextToken, expandAssetReferences, expandEntityRefs, expandEntitiesForGeneration, findAssetRefs, findImageAssetRefs, findTextAssetRefs, inlineTextAssetRefs, stripAssetRefs, mapPromptAssetsToInputs, type AssetMediaKind, type PromptAssetRef, type TextAssetRef, type PromptAssetTextField, type PromptAssetInputField, type InjectedAssetRef, type EntityRefResolver, type ExpandedEntityPrompt } from "./prompt-asset-refs.js";
52
+ export { logPythonWorkerStderr } from "./python-worker-stderr.js";
53
+ export { type NodeExecutor, type StreamingInputs, type StreamingOutputs, type MessageEnvelopeLike, type TriggerEvent } from "./node-executor.js";
54
+ export { createFakeContext, stubGlobalFetch, type FakeContextHandle, type FakeContextOptions } from "./testing.js";
55
+ export { executeComfy, uploadComfyFile } from "./comfy-executor.js";
56
+ export { executeBlender, BlenderExecutorError } from "./blender-executor.js";
57
+ export type { BlenderWorkerJob, BlenderExecutorOptions, BlenderExecutorStats, BlenderExecutorResult } from "./blender-executor.js";
58
+ export type { ComfyExecutorResult, ComfyImage, ComfyFileOutput, ComfyNodeOutputs, ComfyProgressEvent, ComfyExecutionHandle } from "./comfy-executor.js";
59
+ export { runHostBinary, HostBinaryMissingError, MAX_CAPTURED_BYTES, MAX_ARTIFACT_BYTES, maxConcurrentHostBinaries, mimeFromFilename, clampTimeoutSeconds, type HostBinaryResult, type RunHostBinaryOptions } from "./host-binaries.js";
16
60
  export { RECOMMENDED_MODELS } from "./recommended-models.js";
17
61
  export type { RecommendedUnifiedModel } from "./recommended-models.js";
62
+ export { clearProviderCache, getProviderCacheVersion } from "./provider-cache.js";
63
+ export { registerCostReconciler, getCostReconciler } from "./cost-reconciler.js";
64
+ export type { CostReconciler, CostReconcileInput, ReconciledCost } from "./cost-reconciler.js";
65
+ export * from "./google/index.js";
66
+ export { PERMISSION_GATE_CONTEXT_KEY, decidePermission, headlessDenialReason, headlessGate } from "./permission-gate.js";
67
+ export type { ApprovalDecision, ApprovalRequest, PermissionCategory, PermissionDecision, PermissionGateAction, PermissionGateClock, PermissionGateOptions, PermissionGateVerdict, PermissionMode, RequestApproval } from "./permission-gate.js";
18
68
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,EACb,KAAK,cAAc,EACpB,MAAM,cAAc,CAAC;AAEtB,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,aAAa,EACb,SAAS,EACT,KAAK,gBAAgB,EACtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAClB,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,KAAK,aAAa,EAClB,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAKlC,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAC/D,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACtB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACV,mBAAmB,EACnB,UAAU,EACV,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,19 +1,58 @@
1
1
  /**
2
2
  * @nodetool-ai/runtime – Public API
3
3
  */
4
- export { ProcessingContext, MemoryCache, InMemoryStorageAdapter, FileStorageAdapter, S3StorageAdapter, resolveWorkspacePath } from "./context.js";
4
+ export { ProcessingContext, ACTIVE_MODEL_CONTEXT_KEY, MemoryCache, resolveWorkspacePath, setDefaultModelInterfaces, getDefaultModelInterfaces, mediaResolverFor, GenerationAlreadyAcceptedError } from "./context.js";
5
+ // The run's workspace, as an interface over any storage backend. Importing
6
+ // `storage-workspace.js` here also installs the factory ProcessingContext uses
7
+ // to build a workspace from a plain `workspaceDir`.
8
+ export { WorkspacePathError, WorkspaceNotLocalError, observeWorkspace } from "./workspace.js";
9
+ export { StorageWorkspace, createWorkspace, createLocalWorkspace } from "./storage-workspace.js";
10
+ export { PrefixedStorageAdapter } from "./prefixed-storage-adapter.js";
11
+ export { getProcessSandboxModuleCatalog, refuseSandboxDelivery, setProcessSandboxModuleCatalog } from "./sandbox-module-catalog.js";
12
+ export { AgentMemory, memoryKeys } from "./agent-memory.js";
5
13
  export * from "./providers/index.js";
6
- export { initTelemetry, getTracer } from "./telemetry.js";
14
+ export { initTelemetry, shutdownTelemetry, getTracer } from "./telemetry.js";
7
15
  export { spanToRecord, JsonlFileSpanExporter, StdoutSpanExporter } from "./trace-exporters.js";
8
- export { withAgentSpan, withAgentSpanGen, withWorkflowSpan, withNodeSpan, withSpanGen, setLastUsage, consumeLastUsage, peekLastUsage, createUsageSlot } from "./tracing-helpers.js";
16
+ export { withAgentSpan, withAgentSpanGen, withSpan, withWorkflowSpan, withNodeSpan, withSpanGen, setLastUsage, consumeLastUsage, peekLastUsage, createUsageSlot } from "./tracing-helpers.js";
17
+ export { RecoverableNodeError, isRecoverableNodeError } from "./recoverable-node-error.js";
18
+ export { createInvocationAccount, inInvocationAccount, recordInvocationCost, recordInvocationAsset, currentInvocationAccount } from "./invocation-account.js";
19
+ export { recordGenerationReceipt, recordGenerationProviderResult, recordGenerationReceiptAsync, recordGenerationBindingAsync, runWithGenerationReceipt, currentGenerationReceipt, currentGenerationProviderRequestOptions, isAuthoritativeProviderTerminalError, GenerationScopeError } from "./generation-receipt.js";
20
+ export { HIGGSFIELD_BASE, HiggsfieldApiError, higgsfieldSubmit, higgsfieldGetStatus, higgsfieldGetStatusByRequestId, higgsfieldAwaitResult, higgsfieldCancel, higgsfieldCancelByRequestId, higgsfieldEstimate, higgsfieldCreateUploadUrl, higgsfieldUploadMedia, higgsfieldOutputUrls, higgsfieldDownloadResult } from "./providers/higgsfield-transport.js";
21
+ export { generationRegistry } from "./generation-registry.js";
22
+ export { redactGenerationParams } from "./redact-params.js";
23
+ export { CostCappedTurnBudget, CompositeTurnBudget, createRunBudget, createDeadline, createSemaphore, createCounter, isRunBudget, budgetFromContext, RUN_BUDGET_CONTEXT_KEY, BUDGET_EXHAUSTION_KINDS, TURN_REFUSALS } from "./turn-budget.js";
9
24
  export { packContext } from "./context-packer.js";
25
+ export { resolveEntities } from "./entities.js";
26
+ // Public API re-export — the source of truth lives in @nodetool-ai/protocol
27
+ export { isZodSchema, parseWithTypeCoercion, zodToJsonSchema } from "@nodetool-ai/protocol/zod-schema";
28
+ export { VariableChannel } from "./variable-channel.js";
29
+ export { countTokens, truncateToTokens } from "./token-counter.js";
10
30
  export { PythonStdioBridge } from "./python-stdio-bridge.js";
31
+ import { PythonBridgeBase } from "./python-bridge-base.js";
32
+ export { PythonBridgeBase };
33
+ export { WebsocketPythonBridge } from "./python-websocket-bridge.js";
34
+ export { createPythonBridge, onPythonBridgeCreated } from "./python-bridge-factory.js";
35
+ export { encodeFrame, FrameDecoder, FrameSizeError, DEFAULT_MAX_BRIDGE_FRAME_SIZE } from "./python-bridge-framing.js";
36
+ export { SwappableBridge } from "./swappable-python-bridge.js";
11
37
  // Public API re-export — the source of truth lives in @nodetool-ai/protocol
12
38
  // so the Electron main bundle (which can't pull in the runtime barrel) and
13
39
  // any other thin consumer can read these constants without dragging the
14
40
  // providers in. Internal callers should import from protocol directly.
15
41
  export { BRIDGE_PROTOCOL_VERSION, MIN_NODETOOL_CORE_VERSION } from "@nodetool-ai/protocol/bridge-protocol";
42
+ export { encodeRawRgbaToPng, encodeRawImageRef, extractImageRegion, rasterizeSvg } from "./image-codec.js";
16
43
  export { PythonNodeExecutor } from "./python-node-executor.js";
17
- export { executeComfy } from "./comfy-executor.js";
44
+ export { connectPythonBridgeForGraph, resolvePythonNodeExecutor } from "./python-graph-resolver.js";
45
+ export { loadMediaRefBytes } from "./media-ref-bytes.js";
46
+ export { fetchExternalMedia, privateMediaFetchAllowed } from "./external-media-fetch.js";
47
+ export { assetRefToPromptToken, classifyAssetToken, classifyTextToken, expandAssetReferences, expandEntityRefs, expandEntitiesForGeneration, findAssetRefs, findImageAssetRefs, findTextAssetRefs, inlineTextAssetRefs, stripAssetRefs, mapPromptAssetsToInputs } from "./prompt-asset-refs.js";
48
+ export { logPythonWorkerStderr } from "./python-worker-stderr.js";
49
+ export { createFakeContext, stubGlobalFetch } from "./testing.js";
50
+ export { executeComfy, uploadComfyFile } from "./comfy-executor.js";
51
+ export { executeBlender, BlenderExecutorError } from "./blender-executor.js";
52
+ export { runHostBinary, HostBinaryMissingError, MAX_CAPTURED_BYTES, MAX_ARTIFACT_BYTES, maxConcurrentHostBinaries, mimeFromFilename, clampTimeoutSeconds } from "./host-binaries.js";
18
53
  export { RECOMMENDED_MODELS } from "./recommended-models.js";
54
+ export { clearProviderCache, getProviderCacheVersion } from "./provider-cache.js";
55
+ export { registerCostReconciler, getCostReconciler } from "./cost-reconciler.js";
56
+ export * from "./google/index.js";
57
+ export { PERMISSION_GATE_CONTEXT_KEY, decidePermission, headlessDenialReason, headlessGate } from "./permission-gate.js";
19
58
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EACtB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EAKrB,MAAM,cAAc,CAAC;AAEtB,cAAc,sBAAsB,CAAC;AACrC,OAAO,EACL,aAAa,EACb,SAAS,EAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,kBAAkB,EAGnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,eAAe,EAGhB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAsB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EACL,iBAAiB,EAOlB,MAAM,0BAA0B,CAAC;AAClC,4EAA4E;AAC5E,2EAA2E;AAC3E,wEAAwE;AACxE,uEAAuE;AACvE,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EAC1B,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAM/D,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAOnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Invocation-scoped cost and asset accounting.
3
+ *
4
+ * The supervisor may only offer `retry` for an invocation that spent nothing
5
+ * and wrote nothing (docs/workflow-supervisor-design.md §5.3). Answering that
6
+ * needs per-invocation numbers, and a stack on the shared `ProcessingContext`
7
+ * cannot supply them: every actor holds the same context and actors complete
8
+ * out of order, so push/pop would credit actor A's charge to actor B whenever
9
+ * A finishes first — precisely the corruption that would re-expose retry after
10
+ * a billed call.
11
+ *
12
+ * So the scope travels with the invocation's async execution instead. Cost and
13
+ * asset hooks write to whichever account is on the async stack; concurrent
14
+ * invocations each have their own, in any completion order.
15
+ */
16
+ export interface InvocationAccount {
17
+ /** Provider charges (USD) recorded while this invocation ran. */
18
+ costUsd: number;
19
+ /** True once the invocation created an asset. */
20
+ createdAssets: boolean;
21
+ }
22
+ export declare function createInvocationAccount(): InvocationAccount;
23
+ /**
24
+ * Run `fn` inside `account`. The caller owns the account so it can read what
25
+ * the invocation spent even when `fn` throws — which is the case retry safety
26
+ * turns on.
27
+ */
28
+ export declare function inInvocationAccount<T>(account: InvocationAccount, fn: () => Promise<T>): Promise<T>;
29
+ /**
30
+ * Charge the invocation currently on the async stack, if any.
31
+ *
32
+ * A non-finite amount means a provider reported something we cannot add up —
33
+ * and "cannot add up" must not read as "free", or the invocation would look
34
+ * cost-free and re-earn a retry after a real charge. It is recorded as a
35
+ * nominal charge instead: the number is meaningless, the fact of spending is
36
+ * not. `costUsd` stays finite so the escalation record remains JSON-safe.
37
+ */
38
+ export declare function recordInvocationCost(usd: number | undefined | null): void;
39
+ /** Mark the invocation currently on the async stack as having written an asset. */
40
+ export declare function recordInvocationAsset(): void;
41
+ /** The account for the invocation currently on the async stack, if any. */
42
+ export declare function currentInvocationAccount(): InvocationAccount | undefined;
43
+ //# sourceMappingURL=invocation-account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invocation-account.d.ts","sourceRoot":"","sources":["../src/invocation-account.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAQH,MAAM,WAAW,iBAAiB;IAChC,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,aAAa,EAAE,OAAO,CAAC;CACxB;AAID,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EACnC,OAAO,EAAE,iBAAiB,EAC1B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAKzE;AAED,mFAAmF;AACnF,wBAAgB,qBAAqB,IAAI,IAAI,CAG5C;AAED,2EAA2E;AAC3E,wBAAgB,wBAAwB,IAAI,iBAAiB,GAAG,SAAS,CAExE"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Invocation-scoped cost and asset accounting.
3
+ *
4
+ * The supervisor may only offer `retry` for an invocation that spent nothing
5
+ * and wrote nothing (docs/workflow-supervisor-design.md §5.3). Answering that
6
+ * needs per-invocation numbers, and a stack on the shared `ProcessingContext`
7
+ * cannot supply them: every actor holds the same context and actors complete
8
+ * out of order, so push/pop would credit actor A's charge to actor B whenever
9
+ * A finishes first — precisely the corruption that would re-expose retry after
10
+ * a billed call.
11
+ *
12
+ * So the scope travels with the invocation's async execution instead. Cost and
13
+ * asset hooks write to whichever account is on the async stack; concurrent
14
+ * invocations each have their own, in any completion order.
15
+ */
16
+ // Lazily resolved so this module still loads in browser/Edge bundles. There the
17
+ // fallback holder has no per-context isolation, and concurrent invocations
18
+ // would share one account — acceptable only because the supervisor that reads
19
+ // these numbers runs in the kernel, which is Node-only.
20
+ import { AsyncLocalStorage } from "./async-local-storage.js";
21
+ const store = new AsyncLocalStorage();
22
+ export function createInvocationAccount() {
23
+ return { costUsd: 0, createdAssets: false };
24
+ }
25
+ /**
26
+ * Run `fn` inside `account`. The caller owns the account so it can read what
27
+ * the invocation spent even when `fn` throws — which is the case retry safety
28
+ * turns on.
29
+ */
30
+ export function inInvocationAccount(account, fn) {
31
+ return store.run(account, fn);
32
+ }
33
+ /**
34
+ * Charge the invocation currently on the async stack, if any.
35
+ *
36
+ * A non-finite amount means a provider reported something we cannot add up —
37
+ * and "cannot add up" must not read as "free", or the invocation would look
38
+ * cost-free and re-earn a retry after a real charge. It is recorded as a
39
+ * nominal charge instead: the number is meaningless, the fact of spending is
40
+ * not. `costUsd` stays finite so the escalation record remains JSON-safe.
41
+ */
42
+ export function recordInvocationCost(usd) {
43
+ if (usd === undefined || usd === null)
44
+ return;
45
+ const account = store.getStore();
46
+ if (!account)
47
+ return;
48
+ account.costUsd += Number.isFinite(usd) ? usd : Number.MIN_VALUE;
49
+ }
50
+ /** Mark the invocation currently on the async stack as having written an asset. */
51
+ export function recordInvocationAsset() {
52
+ const account = store.getStore();
53
+ if (account)
54
+ account.createdAssets = true;
55
+ }
56
+ /** The account for the invocation currently on the async stack, if any. */
57
+ export function currentInvocationAccount() {
58
+ return store.getStore();
59
+ }
60
+ //# sourceMappingURL=invocation-account.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invocation-account.js","sourceRoot":"","sources":["../src/invocation-account.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,gFAAgF;AAChF,2EAA2E;AAC3E,8EAA8E;AAC9E,wDAAwD;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAS7D,MAAM,KAAK,GAAG,IAAI,iBAAiB,EAAqB,CAAC;AAEzD,MAAM,UAAU,uBAAuB;IACrC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA0B,EAC1B,EAAoB;IAEpB,OAAO,KAAK,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAChC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAA8B;IACjE,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO;IAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC;AACnE,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,qBAAqB;IACnC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjC,IAAI,OAAO;QAAE,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;AAC5C,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,wBAAwB;IACtC,OAAO,KAAK,CAAC,QAAQ,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { ProcessingContext } from "./context.js";
2
+ /** Encode bytes → base64 without requiring the `Buffer` global. */
3
+ export declare function encodeBase64(bytes: Uint8Array): string;
4
+ /** Minimal media ref shape for byte resolution (Python bridge + TS nodes). */
5
+ export type MediaRefValue = {
6
+ uri?: string;
7
+ type?: string;
8
+ asset_id?: string | null;
9
+ data?: unknown;
10
+ width?: number;
11
+ height?: number;
12
+ };
13
+ export declare function isAbsoluteFilePath(uri: string): boolean;
14
+ /**
15
+ * Resolve bytes for an image/audio/video/model ref.
16
+ * Shared by the Python bridge and TS nodes (e.g. Save Image).
17
+ */
18
+ export declare function loadMediaRefBytes(value: MediaRefValue, context?: ProcessingContext): Promise<Uint8Array | null>;
19
+ //# sourceMappingURL=media-ref-bytes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-ref-bytes.d.ts","sourceRoot":"","sources":["../src/media-ref-bytes.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAoCtD,mEAAmE;AACnE,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAUtD;AAUD,8EAA8E;AAC9E,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AASF,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAIvD;AAgDD;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,aAAa,EACpB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAoF5B"}