@cloudflare/tanstack-ai 0.1.6 → 0.1.8

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 (176) hide show
  1. package/README.md +35 -6
  2. package/dist/adapters/anthropic.cjs +32 -11
  3. package/dist/adapters/anthropic.cjs.map +1 -1
  4. package/dist/adapters/anthropic.d.cts +23 -5
  5. package/dist/adapters/anthropic.d.mts +23 -0
  6. package/dist/adapters/anthropic.mjs +30 -0
  7. package/dist/adapters/anthropic.mjs.map +1 -0
  8. package/dist/adapters/gemini.cjs +83 -20
  9. package/dist/adapters/gemini.cjs.map +1 -1
  10. package/dist/adapters/gemini.d.cts +52 -14
  11. package/dist/adapters/gemini.d.mts +52 -0
  12. package/dist/adapters/gemini.mjs +76 -0
  13. package/dist/adapters/gemini.mjs.map +1 -0
  14. package/dist/adapters/grok.cjs +44 -15
  15. package/dist/adapters/grok.cjs.map +1 -1
  16. package/dist/adapters/grok.d.cts +26 -9
  17. package/dist/adapters/grok.d.mts +26 -0
  18. package/dist/adapters/grok.mjs +40 -0
  19. package/dist/adapters/grok.mjs.map +1 -0
  20. package/dist/adapters/openai.cjs +76 -27
  21. package/dist/adapters/openai.cjs.map +1 -1
  22. package/dist/adapters/openai.d.cts +45 -17
  23. package/dist/adapters/openai.d.mts +45 -0
  24. package/dist/adapters/openai.mjs +66 -0
  25. package/dist/adapters/openai.mjs.map +1 -0
  26. package/dist/adapters/openrouter.cjs +83 -11
  27. package/dist/adapters/openrouter.cjs.map +1 -1
  28. package/dist/adapters/openrouter.d.cts +39 -7
  29. package/dist/adapters/openrouter.d.mts +39 -0
  30. package/dist/adapters/openrouter.mjs +81 -0
  31. package/dist/adapters/openrouter.mjs.map +1 -0
  32. package/dist/adapters/workers-ai-image.cjs +97 -11
  33. package/dist/adapters/workers-ai-image.cjs.map +1 -1
  34. package/dist/adapters/workers-ai-image.d.cts +41 -3
  35. package/dist/adapters/workers-ai-image.d.mts +41 -0
  36. package/dist/adapters/workers-ai-image.mjs +96 -0
  37. package/dist/adapters/workers-ai-image.mjs.map +1 -0
  38. package/dist/adapters/workers-ai-summarize.cjs +86 -10
  39. package/dist/adapters/workers-ai-summarize.cjs.map +1 -1
  40. package/dist/adapters/workers-ai-summarize.d.cts +42 -3
  41. package/dist/adapters/workers-ai-summarize.d.mts +42 -0
  42. package/dist/adapters/workers-ai-summarize.mjs +85 -0
  43. package/dist/adapters/workers-ai-summarize.mjs.map +1 -0
  44. package/dist/adapters/workers-ai-transcription.cjs +200 -11
  45. package/dist/adapters/workers-ai-transcription.cjs.map +1 -1
  46. package/dist/adapters/workers-ai-transcription.d.cts +74 -3
  47. package/dist/adapters/workers-ai-transcription.d.mts +74 -0
  48. package/dist/adapters/workers-ai-transcription.mjs +199 -0
  49. package/dist/adapters/workers-ai-transcription.mjs.map +1 -0
  50. package/dist/adapters/workers-ai-tts.cjs +112 -11
  51. package/dist/adapters/workers-ai-tts.cjs.map +1 -1
  52. package/dist/adapters/workers-ai-tts.d.cts +54 -3
  53. package/dist/adapters/workers-ai-tts.d.mts +54 -0
  54. package/dist/adapters/workers-ai-tts.mjs +111 -0
  55. package/dist/adapters/workers-ai-tts.mjs.map +1 -0
  56. package/dist/adapters/workers-ai.cjs +4 -11
  57. package/dist/adapters/workers-ai.d.cts +45 -3
  58. package/dist/adapters/workers-ai.d.mts +45 -0
  59. package/dist/adapters/workers-ai.mjs +481 -0
  60. package/dist/adapters/workers-ai.mjs.map +1 -0
  61. package/dist/binary-C9FAYwZj.cjs +70 -0
  62. package/dist/binary-C9FAYwZj.cjs.map +1 -0
  63. package/dist/binary-p4H_N_3M.mjs +59 -0
  64. package/dist/binary-p4H_N_3M.mjs.map +1 -0
  65. package/dist/create-fetcher-6p6heb85.d.mts +93 -0
  66. package/dist/create-fetcher-By-hTiT9.cjs +312 -0
  67. package/dist/create-fetcher-By-hTiT9.cjs.map +1 -0
  68. package/dist/create-fetcher-CeUOJgrh.mjs +283 -0
  69. package/dist/create-fetcher-CeUOJgrh.mjs.map +1 -0
  70. package/dist/create-fetcher-vAQ8WW-p.d.cts +93 -0
  71. package/dist/defineProperty-CbyrzcbA.mjs +39 -0
  72. package/dist/defineProperty-DQoAg20E.cjs +44 -0
  73. package/dist/index.cjs +50 -97
  74. package/dist/index.d.cts +12 -64
  75. package/dist/index.d.mts +12 -0
  76. package/dist/index.mjs +11 -0
  77. package/dist/workers-ai-BOZ5iyhY.cjs +521 -0
  78. package/dist/workers-ai-BOZ5iyhY.cjs.map +1 -0
  79. package/dist/workers-ai-rest-CkNCtBwv.cjs +85 -0
  80. package/dist/workers-ai-rest-CkNCtBwv.cjs.map +1 -0
  81. package/dist/workers-ai-rest-GKy2r7eG.mjs +74 -0
  82. package/dist/workers-ai-rest-GKy2r7eG.mjs.map +1 -0
  83. package/package.json +73 -40
  84. package/dist/_tsup-dts-rollup.d.cts +0 -837
  85. package/dist/_tsup-dts-rollup.d.ts +0 -837
  86. package/dist/adapters/anthropic.d.ts +0 -5
  87. package/dist/adapters/anthropic.js +0 -13
  88. package/dist/adapters/anthropic.js.map +0 -1
  89. package/dist/adapters/gemini.d.ts +0 -14
  90. package/dist/adapters/gemini.js +0 -22
  91. package/dist/adapters/gemini.js.map +0 -1
  92. package/dist/adapters/grok.d.ts +0 -9
  93. package/dist/adapters/grok.js +0 -17
  94. package/dist/adapters/grok.js.map +0 -1
  95. package/dist/adapters/openai.d.ts +0 -17
  96. package/dist/adapters/openai.js +0 -29
  97. package/dist/adapters/openai.js.map +0 -1
  98. package/dist/adapters/openrouter.d.ts +0 -7
  99. package/dist/adapters/openrouter.js +0 -13
  100. package/dist/adapters/openrouter.js.map +0 -1
  101. package/dist/adapters/workers-ai-image.d.ts +0 -3
  102. package/dist/adapters/workers-ai-image.js +0 -13
  103. package/dist/adapters/workers-ai-image.js.map +0 -1
  104. package/dist/adapters/workers-ai-summarize.d.ts +0 -3
  105. package/dist/adapters/workers-ai-summarize.js +0 -12
  106. package/dist/adapters/workers-ai-summarize.js.map +0 -1
  107. package/dist/adapters/workers-ai-transcription.d.ts +0 -3
  108. package/dist/adapters/workers-ai-transcription.js +0 -13
  109. package/dist/adapters/workers-ai-transcription.js.map +0 -1
  110. package/dist/adapters/workers-ai-tts.d.ts +0 -3
  111. package/dist/adapters/workers-ai-tts.js +0 -13
  112. package/dist/adapters/workers-ai-tts.js.map +0 -1
  113. package/dist/adapters/workers-ai.cjs.map +0 -1
  114. package/dist/adapters/workers-ai.d.ts +0 -3
  115. package/dist/adapters/workers-ai.js +0 -11
  116. package/dist/adapters/workers-ai.js.map +0 -1
  117. package/dist/chunk-2VII5BK2.js +0 -42
  118. package/dist/chunk-2VII5BK2.js.map +0 -1
  119. package/dist/chunk-3VQDXJLW.cjs +0 -46
  120. package/dist/chunk-3VQDXJLW.cjs.map +0 -1
  121. package/dist/chunk-3WK5ZD57.js +0 -57
  122. package/dist/chunk-3WK5ZD57.js.map +0 -1
  123. package/dist/chunk-4DE2IREA.cjs +0 -8
  124. package/dist/chunk-4DE2IREA.cjs.map +0 -1
  125. package/dist/chunk-53A2QIXV.js +0 -98
  126. package/dist/chunk-53A2QIXV.js.map +0 -1
  127. package/dist/chunk-6MEX2ZSM.cjs +0 -48
  128. package/dist/chunk-6MEX2ZSM.cjs.map +0 -1
  129. package/dist/chunk-7HSUHP63.cjs +0 -42
  130. package/dist/chunk-7HSUHP63.cjs.map +0 -1
  131. package/dist/chunk-AIAJANLC.js +0 -327
  132. package/dist/chunk-AIAJANLC.js.map +0 -1
  133. package/dist/chunk-CB3PSZY2.cjs +0 -218
  134. package/dist/chunk-CB3PSZY2.cjs.map +0 -1
  135. package/dist/chunk-FQE2UKUU.cjs +0 -57
  136. package/dist/chunk-FQE2UKUU.cjs.map +0 -1
  137. package/dist/chunk-GL3HHR4M.js +0 -523
  138. package/dist/chunk-GL3HHR4M.js.map +0 -1
  139. package/dist/chunk-J5DSSZTO.js +0 -71
  140. package/dist/chunk-J5DSSZTO.js.map +0 -1
  141. package/dist/chunk-JRFPCMSE.js +0 -57
  142. package/dist/chunk-JRFPCMSE.js.map +0 -1
  143. package/dist/chunk-KWYOUT2Y.js +0 -111
  144. package/dist/chunk-KWYOUT2Y.js.map +0 -1
  145. package/dist/chunk-MJ45L566.cjs +0 -57
  146. package/dist/chunk-MJ45L566.cjs.map +0 -1
  147. package/dist/chunk-N6U27RQW.cjs +0 -111
  148. package/dist/chunk-N6U27RQW.cjs.map +0 -1
  149. package/dist/chunk-NH3FF5JC.js +0 -86
  150. package/dist/chunk-NH3FF5JC.js.map +0 -1
  151. package/dist/chunk-OFUYHQZE.cjs +0 -31
  152. package/dist/chunk-OFUYHQZE.cjs.map +0 -1
  153. package/dist/chunk-OUEAAP25.cjs +0 -523
  154. package/dist/chunk-OUEAAP25.cjs.map +0 -1
  155. package/dist/chunk-Q33U5I5S.js +0 -31
  156. package/dist/chunk-Q33U5I5S.js.map +0 -1
  157. package/dist/chunk-V4LKHWJA.cjs +0 -71
  158. package/dist/chunk-V4LKHWJA.cjs.map +0 -1
  159. package/dist/chunk-V6TY7KAL.js +0 -8
  160. package/dist/chunk-V6TY7KAL.js.map +0 -1
  161. package/dist/chunk-WBTQKWFN.cjs +0 -327
  162. package/dist/chunk-WBTQKWFN.cjs.map +0 -1
  163. package/dist/chunk-XU7YEPML.js +0 -46
  164. package/dist/chunk-XU7YEPML.js.map +0 -1
  165. package/dist/chunk-YCGNMVQZ.js +0 -218
  166. package/dist/chunk-YCGNMVQZ.js.map +0 -1
  167. package/dist/chunk-Z5ZC5ZOQ.js +0 -48
  168. package/dist/chunk-Z5ZC5ZOQ.js.map +0 -1
  169. package/dist/chunk-ZFB72L57.cjs +0 -86
  170. package/dist/chunk-ZFB72L57.cjs.map +0 -1
  171. package/dist/chunk-ZGLSJM26.cjs +0 -98
  172. package/dist/chunk-ZGLSJM26.cjs.map +0 -1
  173. package/dist/index.cjs.map +0 -1
  174. package/dist/index.d.ts +0 -64
  175. package/dist/index.js +0 -97
  176. package/dist/index.js.map +0 -1
