@nodetool-ai/runtime 0.8.1 → 0.8.3

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 (373) hide show
  1. package/dist/.nodetool-build-stamp +1 -1
  2. package/dist/context.d.ts +31 -3
  3. package/dist/context.d.ts.map +1 -1
  4. package/dist/context.js +369 -160
  5. package/dist/context.js.map +1 -1
  6. package/dist/generation-registry.d.ts +8 -0
  7. package/dist/generation-registry.d.ts.map +1 -1
  8. package/dist/generation-registry.js +18 -0
  9. package/dist/generation-registry.js.map +1 -1
  10. package/dist/host-binaries.d.ts.map +1 -1
  11. package/dist/host-binaries.js +18 -10
  12. package/dist/host-binaries.js.map +1 -1
  13. package/dist/image-codec.d.ts +2 -0
  14. package/dist/image-codec.d.ts.map +1 -1
  15. package/dist/image-codec.js +23 -3
  16. package/dist/image-codec.js.map +1 -1
  17. package/dist/image-model-tasks.d.ts +35 -0
  18. package/dist/image-model-tasks.d.ts.map +1 -0
  19. package/dist/image-model-tasks.js +67 -0
  20. package/dist/image-model-tasks.js.map +1 -0
  21. package/dist/index.d.ts +14 -3
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +10 -2
  24. package/dist/index.js.map +1 -1
  25. package/dist/media-ref-bytes.d.ts +18 -2
  26. package/dist/media-ref-bytes.d.ts.map +1 -1
  27. package/dist/media-ref-bytes.js +26 -16
  28. package/dist/media-ref-bytes.js.map +1 -1
  29. package/dist/node-executor.d.ts +6 -0
  30. package/dist/node-executor.d.ts.map +1 -1
  31. package/dist/prompt-asset-refs.d.ts +12 -1
  32. package/dist/prompt-asset-refs.d.ts.map +1 -1
  33. package/dist/prompt-asset-refs.js +9 -4
  34. package/dist/prompt-asset-refs.js.map +1 -1
  35. package/dist/providers/aki-provider.d.ts +2 -0
  36. package/dist/providers/aki-provider.d.ts.map +1 -1
  37. package/dist/providers/aki-provider.js +6 -0
  38. package/dist/providers/aki-provider.js.map +1 -1
  39. package/dist/providers/api-route-provider.d.ts +22 -0
  40. package/dist/providers/api-route-provider.d.ts.map +1 -0
  41. package/dist/providers/api-route-provider.js +56 -0
  42. package/dist/providers/api-route-provider.js.map +1 -0
  43. package/dist/providers/atlascloud-provider.d.ts +2 -0
  44. package/dist/providers/atlascloud-provider.d.ts.map +1 -1
  45. package/dist/providers/atlascloud-provider.js +22 -0
  46. package/dist/providers/atlascloud-provider.js.map +1 -1
  47. package/dist/providers/base-provider.d.ts +36 -24
  48. package/dist/providers/base-provider.d.ts.map +1 -1
  49. package/dist/providers/base-provider.js +145 -150
  50. package/dist/providers/base-provider.js.map +1 -1
  51. package/dist/providers/chatgpt-provider.d.ts +48 -0
  52. package/dist/providers/chatgpt-provider.d.ts.map +1 -0
  53. package/dist/providers/chatgpt-provider.js +506 -0
  54. package/dist/providers/chatgpt-provider.js.map +1 -0
  55. package/dist/providers/claude-agent-provider.d.ts +6 -36
  56. package/dist/providers/claude-agent-provider.d.ts.map +1 -1
  57. package/dist/providers/claude-agent-provider.js +208 -26
  58. package/dist/providers/claude-agent-provider.js.map +1 -1
  59. package/dist/providers/codex-provider.d.ts +2 -0
  60. package/dist/providers/codex-provider.d.ts.map +1 -1
  61. package/dist/providers/codex-provider.js +15 -2
  62. package/dist/providers/codex-provider.js.map +1 -1
  63. package/dist/providers/cohere-provider.d.ts +2 -1
  64. package/dist/providers/cohere-provider.d.ts.map +1 -1
  65. package/dist/providers/cohere-provider.js +5 -0
  66. package/dist/providers/cohere-provider.js.map +1 -1
  67. package/dist/providers/context-window.d.ts.map +1 -1
  68. package/dist/providers/context-window.js +1 -0
  69. package/dist/providers/context-window.js.map +1 -1
  70. package/dist/providers/core-tools.d.ts +2 -1
  71. package/dist/providers/core-tools.d.ts.map +1 -1
  72. package/dist/providers/core-tools.js +2 -1
  73. package/dist/providers/core-tools.js.map +1 -1
  74. package/dist/providers/cost-calculator.d.ts.map +1 -1
  75. package/dist/providers/cost-calculator.js +9 -0
  76. package/dist/providers/cost-calculator.js.map +1 -1
  77. package/dist/providers/credential-check.d.ts +8 -0
  78. package/dist/providers/credential-check.d.ts.map +1 -1
  79. package/dist/providers/credential-check.js +27 -0
  80. package/dist/providers/credential-check.js.map +1 -1
  81. package/dist/providers/custom-openai-provider.d.ts +2 -0
  82. package/dist/providers/custom-openai-provider.d.ts.map +1 -1
  83. package/dist/providers/custom-openai-provider.js +27 -1
  84. package/dist/providers/custom-openai-provider.js.map +1 -1
  85. package/dist/providers/dreamina-models.d.ts +5 -0
  86. package/dist/providers/dreamina-models.d.ts.map +1 -0
  87. package/dist/providers/dreamina-models.js +57 -0
  88. package/dist/providers/dreamina-models.js.map +1 -0
  89. package/dist/providers/dreamina-music.d.ts +52 -0
  90. package/dist/providers/dreamina-music.d.ts.map +1 -0
  91. package/dist/providers/dreamina-music.js +115 -0
  92. package/dist/providers/dreamina-music.js.map +1 -0
  93. package/dist/providers/dreamina-provider.d.ts +64 -0
  94. package/dist/providers/dreamina-provider.d.ts.map +1 -0
  95. package/dist/providers/dreamina-provider.js +1001 -0
  96. package/dist/providers/dreamina-provider.js.map +1 -0
  97. package/dist/providers/elevenlabs-provider.d.ts +2 -1
  98. package/dist/providers/elevenlabs-provider.d.ts.map +1 -1
  99. package/dist/providers/elevenlabs-provider.js +5 -0
  100. package/dist/providers/elevenlabs-provider.js.map +1 -1
  101. package/dist/providers/evolink-provider.d.ts +2 -0
  102. package/dist/providers/evolink-provider.d.ts.map +1 -1
  103. package/dist/providers/evolink-provider.js +8 -0
  104. package/dist/providers/evolink-provider.js.map +1 -1
  105. package/dist/providers/extension-tab.d.ts +29 -0
  106. package/dist/providers/extension-tab.d.ts.map +1 -0
  107. package/dist/providers/extension-tab.js +144 -0
  108. package/dist/providers/extension-tab.js.map +1 -0
  109. package/dist/providers/fake-provider.d.ts +5 -2
  110. package/dist/providers/fake-provider.d.ts.map +1 -1
  111. package/dist/providers/fake-provider.js +73 -9
  112. package/dist/providers/fake-provider.js.map +1 -1
  113. package/dist/providers/fake-schema-answer.d.ts +10 -0
  114. package/dist/providers/fake-schema-answer.d.ts.map +1 -0
  115. package/dist/providers/fake-schema-answer.js +64 -0
  116. package/dist/providers/fake-schema-answer.js.map +1 -0
  117. package/dist/providers/fal-provider.d.ts +2 -1
  118. package/dist/providers/fal-provider.d.ts.map +1 -1
  119. package/dist/providers/fal-provider.js +32 -2
  120. package/dist/providers/fal-provider.js.map +1 -1
  121. package/dist/providers/gemini-provider.d.ts +2 -1
  122. package/dist/providers/gemini-provider.d.ts.map +1 -1
  123. package/dist/providers/gemini-provider.js +15 -0
  124. package/dist/providers/gemini-provider.js.map +1 -1
  125. package/dist/providers/gemini-web-provider.d.ts +76 -0
  126. package/dist/providers/gemini-web-provider.d.ts.map +1 -0
  127. package/dist/providers/gemini-web-provider.js +752 -0
  128. package/dist/providers/gemini-web-provider.js.map +1 -0
  129. package/dist/providers/higgsfield-provider.d.ts +2 -1
  130. package/dist/providers/higgsfield-provider.d.ts.map +1 -1
  131. package/dist/providers/higgsfield-provider.js +12 -0
  132. package/dist/providers/higgsfield-provider.js.map +1 -1
  133. package/dist/providers/huggingface-provider.d.ts +2 -1
  134. package/dist/providers/huggingface-provider.d.ts.map +1 -1
  135. package/dist/providers/huggingface-provider.js +27 -1
  136. package/dist/providers/huggingface-provider.js.map +1 -1
  137. package/dist/providers/index.d.ts +14 -3
  138. package/dist/providers/index.d.ts.map +1 -1
  139. package/dist/providers/index.js +48 -9
  140. package/dist/providers/index.js.map +1 -1
  141. package/dist/providers/jina-provider.d.ts +2 -1
  142. package/dist/providers/jina-provider.d.ts.map +1 -1
  143. package/dist/providers/jina-provider.js +5 -0
  144. package/dist/providers/jina-provider.js.map +1 -1
  145. package/dist/providers/kie-provider.d.ts +2 -1
  146. package/dist/providers/kie-provider.d.ts.map +1 -1
  147. package/dist/providers/kie-provider.js +14 -0
  148. package/dist/providers/kie-provider.js.map +1 -1
  149. package/dist/providers/llama-provider.d.ts +12 -1
  150. package/dist/providers/llama-provider.d.ts.map +1 -1
  151. package/dist/providers/llama-provider.js +29 -5
  152. package/dist/providers/llama-provider.js.map +1 -1
  153. package/dist/providers/lmstudio-provider.js +2 -2
  154. package/dist/providers/lmstudio-provider.js.map +1 -1
  155. package/dist/providers/loop-tracing.d.ts +17 -0
  156. package/dist/providers/loop-tracing.d.ts.map +1 -0
  157. package/dist/providers/loop-tracing.js +132 -0
  158. package/dist/providers/loop-tracing.js.map +1 -0
  159. package/dist/providers/manifest-models.d.ts +2 -12
  160. package/dist/providers/manifest-models.d.ts.map +1 -1
  161. package/dist/providers/manifest-models.js +45 -3
  162. package/dist/providers/manifest-models.js.map +1 -1
  163. package/dist/providers/meshy-provider.d.ts +2 -1
  164. package/dist/providers/meshy-provider.d.ts.map +1 -1
  165. package/dist/providers/meshy-provider.js +6 -0
  166. package/dist/providers/meshy-provider.js.map +1 -1
  167. package/dist/providers/meta-provider.d.ts +53 -6
  168. package/dist/providers/meta-provider.d.ts.map +1 -1
  169. package/dist/providers/meta-provider.js +289 -6
  170. package/dist/providers/meta-provider.js.map +1 -1
  171. package/dist/providers/meta-segmentation.d.ts +27 -0
  172. package/dist/providers/meta-segmentation.d.ts.map +1 -0
  173. package/dist/providers/meta-segmentation.js +141 -0
  174. package/dist/providers/meta-segmentation.js.map +1 -0
  175. package/dist/providers/meta-transcription.d.ts +31 -0
  176. package/dist/providers/meta-transcription.d.ts.map +1 -0
  177. package/dist/providers/meta-transcription.js +187 -0
  178. package/dist/providers/meta-transcription.js.map +1 -0
  179. package/dist/providers/minimax-provider.d.ts +2 -0
  180. package/dist/providers/minimax-provider.d.ts.map +1 -1
  181. package/dist/providers/minimax-provider.js +11 -0
  182. package/dist/providers/minimax-provider.js.map +1 -1
  183. package/dist/providers/mistral-provider.d.ts +2 -0
  184. package/dist/providers/mistral-provider.d.ts.map +1 -1
  185. package/dist/providers/mistral-provider.js +5 -0
  186. package/dist/providers/mistral-provider.js.map +1 -1
  187. package/dist/providers/node-llama-cpp-provider.d.ts +8 -4
  188. package/dist/providers/node-llama-cpp-provider.d.ts.map +1 -1
  189. package/dist/providers/node-llama-cpp-provider.js +83 -61
  190. package/dist/providers/node-llama-cpp-provider.js.map +1 -1
  191. package/dist/providers/nodetool-provider.d.ts +1 -1
  192. package/dist/providers/nodetool-provider.d.ts.map +1 -1
  193. package/dist/providers/nodetool-provider.js +0 -2
  194. package/dist/providers/nodetool-provider.js.map +1 -1
  195. package/dist/providers/ollama-provider.d.ts +25 -1
  196. package/dist/providers/ollama-provider.d.ts.map +1 -1
  197. package/dist/providers/ollama-provider.js +145 -27
  198. package/dist/providers/ollama-provider.js.map +1 -1
  199. package/dist/providers/openai-compat/client.d.ts +10 -1
  200. package/dist/providers/openai-compat/client.d.ts.map +1 -1
  201. package/dist/providers/openai-compat/client.js +21 -3
  202. package/dist/providers/openai-compat/client.js.map +1 -1
  203. package/dist/providers/openai-compat/index.d.ts +1 -1
  204. package/dist/providers/openai-compat/index.d.ts.map +1 -1
  205. package/dist/providers/openai-compat/index.js +1 -1
  206. package/dist/providers/openai-compat/index.js.map +1 -1
  207. package/dist/providers/openai-compat/types.d.ts +4 -0
  208. package/dist/providers/openai-compat/types.d.ts.map +1 -1
  209. package/dist/providers/openai-compat-provider.d.ts +11 -0
  210. package/dist/providers/openai-compat-provider.d.ts.map +1 -1
  211. package/dist/providers/openai-compat-provider.js +47 -2
  212. package/dist/providers/openai-compat-provider.js.map +1 -1
  213. package/dist/providers/openai-provider.d.ts +23 -2
  214. package/dist/providers/openai-provider.d.ts.map +1 -1
  215. package/dist/providers/openai-provider.js +102 -21
  216. package/dist/providers/openai-provider.js.map +1 -1
  217. package/dist/providers/openrouter-provider.d.ts +52 -1
  218. package/dist/providers/openrouter-provider.d.ts.map +1 -1
  219. package/dist/providers/openrouter-provider.js +372 -11
  220. package/dist/providers/openrouter-provider.js.map +1 -1
  221. package/dist/providers/opper-provider.d.ts +31 -0
  222. package/dist/providers/opper-provider.d.ts.map +1 -0
  223. package/dist/providers/opper-provider.js +91 -0
  224. package/dist/providers/opper-provider.js.map +1 -0
  225. package/dist/providers/provider-error.d.ts.map +1 -1
  226. package/dist/providers/provider-error.js +7 -1
  227. package/dist/providers/provider-error.js.map +1 -1
  228. package/dist/providers/provider-generations.d.ts +2 -2
  229. package/dist/providers/provider-generations.js +2 -2
  230. package/dist/providers/provider-request-log.d.ts.map +1 -1
  231. package/dist/providers/provider-request-log.js +19 -7
  232. package/dist/providers/provider-request-log.js.map +1 -1
  233. package/dist/providers/python-provider.d.ts +6 -1
  234. package/dist/providers/python-provider.d.ts.map +1 -1
  235. package/dist/providers/python-provider.js +35 -14
  236. package/dist/providers/python-provider.js.map +1 -1
  237. package/dist/providers/replicate-provider.d.ts +2 -1
  238. package/dist/providers/replicate-provider.d.ts.map +1 -1
  239. package/dist/providers/replicate-provider.js +22 -0
  240. package/dist/providers/replicate-provider.js.map +1 -1
  241. package/dist/providers/requesty-provider.d.ts +30 -0
  242. package/dist/providers/requesty-provider.d.ts.map +1 -0
  243. package/dist/providers/requesty-provider.js +87 -0
  244. package/dist/providers/requesty-provider.js.map +1 -0
  245. package/dist/providers/responses-api.d.ts +12 -2
  246. package/dist/providers/responses-api.d.ts.map +1 -1
  247. package/dist/providers/responses-api.js +54 -3
  248. package/dist/providers/responses-api.js.map +1 -1
  249. package/dist/providers/reve-provider.d.ts +2 -1
  250. package/dist/providers/reve-provider.d.ts.map +1 -1
  251. package/dist/providers/reve-provider.js +6 -0
  252. package/dist/providers/reve-provider.js.map +1 -1
  253. package/dist/providers/rodin-provider.d.ts +2 -1
  254. package/dist/providers/rodin-provider.d.ts.map +1 -1
  255. package/dist/providers/rodin-provider.js +6 -0
  256. package/dist/providers/rodin-provider.js.map +1 -1
  257. package/dist/providers/scripted-provider.d.ts.map +1 -1
  258. package/dist/providers/scripted-provider.js +6 -1
  259. package/dist/providers/scripted-provider.js.map +1 -1
  260. package/dist/providers/together-operations.d.ts +27 -0
  261. package/dist/providers/together-operations.d.ts.map +1 -0
  262. package/dist/providers/together-operations.js +95 -0
  263. package/dist/providers/together-operations.js.map +1 -0
  264. package/dist/providers/together-provider.d.ts +5 -8
  265. package/dist/providers/together-provider.d.ts.map +1 -1
  266. package/dist/providers/together-provider.js +54 -159
  267. package/dist/providers/together-provider.js.map +1 -1
  268. package/dist/providers/topaz-provider.d.ts +2 -1
  269. package/dist/providers/topaz-provider.d.ts.map +1 -1
  270. package/dist/providers/topaz-provider.js +5 -0
  271. package/dist/providers/topaz-provider.js.map +1 -1
  272. package/dist/providers/types.d.ts +54 -0
  273. package/dist/providers/types.d.ts.map +1 -1
  274. package/dist/providers/types.js.map +1 -1
  275. package/dist/providers/useapi-provider.d.ts +2 -1
  276. package/dist/providers/useapi-provider.d.ts.map +1 -1
  277. package/dist/providers/useapi-provider.js +8 -0
  278. package/dist/providers/useapi-provider.js.map +1 -1
  279. package/dist/providers/vllm-provider.d.ts +9 -4
  280. package/dist/providers/vllm-provider.d.ts.map +1 -1
  281. package/dist/providers/vllm-provider.js +16 -8
  282. package/dist/providers/vllm-provider.js.map +1 -1
  283. package/dist/providers/voyage-provider.d.ts +2 -1
  284. package/dist/providers/voyage-provider.d.ts.map +1 -1
  285. package/dist/providers/voyage-provider.js +5 -0
  286. package/dist/providers/voyage-provider.js.map +1 -1
  287. package/dist/providers/xai-provider.d.ts +2 -0
  288. package/dist/providers/xai-provider.d.ts.map +1 -1
  289. package/dist/providers/xai-provider.js +8 -0
  290. package/dist/providers/xai-provider.js.map +1 -1
  291. package/dist/python-bridge-base.d.ts +16 -6
  292. package/dist/python-bridge-base.d.ts.map +1 -1
  293. package/dist/python-bridge-base.js +117 -40
  294. package/dist/python-bridge-base.js.map +1 -1
  295. package/dist/python-bridge-codec.d.ts +16 -1
  296. package/dist/python-bridge-codec.d.ts.map +1 -1
  297. package/dist/python-bridge-codec.js +60 -2
  298. package/dist/python-bridge-codec.js.map +1 -1
  299. package/dist/python-bridge-framing.d.ts +10 -1
  300. package/dist/python-bridge-framing.d.ts.map +1 -1
  301. package/dist/python-bridge-framing.js +33 -8
  302. package/dist/python-bridge-framing.js.map +1 -1
  303. package/dist/python-bridge-types.d.ts +26 -5
  304. package/dist/python-bridge-types.d.ts.map +1 -1
  305. package/dist/python-bridge-types.js.map +1 -1
  306. package/dist/python-node-executor.d.ts +14 -3
  307. package/dist/python-node-executor.d.ts.map +1 -1
  308. package/dist/python-node-executor.js +185 -3
  309. package/dist/python-node-executor.js.map +1 -1
  310. package/dist/python-stdio-bridge.d.ts +6 -0
  311. package/dist/python-stdio-bridge.d.ts.map +1 -1
  312. package/dist/python-stdio-bridge.js +25 -2
  313. package/dist/python-stdio-bridge.js.map +1 -1
  314. package/dist/recommended-models.d.ts.map +1 -1
  315. package/dist/recommended-models.js +20 -0
  316. package/dist/recommended-models.js.map +1 -1
  317. package/dist/run-context.d.ts +20 -0
  318. package/dist/run-context.d.ts.map +1 -0
  319. package/dist/run-context.js +18 -0
  320. package/dist/run-context.js.map +1 -0
  321. package/dist/run-trace-context.d.ts +5 -0
  322. package/dist/run-trace-context.d.ts.map +1 -0
  323. package/dist/run-trace-context.js +33 -0
  324. package/dist/run-trace-context.js.map +1 -0
  325. package/dist/run-trace-processor.d.ts +65 -0
  326. package/dist/run-trace-processor.d.ts.map +1 -0
  327. package/dist/run-trace-processor.js +418 -0
  328. package/dist/run-trace-processor.js.map +1 -0
  329. package/dist/run-trace-scope.d.ts +28 -0
  330. package/dist/run-trace-scope.d.ts.map +1 -0
  331. package/dist/run-trace-scope.js +51 -0
  332. package/dist/run-trace-scope.js.map +1 -0
  333. package/dist/run-trace-serialization.d.ts +5 -0
  334. package/dist/run-trace-serialization.d.ts.map +1 -0
  335. package/dist/run-trace-serialization.js +114 -0
  336. package/dist/run-trace-serialization.js.map +1 -0
  337. package/dist/span-record.d.ts +4 -0
  338. package/dist/span-record.d.ts.map +1 -0
  339. package/dist/span-record.js +48 -0
  340. package/dist/span-record.js.map +1 -0
  341. package/dist/storage-workspace.d.ts +3 -0
  342. package/dist/storage-workspace.d.ts.map +1 -1
  343. package/dist/storage-workspace.js +32 -17
  344. package/dist/storage-workspace.js.map +1 -1
  345. package/dist/swappable-python-bridge.d.ts +6 -6
  346. package/dist/swappable-python-bridge.d.ts.map +1 -1
  347. package/dist/swappable-python-bridge.js +10 -10
  348. package/dist/swappable-python-bridge.js.map +1 -1
  349. package/dist/telemetry.d.ts +9 -3
  350. package/dist/telemetry.d.ts.map +1 -1
  351. package/dist/telemetry.js +53 -20
  352. package/dist/telemetry.js.map +1 -1
  353. package/dist/testing.d.ts +1 -1
  354. package/dist/testing.d.ts.map +1 -1
  355. package/dist/testing.js +55 -3
  356. package/dist/testing.js.map +1 -1
  357. package/dist/trace-exporters.d.ts +2 -30
  358. package/dist/trace-exporters.d.ts.map +1 -1
  359. package/dist/trace-exporters.js +4 -42
  360. package/dist/trace-exporters.js.map +1 -1
  361. package/dist/traced-storage.d.ts +17 -0
  362. package/dist/traced-storage.d.ts.map +1 -0
  363. package/dist/traced-storage.js +41 -0
  364. package/dist/traced-storage.js.map +1 -0
  365. package/dist/tracing-helpers.d.ts +15 -22
  366. package/dist/tracing-helpers.d.ts.map +1 -1
  367. package/dist/tracing-helpers.js +38 -6
  368. package/dist/tracing-helpers.js.map +1 -1
  369. package/dist/trim-video-window.d.ts +8 -0
  370. package/dist/trim-video-window.d.ts.map +1 -0
  371. package/dist/trim-video-window.js +50 -0
  372. package/dist/trim-video-window.js.map +1 -0
  373. package/package.json +21 -5
