@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,86 @@
1
+ /**
2
+ * Generation receipts: what a provider learns about its own call while the
3
+ * call is in flight — the request id it was given, and the charge it was told.
4
+ *
5
+ * Twenty-odd provider methods return media bytes and nothing else. Threading a
6
+ * request id through every signature is a large diff for one field, so the
7
+ * receipt travels the other way: the generation seam opens a scope around the
8
+ * provider call, the provider records into whichever scope is on the async
9
+ * stack, and the seam reads the receipt back after dispatch. Concurrent
10
+ * generations each have their own scope, in any completion order — the same
11
+ * property `invocation-account.ts` relies on.
12
+ *
13
+ * Design: docs/media-generation-tracking-design.md § D3.
14
+ */
15
+ import type { GenerationReceipt } from "@nodetool-ai/protocol";
16
+ /** Host-supplied callback data for the provider queue request. */
17
+ export interface GenerationProviderRequestOptions {
18
+ readonly webhookUrl?: string;
19
+ readonly callbackToken?: string;
20
+ /** The durable host already owns this idempotency key. */
21
+ readonly skipProvider?: boolean;
22
+ /** Existing NodeTool generation to use when the idempotency key was reused. */
23
+ readonly existingGenerationId?: string;
24
+ /** NodeTool generation identity for concurrent binding callbacks. */
25
+ readonly generationId?: string;
26
+ /** This request is owned by a durable host and can be recovered after exit. */
27
+ readonly durable?: boolean;
28
+ }
29
+ /** True only for a provider response that explicitly says it is terminal. */
30
+ export declare function isAuthoritativeProviderTerminalError(value: unknown): value is {
31
+ readonly authoritativeProviderTerminal: true;
32
+ };
33
+ export interface GenerationReceiptScopeOptions {
34
+ readonly providerRequestOptions?: GenerationProviderRequestOptions;
35
+ readonly onProviderRequestAccepted?: (submission: unknown) => void | Promise<void>;
36
+ readonly onProviderRequestBound?: (binding: unknown, generationId?: string) => void | Promise<void>;
37
+ }
38
+ /**
39
+ * Record what the provider knows about the generation on the async stack.
40
+ * Partial receipts merge: a request id recorded at submit and a charge
41
+ * recorded after the poll land on one receipt. Outside a scope the call is a
42
+ * no-op, logged at debug — a provider used from a path that is not a
43
+ * generation (a probe, a listing) has nothing to attach to.
44
+ */
45
+ export declare function recordGenerationReceipt(receipt: Partial<GenerationReceipt>): void;
46
+ /** Retain the provider's JSON result before a caller-specific decoder runs. */
47
+ export declare function recordGenerationProviderResult(result: unknown): void;
48
+ /** Read callback data supplied by the durable host for the active generation. */
49
+ export declare function currentGenerationProviderRequestOptions(): GenerationProviderRequestOptions | null;
50
+ /**
51
+ * Record a provider id and await the host's durable acceptance hook. Providers
52
+ * use this at the submit boundary; the hook is a no-op for ephemeral hosts.
53
+ */
54
+ export declare function recordGenerationReceiptAsync(receipt: Partial<GenerationReceipt>, submission?: unknown): Promise<void>;
55
+ /** Await the host's durable binding hook after a provider id is returned. */
56
+ export declare function recordGenerationBindingAsync(binding: unknown): Promise<void>;
57
+ /**
58
+ * Run `fn` inside a fresh receipt scope and return its value together with
59
+ * whatever the provider recorded. The receipt is returned even when `fn`
60
+ * throws — a failed call may still carry a request id the reconciler needs —
61
+ * by way of {@link GenerationScopeError}.
62
+ */
63
+ export declare function runWithGenerationReceipt<T>(fn: () => Promise<T>, options?: GenerationReceiptScopeOptions): Promise<{
64
+ value: T;
65
+ receipt: GenerationReceipt | null;
66
+ providerResult: unknown;
67
+ }>;
68
+ /**
69
+ * Wraps the provider's error so the seam can read the receipt collected
70
+ * before the failure. `cause` is the original error, rethrown unchanged to
71
+ * every caller above the seam.
72
+ */
73
+ export declare class GenerationScopeError extends Error {
74
+ readonly cause: unknown;
75
+ readonly receipt: GenerationReceipt | null;
76
+ readonly providerResult: unknown;
77
+ readonly acceptanceHookFailed: boolean;
78
+ readonly bindingHookFailed: boolean;
79
+ constructor(cause: unknown, receipt: GenerationReceipt | null, providerResult: unknown, phase?: {
80
+ acceptanceHookFailed?: boolean;
81
+ bindingHookFailed?: boolean;
82
+ });
83
+ }
84
+ /** The receipt on the async stack right now, if any. Test seam. */
85
+ export declare function currentGenerationReceipt(): GenerationReceipt | null;
86
+ //# sourceMappingURL=generation-receipt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation-receipt.d.ts","sourceRoot":"","sources":["../src/generation-receipt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAqB/D,kEAAkE;AAClE,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,0DAA0D;IAC1D,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,+EAA+E;IAC/E,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IACvC,qEAAqE;IACrE,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,+EAA+E;IAC/E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,6EAA6E;AAC7E,wBAAgB,oCAAoC,CAClD,KAAK,EAAE,OAAO,GACb,KAAK,IAAI;IAAE,QAAQ,CAAC,6BAA6B,EAAE,IAAI,CAAA;CAAE,CAQ3D;AAED,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,sBAAsB,CAAC,EAAE,gCAAgC,CAAC;IACnE,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CACnC,UAAU,EAAE,OAAO,KAChB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAChC,OAAO,EAAE,OAAO,EAChB,YAAY,CAAC,EAAE,MAAM,KAClB,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B;AAID;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,IAAI,CAiBN;AAED,+EAA+E;AAC/E,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAGpE;AAED,iFAAiF;AACjF,wBAAgB,uCAAuC,IAAI,gCAAgC,GAAG,IAAI,CAEjG;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,OAAO,CAAC,iBAAiB,CAAC,EACnC,UAAU,CAAC,EAAE,OAAO,GACnB,OAAO,CAAC,IAAI,CAAC,CAUf;AAED,6EAA6E;AAC7E,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC9C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE,6BAAkC,GAC1C,OAAO,CAAC;IACT,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClC,cAAc,EAAE,OAAO,CAAC;CACzB,CAAC,CAiBD;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,OAAO,CAAC;IACjC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IAEpC,YACE,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,iBAAiB,GAAG,IAAI,EACjC,cAAc,EAAE,OAAO,EACvB,KAAK,CAAC,EAAE;QAAE,oBAAoB,CAAC,EAAE,OAAO,CAAC;QAAC,iBAAiB,CAAC,EAAE,OAAO,CAAA;KAAE,EASxE;CACF;AAED,mEAAmE;AACnE,wBAAgB,wBAAwB,IAAI,iBAAiB,GAAG,IAAI,CAEnE"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Generation receipts: what a provider learns about its own call while the
3
+ * call is in flight — the request id it was given, and the charge it was told.
4
+ *
5
+ * Twenty-odd provider methods return media bytes and nothing else. Threading a
6
+ * request id through every signature is a large diff for one field, so the
7
+ * receipt travels the other way: the generation seam opens a scope around the
8
+ * provider call, the provider records into whichever scope is on the async
9
+ * stack, and the seam reads the receipt back after dispatch. Concurrent
10
+ * generations each have their own scope, in any completion order — the same
11
+ * property `invocation-account.ts` relies on.
12
+ *
13
+ * Design: docs/media-generation-tracking-design.md § D3.
14
+ */
15
+ import { createLogger } from "@nodetool-ai/config";
16
+ import { AsyncLocalStorage } from "./async-local-storage.js";
17
+ const log = createLogger("nodetool.runtime.generation-receipt");
18
+ /** True only for a provider response that explicitly says it is terminal. */
19
+ export function isAuthoritativeProviderTerminalError(value) {
20
+ return (typeof value === "object" &&
21
+ value !== null &&
22
+ "authoritativeProviderTerminal" in value &&
23
+ value
24
+ .authoritativeProviderTerminal === true);
25
+ }
26
+ const store = new AsyncLocalStorage();
27
+ /**
28
+ * Record what the provider knows about the generation on the async stack.
29
+ * Partial receipts merge: a request id recorded at submit and a charge
30
+ * recorded after the poll land on one receipt. Outside a scope the call is a
31
+ * no-op, logged at debug — a provider used from a path that is not a
32
+ * generation (a probe, a listing) has nothing to attach to.
33
+ */
34
+ export function recordGenerationReceipt(receipt) {
35
+ const scope = store.getStore();
36
+ if (!scope) {
37
+ log.debug("Generation receipt recorded outside a generation scope", {
38
+ provider_request_id: receipt.provider_request_id ?? null
39
+ });
40
+ return;
41
+ }
42
+ const current = scope.receipt ?? {};
43
+ const merged = { ...current };
44
+ if (receipt.provider_request_id !== undefined) {
45
+ merged.provider_request_id = receipt.provider_request_id;
46
+ }
47
+ if (receipt.cost !== undefined) {
48
+ merged.cost = receipt.cost;
49
+ }
50
+ scope.receipt = merged;
51
+ }
52
+ /** Retain the provider's JSON result before a caller-specific decoder runs. */
53
+ export function recordGenerationProviderResult(result) {
54
+ const scope = store.getStore();
55
+ if (scope)
56
+ scope.providerResult = result;
57
+ }
58
+ /** Read callback data supplied by the durable host for the active generation. */
59
+ export function currentGenerationProviderRequestOptions() {
60
+ return store.getStore()?.providerRequestOptions ?? null;
61
+ }
62
+ /**
63
+ * Record a provider id and await the host's durable acceptance hook. Providers
64
+ * use this at the submit boundary; the hook is a no-op for ephemeral hosts.
65
+ */
66
+ export async function recordGenerationReceiptAsync(receipt, submission) {
67
+ recordGenerationReceipt(receipt);
68
+ const scope = store.getStore();
69
+ if (!scope?.onProviderRequestAccepted)
70
+ return;
71
+ try {
72
+ await scope.onProviderRequestAccepted(submission ?? receipt);
73
+ }
74
+ catch (error) {
75
+ scope.acceptanceHookFailed = true;
76
+ throw error;
77
+ }
78
+ }
79
+ /** Await the host's durable binding hook after a provider id is returned. */
80
+ export async function recordGenerationBindingAsync(binding) {
81
+ const scope = store.getStore();
82
+ if (!scope?.onProviderRequestBound)
83
+ return;
84
+ try {
85
+ await scope.onProviderRequestBound(binding, scope.providerRequestOptions?.generationId);
86
+ }
87
+ catch (error) {
88
+ scope.bindingHookFailed = true;
89
+ throw error;
90
+ }
91
+ }
92
+ /**
93
+ * Run `fn` inside a fresh receipt scope and return its value together with
94
+ * whatever the provider recorded. The receipt is returned even when `fn`
95
+ * throws — a failed call may still carry a request id the reconciler needs —
96
+ * by way of {@link GenerationScopeError}.
97
+ */
98
+ export async function runWithGenerationReceipt(fn, options = {}) {
99
+ const scope = { receipt: null, ...options };
100
+ try {
101
+ const value = await store.run(scope, fn);
102
+ return {
103
+ value,
104
+ receipt: scope.receipt,
105
+ providerResult: scope.providerResult
106
+ };
107
+ }
108
+ catch (error) {
109
+ throw new GenerationScopeError(error, scope.receipt, scope.providerResult, scope);
110
+ }
111
+ }
112
+ /**
113
+ * Wraps the provider's error so the seam can read the receipt collected
114
+ * before the failure. `cause` is the original error, rethrown unchanged to
115
+ * every caller above the seam.
116
+ */
117
+ export class GenerationScopeError extends Error {
118
+ cause;
119
+ receipt;
120
+ providerResult;
121
+ acceptanceHookFailed;
122
+ bindingHookFailed;
123
+ constructor(cause, receipt, providerResult, phase) {
124
+ super(cause instanceof Error ? cause.message : String(cause));
125
+ this.name = "GenerationScopeError";
126
+ this.cause = cause;
127
+ this.receipt = receipt;
128
+ this.providerResult = providerResult;
129
+ this.acceptanceHookFailed = phase?.acceptanceHookFailed === true;
130
+ this.bindingHookFailed = phase?.bindingHookFailed === true;
131
+ }
132
+ }
133
+ /** The receipt on the async stack right now, if any. Test seam. */
134
+ export function currentGenerationReceipt() {
135
+ return store.getStore()?.receipt ?? null;
136
+ }
137
+ //# sourceMappingURL=generation-receipt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation-receipt.js","sourceRoot":"","sources":["../src/generation-receipt.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Process-level registry of in-flight generations.
3
+ *
4
+ * A generation outlives the turn that started it — `background: true` returns
5
+ * before the provider answers, and a cancelled chat turn does not cancel the
6
+ * render — so the handle that can abort it and the waiters that want its
7
+ * outcome live at the process, not on a run. The shape is
8
+ * `packages/agents/src/background-subtasks.ts` lifted one level up: a record
9
+ * map, waiters, settled outcomes kept for a while so a late `wait` still gets
10
+ * its answer.
11
+ *
12
+ * Design: docs/media-generation-tracking-design.md § 5.4.
13
+ */
14
+ import type { GenerationReceipt, GenerationStatus } from "@nodetool-ai/protocol";
15
+ export interface GenerationOutcome {
16
+ status: GenerationStatus;
17
+ error?: string | null;
18
+ asset_ids: string[];
19
+ receipt: GenerationReceipt | null;
20
+ }
21
+ /** One generation that finished and left assets behind. */
22
+ export interface CompletedGeneration {
23
+ id: string;
24
+ asset_ids: string[];
25
+ }
26
+ declare class GenerationRegistry {
27
+ private readonly running;
28
+ private readonly settled;
29
+ register(id: string, entry: {
30
+ userId: string;
31
+ abort: () => void;
32
+ }): void;
33
+ settle(id: string, outcome: GenerationOutcome): void;
34
+ /**
35
+ * Abort a running generation. False when the id is unknown, already
36
+ * settled, or belongs to another user — the caller cannot tell those apart
37
+ * on purpose, so an id is not an oracle for someone else's activity.
38
+ */
39
+ cancel(id: string, userId: string): boolean;
40
+ /**
41
+ * Resolve with the outcome once the generation settles, or `null` after
42
+ * `timeoutMs`. An id that already settled resolves at once; an unknown id
43
+ * resolves `null` at once rather than waiting for something that will never
44
+ * come.
45
+ */
46
+ wait(id: string, timeoutMs: number): Promise<GenerationOutcome | null>;
47
+ isRunning(id: string): boolean;
48
+ /** The settled outcome, when the registry still holds it. */
49
+ outcome(id: string): GenerationOutcome | null;
50
+ /**
51
+ * Generations that completed for a user since `sinceMs` and left assets.
52
+ *
53
+ * A step killed by its deadline loses whatever the guest had not written
54
+ * down yet, and generations are the expensive half of that: the provider was
55
+ * paid, the assets were saved, and the only record the next turn had was
56
+ * gone. This is how a caller names them so the work is reused rather than
57
+ * bought twice.
58
+ */
59
+ completedSince(userId: string, sinceMs: number): CompletedGeneration[];
60
+ /** Ids currently running for a user. */
61
+ runningFor(userId: string): string[];
62
+ /** Test seam: forget everything. */
63
+ reset(): void;
64
+ }
65
+ export declare const generationRegistry: GenerationRegistry;
66
+ export {};
67
+ //# sourceMappingURL=generation-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation-registry.d.ts","sourceRoot":"","sources":["../src/generation-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACnC;AAeD,2DAA2D;AAC3D,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAKD,cAAM,kBAAkB;IACtB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAC3D,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAmC;IAE3D,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,IAAI,CAAA;KAAE,GAAG,IAAI,CAEvE;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,iBAAiB,GAAG,IAAI,CAcnD;IAED;;;;OAIG;IACH,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAK1C;IAED;;;;;OAKG;IACH,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAiBrE;IAED,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAE7B;IAED,6DAA6D;IAC7D,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAE5C;IAED;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,mBAAmB,EAAE,CAUrE;IAED,wCAAwC;IACxC,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAMnC;IAED,oCAAoC;IACpC,KAAK,IAAI,IAAI,CAGZ;CACF;AAED,eAAO,MAAM,kBAAkB,EAAE,kBAA6C,CAAC"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Process-level registry of in-flight generations.
3
+ *
4
+ * A generation outlives the turn that started it — `background: true` returns
5
+ * before the provider answers, and a cancelled chat turn does not cancel the
6
+ * render — so the handle that can abort it and the waiters that want its
7
+ * outcome live at the process, not on a run. The shape is
8
+ * `packages/agents/src/background-subtasks.ts` lifted one level up: a record
9
+ * map, waiters, settled outcomes kept for a while so a late `wait` still gets
10
+ * its answer.
11
+ *
12
+ * Design: docs/media-generation-tracking-design.md § 5.4.
13
+ */
14
+ /** How many settled outcomes to keep for late waiters. */
15
+ const SETTLED_CAPACITY = 1000;
16
+ class GenerationRegistry {
17
+ running = new Map();
18
+ settled = new Map();
19
+ register(id, entry) {
20
+ this.running.set(id, { ...entry, waiters: [] });
21
+ }
22
+ settle(id, outcome) {
23
+ const entry = this.running.get(id);
24
+ this.running.delete(id);
25
+ this.settled.set(id, {
26
+ outcome,
27
+ userId: entry?.userId ?? null,
28
+ settledAt: Date.now()
29
+ });
30
+ if (this.settled.size > SETTLED_CAPACITY) {
31
+ const oldest = this.settled.keys().next().value;
32
+ if (oldest !== undefined)
33
+ this.settled.delete(oldest);
34
+ }
35
+ if (!entry)
36
+ return;
37
+ for (const waiter of entry.waiters)
38
+ waiter(outcome);
39
+ }
40
+ /**
41
+ * Abort a running generation. False when the id is unknown, already
42
+ * settled, or belongs to another user — the caller cannot tell those apart
43
+ * on purpose, so an id is not an oracle for someone else's activity.
44
+ */
45
+ cancel(id, userId) {
46
+ const entry = this.running.get(id);
47
+ if (!entry || entry.userId !== userId)
48
+ return false;
49
+ entry.abort();
50
+ return true;
51
+ }
52
+ /**
53
+ * Resolve with the outcome once the generation settles, or `null` after
54
+ * `timeoutMs`. An id that already settled resolves at once; an unknown id
55
+ * resolves `null` at once rather than waiting for something that will never
56
+ * come.
57
+ */
58
+ wait(id, timeoutMs) {
59
+ const done = this.settled.get(id);
60
+ if (done)
61
+ return Promise.resolve(done.outcome);
62
+ const entry = this.running.get(id);
63
+ if (!entry)
64
+ return Promise.resolve(null);
65
+ return new Promise((resolve) => {
66
+ const timer = setTimeout(() => {
67
+ const idx = entry.waiters.indexOf(waiter);
68
+ if (idx >= 0)
69
+ entry.waiters.splice(idx, 1);
70
+ resolve(null);
71
+ }, timeoutMs);
72
+ const waiter = (outcome) => {
73
+ clearTimeout(timer);
74
+ resolve(outcome);
75
+ };
76
+ entry.waiters.push(waiter);
77
+ });
78
+ }
79
+ isRunning(id) {
80
+ return this.running.has(id);
81
+ }
82
+ /** The settled outcome, when the registry still holds it. */
83
+ outcome(id) {
84
+ return this.settled.get(id)?.outcome ?? null;
85
+ }
86
+ /**
87
+ * Generations that completed for a user since `sinceMs` and left assets.
88
+ *
89
+ * A step killed by its deadline loses whatever the guest had not written
90
+ * down yet, and generations are the expensive half of that: the provider was
91
+ * paid, the assets were saved, and the only record the next turn had was
92
+ * gone. This is how a caller names them so the work is reused rather than
93
+ * bought twice.
94
+ */
95
+ completedSince(userId, sinceMs) {
96
+ const found = [];
97
+ for (const [id, entry] of this.settled) {
98
+ if (entry.userId !== userId)
99
+ continue;
100
+ if (entry.settledAt < sinceMs)
101
+ continue;
102
+ if (entry.outcome.status !== "completed")
103
+ continue;
104
+ if (entry.outcome.asset_ids.length === 0)
105
+ continue;
106
+ found.push({ id, asset_ids: entry.outcome.asset_ids });
107
+ }
108
+ return found;
109
+ }
110
+ /** Ids currently running for a user. */
111
+ runningFor(userId) {
112
+ const ids = [];
113
+ for (const [id, entry] of this.running) {
114
+ if (entry.userId === userId)
115
+ ids.push(id);
116
+ }
117
+ return ids;
118
+ }
119
+ /** Test seam: forget everything. */
120
+ reset() {
121
+ this.running.clear();
122
+ this.settled.clear();
123
+ }
124
+ }
125
+ export const generationRegistry = new GenerationRegistry();
126
+ //# sourceMappingURL=generation-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generation-registry.js","sourceRoot":"","sources":["../src/generation-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,196 @@
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
+ /** Scopes the Google login requests so the whole toolbelt works. */
13
+ export declare const GOOGLE_WORKSPACE_SCOPES: string[];
14
+ /** An error carrying the HTTP status Google replied with. */
15
+ export declare class GoogleApiError extends Error {
16
+ readonly status: number;
17
+ constructor(status: number, message: string);
18
+ }
19
+ export interface DriveFile {
20
+ id: string;
21
+ name: string;
22
+ mimeType: string;
23
+ modifiedTime?: string;
24
+ size?: string;
25
+ webViewLink?: string;
26
+ owners?: Array<{
27
+ emailAddress?: string;
28
+ displayName?: string;
29
+ }>;
30
+ }
31
+ /**
32
+ * List Drive files matching a query.
33
+ *
34
+ * `q` is Drive's own query syntax. A bare phrase is wrapped into a full-text
35
+ * search so callers can pass "quarterly report" directly.
36
+ */
37
+ export declare function driveSearchFiles(token: string, opts?: {
38
+ q?: string;
39
+ maxResults?: number;
40
+ orderBy?: string;
41
+ }): Promise<DriveFile[]>;
42
+ /** Fetch a file's metadata. */
43
+ export declare function driveGetFile(token: string, fileId: string): Promise<DriveFile>;
44
+ /**
45
+ * Read a file's content as text. Google-native files (Docs, Sheets, Slides)
46
+ * are exported to a plain format; everything else is downloaded as-is.
47
+ */
48
+ export declare function driveReadFile(token: string, fileId: string): Promise<{
49
+ name: string;
50
+ mimeType: string;
51
+ content: string;
52
+ }>;
53
+ /** Create a plain-text file in Drive (optionally inside a folder). */
54
+ export declare function driveCreateFile(token: string, opts: {
55
+ name: string;
56
+ content: string;
57
+ mimeType?: string;
58
+ folderId?: string;
59
+ }): Promise<DriveFile>;
60
+ export interface GmailMessage {
61
+ id: string;
62
+ threadId: string;
63
+ subject: string;
64
+ from: string;
65
+ to: string;
66
+ date: string;
67
+ snippet: string;
68
+ body: string;
69
+ labelIds: string[];
70
+ }
71
+ /** Fetch one message, fully parsed. */
72
+ export declare function gmailGetMessage(token: string, messageId: string): Promise<GmailMessage>;
73
+ /**
74
+ * Search the mailbox with Gmail's own query syntax
75
+ * (e.g. `from:alice@example.com is:unread newer_than:7d`).
76
+ */
77
+ export declare function gmailSearchMessages(token: string, opts?: {
78
+ q?: string;
79
+ maxResults?: number;
80
+ }): Promise<GmailMessage[]>;
81
+ /** Send a plain-text email. Returns the created message id. */
82
+ export declare function gmailSendMessage(token: string, opts: {
83
+ to: string;
84
+ subject: string;
85
+ body: string;
86
+ cc?: string;
87
+ bcc?: string;
88
+ }): Promise<{
89
+ id: string;
90
+ threadId: string;
91
+ }>;
92
+ /** Add and/or remove labels on a message (archive = remove `INBOX`). */
93
+ export declare function gmailModifyLabels(token: string, opts: {
94
+ messageId: string;
95
+ addLabelIds?: string[];
96
+ removeLabelIds?: string[];
97
+ }): Promise<{
98
+ id: string;
99
+ labelIds: string[];
100
+ }>;
101
+ /** List the mailbox's labels (id + name). */
102
+ export declare function gmailListLabels(token: string): Promise<Array<{
103
+ id: string;
104
+ name: string;
105
+ }>>;
106
+ /** Read a Google Doc as plain text. */
107
+ export declare function docsGetDocument(token: string, documentId: string): Promise<{
108
+ documentId: string;
109
+ title: string;
110
+ text: string;
111
+ }>;
112
+ /** Create a Google Doc, optionally seeded with text. */
113
+ export declare function docsCreateDocument(token: string, opts: {
114
+ title: string;
115
+ text?: string;
116
+ }): Promise<{
117
+ documentId: string;
118
+ title: string;
119
+ url: string;
120
+ }>;
121
+ /** Append text to the end of a Google Doc. */
122
+ export declare function docsAppendText(token: string, opts: {
123
+ documentId: string;
124
+ text: string;
125
+ }): Promise<void>;
126
+ /** Read a range (A1 notation) as a row-major array of cell strings. */
127
+ export declare function sheetsReadRange(token: string, opts: {
128
+ spreadsheetId: string;
129
+ range: string;
130
+ }): Promise<string[][]>;
131
+ /** Append rows below the last populated row of a range. */
132
+ export declare function sheetsAppendRows(token: string, opts: {
133
+ spreadsheetId: string;
134
+ range: string;
135
+ values: unknown[][];
136
+ }): Promise<{
137
+ updatedRange: string;
138
+ updatedRows: number;
139
+ }>;
140
+ /** Overwrite a range with the given values. */
141
+ export declare function sheetsUpdateRange(token: string, opts: {
142
+ spreadsheetId: string;
143
+ range: string;
144
+ values: unknown[][];
145
+ }): Promise<{
146
+ updatedRange: string;
147
+ updatedCells: number;
148
+ }>;
149
+ /** Create a spreadsheet, optionally seeded with rows on the first sheet. */
150
+ export declare function sheetsCreateSpreadsheet(token: string, opts: {
151
+ title: string;
152
+ values?: unknown[][];
153
+ }): Promise<{
154
+ spreadsheetId: string;
155
+ url: string;
156
+ }>;
157
+ export interface CalendarEvent {
158
+ id: string;
159
+ summary: string;
160
+ description?: string;
161
+ location?: string;
162
+ start: string;
163
+ end: string;
164
+ attendees: string[];
165
+ htmlLink?: string;
166
+ }
167
+ /** List the user's calendars. */
168
+ export declare function calendarListCalendars(token: string): Promise<Array<{
169
+ id: string;
170
+ summary: string;
171
+ primary?: boolean;
172
+ }>>;
173
+ /** List events in a time window, soonest first. */
174
+ export declare function calendarListEvents(token: string, opts?: {
175
+ calendarId?: string;
176
+ timeMin?: string;
177
+ timeMax?: string;
178
+ q?: string;
179
+ maxResults?: number;
180
+ }): Promise<CalendarEvent[]>;
181
+ /** Create an event. Times are RFC3339 (`2026-07-27T15:00:00-07:00`). */
182
+ export declare function calendarCreateEvent(token: string, opts: {
183
+ calendarId?: string;
184
+ summary: string;
185
+ start: string;
186
+ end: string;
187
+ description?: string;
188
+ location?: string;
189
+ attendees?: string[];
190
+ }): Promise<CalendarEvent>;
191
+ /** Delete an event. */
192
+ export declare function calendarDeleteEvent(token: string, opts: {
193
+ calendarId?: string;
194
+ eventId: string;
195
+ }): Promise<void>;
196
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/google/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AASH,oEAAoE;AACpE,eAAO,MAAM,uBAAuB,UAOnC,CAAC;AAEF,6DAA6D;AAC7D,qBAAa,cAAe,SAAQ,KAAK;IACvC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAI1C;CACF;AAiDD,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjE;AAoBD;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/D,OAAO,CAAC,SAAS,EAAE,CAAC,CAoBtB;AAED,+BAA+B;AAC/B,wBAAsB,YAAY,CAChC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,SAAS,CAAC,CAQpB;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAqB9D;AAED,sEAAsE;AACtE,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IACJ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GACA,OAAO,CAAC,SAAS,CAAC,CAwBpB;AAID,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AA6DD,uCAAuC;AACvC,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAQvB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IAAE,CAAC,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GAC7C,OAAO,CAAC,YAAY,EAAE,CAAC,CAUzB;AAED,+DAA+D;AAC/D,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7E,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAkB3C;AAED,wEAAwE;AACxE,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GAC7E,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,CAY7C;AAED,6CAA6C;AAC7C,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAK9C;AAsCD,uCAAuC;AACvC,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAU9D;AAED,wDAAwD;AACxD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACrC,OAAO,CAAC;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAa7D;AAED,8CAA8C;AAC9C,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACzC,OAAO,CAAC,IAAI,CAAC,CAaf;AAID,uEAAuE;AACvE,wBAAsB,eAAe,CACnC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAQrB;AAED,2DAA2D;AAC3D,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAA;CAAE,GAClE,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,CAiBxD;AAED,+CAA+C;AAC/C,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAA;CAAE,GAClE,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAezD;AAED,4EAA4E;AAC5E,wBAAsB,uBAAuB,CAC3C,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,CAAA;CAAE,GAC5C,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAsBjD;AAID,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA4BD,iCAAiC;AACjC,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAAC,CAKpE;AAED,mDAAmD;AACnD,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;IACJ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,CAAC,CAAC,EAAE,MAAM,CAAC;IACX,UAAU,CAAC,EAAE,MAAM,CAAC;CAChB,GACL,OAAO,CAAC,aAAa,EAAE,CAAC,CAc1B;AAED,wEAAwE;AACxE,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IACJ,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GACA,OAAO,CAAC,aAAa,CAAC,CAkBxB;AAED,uBAAuB;AACvB,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAC7C,OAAO,CAAC,IAAI,CAAC,CASf"}