@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 @@
1
+ {"version":3,"file":"claude-code-login.d.ts","sourceRoot":"","sources":["../../../src/providers/oauth/claude-code-login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,230 @@
1
+ /**
2
+ * ClaudeCodeLogin — orchestration for signing in with a Claude subscription,
3
+ * exactly as the `claude` CLI does it, and persisting the result where the
4
+ * Claude Agent SDK will find it.
5
+ *
6
+ * Two completion paths share one authorization request:
7
+ *
8
+ * - **Loopback** — the browser is redirected to an ephemeral `127.0.0.1`
9
+ * listener this process binds. Works when the browser runs on the same
10
+ * machine as the server (desktop, local dev).
11
+ * - **Manual** — the console shows a `<code>#<state>` string the user pastes
12
+ * back. The only option on a headless or remote host.
13
+ *
14
+ * The two differ only in `redirect_uri`, which must match between the
15
+ * authorization request and the token exchange — hence the two URLs handed back
16
+ * from {@link ClaudeCodeLogin.begin} and the `manual` flag carried through to
17
+ * completion.
18
+ */
19
+ import { createLogger } from "@nodetool-ai/config";
20
+ import { CLAUDE_CODE_CALLBACK_PATH, CLAUDE_CODE_CALLBACK_PORT, CLAUDE_CODE_OAUTH_MANUAL_REDIRECT_URL } from "@nodetool-ai/protocol";
21
+ import { ClaudeCodeCredentialsStore, isExpired } from "./claude-code-credentials.js";
22
+ import { ClaudeCodeOAuthClient } from "./claude-code-oauth-client.js";
23
+ import { NotAuthenticatedError, OAuthError, StateMismatchError } from "./errors.js";
24
+ import { LocalCallbackServer } from "./local-callback-server.js";
25
+ import { PKCEHelper } from "./pkce-helper.js";
26
+ import { systemClock } from "./types.js";
27
+ /** How long a started login stays completable before the listener is torn down. */
28
+ export const CLAUDE_LOGIN_TIMEOUT_MS = 10 * 60 * 1000;
29
+ export class ClaudeCodeLogin {
30
+ client;
31
+ credentials;
32
+ pkce;
33
+ callbackServerFactory;
34
+ clock;
35
+ logger;
36
+ constructor(deps = {}) {
37
+ this.logger =
38
+ deps.logger ?? createLogger("nodetool.runtime.oauth.claude-login");
39
+ this.client =
40
+ deps.client ?? new ClaudeCodeOAuthClient({ logger: this.logger });
41
+ this.credentials =
42
+ deps.credentials ??
43
+ new ClaudeCodeCredentialsStore({ logger: this.logger });
44
+ this.pkce = deps.pkce ?? new PKCEHelper();
45
+ this.callbackServerFactory =
46
+ deps.callbackServerFactory ??
47
+ (() => new LocalCallbackServer({
48
+ host: "127.0.0.1",
49
+ port: CLAUDE_CODE_CALLBACK_PORT,
50
+ path: CLAUDE_CODE_CALLBACK_PATH,
51
+ logger: this.logger
52
+ }));
53
+ this.clock = deps.clock ?? systemClock;
54
+ }
55
+ /** Where the credentials the SDK reads are stored. */
56
+ get credentialsPath() {
57
+ return this.credentials.path;
58
+ }
59
+ /**
60
+ * Start an authorization request. Binds the loopback listener (unless
61
+ * `manualOnly`) and returns both authorization URLs plus the handles to
62
+ * finish the flow. The caller owns teardown via `cancel()`.
63
+ */
64
+ async begin(options = {}) {
65
+ const { verifier, challenge } = await this.pkce.createPkcePair();
66
+ const state = await this.pkce.createState();
67
+ const timeoutMs = options.timeoutMs ?? CLAUDE_LOGIN_TIMEOUT_MS;
68
+ let server = null;
69
+ let loopbackRedirectUri = null;
70
+ if (!options.manualOnly) {
71
+ server = this.callbackServerFactory();
72
+ let port;
73
+ try {
74
+ ({ port } = await server.listen());
75
+ }
76
+ catch (err) {
77
+ const message = err instanceof Error ? err.message : String(err);
78
+ throw new OAuthError("token_exchange_failed", `Could not bind the loopback listener on port ${CLAUDE_CODE_CALLBACK_PORT} (is a \`claude login\` already waiting?): ${message}`);
79
+ }
80
+ // The listener binds 127.0.0.1, but the registered redirect uses the
81
+ // `localhost` spelling the authorization server expects from the CLI.
82
+ loopbackRedirectUri = `http://localhost:${port}${CLAUDE_CODE_CALLBACK_PATH}`;
83
+ }
84
+ const manualAuthUrl = this.client.buildAuthorizationUrl({
85
+ codeChallenge: challenge,
86
+ state,
87
+ redirectUri: CLAUDE_CODE_OAUTH_MANUAL_REDIRECT_URL,
88
+ loginMethod: options.loginMethod
89
+ });
90
+ const authUrl = loopbackRedirectUri
91
+ ? this.client.buildAuthorizationUrl({
92
+ codeChallenge: challenge,
93
+ state,
94
+ redirectUri: loopbackRedirectUri,
95
+ loginMethod: options.loginMethod
96
+ })
97
+ : null;
98
+ const cancel = async () => {
99
+ const current = server;
100
+ server = null;
101
+ await current?.close().catch(() => { });
102
+ };
103
+ return {
104
+ authUrl,
105
+ redirectUri: loopbackRedirectUri,
106
+ manualAuthUrl,
107
+ state,
108
+ waitForRedirect: async (signal) => {
109
+ if (!server || !loopbackRedirectUri) {
110
+ throw new OAuthError("callback_timeout", "This login was started without a loopback listener; paste the code instead");
111
+ }
112
+ try {
113
+ const result = await server.waitForCode({
114
+ expectedState: state,
115
+ timeoutMs,
116
+ signal
117
+ });
118
+ return await this.exchangeAndStore({
119
+ code: result.code,
120
+ state,
121
+ codeVerifier: verifier,
122
+ redirectUri: loopbackRedirectUri,
123
+ signal
124
+ });
125
+ }
126
+ finally {
127
+ await cancel();
128
+ }
129
+ },
130
+ completeWithPastedCode: async (input) => {
131
+ const parsed = parsePastedCode(input, state);
132
+ try {
133
+ return await this.exchangeAndStore({
134
+ code: parsed.code,
135
+ state: parsed.state,
136
+ codeVerifier: verifier,
137
+ redirectUri: CLAUDE_CODE_OAUTH_MANUAL_REDIRECT_URL
138
+ });
139
+ }
140
+ finally {
141
+ await cancel();
142
+ }
143
+ },
144
+ cancel
145
+ };
146
+ }
147
+ /** Non-secret summary of the stored login. */
148
+ async status() {
149
+ const stored = await this.credentials.read();
150
+ if (!stored) {
151
+ return {
152
+ connected: false,
153
+ expiresAt: null,
154
+ expired: false,
155
+ scopes: [],
156
+ subscriptionType: null,
157
+ rateLimitTier: null,
158
+ credentialsPath: this.credentials.path
159
+ };
160
+ }
161
+ return {
162
+ connected: true,
163
+ expiresAt: stored.expiresAt,
164
+ expired: isExpired(stored, this.clock.now()),
165
+ scopes: stored.scopes ?? [],
166
+ subscriptionType: stored.subscriptionType ?? null,
167
+ rateLimitTier: stored.rateLimitTier ?? null,
168
+ credentialsPath: this.credentials.path
169
+ };
170
+ }
171
+ /**
172
+ * Refresh the stored access token. Returns the credentials unchanged when
173
+ * they are still valid, unless `force` is set.
174
+ *
175
+ * The `claude` CLI refreshes on its own, so this is for callers that need a
176
+ * usable token *outside* the SDK (status display, `CLAUDE_CODE_OAUTH_TOKEN`)
177
+ * rather than a prerequisite for running the provider.
178
+ */
179
+ async refresh(options = {}) {
180
+ const stored = await this.credentials.read();
181
+ if (!stored)
182
+ throw new NotAuthenticatedError("No stored Claude credentials");
183
+ if (!options.force && !isExpired(stored, this.clock.now()))
184
+ return stored;
185
+ if (!stored.refreshToken) {
186
+ throw new NotAuthenticatedError("Stored Claude credentials have no refresh token; sign in again");
187
+ }
188
+ const tokens = await this.client.refreshAccessToken(stored.refreshToken, options.signal);
189
+ return this.credentials.save({ tokens });
190
+ }
191
+ /** Remove the stored login. Returns false when there was nothing to remove. */
192
+ async logout() {
193
+ return this.credentials.clear();
194
+ }
195
+ async exchangeAndStore(params) {
196
+ const tokens = await this.client.exchangeAuthorizationCode(params);
197
+ const profile = await this.client.fetchProfile(tokens.accessToken, params.signal);
198
+ const saved = await this.credentials.save({
199
+ tokens,
200
+ subscriptionType: profile?.subscriptionType ?? null,
201
+ rateLimitTier: profile?.rateLimitTier ?? null
202
+ });
203
+ this.logger.info("Claude Code login completed", {
204
+ subscriptionType: saved.subscriptionType,
205
+ scopes: saved.scopes,
206
+ credentialsPath: this.credentials.path
207
+ });
208
+ return saved;
209
+ }
210
+ }
211
+ /**
212
+ * Parse what the console shows after a manual authorization: `<code>#<state>`.
213
+ * A bare code is accepted too, falling back to the state of the login it is
214
+ * completing — but a mismatched state is a CSRF signal and always rejected.
215
+ */
216
+ export function parsePastedCode(input, expectedState) {
217
+ const trimmed = input.trim();
218
+ if (!trimmed) {
219
+ throw new OAuthError("authorization_denied", "No authorization code provided");
220
+ }
221
+ const [code, state] = trimmed.split("#", 2);
222
+ if (!code) {
223
+ throw new OAuthError("authorization_denied", "No authorization code provided");
224
+ }
225
+ if (state !== undefined && state !== expectedState) {
226
+ throw new StateMismatchError();
227
+ }
228
+ return { code, state: expectedState };
229
+ }
230
+ //# sourceMappingURL=claude-code-login.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-login.js","sourceRoot":"","sources":["../../../src/providers/oauth/claude-code-login.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * ClaudeCodeOAuthClient — the protocol layer for the Claude Code login.
3
+ *
4
+ * Anthropic's OAuth server does not follow RFC 6749's form-encoded token
5
+ * endpoint: the `claude` CLI posts a JSON body and echoes the CSRF `state` back
6
+ * in the code exchange, and the authorization URL carries an extra `code=true`
7
+ * flag. Those three deviations are why this is a sibling of {@link OAuthClient}
8
+ * rather than a configuration of it; everything else (typed errors, redaction,
9
+ * injected fetch/clock, never logging token material) is shared.
10
+ */
11
+ import { type Logger } from "@nodetool-ai/config";
12
+ import { type Clock } from "./types.js";
13
+ /** Minimal `fetch` surface this client needs — satisfied by global `fetch`. */
14
+ export type JsonFetchLike = (input: string, init: {
15
+ method: string;
16
+ headers: Record<string, string>;
17
+ body?: string;
18
+ signal?: AbortSignal;
19
+ }) => Promise<{
20
+ ok: boolean;
21
+ status: number;
22
+ /** Decode the body as the caller's named response type. */
23
+ json<TBody>(): Promise<TBody>;
24
+ }>;
25
+ /** Which sign-in page the authorization URL points at. */
26
+ export type ClaudeCodeLoginMethod = "claude-ai" | "console";
27
+ /**
28
+ * A Claude Code token set. Shaped like the credential file's `claudeAiOauth`
29
+ * entry rather than {@link OAuthTokens}, because that file — not an in-memory
30
+ * session — is the thing this flow exists to produce.
31
+ */
32
+ export interface ClaudeCodeTokens {
33
+ readonly accessToken: string;
34
+ readonly refreshToken: string | null;
35
+ /** Absolute expiry in epoch ms, or null when the server sends no expiry. */
36
+ readonly expiresAt: number | null;
37
+ readonly scopes: readonly string[];
38
+ /** Account/organization identity echoed by the token endpoint, if any. */
39
+ readonly account: ClaudeCodeTokenAccount | null;
40
+ }
41
+ export interface ClaudeCodeTokenAccount {
42
+ readonly uuid: string | null;
43
+ readonly emailAddress: string | null;
44
+ readonly organizationUuid: string | null;
45
+ }
46
+ /** Non-secret account metadata used to label the connection in the UI. */
47
+ export interface ClaudeCodeProfile {
48
+ /** "max" | "pro" | "team" | "enterprise", or null for API-billed orgs. */
49
+ readonly subscriptionType: string | null;
50
+ readonly rateLimitTier: string | null;
51
+ readonly emailAddress: string | null;
52
+ readonly displayName: string | null;
53
+ readonly organizationName: string | null;
54
+ }
55
+ export interface AuthorizationUrlOptions {
56
+ readonly codeChallenge: string;
57
+ readonly state: string;
58
+ /**
59
+ * Loopback redirect the browser is sent back to. Omit for the manual flow,
60
+ * where the console displays a `code#state` string for the user to paste.
61
+ */
62
+ readonly redirectUri: string;
63
+ /** claude.ai (subscription) or the console (API billing). Default claude.ai. */
64
+ readonly loginMethod?: ClaudeCodeLoginMethod;
65
+ }
66
+ interface ClaudeCodeOAuthClientOptions {
67
+ /** Override the published Claude Code client id. */
68
+ readonly clientId?: string;
69
+ readonly tokenEndpoint?: string;
70
+ readonly profileEndpoint?: string;
71
+ /** Injected fetch. Defaults to the global. */
72
+ readonly fetchFn?: JsonFetchLike;
73
+ readonly clock?: Clock;
74
+ readonly logger?: Logger;
75
+ }
76
+ export declare class ClaudeCodeOAuthClient {
77
+ private readonly clientId;
78
+ private readonly tokenEndpoint;
79
+ private readonly profileEndpoint;
80
+ private readonly fetchFn;
81
+ private readonly clock;
82
+ private readonly logger;
83
+ constructor(options?: ClaudeCodeOAuthClientOptions);
84
+ /** Build the authorization-endpoint URL the browser should open. */
85
+ buildAuthorizationUrl(options: AuthorizationUrlOptions): string;
86
+ /**
87
+ * Exchange an authorization code for a token set. `redirectUri` must be the
88
+ * exact value used in the authorization request, and `state` is echoed back
89
+ * in the body — Anthropic's token endpoint rejects the exchange without it.
90
+ */
91
+ exchangeAuthorizationCode(params: {
92
+ code: string;
93
+ state: string;
94
+ codeVerifier: string;
95
+ redirectUri: string;
96
+ signal?: AbortSignal;
97
+ }): Promise<ClaudeCodeTokens>;
98
+ /** Exchange a refresh token for a fresh access token. */
99
+ refreshAccessToken(refreshToken: string, signal?: AbortSignal): Promise<ClaudeCodeTokens>;
100
+ /**
101
+ * Best-effort account lookup for a friendly label. Returns null when the
102
+ * endpoint is unreachable or the token lacks `user:profile` — a missing
103
+ * label must never fail a login.
104
+ */
105
+ fetchProfile(accessToken: string, signal?: AbortSignal): Promise<ClaudeCodeProfile | null>;
106
+ private tokenRequest;
107
+ private mapErrorResponse;
108
+ private normalizeTokens;
109
+ }
110
+ export {};
111
+ //# sourceMappingURL=claude-code-oauth-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-oauth-client.d.ts","sourceRoot":"","sources":["../../../src/providers/oauth/claude-code-oauth-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,207 @@
1
+ /**
2
+ * ClaudeCodeOAuthClient — the protocol layer for the Claude Code login.
3
+ *
4
+ * Anthropic's OAuth server does not follow RFC 6749's form-encoded token
5
+ * endpoint: the `claude` CLI posts a JSON body and echoes the CSRF `state` back
6
+ * in the code exchange, and the authorization URL carries an extra `code=true`
7
+ * flag. Those three deviations are why this is a sibling of {@link OAuthClient}
8
+ * rather than a configuration of it; everything else (typed errors, redaction,
9
+ * injected fetch/clock, never logging token material) is shared.
10
+ */
11
+ import { createLogger } from "@nodetool-ai/config";
12
+ import { CLAUDE_CODE_OAUTH_AUTHORIZATION_URL, CLAUDE_CODE_OAUTH_CLIENT_ID, CLAUDE_CODE_OAUTH_CONSOLE_AUTHORIZATION_URL, CLAUDE_CODE_OAUTH_PROFILE_URL, CLAUDE_CODE_OAUTH_REFRESH_SCOPES, CLAUDE_CODE_OAUTH_SCOPES, CLAUDE_CODE_OAUTH_TOKEN_URL, isNonEmptyString, isNumber } from "@nodetool-ai/protocol";
13
+ import { CredentialsRevokedError, InvalidRefreshTokenError, OAuthNetworkError, TokenExchangeError } from "./errors.js";
14
+ import { redactObject } from "./redaction.js";
15
+ import { systemClock } from "./types.js";
16
+ const REQUEST_TIMEOUT_MS = 30_000;
17
+ export class ClaudeCodeOAuthClient {
18
+ clientId;
19
+ tokenEndpoint;
20
+ profileEndpoint;
21
+ fetchFn;
22
+ clock;
23
+ logger;
24
+ constructor(options = {}) {
25
+ this.clientId = options.clientId ?? CLAUDE_CODE_OAUTH_CLIENT_ID;
26
+ this.tokenEndpoint = options.tokenEndpoint ?? CLAUDE_CODE_OAUTH_TOKEN_URL;
27
+ this.profileEndpoint =
28
+ options.profileEndpoint ?? CLAUDE_CODE_OAUTH_PROFILE_URL;
29
+ this.fetchFn = options.fetchFn ?? globalThis.fetch;
30
+ this.clock = options.clock ?? systemClock;
31
+ this.logger =
32
+ options.logger ?? createLogger("nodetool.runtime.oauth.claude-code");
33
+ }
34
+ /** Build the authorization-endpoint URL the browser should open. */
35
+ buildAuthorizationUrl(options) {
36
+ const base = options.loginMethod === "console"
37
+ ? CLAUDE_CODE_OAUTH_CONSOLE_AUTHORIZATION_URL
38
+ : CLAUDE_CODE_OAUTH_AUTHORIZATION_URL;
39
+ const url = new URL(base);
40
+ const q = url.searchParams;
41
+ // `code=true` asks the server for the paste-able code display in addition
42
+ // to the redirect — the CLI sets it on both variants of the URL.
43
+ q.set("code", "true");
44
+ q.set("client_id", this.clientId);
45
+ q.set("response_type", "code");
46
+ q.set("redirect_uri", options.redirectUri);
47
+ q.set("scope", CLAUDE_CODE_OAUTH_SCOPES.join(" "));
48
+ q.set("code_challenge", options.codeChallenge);
49
+ q.set("code_challenge_method", "S256");
50
+ q.set("state", options.state);
51
+ return url.toString();
52
+ }
53
+ /**
54
+ * Exchange an authorization code for a token set. `redirectUri` must be the
55
+ * exact value used in the authorization request, and `state` is echoed back
56
+ * in the body — Anthropic's token endpoint rejects the exchange without it.
57
+ */
58
+ async exchangeAuthorizationCode(params) {
59
+ return this.tokenRequest({
60
+ grant_type: "authorization_code",
61
+ code: params.code,
62
+ redirect_uri: params.redirectUri,
63
+ client_id: this.clientId,
64
+ code_verifier: params.codeVerifier,
65
+ state: params.state
66
+ }, params.signal, "exchange");
67
+ }
68
+ /** Exchange a refresh token for a fresh access token. */
69
+ async refreshAccessToken(refreshToken, signal) {
70
+ const tokens = await this.tokenRequest({
71
+ grant_type: "refresh_token",
72
+ refresh_token: refreshToken,
73
+ client_id: this.clientId,
74
+ scope: CLAUDE_CODE_OAUTH_REFRESH_SCOPES.join(" ")
75
+ }, signal, "refresh");
76
+ // The server may omit `refresh_token` on refresh; the old one stays valid.
77
+ return tokens.refreshToken ? tokens : { ...tokens, refreshToken };
78
+ }
79
+ /**
80
+ * Best-effort account lookup for a friendly label. Returns null when the
81
+ * endpoint is unreachable or the token lacks `user:profile` — a missing
82
+ * label must never fail a login.
83
+ */
84
+ async fetchProfile(accessToken, signal) {
85
+ try {
86
+ const res = await this.fetchFn(this.profileEndpoint, {
87
+ method: "GET",
88
+ headers: {
89
+ authorization: `Bearer ${accessToken}`,
90
+ accept: "application/json"
91
+ },
92
+ signal: signal ?? AbortSignal.timeout(REQUEST_TIMEOUT_MS)
93
+ });
94
+ if (!res.ok)
95
+ return null;
96
+ const body = await res.json();
97
+ return {
98
+ subscriptionType: subscriptionTypeOf(body.organization?.organization_type),
99
+ rateLimitTier: str(body.organization?.rate_limit_tier),
100
+ emailAddress: str(body.account?.email_address),
101
+ displayName: str(body.account?.display_name),
102
+ organizationName: str(body.organization?.name)
103
+ };
104
+ }
105
+ catch (err) {
106
+ this.logger.debug("Claude Code profile lookup failed", {
107
+ error: err instanceof Error ? err.message : String(err)
108
+ });
109
+ return null;
110
+ }
111
+ }
112
+ async tokenRequest(body, signal, kind) {
113
+ let res;
114
+ try {
115
+ res = await this.fetchFn(this.tokenEndpoint, {
116
+ method: "POST",
117
+ headers: {
118
+ "content-type": "application/json",
119
+ accept: "application/json"
120
+ },
121
+ body: JSON.stringify(body),
122
+ signal: signal ?? AbortSignal.timeout(REQUEST_TIMEOUT_MS)
123
+ });
124
+ }
125
+ catch (err) {
126
+ throw new OAuthNetworkError(`Network error during token ${kind}`, {
127
+ cause: err
128
+ });
129
+ }
130
+ let payload;
131
+ try {
132
+ payload = await res.json();
133
+ }
134
+ catch {
135
+ payload = {};
136
+ }
137
+ if (!res.ok)
138
+ throw this.mapErrorResponse(res.status, payload, kind);
139
+ return this.normalizeTokens(payload, kind);
140
+ }
141
+ mapErrorResponse(status, payload, kind) {
142
+ const code = str(payload.error);
143
+ // Never include the raw body in the message; log a redacted copy instead.
144
+ this.logger.warn("Claude token endpoint returned an error", {
145
+ status,
146
+ kind,
147
+ error: code,
148
+ body: redactObject(payload)
149
+ });
150
+ const message = `Token ${kind} failed: ${code ?? status}`;
151
+ if (code === "invalid_grant" || status === 401) {
152
+ return kind === "refresh"
153
+ ? new InvalidRefreshTokenError(message)
154
+ : new TokenExchangeError("Authentication failed: invalid or expired authorization code");
155
+ }
156
+ if (code === "access_denied" || code === "invalid_client") {
157
+ return new CredentialsRevokedError(message);
158
+ }
159
+ if (status >= 500) {
160
+ return new OAuthNetworkError(`Token ${kind} failed: server error ${status}`);
161
+ }
162
+ return new TokenExchangeError(message);
163
+ }
164
+ normalizeTokens(payload, kind) {
165
+ const accessToken = str(payload.access_token);
166
+ if (!accessToken) {
167
+ throw new TokenExchangeError(`Token ${kind} response missing access_token`);
168
+ }
169
+ const expiresIn = isNumber(payload.expires_in) ? payload.expires_in : null;
170
+ const scope = str(payload.scope);
171
+ const accountUuid = str(payload.account?.uuid);
172
+ const email = str(payload.account?.email_address);
173
+ const orgUuid = str(payload.organization?.uuid);
174
+ return {
175
+ accessToken,
176
+ refreshToken: str(payload.refresh_token),
177
+ expiresAt: expiresIn != null ? this.clock.now() + expiresIn * 1000 : null,
178
+ scopes: scope ? scope.split(" ").filter(Boolean) : [],
179
+ account: accountUuid || email || orgUuid
180
+ ? {
181
+ uuid: accountUuid,
182
+ emailAddress: email,
183
+ organizationUuid: orgUuid
184
+ }
185
+ : null
186
+ };
187
+ }
188
+ }
189
+ /** Map the API's organization type onto the plan label the CLI displays. */
190
+ function subscriptionTypeOf(organizationType) {
191
+ switch (organizationType) {
192
+ case "claude_max":
193
+ return "max";
194
+ case "claude_pro":
195
+ return "pro";
196
+ case "claude_team":
197
+ return "team";
198
+ case "claude_enterprise":
199
+ return "enterprise";
200
+ default:
201
+ return null;
202
+ }
203
+ }
204
+ function str(value) {
205
+ return isNonEmptyString(value) ? value : null;
206
+ }
207
+ //# sourceMappingURL=claude-code-oauth-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-oauth-client.js","sourceRoot":"","sources":["../../../src/providers/oauth/claude-code-oauth-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Typed error hierarchy for the OAuth subsystem.
3
+ *
4
+ * Every failure mode in the spec maps to a concrete subclass so callers can
5
+ * branch on `instanceof` (or on the stable `code`) rather than string-matching
6
+ * messages. Error messages NEVER contain token material — see `redaction.ts`.
7
+ */
8
+ export type OAuthErrorCode = "invalid_refresh_token" | "session_expired" | "browser_launch_failed" | "callback_timeout" | "network_error" | "credentials_revoked" | "state_mismatch" | "authorization_denied" | "token_exchange_failed" | "not_authenticated";
9
+ /** Base class for everything thrown by the OAuth subsystem. */
10
+ export declare class OAuthError extends Error {
11
+ readonly code: OAuthErrorCode;
12
+ constructor(code: OAuthErrorCode, message: string, options?: ErrorOptions);
13
+ }
14
+ /** The stored refresh token was rejected by the server (invalid_grant). */
15
+ export declare class InvalidRefreshTokenError extends OAuthError {
16
+ constructor(message?: string, options?: ErrorOptions);
17
+ }
18
+ /** No usable credentials in the store / access token expired with no refresh. */
19
+ export declare class SessionExpiredError extends OAuthError {
20
+ constructor(message?: string, options?: ErrorOptions);
21
+ }
22
+ /** The default browser could not be launched for the authorization request. */
23
+ export declare class BrowserLaunchError extends OAuthError {
24
+ constructor(message?: string, options?: ErrorOptions);
25
+ }
26
+ /** The user did not complete the browser flow within the allotted time. */
27
+ export declare class CallbackTimeoutError extends OAuthError {
28
+ constructor(message?: string, options?: ErrorOptions);
29
+ }
30
+ /** A network-level failure (DNS, TLS, connection reset) talking to the server. */
31
+ export declare class OAuthNetworkError extends OAuthError {
32
+ constructor(message?: string, options?: ErrorOptions);
33
+ }
34
+ /** The credentials were revoked server-side (access_denied / revoked grant). */
35
+ export declare class CredentialsRevokedError extends OAuthError {
36
+ constructor(message?: string, options?: ErrorOptions);
37
+ }
38
+ /** CSRF guard: the `state` returned to the callback did not match. */
39
+ export declare class StateMismatchError extends OAuthError {
40
+ constructor(message?: string, options?: ErrorOptions);
41
+ }
42
+ /** The user denied the authorization request in the browser. */
43
+ export declare class AuthorizationDeniedError extends OAuthError {
44
+ constructor(message?: string, options?: ErrorOptions);
45
+ }
46
+ /** The authorization-code → token exchange failed for a non-network reason. */
47
+ export declare class TokenExchangeError extends OAuthError {
48
+ constructor(message?: string, options?: ErrorOptions);
49
+ }
50
+ /** A request requiring authentication was made before login completed. */
51
+ export declare class NotAuthenticatedError extends OAuthError {
52
+ constructor(message?: string, options?: ErrorOptions);
53
+ }
54
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/providers/oauth/errors.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,cAAc,GACtB,uBAAuB,GACvB,iBAAiB,GACjB,uBAAuB,GACvB,kBAAkB,GAClB,eAAe,GACf,qBAAqB,GACrB,gBAAgB,GAChB,sBAAsB,GACtB,uBAAuB,GACvB,mBAAmB,CAAC;AAExB,+DAA+D;AAC/D,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAE9B,YAAY,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,EAMxE;CACF;AAED,2EAA2E;AAC3E,qBAAa,wBAAyB,SAAQ,UAAU;IACtD,YAAY,OAAO,SAAwC,EAAE,OAAO,CAAC,EAAE,YAAY,EAElF;CACF;AAED,iFAAiF;AACjF,qBAAa,mBAAoB,SAAQ,UAAU;IACjD,YAAY,OAAO,SAAgD,EAAE,OAAO,CAAC,EAAE,YAAY,EAE1F;CACF;AAED,+EAA+E;AAC/E,qBAAa,kBAAmB,SAAQ,UAAU;IAChD,YAAY,OAAO,SAAkD,EAAE,OAAO,CAAC,EAAE,YAAY,EAE5F;CACF;AAED,2EAA2E;AAC3E,qBAAa,oBAAqB,SAAQ,UAAU;IAClD,YAAY,OAAO,SAA6C,EAAE,OAAO,CAAC,EAAE,YAAY,EAEvF;CACF;AAED,kFAAkF;AAClF,qBAAa,iBAAkB,SAAQ,UAAU;IAC/C,YAAY,OAAO,SAAuC,EAAE,OAAO,CAAC,EAAE,YAAY,EAEjF;CACF;AAED,gFAAgF;AAChF,qBAAa,uBAAwB,SAAQ,UAAU;IACrD,YAAY,OAAO,SAA6B,EAAE,OAAO,CAAC,EAAE,YAAY,EAEvE;CACF;AAED,sEAAsE;AACtE,qBAAa,kBAAmB,SAAQ,UAAU;IAChD,YAAY,OAAO,SAAyC,EAAE,OAAO,CAAC,EAAE,YAAY,EAEnF;CACF;AAED,gEAAgE;AAChE,qBAAa,wBAAyB,SAAQ,UAAU;IACtD,YAAY,OAAO,SAA6B,EAAE,OAAO,CAAC,EAAE,YAAY,EAEvE;CACF;AAED,+EAA+E;AAC/E,qBAAa,kBAAmB,SAAQ,UAAU;IAChD,YAAY,OAAO,SAAqD,EAAE,OAAO,CAAC,EAAE,YAAY,EAE/F;CACF;AAED,0EAA0E;AAC1E,qBAAa,qBAAsB,SAAQ,UAAU;IACnD,YAAY,OAAO,SAA0C,EAAE,OAAO,CAAC,EAAE,YAAY,EAEpF;CACF"}