@@ -23,9 +23,67 @@ const unpackr = new Unpackr({
23
23
  int64AsType: "number",
24
24
  mapsAsObjects: true
25
25
  });
26
- /** Encode one bridge message to msgpack bytes. */
26
+ /**
27
+ * Drop object properties whose value is `undefined`, at any depth.
28
+ *
29
+ * msgpackr encodes `undefined` as ext type 0, which the Python worker decodes
30
+ * as `None`. A TS caller that leaves an option out (`speed`, `max_tokens`,
31
+ * `temperature`) would otherwise send an explicit `None` that replaces the
32
+ * Python default. An absent key keeps the default. Array elements are kept,
33
+ * because their position carries meaning. Binary payloads and other
34
+ * non-plain objects pass through untouched. Returns the input itself when
35
+ * nothing was removed, so large frames are not copied.
36
+ */
37
+ export function stripUndefined(value) {
38
+ if (Array.isArray(value)) {
39
+ let copy = null;
40
+ for (let i = 0; i < value.length; i++) {
41
+ const item = value[i];
42
+ if (typeof item !== "object" || item === null)
43
+ continue;
44
+ const stripped = stripUndefined(item);
45
+ if (stripped !== item) {
46
+ copy ??= value.slice();
47
+ copy[i] = stripped;
48
+ }
49
+ }
50
+ return copy ?? value;
51
+ }
52
+ if (typeof value !== "object" || value === null)
53
+ return value;
54
+ const proto = Object.getPrototypeOf(value);
55
+ if (proto !== Object.prototype && proto !== null)
56
+ return value;
57
+ const record = value;
58
+ const keys = Object.keys(record);
59
+ const strippedValues = keys.map((key) => {
60
+ const item = record[key];
61
+ return item === undefined ? undefined : stripUndefined(item);
62
+ });
63
+ if (keys.every((key, i) => strippedValues[i] === record[key] && record[key] !== undefined)) {
64
+ return value;
65
+ }
66
+ // defineProperty, not assignment: a key named "__proto__" must stay an own
67
+ // property instead of reaching the prototype setter.
68
+ const copy = Object.create(proto);
69
+ keys.forEach((key, i) => {
70
+ if (strippedValues[i] === undefined)
71
+ return;
72
+ Object.defineProperty(copy, key, {
73
+ value: strippedValues[i],
74
+ enumerable: true,
75
+ writable: true,
76
+ configurable: true
77
+ });
78
+ });
79
+ return copy;
80
+ }
81
+ /**
82
+ * Encode one bridge message to msgpack bytes. Properties set to `undefined`
83
+ * are omitted (see {@link stripUndefined}).
84
+ */
27
85
  export function packBridgeMessage(msg) {
28
- return pack(msg);
86
+ return pack(stripUndefined(msg));
29
87
  }
