@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,396 @@
1
+ /**
2
+ * Google Workspace REST client — Drive, Gmail, Docs, Sheets and Calendar.
3
+ *
4
+ * Deliberately dependency-free (plain `fetch`, no googleapis SDK): the calls we
5
+ * need are a handful of REST endpoints, and the token comes from the user's
6
+ * Google login rather than a service account.
7
+ *
8
+ * Every function takes an OAuth access token. Callers resolve it from the
9
+ * processing context (`getSecret("GOOGLE_ACCESS_TOKEN")`), which is backed by
10
+ * the credential stored at login time.
11
+ */
12
+ const DRIVE_API = "https://www.googleapis.com/drive/v3";
13
+ const DRIVE_UPLOAD_API = "https://www.googleapis.com/upload/drive/v3";
14
+ const GMAIL_API = "https://gmail.googleapis.com/gmail/v1/users/me";
15
+ const DOCS_API = "https://docs.googleapis.com/v1/documents";
16
+ const SHEETS_API = "https://sheets.googleapis.com/v4/spreadsheets";
17
+ const CALENDAR_API = "https://www.googleapis.com/calendar/v3";
18
+ /** Scopes the Google login requests so the whole toolbelt works. */
19
+ export const GOOGLE_WORKSPACE_SCOPES = [
20
+ "https://www.googleapis.com/auth/drive",
21
+ "https://www.googleapis.com/auth/gmail.modify",
22
+ "https://www.googleapis.com/auth/gmail.send",
23
+ "https://www.googleapis.com/auth/documents",
24
+ "https://www.googleapis.com/auth/spreadsheets",
25
+ "https://www.googleapis.com/auth/calendar"
26
+ ];
27
+ /** An error carrying the HTTP status Google replied with. */
28
+ export class GoogleApiError extends Error {
29
+ status;
30
+ constructor(status, message) {
31
+ super(message);
32
+ this.name = "GoogleApiError";
33
+ this.status = status;
34
+ }
35
+ }
36
+ async function request(token, url, init = {}) {
37
+ const headers = {
38
+ Authorization: `Bearer ${token}`,
39
+ ...(init.headers ?? {})
40
+ };
41
+ if (init.body && !headers["Content-Type"]) {
42
+ headers["Content-Type"] = "application/json";
43
+ }
44
+ const res = await fetch(url, { ...init, headers });
45
+ if (!res.ok) {
46
+ const text = await res.text().catch(() => "");
47
+ throw new GoogleApiError(res.status, res.status === 401 || res.status === 403
48
+ ? `Google API ${res.status}: ${text || "access denied"}. The Google ` +
49
+ "sign-in may have expired or lacks the required scope — sign out " +
50
+ "and sign back in with Google to re-grant access."
51
+ : `Google API ${res.status}: ${text}`);
52
+ }
53
+ if (res.status === 204)
54
+ return undefined;
55
+ const contentType = res.headers.get("content-type") ?? "";
56
+ if (contentType.includes("application/json")) {
57
+ return (await res.json());
58
+ }
59
+ // SAFETY: a non-JSON body is text, so the caller's `T` is `string` for the
60
+ // endpoints that return one (e.g. a file download).
61
+ return (await res.text());
62
+ }
63
+ function query(params) {
64
+ const search = new URLSearchParams();
65
+ for (const [key, value] of Object.entries(params)) {
66
+ if (value === undefined || value === "")
67
+ continue;
68
+ search.set(key, String(value));
69
+ }
70
+ const qs = search.toString();
71
+ return qs ? `?${qs}` : "";
72
+ }
73
+ /** Google-native mime types and the plain export format we read them as. */
74
+ const DRIVE_EXPORT_FORMATS = {
75
+ "application/vnd.google-apps.document": "text/plain",
76
+ "application/vnd.google-apps.spreadsheet": "text/csv",
77
+ "application/vnd.google-apps.presentation": "text/plain"
78
+ };
79
+ /**
80
+ * Escape a phrase for a single-quoted Drive query literal.
81
+ *
82
+ * Backslashes go first: escaping only the quote would turn an input containing
83
+ * `\'` into `\\'`, where the backslash escapes itself and the quote closes the
84
+ * literal early — letting the rest of the phrase run as query syntax.
85
+ */
86
+ function escapeDriveLiteral(value) {
87
+ return value.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
88
+ }
89
+ /**
90
+ * List Drive files matching a query.
91
+ *
92
+ * `q` is Drive's own query syntax. A bare phrase is wrapped into a full-text
93
+ * search so callers can pass "quarterly report" directly.
94
+ */
95
+ export async function driveSearchFiles(token, opts = {}) {
96
+ const raw = (opts.q ?? "").trim();
97
+ const isDriveQuery = /(\bcontains\b|\b=\b|\bin parents\b|\bmimeType\b)/.test(raw);
98
+ const q = !raw
99
+ ? "trashed = false"
100
+ : isDriveQuery
101
+ ? raw
102
+ : `fullText contains '${escapeDriveLiteral(raw)}' and trashed = false`;
103
+ const url = `${DRIVE_API}/files${query({
104
+ q,
105
+ pageSize: Math.min(Math.max(opts.maxResults ?? 20, 1), 100),
106
+ orderBy: opts.orderBy,
107
+ fields: "files(id,name,mimeType,modifiedTime,size,webViewLink,owners(emailAddress,displayName))"
108
+ })}`;
109
+ const data = await request(token, url);
110
+ return data.files ?? [];
111
+ }
112
+ /** Fetch a file's metadata. */
113
+ export async function driveGetFile(token, fileId) {
114
+ return request(token, `${DRIVE_API}/files/${encodeURIComponent(fileId)}${query({
115
+ fields: "id,name,mimeType,modifiedTime,size,webViewLink,owners(emailAddress,displayName)"
116
+ })}`);
117
+ }
118
+ /**
119
+ * Read a file's content as text. Google-native files (Docs, Sheets, Slides)
120
+ * are exported to a plain format; everything else is downloaded as-is.
121
+ */
122
+ export async function driveReadFile(token, fileId) {
123
+ const meta = await driveGetFile(token, fileId);
124
+ const exportFormat = DRIVE_EXPORT_FORMATS[meta.mimeType];
125
+ const url = exportFormat
126
+ ? `${DRIVE_API}/files/${encodeURIComponent(fileId)}/export${query({
127
+ mimeType: exportFormat
128
+ })}`
129
+ : `${DRIVE_API}/files/${encodeURIComponent(fileId)}${query({ alt: "media" })}`;
130
+ const res = await fetch(url, {
131
+ headers: { Authorization: `Bearer ${token}` }
132
+ });
133
+ if (!res.ok) {
134
+ const text = await res.text().catch(() => "");
135
+ throw new GoogleApiError(res.status, `Drive download failed: ${text}`);
136
+ }
137
+ return {
138
+ name: meta.name,
139
+ mimeType: exportFormat ?? meta.mimeType,
140
+ content: await res.text()
141
+ };
142
+ }
143
+ /** Create a plain-text file in Drive (optionally inside a folder). */
144
+ export async function driveCreateFile(token, opts) {
145
+ const metadata = { name: opts.name };
146
+ if (opts.folderId)
147
+ metadata.parents = [opts.folderId];
148
+ const boundary = `nodetool-${Math.random().toString(36).slice(2)}`;
149
+ const mimeType = opts.mimeType ?? "text/plain";
150
+ const body = `--${boundary}\r\nContent-Type: application/json; charset=UTF-8\r\n\r\n` +
151
+ `${JSON.stringify(metadata)}\r\n` +
152
+ `--${boundary}\r\nContent-Type: ${mimeType}\r\n\r\n` +
153
+ `${opts.content}\r\n--${boundary}--`;
154
+ return request(token, `${DRIVE_UPLOAD_API}/files${query({
155
+ uploadType: "multipart",
156
+ fields: "id,name,mimeType,webViewLink"
157
+ })}`, {
158
+ method: "POST",
159
+ headers: { "Content-Type": `multipart/related; boundary=${boundary}` },
160
+ body
161
+ });
162
+ }
163
+ function decodeBase64Url(data) {
164
+ return Buffer.from(data, "base64url").toString("utf8");
165
+ }
166
+ function header(part, name) {
167
+ const match = part?.headers?.find((h) => h.name.toLowerCase() === name.toLowerCase());
168
+ return match?.value ?? "";
169
+ }
170
+ /** Walk the MIME tree and return the first text/plain body (else text/html). */
171
+ function extractBody(part) {
172
+ if (!part)
173
+ return "";
174
+ if (part.body?.data && part.mimeType?.startsWith("text/")) {
175
+ return decodeBase64Url(part.body.data);
176
+ }
177
+ for (const child of part.parts ?? []) {
178
+ if (child.mimeType === "text/plain" && child.body?.data) {
179
+ return decodeBase64Url(child.body.data);
180
+ }
181
+ }
182
+ for (const child of part.parts ?? []) {
183
+ const nested = extractBody(child);
184
+ if (nested)
185
+ return nested;
186
+ }
187
+ return "";
188
+ }
189
+ function toGmailMessage(raw) {
190
+ return {
191
+ id: raw.id,
192
+ threadId: raw.threadId,
193
+ subject: header(raw.payload, "Subject"),
194
+ from: header(raw.payload, "From"),
195
+ to: header(raw.payload, "To"),
196
+ date: header(raw.payload, "Date"),
197
+ snippet: raw.snippet ?? "",
198
+ body: extractBody(raw.payload),
199
+ labelIds: raw.labelIds ?? []
200
+ };
201
+ }
202
+ /** Fetch one message, fully parsed. */
203
+ export async function gmailGetMessage(token, messageId) {
204
+ const raw = await request(token, `${GMAIL_API}/messages/${encodeURIComponent(messageId)}${query({
205
+ format: "full"
206
+ })}`);
207
+ return toGmailMessage(raw);
208
+ }
209
+ /**
210
+ * Search the mailbox with Gmail's own query syntax
211
+ * (e.g. `from:alice@example.com is:unread newer_than:7d`).
212
+ */
213
+ export async function gmailSearchMessages(token, opts = {}) {
214
+ const list = await request(token, `${GMAIL_API}/messages${query({
215
+ q: opts.q,
216
+ maxResults: Math.min(Math.max(opts.maxResults ?? 10, 1), 50)
217
+ })}`);
218
+ const ids = (list.messages ?? []).map((m) => m.id);
219
+ return Promise.all(ids.map((id) => gmailGetMessage(token, id)));
220
+ }
221
+ /** Send a plain-text email. Returns the created message id. */
222
+ export async function gmailSendMessage(token, opts) {
223
+ const lines = [
224
+ `To: ${opts.to}`,
225
+ opts.cc ? `Cc: ${opts.cc}` : null,
226
+ opts.bcc ? `Bcc: ${opts.bcc}` : null,
227
+ `Subject: ${opts.subject}`,
228
+ "Content-Type: text/plain; charset=UTF-8",
229
+ "",
230
+ opts.body
231
+ ].filter((line) => line !== null);
232
+ const raw = Buffer.from(lines.join("\r\n"), "utf8").toString("base64url");
233
+ return request(token, `${GMAIL_API}/messages/send`, { method: "POST", body: JSON.stringify({ raw }) });
234
+ }
235
+ /** Add and/or remove labels on a message (archive = remove `INBOX`). */
236
+ export async function gmailModifyLabels(token, opts) {
237
+ return request(token, `${GMAIL_API}/messages/${encodeURIComponent(opts.messageId)}/modify`, {
238
+ method: "POST",
239
+ body: JSON.stringify({
240
+ addLabelIds: opts.addLabelIds ?? [],
241
+ removeLabelIds: opts.removeLabelIds ?? []
242
+ })
243
+ });
244
+ }
245
+ /** List the mailbox's labels (id + name). */
246
+ export async function gmailListLabels(token) {
247
+ const data = await request(token, `${GMAIL_API}/labels`);
248
+ return data.labels ?? [];
249
+ }
250
+ function docsToText(content) {
251
+ let out = "";
252
+ for (const element of content ?? []) {
253
+ for (const run of element.paragraph?.elements ?? []) {
254
+ out += run.textRun?.content ?? "";
255
+ }
256
+ for (const row of element.table?.tableRows ?? []) {
257
+ for (const cell of row.tableCells ?? []) {
258
+ out += docsToText(cell.content);
259
+ }
260
+ }
261
+ }
262
+ return out;
263
+ }
264
+ /** Read a Google Doc as plain text. */
265
+ export async function docsGetDocument(token, documentId) {
266
+ const doc = await request(token, `${DOCS_API}/${encodeURIComponent(documentId)}`);
267
+ return {
268
+ documentId: doc.documentId,
269
+ title: doc.title ?? "",
270
+ text: docsToText(doc.body?.content)
271
+ };
272
+ }
273
+ /** Create a Google Doc, optionally seeded with text. */
274
+ export async function docsCreateDocument(token, opts) {
275
+ const doc = await request(token, DOCS_API, {
276
+ method: "POST",
277
+ body: JSON.stringify({ title: opts.title })
278
+ });
279
+ if (opts.text) {
280
+ await docsAppendText(token, { documentId: doc.documentId, text: opts.text });
281
+ }
282
+ return {
283
+ documentId: doc.documentId,
284
+ title: doc.title ?? opts.title,
285
+ url: `https://docs.google.com/document/d/${doc.documentId}/edit`
286
+ };
287
+ }
288
+ /** Append text to the end of a Google Doc. */
289
+ export async function docsAppendText(token, opts) {
290
+ await request(token, `${DOCS_API}/${encodeURIComponent(opts.documentId)}:batchUpdate`, {
291
+ method: "POST",
292
+ body: JSON.stringify({
293
+ requests: [
294
+ { insertText: { endOfSegmentLocation: {}, text: opts.text } }
295
+ ]
296
+ })
297
+ });
298
+ }
299
+ // ── Sheets ───────────────────────────────────────────────────────────
300
+ /** Read a range (A1 notation) as a row-major array of cell strings. */
301
+ export async function sheetsReadRange(token, opts) {
302
+ const data = await request(token, `${SHEETS_API}/${encodeURIComponent(opts.spreadsheetId)}/values/${encodeURIComponent(opts.range)}`);
303
+ return data.values ?? [];
304
+ }
305
+ /** Append rows below the last populated row of a range. */
306
+ export async function sheetsAppendRows(token, opts) {
307
+ const data = await request(token, `${SHEETS_API}/${encodeURIComponent(opts.spreadsheetId)}/values/${encodeURIComponent(opts.range)}:append${query({
308
+ valueInputOption: "USER_ENTERED",
309
+ insertDataOption: "INSERT_ROWS"
310
+ })}`, { method: "POST", body: JSON.stringify({ values: opts.values }) });
311
+ return {
312
+ updatedRange: data.updates?.updatedRange ?? opts.range,
313
+ updatedRows: data.updates?.updatedRows ?? 0
314
+ };
315
+ }
316
+ /** Overwrite a range with the given values. */
317
+ export async function sheetsUpdateRange(token, opts) {
318
+ const data = await request(token, `${SHEETS_API}/${encodeURIComponent(opts.spreadsheetId)}/values/${encodeURIComponent(opts.range)}${query({ valueInputOption: "USER_ENTERED" })}`, { method: "PUT", body: JSON.stringify({ values: opts.values }) });
319
+ return {
320
+ updatedRange: data.updatedRange ?? opts.range,
321
+ updatedCells: data.updatedCells ?? 0
322
+ };
323
+ }
324
+ /** Create a spreadsheet, optionally seeded with rows on the first sheet. */
325
+ export async function sheetsCreateSpreadsheet(token, opts) {
326
+ const data = await request(token, SHEETS_API, {
327
+ method: "POST",
328
+ body: JSON.stringify({ properties: { title: opts.title } })
329
+ });
330
+ if (opts.values?.length) {
331
+ await sheetsUpdateRange(token, {
332
+ spreadsheetId: data.spreadsheetId,
333
+ range: "A1",
334
+ values: opts.values
335
+ });
336
+ }
337
+ return {
338
+ spreadsheetId: data.spreadsheetId,
339
+ url: data.spreadsheetUrl ??
340
+ `https://docs.google.com/spreadsheets/d/${data.spreadsheetId}/edit`
341
+ };
342
+ }
343
+ function toCalendarEvent(raw) {
344
+ return {
345
+ id: raw.id,
346
+ summary: raw.summary ?? "",
347
+ description: raw.description,
348
+ location: raw.location,
349
+ start: raw.start?.dateTime ?? raw.start?.date ?? "",
350
+ end: raw.end?.dateTime ?? raw.end?.date ?? "",
351
+ attendees: (raw.attendees ?? [])
352
+ .map((a) => a.email)
353
+ .filter((e) => Boolean(e)),
354
+ htmlLink: raw.htmlLink
355
+ };
356
+ }
357
+ /** List the user's calendars. */
358
+ export async function calendarListCalendars(token) {
359
+ const data = await request(token, `${CALENDAR_API}/users/me/calendarList`);
360
+ return data.items ?? [];
361
+ }
362
+ /** List events in a time window, soonest first. */
363
+ export async function calendarListEvents(token, opts = {}) {
364
+ const calendarId = opts.calendarId || "primary";
365
+ const data = await request(token, `${CALENDAR_API}/calendars/${encodeURIComponent(calendarId)}/events${query({
366
+ timeMin: opts.timeMin ?? new Date().toISOString(),
367
+ timeMax: opts.timeMax,
368
+ q: opts.q,
369
+ maxResults: Math.min(Math.max(opts.maxResults ?? 20, 1), 250),
370
+ singleEvents: "true",
371
+ orderBy: "startTime"
372
+ })}`);
373
+ return (data.items ?? []).map(toCalendarEvent);
374
+ }
375
+ /** Create an event. Times are RFC3339 (`2026-07-27T15:00:00-07:00`). */
376
+ export async function calendarCreateEvent(token, opts) {
377
+ const calendarId = opts.calendarId || "primary";
378
+ const raw = await request(token, `${CALENDAR_API}/calendars/${encodeURIComponent(calendarId)}/events`, {
379
+ method: "POST",
380
+ body: JSON.stringify({
381
+ summary: opts.summary,
382
+ description: opts.description,
383
+ location: opts.location,
384
+ start: { dateTime: opts.start },
385
+ end: { dateTime: opts.end },
386
+ attendees: (opts.attendees ?? []).map((email) => ({ email }))
387
+ })
388
+ });
389
+ return toCalendarEvent(raw);
390
+ }
391
+ /** Delete an event. */
392
+ export async function calendarDeleteEvent(token, opts) {
393
+ const calendarId = opts.calendarId || "primary";
394
+ await request(token, `${CALENDAR_API}/calendars/${encodeURIComponent(calendarId)}/events/${encodeURIComponent(opts.eventId)}`, { method: "DELETE" });
395
+ }
396
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/google/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export * from "./client.js";
2
+ export { requireGoogleAccessToken } from "./token.js";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/google/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./client.js";
2
+ export { requireGoogleAccessToken } from "./token.js";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/google/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Resolve the Google access token a tool or node needs from the processing
3
+ * context.
4
+ *
5
+ * The token is not a pasted API key: it comes from the user's Google sign-in
6
+ * and is stored server-side as an OAuth credential. `getSecret` routes the
7
+ * `GOOGLE_ACCESS_TOKEN` key to that credential (refreshing it when stale), so
8
+ * every caller resolves it the same way.
9
+ */
10
+ import type { ProcessingContext } from "../context.js";
11
+ /** Virtual secret key backed by the user's stored Google credential. */
12
+ export declare const GOOGLE_ACCESS_TOKEN_KEY = "GOOGLE_ACCESS_TOKEN";
13
+ /** Return the caller's Google access token, or throw a user-facing error. */
14
+ export declare function requireGoogleAccessToken(context?: Pick<ProcessingContext, "getSecret">): Promise<string>;
15
+ //# sourceMappingURL=token.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.d.ts","sourceRoot":"","sources":["../../src/google/token.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEvD,wEAAwE;AACxE,eAAO,MAAM,uBAAuB,wBAAwB,CAAC;AAM7D,6EAA6E;AAC7E,wBAAsB,wBAAwB,CAC5C,OAAO,CAAC,EAAE,IAAI,CAAC,iBAAiB,EAAE,WAAW,CAAC,GAC7C,OAAO,CAAC,MAAM,CAAC,CAQjB"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Resolve the Google access token a tool or node needs from the processing
3
+ * context.
4
+ *
5
+ * The token is not a pasted API key: it comes from the user's Google sign-in
6
+ * and is stored server-side as an OAuth credential. `getSecret` routes the
7
+ * `GOOGLE_ACCESS_TOKEN` key to that credential (refreshing it when stale), so
8
+ * every caller resolves it the same way.
9
+ */
10
+ /** Virtual secret key backed by the user's stored Google credential. */
11
+ export const GOOGLE_ACCESS_TOKEN_KEY = "GOOGLE_ACCESS_TOKEN";
12
+ const NOT_CONNECTED = "No Google account connected. Sign in with Google to give NodeTool access " +
13
+ "to your Drive, Gmail, Docs, Sheets and Calendar.";
14
+ /** Return the caller's Google access token, or throw a user-facing error. */
15
+ export async function requireGoogleAccessToken(context) {
16
+ const token = context
17
+ ? await context.getSecret(GOOGLE_ACCESS_TOKEN_KEY)
18
+ : (process.env[GOOGLE_ACCESS_TOKEN_KEY] ?? null);
19
+ if (!token) {
20
+ throw new Error(NOT_CONNECTED);
21
+ }
22
+ return token;
23
+ }
24
+ //# sourceMappingURL=token.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"token.js","sourceRoot":"","sources":["../../src/google/token.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,wEAAwE;AACxE,MAAM,CAAC,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAE7D,MAAM,aAAa,GACjB,2EAA2E;IAC3E,kDAAkD,CAAC;AAErD,6EAA6E;AAC7E,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,OAA8C;IAE9C,MAAM,KAAK,GAAG,OAAO;QACnB,CAAC,CAAC,MAAM,OAAO,CAAC,SAAS,CAAC,uBAAuB,CAAC;QAClD,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,IAAI,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Spawn a PATH binary with argv (no shell) inside the workspace.
3
+ *
4
+ * Used by the ffmpeg and yt-dlp capabilities. A missing binary is a named
5
+ * error, not an ENOENT stack.
6
+ *
7
+ * What the caller gets is bounded on every axis a media tool can exhaust,
8
+ * because the argv behind it comes from a model:
9
+ *
10
+ * - **Wall clock** — `timeoutMs`, SIGTERM then SIGKILL five seconds later.
11
+ * - **Memory** — captured stdout/stderr stop at {@link MAX_CAPTURED_BYTES}
12
+ * each. `-loglevel debug` over a long clip used to accumulate the whole
13
+ * stream into one string in the server's heap.
14
+ * - **Disk** — `maxArtifactBytes` watches the file being written and kills the
15
+ * child when it passes the cap. ffmpeg's own `-fs` does not hold: measured
16
+ * against ffmpeg 6.1, `-fs 50000` still produced a 164 KB mp4.
17
+ * - **CPU** — spawns run at most `maxConcurrentHostBinaries` at once per
18
+ * concurrency class; the rest queue. One run cannot take every core from
19
+ * the request handlers. The `render` class has its own cap
20
+ * (`NODETOOL_BLENDER_CONCURRENCY`) so a minutes-long render never holds a
21
+ * slot a two-second ffmpeg call is waiting for.
22
+ *
23
+ * The filesystem/network half of the boundary lives in
24
+ * `host-binary-guard.ts` in `@nodetool-ai/agents`.
25
+ */
26
+ export type HostBinaryResult = {
27
+ stdout: string;
28
+ stderr: string;
29
+ exitCode: number;
30
+ /** True when output was cut at the capture cap; the child still ran on. */
31
+ truncated?: boolean;
32
+ /**
33
+ * How long the run waited for a concurrency slot before spawning, in
34
+ * milliseconds. Zero when a slot was free. Callers that report queueing
35
+ * (e.g. `blender.queued_ms`) read it from here: the host runner is the
36
+ * only place that sees the wait.
37
+ */
38
+ queuedMs?: number;
39
+ };
40
+ /** Captured bytes kept per stream. Beyond this the tail is dropped. */
41
+ export declare const MAX_CAPTURED_BYTES: number;
42
+ /** Default ceiling on a single artifact a host binary writes (2 GiB). */
43
+ export declare const MAX_ARTIFACT_BYTES: number;
44
+ /**
45
+ * Concurrent host-binary spawns. `NODETOOL_HOST_BINARY_CONCURRENCY` overrides
46
+ * it; anything unparseable or non-positive keeps the default.
47
+ */
48
+ export declare function maxConcurrentHostBinaries(): number;
49
+ export declare class HostBinaryMissingError extends Error {
50
+ readonly binary: string;
51
+ constructor(binary: string);
52
+ }
53
+ export interface RunHostBinaryOptions {
54
+ cwd: string;
55
+ /**
56
+ * Wall clock for the spawned run only, from spawn to `close`. Time spent
57
+ * waiting for a concurrency slot is excluded and reported separately as
58
+ * `queuedMs`, so a run queued behind a long render does not time out
59
+ * while waiting. SIGTERM at the deadline, SIGKILL five seconds later.
60
+ */
61
+ timeoutMs: number;
62
+ /**
63
+ * Workspace-relative file the run is writing. When set, the watchdog kills
64
+ * the child once that file passes `maxArtifactBytes`.
65
+ */
66
+ artifactPath?: string;
67
+ /** Ceiling for `artifactPath`. Defaults to {@link MAX_ARTIFACT_BYTES}. */
68
+ maxArtifactBytes?: number;
69
+ /**
70
+ * Aborts the run: SIGTERM now, SIGKILL five seconds later through the same
71
+ * escalation path as the timeout. The promise rejects with the abort
72
+ * reason once the child has actually exited, not when the signal fires —
73
+ * a child that ignores SIGTERM keeps its concurrency slot and its working
74
+ * directory until SIGKILL reaps it. An already-aborted signal rejects
75
+ * without spawning, and an abort while queued releases the queue position
76
+ * and rejects without spawning.
77
+ */
78
+ signal?: AbortSignal;
79
+ /**
80
+ * The child's whole environment when set, instead of `process.env`.
81
+ * Lets the caller keep the server's secrets out of the child.
82
+ */
83
+ env?: Record<string, string>;
84
+ /**
85
+ * One call per complete stderr line, fed from the same stream the capture
86
+ * reads. Lines keep arriving after the capture cap truncates the stored
87
+ * copy.
88
+ */
89
+ onStderrLine?: (line: string) => void;
90
+ /**
91
+ * Which semaphore the run queues on. The default class keeps the
92
+ * `NODETOOL_HOST_BINARY_CONCURRENCY` cap; the `render` class is capped by
93
+ * `NODETOOL_BLENDER_CONCURRENCY` (default 1). Classes are independent.
94
+ */
95
+ concurrencyClass?: string;
96
+ }
97
+ export declare function runHostBinary(cmd: string, args: string[], opts: RunHostBinaryOptions): Promise<HostBinaryResult>;
98
+ export declare function mimeFromFilename(filePath: string): string;
99
+ /**
100
+ * Whole seconds in `[1, max]`, or `fallback` when `raw` states no usable
101
+ * duration. The floor is 1, not 0: truncating a sub-second request to 0 would
102
+ * reach `runHostBinary` as `setTimeout(kill, 0)` and SIGTERM the child on the
103
+ * next tick.
104
+ */
105
+ export declare function clampTimeoutSeconds(raw: unknown, fallback: number, max: number): number;
106
+ //# sourceMappingURL=host-binaries.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-binaries.d.ts","sourceRoot":"","sources":["../src/host-binaries.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAOH,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,2EAA2E;IAC3E,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC;AAEF,uEAAuE;AACvE,eAAO,MAAM,kBAAkB,QAAa,CAAC;AAE7C,yEAAyE;AACzE,eAAO,MAAM,kBAAkB,QAAyB,CAAC;AAKzD;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,MAAM,CAGlD;AA8GD,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,YAAY,MAAM,EAAE,MAAM,EAOzB;CACF;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,0EAA0E;IAC1E,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;;OAQG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAsB,aAAa,CACjC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EACd,IAAI,EAAE,oBAAoB,GACzB,OAAO,CAAC,gBAAgB,CAAC,CAe3B;AAsLD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGzD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,OAAO,EACZ,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,MAAM,GACV,MAAM,CAIR"}