@@ -0,0 +1,85 @@
1
+ //#region src/utils/workers-ai-rest.ts
2
+ /**
3
+ * Workers AI REST API base URL.
4
+ * All model endpoints follow the pattern: `${BASE_URL}/${accountId}/ai/run/${model}`
5
+ */
6
+ const WORKERS_AI_REST_BASE = "https://api.cloudflare.com/client/v4/accounts";
7
+ /**
8
+ * Make a REST API call to Workers AI.
9
+ *
10
+ * Handles the common pattern shared by all Workers AI adapters:
11
+ * - Build the URL from account ID and model name
12
+ * - Set Authorization and Content-Type headers
13
+ * - Check response.ok and throw a descriptive error on failure
14
+ *
15
+ * @param config Credentials config with accountId and apiKey
16
+ * @param model Workers AI model name (e.g. "@cf/stabilityai/stable-diffusion-xl-base-1.0")
17
+ * @param body JSON request body
18
+ * @param options Optional settings:
19
+ * - `label` — human-readable label for error messages (default: "Workers AI")
20
+ * - `signal` — AbortSignal for request cancellation / timeout
21
+ * @returns The raw Response object — caller is responsible for parsing
22
+ */
23
+ async function workersAiRestFetch(config, model, body, options) {
24
+ const response = await fetch(`${WORKERS_AI_REST_BASE}/${config.accountId}/ai/run/${model}`, {
25
+ method: "POST",
26
+ headers: {
27
+ Authorization: `Bearer ${config.apiKey}`,
28
+ "Content-Type": "application/json"
29
+ },
30
+ body: JSON.stringify(body),
31
+ signal: options?.signal
32
+ });
33
+ if (!response.ok) {
34
+ const errorText = await response.text();
35
+ const label = options?.label ?? "Workers AI";
36
+ throw new Error(`${label} request failed (${response.status}): ${errorText}`);
37
+ }
38
+ return response;
39
+ }
40
+ /**
41
+ * Make a binary REST API call to Workers AI.
42
+ *
43
+ * Some models (e.g. `@cf/deepgram/nova-3`) require raw binary audio with an
44
+ * appropriate `Content-Type` header instead of JSON. This function sends the
45
+ * audio bytes directly as the request body.
46
+ *
47
+ * @param config Credentials config with accountId and apiKey
48
+ * @param model Workers AI model name
49
+ * @param audioBytes Raw audio bytes
50
+ * @param contentType MIME type of the audio (e.g. "audio/wav")
51
+ * @param options Optional settings
52
+ * @returns The raw Response object
53
+ */
54
+ async function workersAiRestFetchBinary(config, model, audioBytes, contentType, options) {
55
+ const response = await fetch(`${WORKERS_AI_REST_BASE}/${config.accountId}/ai/run/${model}`, {
56
+ method: "POST",
57
+ headers: {
58
+ Authorization: `Bearer ${config.apiKey}`,
59
+ "Content-Type": contentType
60
+ },
61
+ body: audioBytes,
62
+ signal: options?.signal
63
+ });
64
+ if (!response.ok) {
65
+ const errorText = await response.text();
66
+ const label = options?.label ?? "Workers AI";
67
+ throw new Error(`${label} request failed (${response.status}): ${errorText}`);
68
+ }
69
+ return response;
70
+ }
71
+ //#endregion
72
+ Object.defineProperty(exports, "workersAiRestFetch", {
73
+ enumerable: true,
74
+ get: function() {
75
+ return workersAiRestFetch;
76
+ }
77
+ });
78
+ Object.defineProperty(exports, "workersAiRestFetchBinary", {
79
+ enumerable: true,
80
+ get: function() {
81
+ return workersAiRestFetchBinary;
82
+ }
83
+ });
84
+
85
+ //# sourceMappingURL=workers-ai-rest-CkNCtBwv.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workers-ai-rest-CkNCtBwv.cjs","names":[],"sources":["../src/utils/workers-ai-rest.ts"],"sourcesContent":["import type { WorkersAiDirectCredentialsConfig } from \"./create-fetcher\";\n\n/**\n * Workers AI REST API base URL.\n * All model endpoints follow the pattern: `${BASE_URL}/${accountId}/ai/run/${model}`\n */\nconst WORKERS_AI_REST_BASE = \"https://api.cloudflare.com/client/v4/accounts\";\n\n/**\n * Make a REST API call to Workers AI.\n *\n * Handles the common pattern shared by all Workers AI adapters:\n * - Build the URL from account ID and model name\n * - Set Authorization and Content-Type headers\n * - Check response.ok and throw a descriptive error on failure\n *\n * @param config Credentials config with accountId and apiKey\n * @param model Workers AI model name (e.g. \"@cf/stabilityai/stable-diffusion-xl-base-1.0\")\n * @param body JSON request body\n * @param options Optional settings:\n * - `label` — human-readable label for error messages (default: \"Workers AI\")\n * - `signal` — AbortSignal for request cancellation / timeout\n * @returns The raw Response object — caller is responsible for parsing\n */\nexport async function workersAiRestFetch(\n\tconfig: WorkersAiDirectCredentialsConfig,\n\tmodel: string,\n\tbody: Record<string, unknown>,\n\toptions?: { label?: string; signal?: AbortSignal },\n): Promise<Response> {\n\tconst response = await fetch(`${WORKERS_AI_REST_BASE}/${config.accountId}/ai/run/${model}`, {\n\t\tmethod: \"POST\",\n\t\theaders: {\n\t\t\tAuthorization: `Bearer ${config.apiKey}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t},\n\t\tbody: JSON.stringify(body),\n\t\tsignal: options?.signal,\n\t});\n\n\tif (!response.ok) {\n\t\tconst errorText = await response.text();\n\t\tconst label = options?.label ?? \"Workers AI\";\n\t\tthrow new Error(`${label} request failed (${response.status}): ${errorText}`);\n\t}\n\n\treturn response;\n}\n\n/**\n * Make a binary REST API call to Workers AI.\n *\n * Some models (e.g. `@cf/deepgram/nova-3`) require raw binary audio with an\n * appropriate `Content-Type` header instead of JSON. This function sends the\n * audio bytes directly as the request body.\n *\n * @param config Credentials config with accountId and apiKey\n * @param model Workers AI model name\n * @param audioBytes Raw audio bytes\n * @param contentType MIME type of the audio (e.g. \"audio/wav\")\n * @param options Optional settings\n * @returns The raw Response object\n */\nexport async function workersAiRestFetchBinary(\n\tconfig: WorkersAiDirectCredentialsConfig,\n\tmodel: string,\n\taudioBytes: Uint8Array,\n\tcontentType: string,\n\toptions?: { label?: string; signal?: AbortSignal },\n): Promise<Response> {\n\tconst response = await fetch(`${WORKERS_AI_REST_BASE}/${config.accountId}/ai/run/${model}`, {\n\t\tmethod: \"POST\",\n\t\theaders: {\n\t\t\tAuthorization: `Bearer ${config.apiKey}`,\n\t\t\t\"Content-Type\": contentType,\n\t\t},\n\t\tbody: audioBytes,\n\t\tsignal: options?.signal,\n\t});\n\n\tif (!response.ok) {\n\t\tconst errorText = await response.text();\n\t\tconst label = options?.label ?? \"Workers AI\";\n\t\tthrow new Error(`${label} request failed (${response.status}): ${errorText}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":";;;;;AAMA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;AAkB7B,eAAsB,mBACrB,QACA,OACA,MACA,SACoB;CACpB,MAAM,WAAW,MAAM,MAAM,GAAG,qBAAqB,GAAG,OAAO,UAAU,UAAU,SAAS;EAC3F,QAAQ;EACR,SAAS;GACR,eAAe,UAAU,OAAO;GAChC,gBAAgB;GAChB;EACD,MAAM,KAAK,UAAU,KAAK;EAC1B,QAAQ,SAAS;EACjB,CAAC;AAEF,KAAI,CAAC,SAAS,IAAI;EACjB,MAAM,YAAY,MAAM,SAAS,MAAM;EACvC,MAAM,QAAQ,SAAS,SAAS;AAChC,QAAM,IAAI,MAAM,GAAG,MAAM,mBAAmB,SAAS,OAAO,KAAK,YAAY;;AAG9E,QAAO;;;;;;;;;;;;;;;;AAiBR,eAAsB,yBACrB,QACA,OACA,YACA,aACA,SACoB;CACpB,MAAM,WAAW,MAAM,MAAM,GAAG,qBAAqB,GAAG,OAAO,UAAU,UAAU,SAAS;EAC3F,QAAQ;EACR,SAAS;GACR,eAAe,UAAU,OAAO;GAChC,gBAAgB;GAChB;EACD,MAAM;EACN,QAAQ,SAAS;EACjB,CAAC;AAEF,KAAI,CAAC,SAAS,IAAI;EACjB,MAAM,YAAY,MAAM,SAAS,MAAM;EACvC,MAAM,QAAQ,SAAS,SAAS;AAChC,QAAM,IAAI,MAAM,GAAG,MAAM,mBAAmB,SAAS,OAAO,KAAK,YAAY;;AAG9E,QAAO"}
@@ -0,0 +1,74 @@
1
+ //#region src/utils/workers-ai-rest.ts
2
+ /**
3
+ * Workers AI REST API base URL.
4
+ * All model endpoints follow the pattern: `${BASE_URL}/${accountId}/ai/run/${model}`
5
+ */
6
+ const WORKERS_AI_REST_BASE = "https://api.cloudflare.com/client/v4/accounts";
7
+ /**
8
+ * Make a REST API call to Workers AI.
9
+ *
10
+ * Handles the common pattern shared by all Workers AI adapters:
11
+ * - Build the URL from account ID and model name
12
+ * - Set Authorization and Content-Type headers
13
+ * - Check response.ok and throw a descriptive error on failure
14
+ *
15
+ * @param config Credentials config with accountId and apiKey
16
+ * @param model Workers AI model name (e.g. "@cf/stabilityai/stable-diffusion-xl-base-1.0")
17
+ * @param body JSON request body
18
+ * @param options Optional settings:
19
+ * - `label` — human-readable label for error messages (default: "Workers AI")
20
+ * - `signal` — AbortSignal for request cancellation / timeout
21
+ * @returns The raw Response object — caller is responsible for parsing
22
+ */
23
+ async function workersAiRestFetch(config, model, body, options) {
24
+ const response = await fetch(`${WORKERS_AI_REST_BASE}/${config.accountId}/ai/run/${model}`, {
25
+ method: "POST",
26
+ headers: {
27
+ Authorization: `Bearer ${config.apiKey}`,
28
+ "Content-Type": "application/json"
29
+ },
30
+ body: JSON.stringify(body),
31
+ signal: options?.signal
32
+ });
33
+ if (!response.ok) {
34
+ const errorText = await response.text();
35
+ const label = options?.label ?? "Workers AI";
36
+ throw new Error(`${label} request failed (${response.status}): ${errorText}`);
37
+ }
38
+ return response;
39
+ }
40
+ /**
41
+ * Make a binary REST API call to Workers AI.
42
+ *
43
+ * Some models (e.g. `@cf/deepgram/nova-3`) require raw binary audio with an
44
+ * appropriate `Content-Type` header instead of JSON. This function sends the
45
+ * audio bytes directly as the request body.
46
+ *
47
+ * @param config Credentials config with accountId and apiKey
48
+ * @param model Workers AI model name
49
+ * @param audioBytes Raw audio bytes
50
+ * @param contentType MIME type of the audio (e.g. "audio/wav")
51
+ * @param options Optional settings
52
+ * @returns The raw Response object
53
+ */
54
+ async function workersAiRestFetchBinary(config, model, audioBytes, contentType, options) {
55
+ const response = await fetch(`${WORKERS_AI_REST_BASE}/${config.accountId}/ai/run/${model}`, {
56
+ method: "POST",
57
+ headers: {
58
+ Authorization: `Bearer ${config.apiKey}`,
59
+ "Content-Type": contentType
60
+ },
61
+ body: audioBytes,
62
+ signal: options?.signal
63
+ });
64
+ if (!response.ok) {
65
+ const errorText = await response.text();
66
+ const label = options?.label ?? "Workers AI";
67
+ throw new Error(`${label} request failed (${response.status}): ${errorText}`);
68
+ }
69
+ return response;
70
+ }
71
+ //#endregion
72
+ export { workersAiRestFetchBinary as n, workersAiRestFetch as t };
73
+
74
+ //# sourceMappingURL=workers-ai-rest-GKy2r7eG.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workers-ai-rest-GKy2r7eG.mjs","names":[],"sources":["../src/utils/workers-ai-rest.ts"],"sourcesContent":["import type { WorkersAiDirectCredentialsConfig } from \"./create-fetcher\";\n\n/**\n * Workers AI REST API base URL.\n * All model endpoints follow the pattern: `${BASE_URL}/${accountId}/ai/run/${model}`\n */\nconst WORKERS_AI_REST_BASE = \"https://api.cloudflare.com/client/v4/accounts\";\n\n/**\n * Make a REST API call to Workers AI.\n *\n * Handles the common pattern shared by all Workers AI adapters:\n * - Build the URL from account ID and model name\n * - Set Authorization and Content-Type headers\n * - Check response.ok and throw a descriptive error on failure\n *\n * @param config Credentials config with accountId and apiKey\n * @param model Workers AI model name (e.g. \"@cf/stabilityai/stable-diffusion-xl-base-1.0\")\n * @param body JSON request body\n * @param options Optional settings:\n * - `label` — human-readable label for error messages (default: \"Workers AI\")\n * - `signal` — AbortSignal for request cancellation / timeout\n * @returns The raw Response object — caller is responsible for parsing\n */\nexport async function workersAiRestFetch(\n\tconfig: WorkersAiDirectCredentialsConfig,\n\tmodel: string,\n\tbody: Record<string, unknown>,\n\toptions?: { label?: string; signal?: AbortSignal },\n): Promise<Response> {\n\tconst response = await fetch(`${WORKERS_AI_REST_BASE}/${config.accountId}/ai/run/${model}`, {\n\t\tmethod: \"POST\",\n\t\theaders: {\n\t\t\tAuthorization: `Bearer ${config.apiKey}`,\n\t\t\t\"Content-Type\": \"application/json\",\n\t\t},\n\t\tbody: JSON.stringify(body),\n\t\tsignal: options?.signal,\n\t});\n\n\tif (!response.ok) {\n\t\tconst errorText = await response.text();\n\t\tconst label = options?.label ?? \"Workers AI\";\n\t\tthrow new Error(`${label} request failed (${response.status}): ${errorText}`);\n\t}\n\n\treturn response;\n}\n\n/**\n * Make a binary REST API call to Workers AI.\n *\n * Some models (e.g. `@cf/deepgram/nova-3`) require raw binary audio with an\n * appropriate `Content-Type` header instead of JSON. This function sends the\n * audio bytes directly as the request body.\n *\n * @param config Credentials config with accountId and apiKey\n * @param model Workers AI model name\n * @param audioBytes Raw audio bytes\n * @param contentType MIME type of the audio (e.g. \"audio/wav\")\n * @param options Optional settings\n * @returns The raw Response object\n */\nexport async function workersAiRestFetchBinary(\n\tconfig: WorkersAiDirectCredentialsConfig,\n\tmodel: string,\n\taudioBytes: Uint8Array,\n\tcontentType: string,\n\toptions?: { label?: string; signal?: AbortSignal },\n): Promise<Response> {\n\tconst response = await fetch(`${WORKERS_AI_REST_BASE}/${config.accountId}/ai/run/${model}`, {\n\t\tmethod: \"POST\",\n\t\theaders: {\n\t\t\tAuthorization: `Bearer ${config.apiKey}`,\n\t\t\t\"Content-Type\": contentType,\n\t\t},\n\t\tbody: audioBytes,\n\t\tsignal: options?.signal,\n\t});\n\n\tif (!response.ok) {\n\t\tconst errorText = await response.text();\n\t\tconst label = options?.label ?? \"Workers AI\";\n\t\tthrow new Error(`${label} request failed (${response.status}): ${errorText}`);\n\t}\n\n\treturn response;\n}\n"],"mappings":";;;;;AAMA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;AAkB7B,eAAsB,mBACrB,QACA,OACA,MACA,SACoB;CACpB,MAAM,WAAW,MAAM,MAAM,GAAG,qBAAqB,GAAG,OAAO,UAAU,UAAU,SAAS;EAC3F,QAAQ;EACR,SAAS;GACR,eAAe,UAAU,OAAO;GAChC,gBAAgB;GAChB;EACD,MAAM,KAAK,UAAU,KAAK;EAC1B,QAAQ,SAAS;EACjB,CAAC;AAEF,KAAI,CAAC,SAAS,IAAI;EACjB,MAAM,YAAY,MAAM,SAAS,MAAM;EACvC,MAAM,QAAQ,SAAS,SAAS;AAChC,QAAM,IAAI,MAAM,GAAG,MAAM,mBAAmB,SAAS,OAAO,KAAK,YAAY;;AAG9E,QAAO;;;;;;;;;;;;;;;;AAiBR,eAAsB,yBACrB,QACA,OACA,YACA,aACA,SACoB;CACpB,MAAM,WAAW,MAAM,MAAM,GAAG,qBAAqB,GAAG,OAAO,UAAU,UAAU,SAAS;EAC3F,QAAQ;EACR,SAAS;GACR,eAAe,UAAU,OAAO;GAChC,gBAAgB;GAChB;EACD,MAAM;EACN,QAAQ,SAAS;EACjB,CAAC;AAEF,KAAI,CAAC,SAAS,IAAI;EACjB,MAAM,YAAY,MAAM,SAAS,MAAM;EACvC,MAAM,QAAQ,SAAS,SAAS;AAChC,QAAM,IAAI,MAAM,GAAG,MAAM,mBAAmB,SAAS,OAAO,KAAK,YAAY;;AAG9E,QAAO"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cloudflare/tanstack-ai",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
4
4
  "description": "Use TanStack AI with Cloudflare Workers AI and AI Gateway",