30
88
  /**
31
89
  * Decode one msgpack payload into a bridge message, reading int64 as a number
@@ -1 +1 @@
1
- {"version":3,"file":"python-bridge-codec.js","sourceRoot":"","sources":["../src/python-bridge-codec.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;IAC1B,WAAW,EAAE,QAAQ;IACrB,aAAa,EAAE,IAAI;CACpB,CAAC,CAAC;AAEH,kDAAkD;AAClD,MAAM,UAAU,iBAAiB,CAAC,GAA4B;IAC5D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA4B;IAE5B,yEAAyE;IACzE,iEAAiE;IACjE,OAAO,OAAO,CAAC,MAAM,CAAC,OAAO,CAA4B,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"python-bridge-codec.js","sourceRoot":"","sources":["../src/python-bridge-codec.ts"],"names":[],"mappings":"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"}
@@ -44,9 +44,18 @@ export interface FrameDecoderOptions {
44
44
  * can't desync the new one.
45
45
  */
46
46
  export declare class FrameDecoder {
47
- private _buffer;
47
+ /**
48
+ * Bytes received but not yet returned as frames, kept as the chunks they
49
+ * arrived in. They are concatenated once, when a frame is complete, so a
50
+ * large frame read in many pipe chunks costs linear time rather than one
51
+ * full copy per chunk.
52
+ */
53
+ private _chunks;
54
+ private _length;
48
55
  private readonly _maxFrameSize;
49
56
  constructor(options?: FrameDecoderOptions);
57
+ /** Merge the buffered chunks into one and return it. */
58
+ private _coalesce;
50
59
  /**
51
60
  * Append `chunk` to the internal buffer and extract every complete frame
52
61
  * now available, invoking `onFrame` with each raw (still msgpack-packed)
@@ -1 +1 @@
1
- {"version":3,"file":"python-bridge-framing.d.ts","sourceRoot":"","sources":["../src/python-bridge-framing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gFAAgF;AAChF,eAAO,MAAM,6BAA6B,QAAoB,CAAC;AAE/D;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;aAErB,MAAM,EAAE,MAAM;aACd,YAAY,EAAE,MAAM;IAFtC,YACkB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAMrC;CACF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAKhE;AAED,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAmB;IAClC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,YAAY,OAAO,GAAE,mBAAwB,EAE5C;IAED;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAY1D;IAED,6EAA6E;IAC7E,KAAK,IAAI,IAAI,CAEZ;CACF"}
1
+ {"version":3,"file":"python-bridge-framing.d.ts","sourceRoot":"","sources":["../src/python-bridge-framing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gFAAgF;AAChF,eAAO,MAAM,6BAA6B,QAAoB,CAAC;AAE/D;;;;;GAKG;AACH,qBAAa,cAAe,SAAQ,KAAK;aAErB,MAAM,EAAE,MAAM;aACd,YAAY,EAAE,MAAM;IAFtC,YACkB,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAMrC;CACF;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAKhE;AAED,MAAM,WAAW,mBAAmB;IAClC,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,YAAY;IACvB;;;;;OAKG;IACH,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IAEvC,YAAY,OAAO,GAAE,mBAAwB,EAE5C;IAED,wDAAwD;IACxD,OAAO,CAAC,SAAS;IAOjB;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAqB1D;IAED,6EAA6E;IAC7E,KAAK,IAAI,IAAI,CAGZ;CACF"}
@@ -50,11 +50,25 @@ export function encodeFrame(payload) {
50
50
  * can't desync the new one.
51
51
  */
52
52
  export class FrameDecoder {
53
- _buffer = Buffer.alloc(0);
53
+ /**
54
+ * Bytes received but not yet returned as frames, kept as the chunks they
55
+ * arrived in. They are concatenated once, when a frame is complete, so a
56
+ * large frame read in many pipe chunks costs linear time rather than one
57
+ * full copy per chunk.
58
+ */
59
+ _chunks = [];
60
+ _length = 0;
54
61
  _maxFrameSize;
55
62
  constructor(options = {}) {
56
63
  this._maxFrameSize = options.maxFrameSize ?? DEFAULT_MAX_BRIDGE_FRAME_SIZE;
57
64
  }
65
+ /** Merge the buffered chunks into one and return it. */
66
+ _coalesce() {
67
+ if (this._chunks.length !== 1) {
68
+ this._chunks = [Buffer.concat(this._chunks, this._length)];
69
+ }
70
+ return this._chunks[0];
71
+ }
58
72
  /**
59
73
  * Append `chunk` to the internal buffer and extract every complete frame
60
74
  * now available, invoking `onFrame` with each raw (still msgpack-packed)
@@ -70,22 +84,33 @@ export class FrameDecoder {
70
84
  * ceiling.
71
85
  */
72
86
  push(chunk, onFrame) {
73
- this._buffer = Buffer.concat([this._buffer, chunk]);
74
- while (this._buffer.length >= 4) {
75
- const length = this._buffer.readUInt32BE(0);
87
+ if (chunk.length > 0) {
88
+ this._chunks.push(chunk);
89
+ this._length += chunk.length;
90
+ }
91
+ while (this._length >= 4) {
92
+ // The length prefix may straddle chunks; merging is cheap here because
93
+ // it only happens while fewer than 4 bytes sit in the first chunk.
94
+ if (this._chunks[0].length < 4)
95
+ this._coalesce();
96
+ const length = this._chunks[0].readUInt32BE(0);
76
97
  if (length > this._maxFrameSize) {
77
98
  throw new FrameSizeError(length, this._maxFrameSize);
78
99
  }
79
- if (this._buffer.length < 4 + length)
100
+ if (this._length < 4 + length)
80
101
  break; // incomplete frame
81
- const frame = this._buffer.subarray(4, 4 + length);
82
- this._buffer = this._buffer.subarray(4 + length);
102
+ const buffer = this._coalesce();
103
+ const frame = buffer.subarray(4, 4 + length);
104
+ const rest = buffer.subarray(4 + length);
105
+ this._chunks = rest.length > 0 ? [rest] : [];
106
+ this._length = rest.length;
83
107
  onFrame(frame);
84
108
  }
85
109
  }
86
110
  /** Drop any buffered partial frame. Call when the transport is torn down. */
87
111
  reset() {
88
- this._buffer = Buffer.alloc(0);
112
+ this._chunks = [];
113
+ this._length = 0;
89
114
  }
90
115
  }
91
116
  //# sourceMappingURL=python-bridge-framing.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"python-bridge-framing.js","sourceRoot":"","sources":["../src/python-bridge-framing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAErB,MAAM;IACN,YAAY;IAF9B,YACkB,MAAc,EACd,YAAoB;QAEpC,KAAK,CACH,kDAAkD,MAAM,MAAM,YAAY,GAAG,CAC9E,CAAC;sBALc,MAAM;4BACN,YAAY;QAK5B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAA4B;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACvC,CAAC;AAOD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,YAAY;IACf,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjB,aAAa,CAAS;IAEvC,YAAY,OAAO,GAAwB,EAAE;QAC3C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,IAAI,6BAA6B,CAAC;IAC7E,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,KAAa,EAAE,OAAgC;QAClD,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;YAChC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAChC,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM;gBAAE,MAAM,CAAC,mBAAmB;YAChE,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;YACjD,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACjC,CAAC;CACF"}
1
+ {"version":3,"file":"python-bridge-framing.js","sourceRoot":"","sources":["../src/python-bridge-framing.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,gFAAgF;AAChF,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,OAAO,cAAe,SAAQ,KAAK;IAErB,MAAM;IACN,YAAY;IAF9B,YACkB,MAAc,EACd,YAAoB;QAEpC,KAAK,CACH,kDAAkD,MAAM,MAAM,YAAY,GAAG,CAC9E,CAAC;sBALc,MAAM;4BACN,YAAY;QAK5B,IAAI,CAAC,IAAI,GAAG,gBAAgB,CAAC;IAC/B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAA4B;IACtD,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC/B,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACvC,CAAC;AAOD;;;;;;;;;;GAUG;AACH,MAAM,OAAO,YAAY;IACvB;;;;;OAKG;IACK,OAAO,GAAa,EAAE,CAAC;IACvB,OAAO,GAAG,CAAC,CAAC;IACH,aAAa,CAAS;IAEvC,YAAY,OAAO,GAAwB,EAAE;QAC3C,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC,YAAY,IAAI,6BAA6B,CAAC;IAC7E,CAAC;IAED,wDAAwD;IAChD,SAAS;QACf,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,KAAa,EAAE,OAAgC;QAClD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;QAC/B,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC;YACzB,uEAAuE;YACvE,mEAAmE;YACnE,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAChD,IAAI,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;gBAChC,MAAM,IAAI,cAAc,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;YACvD,CAAC;YACD,IAAI,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,MAAM;gBAAE,MAAM,CAAC,mBAAmB;YACzD,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;YAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,6EAA6E;IAC7E,KAAK;QACH,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;IACnB,CAAC;CACF"}
@@ -121,6 +121,19 @@ export interface ProgressEvent {
121
121
  progress: number;
122
122
  total: number;
123
123
  }
124
+ /**
125
+ * Per-call options for `execute` / `execute.stream`.
126
+ *
127
+ * `signal` is the run's cancellation: aborting it sends a `cancel` frame for
128
+ * the request and rejects the call, so the worker can stop a long node
129
+ * instead of the run waiting for it to finish. `onUpdate` receives the data
130
+ * of each `update` frame — a serialized `log_update`, `preview_update` or
131
+ * `binary_update` the node posted while running.
132
+ */
133
+ export interface ExecuteOptions {
134
+ signal?: AbortSignal;
135
+ onUpdate?: (update: Record<string, unknown>) => void;
136
+ }
124
137
  /**
125
138
  * Structural subset of the `@nodetool-ai/protocol` UnifiedModel that the bridge
126
139
  * passes through verbatim from the worker's `models.list_cached` response.
@@ -417,6 +430,14 @@ export interface PythonBridgeOptions {
417
430
  * hangs mid-download cannot leak its pending entries forever. Default ~5min.
418
431
  */
419
432
  downloadIdleTimeoutMs?: number;
433
+ /**
434
+ * Extra environment for a spawned local worker, resolved each time the
435
+ * worker starts (stdio bridge only). The host supplies settings the worker
436
+ * reads from its environment at start, such as `NODETOOL_TORCH_DEVICE` and
437
+ * `WAN2GP_MCP_URL`, so a value saved in Settings reaches a worker the user
438
+ * never exported it to. Merged over the inherited environment.
439
+ */
440
+ workerEnv?: () => Promise<Record<string, string>>;
420
441
  }
421
442
  export type StreamCallback = (chunk: Record<string, unknown>) => void;
422
443
  export interface PythonProviderInfo {
@@ -470,8 +491,8 @@ export interface PythonWorkerStatus {
470
491
  export interface PythonBridge extends EventEmitter {
471
492
  connect(): Promise<void>;
472
493
  ensureConnected(): Promise<void>;
473
- execute(nodeType: string, fields: Record<string, unknown>, secrets: Record<string, string>, blobs: ExecuteInputBlobs, onProgress?: (event: ProgressEvent) => void, identity?: ExecuteIdentity): Promise<ExecuteResult>;
474
- executeStream(nodeType: string, fields: Record<string, unknown>, secrets: Record<string, string>, blobs: ExecuteInputBlobs, onProgress?: (event: ProgressEvent) => void, identity?: ExecuteIdentity): AsyncGenerator<ExecuteResult>;
494
+ execute(nodeType: string, fields: Record<string, unknown>, secrets: Record<string, string>, blobs: ExecuteInputBlobs, onProgress?: (event: ProgressEvent) => void, identity?: ExecuteIdentity, options?: ExecuteOptions): Promise<ExecuteResult>;
495
+ executeStream(nodeType: string, fields: Record<string, unknown>, secrets: Record<string, string>, blobs: ExecuteInputBlobs, onProgress?: (event: ProgressEvent) => void, identity?: ExecuteIdentity, options?: ExecuteOptions): AsyncGenerator<ExecuteResult>;
475
496
  cancel(requestId: string): void;
476
497
  getNodeMetadata(): PythonNodeMetadata[];
477
498
  getLoadErrors(): PythonWorkerLoadError[];
@@ -483,14 +504,14 @@ export interface PythonBridge extends EventEmitter {
483
504
  getProviderModels(providerId: string, modelType: string, secrets?: Record<string, string>): Promise<Record<string, unknown>[]>;
484
505
  providerGenerate(providerId: string, messages: Record<string, unknown>[], model: string, options?: Record<string, unknown>): Promise<Record<string, unknown>>;
485
506
  providerStream(providerId: string, messages: Record<string, unknown>[], model: string, options?: Record<string, unknown>): AsyncGenerator<Record<string, unknown>>;
486
- providerTTS(providerId: string, text: string, model: string, options?: Record<string, unknown>): AsyncGenerator<Uint8Array>;
507
+ providerTTS(providerId: string, text: string, model: string, options?: Record<string, unknown>, signal?: AbortSignal): AsyncGenerator<Uint8Array>;
487
508
  providerTextToImage(providerId: string, params: Record<string, unknown>, secrets?: Record<string, string>, signal?: AbortSignal): Promise<Uint8Array>;
488
509
  providerImageToImage(providerId: string, image: Uint8Array, params: Record<string, unknown>, secrets?: Record<string, string>, signal?: AbortSignal): Promise<Uint8Array>;
489
510
  providerTextToVideo(providerId: string, params: Record<string, unknown>, secrets?: Record<string, string>, signal?: AbortSignal): Promise<Uint8Array>;
490
511
  providerImageToVideo(providerId: string, image: Uint8Array, params: Record<string, unknown>, secrets?: Record<string, string>, signal?: AbortSignal): Promise<Uint8Array>;
491
512
  providerReferenceToVideo(providerId: string, inputs: ReferenceToVideoInputs, params: Record<string, unknown>, secrets?: Record<string, string>, signal?: AbortSignal): Promise<Uint8Array>;
492
- providerTextToAudio(providerId: string, params: Record<string, unknown>, secrets?: Record<string, string>): Promise<Uint8Array>;
493
- providerTTSEncoded(providerId: string, params: Record<string, unknown>, secrets?: Record<string, string>): Promise<Uint8Array>;
513
+ providerTextToAudio(providerId: string, params: Record<string, unknown>, secrets?: Record<string, string>, signal?: AbortSignal): Promise<Uint8Array>;
514
+ providerTTSEncoded(providerId: string, params: Record<string, unknown>, secrets?: Record<string, string>, signal?: AbortSignal): Promise<Uint8Array>;
494
515
  providerASR(providerId: string, audio: Uint8Array, model: string, options?: Record<string, unknown>): Promise<ASRResult>;
495
516
  providerEmbedding(providerId: string, text: string | string[], model: string, dimensions?: number): Promise<number[][]>;
496
517
  listCachedModels(): Promise<UnifiedModelLike[]>;
@@ -1 +1 @@
1
- {"version":3,"file":"python-bridge-types.d.ts","sourceRoot":"","sources":["../src/python-bridge-types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"python-bridge-types.d.ts","sourceRoot":"","sources":["../src/python-bridge-types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"python-bridge-types.js","sourceRoot":"","sources":["../src/python-bridge-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAmuBxB,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,yDAAyD;AAEzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAClD,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC3E,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAChD,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAC9C,CAAC;KACD,KAAK,EAAE,CAAC;AAEX;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,EAAyB,CAAC;AAEhE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IACrD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IACrD,KAAK,EAAE,qBAAqB,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACxD,OAAO,EAAE,uBAAuB,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAC7D,CAAC;KACD,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"python-bridge-types.js","sourceRoot":"","sources":["../src/python-bridge-types.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA8vBxB,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAC9E,EAAE;AACF,8EAA8E;AAC9E,8EAA8E;AAC9E,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,yDAAyD;AAEzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC3C,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAClD,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC3E,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACvD,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC7C,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAChD,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IAC/C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAC9C,CAAC;KACD,KAAK,EAAE,CAAC;AAEX;;;;GAIG;AACH,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,EAAyB,CAAC;AAEhE,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IACzC,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IACrD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAC/B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IACnC,sBAAsB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;IACrD,KAAK,EAAE,qBAAqB,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;IACxD,OAAO,EAAE,uBAAuB,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CAC7D,CAAC;KACD,KAAK,EAAE,CAAC"}
@@ -1,9 +1,9 @@
1
1
  import type { ProcessingContext } from "./context.js";
2
- import type { ExecuteIdentity, ExecuteInputBlobs, ExecuteResult, ProgressEvent } from "./python-bridge-types.js";
2
+ import type { ExecuteIdentity, ExecuteInputBlobs, ExecuteOptions, ExecuteResult, ProgressEvent } from "./python-bridge-types.js";
3
3
  /** Minimal interface for the local Python stdio bridge. */
4
4
  interface PythonBridgeLike {
5
- execute(nodeType: string, fields: Record<string, unknown>, secrets: Record<string, string>, blobs: ExecuteInputBlobs, onProgress?: (event: ProgressEvent) => void, identity?: ExecuteIdentity): Promise<ExecuteResult>;
6
- executeStream?(nodeType: string, fields: Record<string, unknown>, secrets: Record<string, string>, blobs: ExecuteInputBlobs, onProgress?: (event: ProgressEvent) => void, identity?: ExecuteIdentity): AsyncGenerator<ExecuteResult>;
5
+ execute(nodeType: string, fields: Record<string, unknown>, secrets: Record<string, string>, blobs: ExecuteInputBlobs, onProgress?: (event: ProgressEvent) => void, identity?: ExecuteIdentity, options?: ExecuteOptions): Promise<ExecuteResult>;
6
+ executeStream?(nodeType: string, fields: Record<string, unknown>, secrets: Record<string, string>, blobs: ExecuteInputBlobs, onProgress?: (event: ProgressEvent) => void, identity?: ExecuteIdentity, options?: ExecuteOptions): AsyncGenerator<ExecuteResult>;
7
7
  }
8
8
  export declare class PythonNodeExecutor {
9
9
  private bridge;
@@ -43,8 +43,19 @@ export declare class PythonNodeExecutor {
43
43
  * lack the context or node id needed to address the message.
44
44
  */
45
45
  private progressHandler;
46
+ /**
47
+ * Build the `update` frame sink: forwards a node's log and binary updates
48
+ * to the context message stream, addressed to this graph node. The worker
49
+ * also defines `preview_update`, but the TS message protocol has no such
50
+ * type and no Python node package posts one, so it is dropped here.
51
+ */
52
+ private updateHandler;
53
+ /** Per-call bridge options: run cancellation and the update sink. */
54
+ private executeOptions;
46
55
  private prepareExecution;
47
56
  private materializeOutputs;
57
+ /** Reattach blobs keyed by internal id to the nested refs that name them. */
58
+ private attachNestedBlobs;
48
59
  process(inputs: Record<string, unknown>, context?: ProcessingContext): Promise<Record<string, unknown>>;
49
60
  genProcess(inputs: Record<string, unknown>, context?: ProcessingContext): AsyncGenerator<Record<string, unknown>>;
50
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"python-node-executor.d.ts","sourceRoot":"","sources":["../src/python-node-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,aAAa,EACd,MAAM,0BAA0B,CAAC;AAOlC,2DAA2D;AAC3D,UAAU,gBAAgB;IACxB,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,KAAK,EAAE,iBAAiB,EACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC3C,QAAQ,CAAC,EAAE,eAAe,GACzB,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,aAAa,CAAC,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,KAAK,EAAE,iBAAiB,EACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC3C,QAAQ,CAAC,EAAE,eAAe,GACzB,cAAc,CAAC,aAAa,CAAC,CAAC;CAClC;AAgID,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,gBAAgB;IACxB,8EAA8E;IAC9E,OAAO,CAAC,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAAC;IAbzB,YACU,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,gBAAgB,EAAE,MAAM,EAAE;IAClC,8EAA8E;IACtE,MAAM,CAAC,EAAE,MAAM,YAAA;IACvB;;;;OAIG;IACK,cAAc,CAAC,EAAE,MAAM,YAAA,EAC7B;IAEJ;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ;IAoBhB;;;;OAIG;IACH,OAAO,CAAC,eAAe;YAgBT,gBAAgB;YAyEhB,kBAAkB;IA6D1B,OAAO,CACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAYlC;IAEM,UAAU,CACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAiBzC;CACF"}
1
+ {"version":3,"file":"python-node-executor.d.ts","sourceRoot":"","sources":["../src/python-node-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,aAAa,EACd,MAAM,0BAA0B,CAAC;AAOlC,2DAA2D;AAC3D,UAAU,gBAAgB;IACxB,OAAO,CACL,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,KAAK,EAAE,iBAAiB,EACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC3C,QAAQ,CAAC,EAAE,eAAe,EAC1B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1B,aAAa,CAAC,CACZ,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,KAAK,EAAE,iBAAiB,EACxB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAC3C,QAAQ,CAAC,EAAE,eAAe,EAC1B,OAAO,CAAC,EAAE,cAAc,GACvB,cAAc,CAAC,aAAa,CAAC,CAAC;CAClC;AA+MD,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,MAAM;IACd,OAAO,CAAC,QAAQ;IAEhB,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,gBAAgB;IACxB,8EAA8E;IAC9E,OAAO,CAAC,MAAM,CAAC;IACf;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAAC;IAbzB,YACU,MAAM,EAAE,gBAAgB,EACxB,QAAQ,EAAE,MAAM,EACxB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACnC,gBAAgB,EAAE,MAAM,EAAE;IAClC,8EAA8E;IACtE,MAAM,CAAC,EAAE,MAAM,YAAA;IACvB;;;;OAIG;IACK,cAAc,CAAC,EAAE,MAAM,YAAA,EAC7B;IAEJ;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ;IAoBhB;;;;OAIG;IACH,OAAO,CAAC,eAAe;IAgBvB;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAiDrB,qEAAqE;IACrE,OAAO,CAAC,cAAc;YAQR,gBAAgB;YA6EhB,kBAAkB;IA6EhC,6EAA6E;YAC/D,iBAAiB;IAkDzB,OAAO,CACX,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAalC;IAEM,UAAU,CACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAkBzC;CACF"}
@@ -111,6 +111,70 @@ function isMediaRef(value) {
111
111
  function isMediaRefList(value) {
112
112
  return Array.isArray(value) && value.every(isMediaRef);
113
113
  }
114
+ /**
115
+ * Secrets a Python node receives when the user has set them, whether or not
116
+ * the node lists them in `required_settings`, keyed by node-type namespace.
117
+ * Hugging Face nodes read `HF_TOKEN` for gated repositories (FLUX Control,
118
+ * Kontext, pyannote) and most do not declare it, so without this a token
119
+ * stored in NodeTool settings never reaches the worker and the gated download
120
+ * fails. Scoped to the `huggingface.` namespace so other Python packages do
121
+ * not receive a credential they never asked for.
122
+ */
123
+ const IMPLICIT_SECRETS_BY_NAMESPACE = [["huggingface.", ["HF_TOKEN"]]];
124
+ function implicitSecrets(nodeType) {
125
+ return IMPLICIT_SECRETS_BY_NAMESPACE.flatMap(([prefix, secrets]) => nodeType.startsWith(prefix) ? secrets : []);
126
+ }
127
+ /** Prefix of the uri the worker gives a ref whose bytes travel as a blob. */
128
+ const BLOB_URI_PREFIX = "blob://";
129
+ /**
130
+ * Replace every ref nested in `value` whose uri is `blob://<key>` for a key in
131
+ * `blobs` with the result of `resolve`. Returns the input itself when nothing
132
+ * matched. The worker keys the bytes of a ref that is not a top-level output
133
+ * (an item of a `list[ImageRef]`, a field of a TypedDict) by its internal
134
+ * blob id, so this is the only place those bytes can be reattached.
135
+ */
136
+ async function resolveNestedBlobRefs(value, blobs, used, resolve) {
137
+ if (Array.isArray(value)) {
138
+ let changed = false;
139
+ const items = await Promise.all(value.map(async (item) => {
140
+ const next = await resolveNestedBlobRefs(item, blobs, used, resolve);
141
+ if (next !== item)
142
+ changed = true;
143
+ return next;
144
+ }));
145
+ return changed ? items : value;
146
+ }
147
+ if (typeof value !== "object" || value === null)
148
+ return value;
149
+ if (value instanceof Uint8Array || value instanceof ArrayBuffer)
150
+ return value;
151
+ const record = value;
152
+ const uri = record["uri"];
153
+ if (isString(uri) && uri.startsWith(BLOB_URI_PREFIX)) {
154
+ const key = uri.slice(BLOB_URI_PREFIX.length);
155
+ const bytes = blobs.get(key);
156
+ if (bytes) {
157
+ used.add(key);
158
+ return resolve(record, bytes);
159
+ }
160
+ return value;
161
+ }
162
+ let copy = null;
163
+ for (const key of Object.keys(record)) {
164
+ const item = record[key];
165
+ const next = await resolveNestedBlobRefs(item, blobs, used, resolve);
166
+ if (next !== item) {
167
+ copy ??= { ...record };
168
+ Object.defineProperty(copy, key, {
169
+ value: next,
170
+ enumerable: true,
171
+ writable: true,
172
+ configurable: true
173
+ });
174
+ }
175
+ }
176
+ return copy ?? value;
177
+ }
114
178
  export class PythonNodeExecutor {
115
179
  bridge;
116
180
  nodeType;
@@ -181,6 +245,66 @@ export class PythonNodeExecutor {
181
245
  });
182
246
  };
183
247
  }
248
+ /**
249
+ * Build the `update` frame sink: forwards a node's log and binary updates
250
+ * to the context message stream, addressed to this graph node. The worker
251
+ * also defines `preview_update`, but the TS message protocol has no such
252
+ * type and no Python node package posts one, so it is dropped here.
253
+ */
254
+ updateHandler(context) {
255
+ const nodeId = this.nodeId;
256
+ if (!context || !nodeId)
257
+ return undefined;
258
+ return (update) => {
259
+ const type = update["type"];
260
+ if (type === "log_update") {
261
+ const severity = update["severity"];
262
+ context.postMessage({
263
+ type: "log_update",
264
+ node_id: nodeId,
265
+ node_name: isString(update["node_name"])
266
+ ? update["node_name"]
267
+ : this.nodeType,
268
+ content: isString(update["content"]) ? update["content"] : "",
269
+ severity: severity === "warning" || severity === "error" ? severity : "info",
270
+ workflow_id: context.workflowId
271
+ });
272
+ }
273
+ else if (type === "binary_update") {
274
+ const binary = update["binary"];
275
+ if (!(binary instanceof Uint8Array))
276
+ return;
277
+ context.postMessage({
278
+ type: "binary_update",
279
+ node_id: nodeId,
280
+ output_name: isString(update["output_name"])
281
+ ? update["output_name"]
282
+ : "output",
283
+ // A view over the same bytes when they sit in a plain ArrayBuffer,
284
+ // which is what the msgpack decoder produces.
285
+ binary: binary.buffer instanceof ArrayBuffer
286
+ ? new Uint8Array(binary.buffer, binary.byteOffset, binary.byteLength)
287
+ : new Uint8Array(binary)
288
+ });
289
+ }
290
+ else {
291
+ log.debug("Dropping unsupported Python worker update", {
292
+ nodeType: this.nodeType,
293
+ updateType: type
294
+ });
295
+ }
296
+ };
297
+ }
298
+ /** Per-call bridge options: run cancellation and the update sink. */
299
+ executeOptions(context) {
300
+ const options = {};
301
+ if (context?.signal)
302
+ options.signal = context.signal;
303
+ const onUpdate = this.updateHandler(context);
304
+ if (onUpdate)
305
+ options.onUpdate = onUpdate;
306
+ return options;
307
+ }
184
308
  async prepareExecution(inputs, context) {
185
309
  // NodeActor merges node.properties + edge inputs before calling process(),
186
310
  // so `inputs` already contains all fields. Filter out internal keys.
@@ -232,7 +356,11 @@ export class PythonNodeExecutor {
232
356
  }
233
357
  const secrets = {};
234
358
  if (context) {
235
- for (const key of this.requiredSettings) {
359
+ const keys = new Set([
360
+ ...this.requiredSettings,
361
+ ...implicitSecrets(this.nodeType)
362
+ ]);
363
+ for (const key of keys) {
236
364
  const value = await context.getSecret(key);
237
365
  if (value)
238
366
  secrets[key] = value;
@@ -247,7 +375,18 @@ export class PythonNodeExecutor {
247
375
  // Downstream only does own-key ops (Object.keys, spread, msgpack/JSON), so a
248
376
  // null-prototype object behaves identically for legitimate names.
249
377
  const outputs = Object.assign(Object.create(null), result.outputs);
378
+ // A blob is paired with an output slot by name. A blob whose key names
379
+ // no slot belongs to a ref nested inside an output (its uri is
380
+ // `blob://<key>`); it is reattached there below, never emitted as an
381
+ // output of its own.
382
+ const nestedBlobs = new Map();
250
383
  for (const [name, blobData] of Object.entries(result.blobs)) {
384
+ if (name !== "output" &&
385
+ !Object.hasOwn(result.outputs, name) &&
386
+ !Object.hasOwn(this.outputTypes, name)) {
387
+ nestedBlobs.set(name, blobData);
388
+ continue;
389
+ }
251
390
  // Guard the outputTypes lookup with Object.hasOwn so an external name like
252
391
  // "constructor" can't resolve to an inherited Object.prototype member.
253
392
  const mediaType = Object.hasOwn(this.outputTypes, name)
@@ -288,12 +427,55 @@ export class PythonNodeExecutor {
288
427
  outputs[name] = blobData;
289
428
  }
290
429
  }
430
+ if (nestedBlobs.size > 0) {
431
+ await this.attachNestedBlobs(outputs, nestedBlobs, context);
432
+ }
291
433
  return outputs;
292
434
  }
435
+ /** Reattach blobs keyed by internal id to the nested refs that name them. */
436
+ async attachNestedBlobs(outputs, blobs, context) {
437
+ const used = new Set();
438
+ const resolve = async (ref, bytes) => {
439
+ const mediaType = isString(ref["type"])
440
+ ? normalizeMediaOutputType(ref["type"])
441
+ : null;
442
+ if (!context?.storage) {
443
+ return { ...ref, data: bytes };
444
+ }
445
+ const format = refFormat(ref);
446
+ const ext = format
447
+ ? `.${format}`
448
+ : mediaType
449
+ ? (EXTENSION_MAP[mediaType] ?? "")
450
+ : "";
451
+ const contentType = (format ? FORMAT_MIME_MAP[format] : undefined) ??
452
+ (mediaType ? MIME_MAP[mediaType] : undefined) ??
453
+ "application/octet-stream";
454
+ const uri = await context.storage.store(`python-bridge/${randomUUID()}${ext}`, bytes, contentType);
455
+ const stored = { ...ref, uri };
456
+ if (isBinaryPayload(stored["data"]))
457
+ delete stored["data"];
458
+ return stored;
459
+ };
460
+ for (const name of Object.keys(outputs)) {
461
+ const value = outputs[name];
462
+ const next = await resolveNestedBlobRefs(value, blobs, used, resolve);
463
+ if (next !== value)
464
+ outputs[name] = next;
465
+ }
466
+ for (const key of blobs.keys()) {
467
+ if (!used.has(key)) {
468
+ log.warn("Dropping Python worker blob that matches no output", {
469
+ nodeType: this.nodeType,
470
+ blob: key
471
+ });
472
+ }
473
+ }
474
+ }
293
475
  async process(inputs, context) {
294
476
  const { fields, blobs, secrets } = await this.prepareExecution(inputs, context);
295
477
  log.info("Python node executor calling bridge", { nodeType: this.nodeType });
296
- const result = await this.bridge.execute(this.nodeType, fields, secrets, blobs, this.progressHandler(context), this.identity(context));
478
+ const result = await this.bridge.execute(this.nodeType, fields, secrets, blobs, this.progressHandler(context), this.identity(context), this.executeOptions(context));
297
479
  return this.materializeOutputs(result, context);
298
480
  }
299
481
  async *genProcess(inputs, context) {
@@ -302,7 +484,7 @@ export class PythonNodeExecutor {
302
484
  return;
303
485
  }
304
486
  const { fields, blobs, secrets } = await this.prepareExecution(inputs, context);
305
- for await (const partial of this.bridge.executeStream(this.nodeType, fields, secrets, blobs, this.progressHandler(context), this.identity(context))) {
487
+ for await (const partial of this.bridge.executeStream(this.nodeType, fields, secrets, blobs, this.progressHandler(context), this.identity(context), this.executeOptions(context))) {
306
488
  yield await this.materializeOutputs(partial, context);
307
489
  }
308
490
  }