5
5
  "keywords": [
6
6
  "ai",
@@ -25,62 +25,95 @@
25
25
  "README.md"
26
26
  ],
27
27
  "type": "module",
28
- "main": "./dist/index.js",
29
- "types": "./dist/index.d.ts",
28
+ "main": "./dist/index.mjs",
29
+ "types": "./dist/index.d.mts",
30
30
  "exports": {
31
31
  ".": {
32
- "types": "./dist/index.d.ts",
33
- "import": "./dist/index.js",
32
+ "types": {
33
+ "import": "./dist/index.d.mts",
34
+ "require": "./dist/index.d.cts"
35
+ },
36
+ "import": "./dist/index.mjs",
34
37
  "require": "./dist/index.cjs"
35
38
  },
36
39
  "./adapters/openai": {
37
- "types": "./dist/adapters/openai.d.ts",
38
- "import": "./dist/adapters/openai.js",
40
+ "types": {
41
+ "import": "./dist/adapters/openai.d.mts",
42
+ "require": "./dist/adapters/openai.d.cts"
43
+ },
44
+ "import": "./dist/adapters/openai.mjs",
39
45
  "require": "./dist/adapters/openai.cjs"
40
46
  },
41
47
  "./adapters/anthropic": {
42
- "types": "./dist/adapters/anthropic.d.ts",
43
- "import": "./dist/adapters/anthropic.js",
48
+ "types": {
49
+ "import": "./dist/adapters/anthropic.d.mts",
50
+ "require": "./dist/adapters/anthropic.d.cts"
51
+ },
52
+ "import": "./dist/adapters/anthropic.mjs",
44
53
  "require": "./dist/adapters/anthropic.cjs"
45
54
  },
46
55
  "./adapters/gemini": {
47
- "types": "./dist/adapters/gemini.d.ts",
48
- "import": "./dist/adapters/gemini.js",
56
+ "types": {
57
+ "import": "./dist/adapters/gemini.d.mts",
58
+ "require": "./dist/adapters/gemini.d.cts"
59
+ },
60
+ "import": "./dist/adapters/gemini.mjs",
49
61
  "require": "./dist/adapters/gemini.cjs"
50
62
  },
51
63
  "./adapters/grok": {
52
- "types": "./dist/adapters/grok.d.ts",
53
- "import": "./dist/adapters/grok.js",
64
+ "types": {
65
+ "import": "./dist/adapters/grok.d.mts",
66
+ "require": "./dist/adapters/grok.d.cts"
67
+ },
68
+ "import": "./dist/adapters/grok.mjs",
54
69
  "require": "./dist/adapters/grok.cjs"
55
70
  },
56
71
  "./adapters/openrouter": {
57
- "types": "./dist/adapters/openrouter.d.ts",
58
- "import": "./dist/adapters/openrouter.js",
72
+ "types": {
73
+ "import": "./dist/adapters/openrouter.d.mts",
74
+ "require": "./dist/adapters/openrouter.d.cts"
75
+ },
76
+ "import": "./dist/adapters/openrouter.mjs",
59
77
  "require": "./dist/adapters/openrouter.cjs"
60
78
  },
61
79
  "./adapters/workers-ai": {
62
- "types": "./dist/adapters/workers-ai.d.ts",
63
- "import": "./dist/adapters/workers-ai.js",
80
+ "types": {
81
+ "import": "./dist/adapters/workers-ai.d.mts",
82
+ "require": "./dist/adapters/workers-ai.d.cts"
83
+ },
84
+ "import": "./dist/adapters/workers-ai.mjs",
64
85
  "require": "./dist/adapters/workers-ai.cjs"
65
86
  },
66
87
  "./adapters/workers-ai-image": {
67
- "types": "./dist/adapters/workers-ai-image.d.ts",
68
- "import": "./dist/adapters/workers-ai-image.js",
88
+ "types": {
89
+ "import": "./dist/adapters/workers-ai-image.d.mts",
90
+ "require": "./dist/adapters/workers-ai-image.d.cts"
91
+ },
92
+ "import": "./dist/adapters/workers-ai-image.mjs",
69
93
  "require": "./dist/adapters/workers-ai-image.cjs"
70
94
  },
71
95
  "./adapters/workers-ai-transcription": {
72
- "types": "./dist/adapters/workers-ai-transcription.d.ts",
73
- "import": "./dist/adapters/workers-ai-transcription.js",
96
+ "types": {
97
+ "import": "./dist/adapters/workers-ai-transcription.d.mts",
98
+ "require": "./dist/adapters/workers-ai-transcription.d.cts"
99
+ },
100
+ "import": "./dist/adapters/workers-ai-transcription.mjs",
74
101
  "require": "./dist/adapters/workers-ai-transcription.cjs"
75
102
  },
76
103
  "./adapters/workers-ai-tts": {
77
- "types": "./dist/adapters/workers-ai-tts.d.ts",
78
- "import": "./dist/adapters/workers-ai-tts.js",
104
+ "types": {
105
+ "import": "./dist/adapters/workers-ai-tts.d.mts",
106
+ "require": "./dist/adapters/workers-ai-tts.d.cts"
107
+ },
108
+ "import": "./dist/adapters/workers-ai-tts.mjs",
79
109
  "require": "./dist/adapters/workers-ai-tts.cjs"
80
110
  },
81
111
  "./adapters/workers-ai-summarize": {
82
- "types": "./dist/adapters/workers-ai-summarize.d.ts",
83
- "import": "./dist/adapters/workers-ai-summarize.js",
112
+ "types": {
113
+ "import": "./dist/adapters/workers-ai-summarize.d.mts",
114
+ "require": "./dist/adapters/workers-ai-summarize.d.cts"
115
+ },
116
+ "import": "./dist/adapters/workers-ai-summarize.mjs",
84
117
  "require": "./dist/adapters/workers-ai-summarize.cjs"
85
118
  }
86
119
  },
@@ -88,29 +121,29 @@
88
121
  "access": "public"
89
122
  },
90
123
  "dependencies": {
91
- "openai": "^6.22.0"
124
+ "openai": "^6.33.0"
92
125
  },
93
126
  "devDependencies": {
94
- "@cloudflare/workers-types": "^4.20260227.0",
95
- "@microsoft/api-extractor": "^7.57.1",
96
- "@tanstack/ai": "^0.5.1",
97
- "dotenv": "^17.3.1"
127
+ "@cloudflare/workers-types": "^4.20260402.1",
128
+ "@microsoft/api-extractor": "^7.58.0",
129
+ "@tanstack/ai": "^0.9.2",
130
+ "dotenv": "^17.4.0"
98
131
  },
99
132
  "peerDependencies": {
100
- "@tanstack/ai": "^0.5.0"
133
+ "@tanstack/ai": "^0.8.0"
101
134
  },
102
135
  "optionalDependencies": {
103
- "@anthropic-ai/sdk": "^0.78.0",
104
- "@google/genai": "^1.42.0",
105
- "@openrouter/sdk": "^0.8.0",
106
- "@tanstack/ai-anthropic": "^0.5.0",
107
- "@tanstack/ai-gemini": "^0.5.0",
108
- "@tanstack/ai-grok": "^0.5.0",
109
- "@tanstack/ai-openai": "^0.5.0",
110
- "@tanstack/ai-openrouter": "^0.5.1"
136
+ "@anthropic-ai/sdk": "^0.82.0",
137
+ "@google/genai": "^1.48.0",
138
+ "@openrouter/sdk": "^0.10.2",
139
+ "@tanstack/ai-anthropic": "^0.7.1",
140
+ "@tanstack/ai-gemini": "^0.8.4",
141
+ "@tanstack/ai-grok": "^0.6.3",
142
+ "@tanstack/ai-openai": "^0.7.2",
143
+ "@tanstack/ai-openrouter": "^0.7.0"
111
144
  },
112
145
  "scripts": {
113
- "build": "rm -rf dist && tsup --config tsup.config.ts",
146
+ "build": "rm -rf dist && tsdown --config tsdown.config.ts",
114
147
  "format": "biome format --write",
115
148
  "type-check": "tsc --noEmit",
116
149
  "test": "vitest --run",