devflare 0.0.0 → 1.0.0-next.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 (199) hide show
  1. package/LLM.md +976 -0
  2. package/README.md +737 -1
  3. package/bin/devflare.js +14 -0
  4. package/dist/account-rvrj687w.js +397 -0
  5. package/dist/ai-dx4fr9jh.js +107 -0
  6. package/dist/bridge/client.d.ts +82 -0
  7. package/dist/bridge/client.d.ts.map +1 -0
  8. package/dist/bridge/index.d.ts +7 -0
  9. package/dist/bridge/index.d.ts.map +1 -0
  10. package/dist/bridge/miniflare.d.ts +70 -0
  11. package/dist/bridge/miniflare.d.ts.map +1 -0
  12. package/dist/bridge/protocol.d.ts +146 -0
  13. package/dist/bridge/protocol.d.ts.map +1 -0
  14. package/dist/bridge/proxy.d.ts +49 -0
  15. package/dist/bridge/proxy.d.ts.map +1 -0
  16. package/dist/bridge/serialization.d.ts +83 -0
  17. package/dist/bridge/serialization.d.ts.map +1 -0
  18. package/dist/bridge/server.d.ts +8 -0
  19. package/dist/bridge/server.d.ts.map +1 -0
  20. package/dist/browser-shim/binding-worker.d.ts +7 -0
  21. package/dist/browser-shim/binding-worker.d.ts.map +1 -0
  22. package/dist/browser-shim/handler.d.ts +21 -0
  23. package/dist/browser-shim/handler.d.ts.map +1 -0
  24. package/dist/browser-shim/index.d.ts +3 -0
  25. package/dist/browser-shim/index.d.ts.map +1 -0
  26. package/dist/browser-shim/server.d.ts +25 -0
  27. package/dist/browser-shim/server.d.ts.map +1 -0
  28. package/dist/browser-shim/worker.d.ts +14 -0
  29. package/dist/browser-shim/worker.d.ts.map +1 -0
  30. package/dist/build-mnf6v8gd.js +53 -0
  31. package/dist/bundler/do-bundler.d.ts +42 -0
  32. package/dist/bundler/do-bundler.d.ts.map +1 -0
  33. package/dist/bundler/index.d.ts +2 -0
  34. package/dist/bundler/index.d.ts.map +1 -0
  35. package/dist/cli/bin.d.ts +3 -0
  36. package/dist/cli/bin.d.ts.map +1 -0
  37. package/dist/cli/colors.d.ts +11 -0
  38. package/dist/cli/colors.d.ts.map +1 -0
  39. package/dist/cli/commands/account.d.ts +4 -0
  40. package/dist/cli/commands/account.d.ts.map +1 -0
  41. package/dist/cli/commands/ai.d.ts +3 -0
  42. package/dist/cli/commands/ai.d.ts.map +1 -0
  43. package/dist/cli/commands/build.d.ts +4 -0
  44. package/dist/cli/commands/build.d.ts.map +1 -0
  45. package/dist/cli/commands/deploy.d.ts +4 -0
  46. package/dist/cli/commands/deploy.d.ts.map +1 -0
  47. package/dist/cli/commands/dev.d.ts +4 -0
  48. package/dist/cli/commands/dev.d.ts.map +1 -0
  49. package/dist/cli/commands/doctor.d.ts +4 -0
  50. package/dist/cli/commands/doctor.d.ts.map +1 -0
  51. package/dist/cli/commands/init.d.ts +4 -0
  52. package/dist/cli/commands/init.d.ts.map +1 -0
  53. package/dist/cli/commands/remote.d.ts +4 -0
  54. package/dist/cli/commands/remote.d.ts.map +1 -0
  55. package/dist/cli/commands/types.d.ts +4 -0
  56. package/dist/cli/commands/types.d.ts.map +1 -0
  57. package/dist/cli/dependencies.d.ts +90 -0
  58. package/dist/cli/dependencies.d.ts.map +1 -0
  59. package/dist/cli/index.d.ts +23 -0
  60. package/dist/cli/index.d.ts.map +1 -0
  61. package/dist/cli/wrangler-auth.d.ts +36 -0
  62. package/dist/cli/wrangler-auth.d.ts.map +1 -0
  63. package/dist/cloudflare/account.d.ts +65 -0
  64. package/dist/cloudflare/account.d.ts.map +1 -0
  65. package/dist/cloudflare/api.d.ts +51 -0
  66. package/dist/cloudflare/api.d.ts.map +1 -0
  67. package/dist/cloudflare/auth.d.ts +35 -0
  68. package/dist/cloudflare/auth.d.ts.map +1 -0
  69. package/dist/cloudflare/index.d.ts +107 -0
  70. package/dist/cloudflare/index.d.ts.map +1 -0
  71. package/dist/cloudflare/index.js +13 -0
  72. package/dist/cloudflare/preferences.d.ts +46 -0
  73. package/dist/cloudflare/preferences.d.ts.map +1 -0
  74. package/dist/cloudflare/pricing.d.ts +15 -0
  75. package/dist/cloudflare/pricing.d.ts.map +1 -0
  76. package/dist/cloudflare/remote-config.d.ts +37 -0
  77. package/dist/cloudflare/remote-config.d.ts.map +1 -0
  78. package/dist/cloudflare/types.d.ts +161 -0
  79. package/dist/cloudflare/types.d.ts.map +1 -0
  80. package/dist/cloudflare/usage.d.ts +77 -0
  81. package/dist/cloudflare/usage.d.ts.map +1 -0
  82. package/dist/config/compiler.d.ts +146 -0
  83. package/dist/config/compiler.d.ts.map +1 -0
  84. package/dist/config/define.d.ts +44 -0
  85. package/dist/config/define.d.ts.map +1 -0
  86. package/dist/config/index.d.ts +6 -0
  87. package/dist/config/index.d.ts.map +1 -0
  88. package/dist/config/loader.d.ts +52 -0
  89. package/dist/config/loader.d.ts.map +1 -0
  90. package/dist/config/ref.d.ts +160 -0
  91. package/dist/config/ref.d.ts.map +1 -0
  92. package/dist/config/schema.d.ts +3318 -0
  93. package/dist/config/schema.d.ts.map +1 -0
  94. package/dist/decorators/durable-object.d.ts +59 -0
  95. package/dist/decorators/durable-object.d.ts.map +1 -0
  96. package/dist/decorators/index.d.ts +3 -0
  97. package/dist/decorators/index.d.ts.map +1 -0
  98. package/dist/decorators/index.js +9 -0
  99. package/dist/deploy-nhceck39.js +70 -0
  100. package/dist/dev-qnxet3j9.js +2096 -0
  101. package/dist/dev-server/index.d.ts +2 -0
  102. package/dist/dev-server/index.d.ts.map +1 -0
  103. package/dist/dev-server/server.d.ts +30 -0
  104. package/dist/dev-server/server.d.ts.map +1 -0
  105. package/dist/doctor-e8fy6fj5.js +186 -0
  106. package/dist/durable-object-t4kbb0yt.js +13 -0
  107. package/dist/env.d.ts +48 -0
  108. package/dist/env.d.ts.map +1 -0
  109. package/dist/index-07q6yxyc.js +168 -0
  110. package/dist/index-1xpj0m4r.js +57 -0
  111. package/dist/index-37x76zdn.js +4 -0
  112. package/dist/index-3t6rypgc.js +13 -0
  113. package/dist/index-67qcae0f.js +183 -0
  114. package/dist/index-a855bdsx.js +18 -0
  115. package/dist/index-d8bdkx2h.js +109 -0
  116. package/dist/index-ep3445yc.js +2225 -0
  117. package/dist/index-gz1gndna.js +307 -0
  118. package/dist/index-hcex3rgh.js +266 -0
  119. package/dist/index-m2q41jwa.js +462 -0
  120. package/dist/index-n7rs26ft.js +77 -0
  121. package/dist/index-pf5s73n9.js +1413 -0
  122. package/dist/index-rbht7m9r.js +36 -0
  123. package/dist/index-tfyxa77h.js +850 -0
  124. package/dist/index-tk6ej9dj.js +94 -0
  125. package/dist/index-z14anrqp.js +226 -0
  126. package/dist/index.d.ts +13 -0
  127. package/dist/index.d.ts.map +1 -0
  128. package/dist/index.js +298 -0
  129. package/dist/init-f9mgmew3.js +186 -0
  130. package/dist/remote-q59qk463.js +97 -0
  131. package/dist/runtime/context.d.ts +46 -0
  132. package/dist/runtime/context.d.ts.map +1 -0
  133. package/dist/runtime/exports.d.ts +118 -0
  134. package/dist/runtime/exports.d.ts.map +1 -0
  135. package/dist/runtime/index.d.ts +4 -0
  136. package/dist/runtime/index.d.ts.map +1 -0
  137. package/dist/runtime/index.js +111 -0
  138. package/dist/runtime/middleware.d.ts +82 -0
  139. package/dist/runtime/middleware.d.ts.map +1 -0
  140. package/dist/runtime/validation.d.ts +37 -0
  141. package/dist/runtime/validation.d.ts.map +1 -0
  142. package/dist/sveltekit/index.d.ts +2 -0
  143. package/dist/sveltekit/index.d.ts.map +1 -0
  144. package/dist/sveltekit/index.js +182 -0
  145. package/dist/sveltekit/platform.d.ts +141 -0
  146. package/dist/sveltekit/platform.d.ts.map +1 -0
  147. package/dist/test/bridge-context.d.ts +73 -0
  148. package/dist/test/bridge-context.d.ts.map +1 -0
  149. package/dist/test/cf.d.ts +130 -0
  150. package/dist/test/cf.d.ts.map +1 -0
  151. package/dist/test/email.d.ts +75 -0
  152. package/dist/test/email.d.ts.map +1 -0
  153. package/dist/test/index.d.ts +22 -0
  154. package/dist/test/index.d.ts.map +1 -0
  155. package/dist/test/index.js +71 -0
  156. package/dist/test/multi-worker-context.d.ts +114 -0
  157. package/dist/test/multi-worker-context.d.ts.map +1 -0
  158. package/dist/test/queue.d.ts +74 -0
  159. package/dist/test/queue.d.ts.map +1 -0
  160. package/dist/test/remote-ai.d.ts +6 -0
  161. package/dist/test/remote-ai.d.ts.map +1 -0
  162. package/dist/test/remote-vectorize.d.ts +6 -0
  163. package/dist/test/remote-vectorize.d.ts.map +1 -0
  164. package/dist/test/resolve-service-bindings.d.ts +68 -0
  165. package/dist/test/resolve-service-bindings.d.ts.map +1 -0
  166. package/dist/test/scheduled.d.ts +58 -0
  167. package/dist/test/scheduled.d.ts.map +1 -0
  168. package/dist/test/should-skip.d.ts +50 -0
  169. package/dist/test/should-skip.d.ts.map +1 -0
  170. package/dist/test/simple-context.d.ts +43 -0
  171. package/dist/test/simple-context.d.ts.map +1 -0
  172. package/dist/test/tail.d.ts +86 -0
  173. package/dist/test/tail.d.ts.map +1 -0
  174. package/dist/test/utilities.d.ts +99 -0
  175. package/dist/test/utilities.d.ts.map +1 -0
  176. package/dist/test/worker.d.ts +76 -0
  177. package/dist/test/worker.d.ts.map +1 -0
  178. package/dist/transform/durable-object.d.ts +46 -0
  179. package/dist/transform/durable-object.d.ts.map +1 -0
  180. package/dist/transform/index.d.ts +3 -0
  181. package/dist/transform/index.d.ts.map +1 -0
  182. package/dist/transform/worker-entrypoint.d.ts +66 -0
  183. package/dist/transform/worker-entrypoint.d.ts.map +1 -0
  184. package/dist/types-5nyrz1sz.js +454 -0
  185. package/dist/utils/entrypoint-discovery.d.ts +29 -0
  186. package/dist/utils/entrypoint-discovery.d.ts.map +1 -0
  187. package/dist/utils/glob.d.ts +33 -0
  188. package/dist/utils/glob.d.ts.map +1 -0
  189. package/dist/utils/resolve-package.d.ts +10 -0
  190. package/dist/utils/resolve-package.d.ts.map +1 -0
  191. package/dist/vite/index.d.ts +3 -0
  192. package/dist/vite/index.d.ts.map +1 -0
  193. package/dist/vite/index.js +339 -0
  194. package/dist/vite/plugin.d.ts +138 -0
  195. package/dist/vite/plugin.d.ts.map +1 -0
  196. package/dist/worker-entrypoint-m9th0rg0.js +13 -0
  197. package/dist/workerName.d.ts +17 -0
  198. package/dist/workerName.d.ts.map +1 -0
  199. package/package.json +112 -1
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env bun
2
+ import { runCli } from '../dist/index.js'
3
+
4
+ // Pass CLI arguments (skip node and script path)
5
+ const args = process.argv.slice(2)
6
+
7
+ runCli(args)
8
+ .then(result => {
9
+ process.exit(result.exitCode)
10
+ })
11
+ .catch(error => {
12
+ console.error('CLI error:', error)
13
+ process.exit(1)
14
+ })
@@ -0,0 +1,397 @@
1
+ import {
2
+ BOLD,
3
+ CYAN,
4
+ CYAN_BOLD,
5
+ DIM,
6
+ RESET
7
+ } from "./index-3t6rypgc.js";
8
+ import {
9
+ account
10
+ } from "./index-n7rs26ft.js";
11
+ import {
12
+ AuthenticationError,
13
+ CloudflareAPIError,
14
+ getGlobalDefaultAccountId,
15
+ getWorkspaceAccountId,
16
+ setGlobalDefaultAccountId,
17
+ setWorkspaceAccountId
18
+ } from "./index-tfyxa77h.js";
19
+ import"./index-37x76zdn.js";
20
+
21
+ // src/cli/commands/account.ts
22
+ var CLI_API_OPTIONS = { timeout: 1e4 };
23
+ function formatDate(date) {
24
+ if (!date)
25
+ return "N/A";
26
+ return date.toLocaleDateString("en-US", {
27
+ year: "numeric",
28
+ month: "short",
29
+ day: "numeric"
30
+ });
31
+ }
32
+ function formatPercent(value) {
33
+ if (value === undefined)
34
+ return "N/A";
35
+ return `${value.toFixed(1)}%`;
36
+ }
37
+ async function runAccountCommand(parsed, logger, _options) {
38
+ const isAuth = await account.isAuthenticated();
39
+ if (!isAuth) {
40
+ logger.error("Not authenticated with Cloudflare");
41
+ logger.info("Run: bunx wrangler login");
42
+ return { exitCode: 1 };
43
+ }
44
+ const subcommand = parsed.args[0];
45
+ try {
46
+ let accountId = parsed.options.account;
47
+ if (!accountId) {
48
+ const primary = await account.getPrimaryAccount();
49
+ if (!primary) {
50
+ logger.error("No Cloudflare accounts found");
51
+ return { exitCode: 1 };
52
+ }
53
+ accountId = primary.id;
54
+ }
55
+ switch (subcommand) {
56
+ case "global":
57
+ return await selectGlobalAccount(logger);
58
+ case "workspace":
59
+ return await selectWorkspaceAccount(logger);
60
+ case "workers":
61
+ return await showWorkers(accountId, logger);
62
+ case "kv":
63
+ return await showKV(accountId, logger);
64
+ case "d1":
65
+ return await showD1(accountId, logger);
66
+ case "r2":
67
+ return await showR2(accountId, logger);
68
+ case "vectorize":
69
+ return await showVectorize(accountId, logger);
70
+ case "limits":
71
+ return await handleLimits(accountId, parsed, logger);
72
+ case "usage":
73
+ return await showUsage(accountId, logger);
74
+ case "info":
75
+ default:
76
+ return await showAccountOverview(accountId, logger);
77
+ }
78
+ } catch (error) {
79
+ if (error instanceof AuthenticationError) {
80
+ logger.error(error.message);
81
+ return { exitCode: 1 };
82
+ }
83
+ if (error instanceof CloudflareAPIError) {
84
+ logger.error(`API Error: ${error.message}`);
85
+ return { exitCode: 1 };
86
+ }
87
+ if (error instanceof Error) {
88
+ if (error.name === "AbortError" || error.message.includes("timed out")) {
89
+ logger.error("Request timed out. The Cloudflare API is slow or unavailable.");
90
+ return { exitCode: 1 };
91
+ }
92
+ logger.error(`Error: ${error.message}`);
93
+ return { exitCode: 1 };
94
+ }
95
+ throw error;
96
+ }
97
+ }
98
+ async function showAccountOverview(accountId, logger) {
99
+ logger.info(`\uD83D\uDCCA Cloudflare Account Overview
100
+ `);
101
+ const accounts = await account.getAccounts();
102
+ if (accounts.length === 0) {
103
+ logger.error("No Cloudflare accounts found");
104
+ return { exitCode: 1 };
105
+ }
106
+ const workspaceId = getWorkspaceAccountId();
107
+ const globalId = await getGlobalDefaultAccountId(accountId);
108
+ for (let i = 0;i < accounts.length; i++) {
109
+ const acc = accounts[i];
110
+ const isWorkspace = acc.id === workspaceId;
111
+ const isGlobal = acc.id === globalId;
112
+ let badge = "";
113
+ if (isWorkspace) {
114
+ badge = ` ${CYAN_BOLD}(workspace)${RESET}`;
115
+ } else if (isGlobal) {
116
+ badge = workspaceId ? ` ${DIM}(global)${RESET}` : ` ${CYAN}(global)${RESET}`;
117
+ }
118
+ if (i > 0)
119
+ logger.info("");
120
+ logger.info(`${BOLD}Account${RESET} ${acc.name}${badge}`);
121
+ logger.info(`${BOLD}ID${RESET} ${acc.id}`);
122
+ logger.info(`${BOLD}Type${RESET} ${acc.type}`);
123
+ }
124
+ logger.info("");
125
+ logger.info(`${BOLD}Commands${RESET}`);
126
+ logger.info(" devflare account global — Set global default account");
127
+ logger.info(" devflare account workspace — Set workspace account");
128
+ logger.info(" devflare account workers — List Workers");
129
+ logger.info(" devflare account kv — List KV namespaces");
130
+ logger.info(" devflare account d1 — List D1 databases");
131
+ logger.info(" devflare account r2 — List R2 buckets");
132
+ logger.info(" devflare account vectorize — List Vectorize indexes");
133
+ logger.info(" devflare account limits — View/set usage limits");
134
+ logger.info(" devflare account usage — View detailed usage");
135
+ logger.info("");
136
+ logger.info(" devflare ai — View AI models and pricing");
137
+ return { exitCode: 0 };
138
+ }
139
+ async function selectGlobalAccount(logger) {
140
+ const accounts = await account.getAccounts();
141
+ if (accounts.length === 0) {
142
+ logger.error("No Cloudflare accounts found");
143
+ return { exitCode: 1 };
144
+ }
145
+ if (accounts.length === 1) {
146
+ await setGlobalDefaultAccountId(accounts[0].id);
147
+ logger.success(`Global default set to: ${accounts[0].name}`);
148
+ return { exitCode: 0 };
149
+ }
150
+ const currentGlobal = await getGlobalDefaultAccountId(accounts[0].id);
151
+ const options = accounts.map((acc) => {
152
+ const isCurrent = acc.id === currentGlobal;
153
+ return {
154
+ label: isCurrent ? `${acc.name} ${CYAN}(default)${RESET}` : acc.name,
155
+ value: acc.id,
156
+ hint: acc.id.substring(0, 8) + "..."
157
+ };
158
+ });
159
+ const selected = await logger.prompt("Select global default account:", {
160
+ type: "select",
161
+ options,
162
+ initial: currentGlobal ?? accounts[0].id
163
+ });
164
+ if (!selected || typeof selected === "symbol") {
165
+ logger.info("Cancelled");
166
+ return { exitCode: 0 };
167
+ }
168
+ await setGlobalDefaultAccountId(selected, accounts[0].id);
169
+ const selectedAccount = accounts.find((a) => a.id === selected);
170
+ logger.success(`Global default set to: ${selectedAccount?.name}`);
171
+ logger.info(`Saved to: ~/.devflare/preferences.json + cloud KV`);
172
+ return { exitCode: 0 };
173
+ }
174
+ async function selectWorkspaceAccount(logger) {
175
+ const accounts = await account.getAccounts();
176
+ if (accounts.length === 0) {
177
+ logger.error("No Cloudflare accounts found");
178
+ return { exitCode: 1 };
179
+ }
180
+ if (accounts.length === 1) {
181
+ const pkgPath2 = setWorkspaceAccountId(accounts[0].id);
182
+ logger.success(`Workspace account set to: ${accounts[0].name}`);
183
+ logger.info(`Saved to: ${pkgPath2}`);
184
+ return { exitCode: 0 };
185
+ }
186
+ const currentWorkspace = getWorkspaceAccountId();
187
+ const options = accounts.map((acc) => {
188
+ const isCurrent = acc.id === currentWorkspace;
189
+ return {
190
+ label: isCurrent ? `${acc.name} ${CYAN}(workspace)${RESET}` : acc.name,
191
+ value: acc.id,
192
+ hint: acc.id.substring(0, 8) + "..."
193
+ };
194
+ });
195
+ const selected = await logger.prompt("Select workspace account:", {
196
+ type: "select",
197
+ options,
198
+ initial: currentWorkspace ?? accounts[0].id
199
+ });
200
+ if (!selected || typeof selected === "symbol") {
201
+ logger.info("Cancelled");
202
+ return { exitCode: 0 };
203
+ }
204
+ const pkgPath = setWorkspaceAccountId(selected);
205
+ const selectedAccount = accounts.find((a) => a.id === selected);
206
+ logger.success(`Workspace account set to: ${selectedAccount?.name}`);
207
+ logger.info(`Saved to: ${pkgPath}`);
208
+ return { exitCode: 0 };
209
+ }
210
+ async function showWorkers(accountId, logger) {
211
+ logger.info(`\uD83D\uDC77 Workers Scripts
212
+ `);
213
+ const workers = await account.workers(accountId, CLI_API_OPTIONS);
214
+ if (workers.length === 0) {
215
+ logger.info("No Workers found");
216
+ return { exitCode: 0 };
217
+ }
218
+ logger.info("─".repeat(60));
219
+ logger.info(`${"Name".padEnd(30)} ${"Modified".padEnd(20)}`);
220
+ logger.info("─".repeat(60));
221
+ for (const worker of workers) {
222
+ logger.info(`${worker.name.padEnd(30)} ${formatDate(worker.modifiedOn).padEnd(20)}`);
223
+ }
224
+ logger.info("─".repeat(60));
225
+ logger.info(`Total: ${workers.length} worker(s)`);
226
+ return { exitCode: 0 };
227
+ }
228
+ async function showKV(accountId, logger) {
229
+ logger.info(`\uD83D\uDDC4️ KV Namespaces
230
+ `);
231
+ const namespaces = await account.kv(accountId, CLI_API_OPTIONS);
232
+ if (namespaces.length === 0) {
233
+ logger.info("No KV namespaces found");
234
+ return { exitCode: 0 };
235
+ }
236
+ logger.info("─".repeat(70));
237
+ logger.info(`${"Name".padEnd(35)} ${"ID".padEnd(35)}`);
238
+ logger.info("─".repeat(70));
239
+ for (const ns of namespaces) {
240
+ logger.info(`${ns.name.padEnd(35)} ${ns.id.padEnd(35)}`);
241
+ }
242
+ logger.info("─".repeat(70));
243
+ logger.info(`Total: ${namespaces.length} namespace(s)`);
244
+ return { exitCode: 0 };
245
+ }
246
+ async function showD1(accountId, logger) {
247
+ logger.info(`\uD83D\uDDC3️ D1 Databases
248
+ `);
249
+ const databases = await account.d1(accountId, CLI_API_OPTIONS);
250
+ if (databases.length === 0) {
251
+ logger.info("No D1 databases found");
252
+ return { exitCode: 0 };
253
+ }
254
+ logger.info("─".repeat(80));
255
+ logger.info(`${"Name".padEnd(25)} ${"ID".padEnd(40)} ${"Tables".padEnd(8)}`);
256
+ logger.info("─".repeat(80));
257
+ for (const db of databases) {
258
+ const tables = db.tableCount !== undefined ? db.tableCount.toString() : "N/A";
259
+ logger.info(`${db.name.padEnd(25)} ${db.id.padEnd(40)} ${tables.padEnd(8)}`);
260
+ }
261
+ logger.info("─".repeat(80));
262
+ logger.info(`Total: ${databases.length} database(s)`);
263
+ return { exitCode: 0 };
264
+ }
265
+ async function showR2(accountId, logger) {
266
+ logger.info(`\uD83D\uDCE6 R2 Buckets
267
+ `);
268
+ const buckets = await account.r2(accountId, CLI_API_OPTIONS);
269
+ if (buckets.length === 0) {
270
+ logger.info("No R2 buckets found");
271
+ return { exitCode: 0 };
272
+ }
273
+ logger.info("─".repeat(60));
274
+ logger.info(`${"Name".padEnd(30)} ${"Created".padEnd(20)} ${"Location".padEnd(10)}`);
275
+ logger.info("─".repeat(60));
276
+ for (const bucket of buckets) {
277
+ const location = bucket.location ?? "auto";
278
+ logger.info(`${bucket.name.padEnd(30)} ${formatDate(bucket.createdOn).padEnd(20)} ${location.padEnd(10)}`);
279
+ }
280
+ logger.info("─".repeat(60));
281
+ logger.info(`Total: ${buckets.length} bucket(s)`);
282
+ return { exitCode: 0 };
283
+ }
284
+ async function showVectorize(accountId, logger) {
285
+ logger.info(`\uD83D\uDD0D Vectorize Indexes
286
+ `);
287
+ const indexes = await account.vectorize(accountId, CLI_API_OPTIONS);
288
+ if (indexes.length === 0) {
289
+ logger.info("No Vectorize indexes found");
290
+ return { exitCode: 0 };
291
+ }
292
+ logger.info("─".repeat(70));
293
+ logger.info(`${"Name".padEnd(25)} ${"Dimensions".padEnd(12)} ${"Metric".padEnd(15)}`);
294
+ logger.info("─".repeat(70));
295
+ for (const idx of indexes) {
296
+ logger.info(`${idx.name.padEnd(25)} ${idx.dimensions.toString().padEnd(12)} ${idx.metric.padEnd(15)}`);
297
+ }
298
+ logger.info("─".repeat(70));
299
+ logger.info(`Total: ${indexes.length} index(es)`);
300
+ return { exitCode: 0 };
301
+ }
302
+ async function showUsage(accountId, logger) {
303
+ logger.info(`\uD83D\uDCC8 Usage Report
304
+ `);
305
+ const usages = await account.getAllUsageSummaries(accountId);
306
+ const limits = await account.getLimits(accountId);
307
+ logger.info(`Limits Enabled: ${limits.enabled ? "Yes" : "No"}`);
308
+ logger.info("");
309
+ if (usages.length === 0) {
310
+ logger.info("No usage tracked yet");
311
+ return { exitCode: 0 };
312
+ }
313
+ logger.info("─".repeat(60));
314
+ logger.info(`${"Service".padEnd(15)} ${"Today".padEnd(10)} ${"Limit".padEnd(10)} ${"%".padEnd(10)} ${"Status".padEnd(10)}`);
315
+ logger.info("─".repeat(60));
316
+ for (const usage of usages) {
317
+ const limitStr = usage.limit?.toString() ?? "∞";
318
+ const percentStr = formatPercent(usage.percentUsed);
319
+ const status = usage.withinLimit ? "✅ OK" : "⛔ LIMIT";
320
+ logger.info(`${usage.service.padEnd(15)} ${usage.today.toString().padEnd(10)} ${limitStr.padEnd(10)} ${percentStr.padEnd(10)} ${status.padEnd(10)}`);
321
+ }
322
+ logger.info("─".repeat(60));
323
+ return { exitCode: 0 };
324
+ }
325
+ async function handleLimits(accountId, parsed, logger) {
326
+ const action = parsed.args[1];
327
+ switch (action) {
328
+ case "set":
329
+ return await setLimit(accountId, parsed, logger);
330
+ case "enable":
331
+ await account.setLimitsEnabled(accountId, true);
332
+ logger.success("Usage limits enabled");
333
+ return { exitCode: 0 };
334
+ case "disable":
335
+ await account.setLimitsEnabled(accountId, false);
336
+ logger.success("Usage limits disabled");
337
+ return { exitCode: 0 };
338
+ default:
339
+ return await showLimits(accountId, logger);
340
+ }
341
+ }
342
+ async function showLimits(accountId, logger) {
343
+ logger.info(`⚙️ Usage Limits
344
+ `);
345
+ const limits = await account.getLimits(accountId);
346
+ logger.info(`Status: ${limits.enabled ? "✅ Enabled" : "❌ Disabled"}`);
347
+ logger.info("");
348
+ logger.info("Current Limits:");
349
+ logger.info("─".repeat(40));
350
+ logger.info(` AI Requests/Day: ${limits.aiRequestsPerDay ?? "Unlimited"}`);
351
+ logger.info(` AI Tokens/Day: ${limits.aiTokensPerDay ?? "Unlimited"}`);
352
+ logger.info(` Vectorize Ops/Day: ${limits.vectorizeOpsPerDay ?? "Unlimited"}`);
353
+ logger.info("");
354
+ logger.info("Commands:");
355
+ logger.info(" devflare account limits set ai-requests 50");
356
+ logger.info(" devflare account limits set ai-tokens 5000");
357
+ logger.info(" devflare account limits set vectorize-ops 500");
358
+ logger.info(" devflare account limits enable");
359
+ logger.info(" devflare account limits disable");
360
+ return { exitCode: 0 };
361
+ }
362
+ async function setLimit(accountId, parsed, logger) {
363
+ const limitName = parsed.args[2];
364
+ const limitValue = parsed.args[3];
365
+ if (!limitName || !limitValue) {
366
+ logger.error("Usage: devflare account limits set <limit-name> <value>");
367
+ logger.info("Limit names: ai-requests, ai-tokens, vectorize-ops");
368
+ return { exitCode: 1 };
369
+ }
370
+ const value = parseInt(limitValue, 10);
371
+ if (isNaN(value) || value < 0) {
372
+ logger.error("Limit value must be a positive number");
373
+ return { exitCode: 1 };
374
+ }
375
+ switch (limitName) {
376
+ case "ai-requests":
377
+ await account.setLimits(accountId, { aiRequestsPerDay: value });
378
+ logger.success(`AI requests limit set to ${value}/day`);
379
+ break;
380
+ case "ai-tokens":
381
+ await account.setLimits(accountId, { aiTokensPerDay: value });
382
+ logger.success(`AI tokens limit set to ${value}/day`);
383
+ break;
384
+ case "vectorize-ops":
385
+ await account.setLimits(accountId, { vectorizeOpsPerDay: value });
386
+ logger.success(`Vectorize ops limit set to ${value}/day`);
387
+ break;
388
+ default:
389
+ logger.error(`Unknown limit: ${limitName}`);
390
+ logger.info("Valid limits: ai-requests, ai-tokens, vectorize-ops");
391
+ return { exitCode: 1 };
392
+ }
393
+ return { exitCode: 0 };
394
+ }
395
+ export {
396
+ runAccountCommand
397
+ };
@@ -0,0 +1,107 @@
1
+ import {
2
+ BG_BLUE,
3
+ BOLD,
4
+ DIM,
5
+ RESET,
6
+ WHITE
7
+ } from "./index-3t6rypgc.js";
8
+ import"./index-37x76zdn.js";
9
+
10
+ // src/cloudflare/pricing.ts
11
+ var PRICING_DOCS_URL = "https://developers.cloudflare.com/workers-ai/platform/pricing/";
12
+ var PRICE_PER_1000_NEURONS_USD = 0.011;
13
+ var FREE_TIER_NEURONS_PER_DAY = 1e4;
14
+
15
+ // src/cli/commands/ai.ts
16
+ var LLM_PRICING = [
17
+ { model: "@cf/ibm-granite/granite-4.0-h-micro", inputPrice: "$0.017", outputPrice: "$0.112", inputNeurons: "1542", outputNeurons: "10158" },
18
+ { model: "@cf/meta/llama-3.2-1b-instruct", inputPrice: "$0.027", outputPrice: "$0.201", inputNeurons: "2457", outputNeurons: "18252" },
19
+ { model: "@cf/meta/llama-3.2-3b-instruct", inputPrice: "$0.051", outputPrice: "$0.335", inputNeurons: "4625", outputNeurons: "30475" },
20
+ { model: "@cf/qwen/qwen3-30b-a3b-fp8", inputPrice: "$0.051", outputPrice: "$0.335", inputNeurons: "4625", outputNeurons: "30475" },
21
+ { model: "@cf/meta/llama-3.1-8b-instruct-fp8-fast", inputPrice: "$0.045", outputPrice: "$0.384", inputNeurons: "4119", outputNeurons: "34868" },
22
+ { model: "@cf/meta/llama-3.2-11b-vision-instruct", inputPrice: "$0.049", outputPrice: "$0.676", inputNeurons: "4410", outputNeurons: "61493" },
23
+ { model: "@cf/mistral/mistral-7b-instruct-v0.1", inputPrice: "$0.110", outputPrice: "$0.190", inputNeurons: "10000", outputNeurons: "17300" },
24
+ { model: "@cf/meta/llama-3-8b-instruct-awq", inputPrice: "$0.123", outputPrice: "$0.266", inputNeurons: "11161", outputNeurons: "24215" },
25
+ { model: "@cf/meta/llama-3.1-8b-instruct-awq", inputPrice: "$0.123", outputPrice: "$0.266", inputNeurons: "11161", outputNeurons: "24215" },
26
+ { model: "@cf/meta/llama-3.1-8b-instruct-fp8", inputPrice: "$0.152", outputPrice: "$0.287", inputNeurons: "13778", outputNeurons: "26128" },
27
+ { model: "@cf/openai/gpt-oss-20b", inputPrice: "$0.200", outputPrice: "$0.300", inputNeurons: "18182", outputNeurons: "27273" },
28
+ { model: "@cf/meta/llama-4-scout-17b-16e-instruct", inputPrice: "$0.270", outputPrice: "$0.850", inputNeurons: "24545", outputNeurons: "77273" },
29
+ { model: "@cf/meta/llama-3.1-8b-instruct", inputPrice: "$0.282", outputPrice: "$0.827", inputNeurons: "25608", outputNeurons: "75147" },
30
+ { model: "@cf/meta/llama-3-8b-instruct", inputPrice: "$0.282", outputPrice: "$0.827", inputNeurons: "25608", outputNeurons: "75147" },
31
+ { model: "@cf/meta/llama-3.1-70b-instruct-fp8-fast", inputPrice: "$0.293", outputPrice: "$2.253", inputNeurons: "26668", outputNeurons: "204805" },
32
+ { model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast", inputPrice: "$0.293", outputPrice: "$2.253", inputNeurons: "26668", outputNeurons: "204805" },
33
+ { model: "@cf/google/gemma-3-12b-it", inputPrice: "$0.345", outputPrice: "$0.556", inputNeurons: "31371", outputNeurons: "50560" },
34
+ { model: "@cf/openai/gpt-oss-120b", inputPrice: "$0.350", outputPrice: "$0.750", inputNeurons: "31818", outputNeurons: "68182" },
35
+ { model: "@cf/mistralai/mistral-small-3.1-24b-instruct", inputPrice: "$0.351", outputPrice: "$0.555", inputNeurons: "31876", outputNeurons: "50488" },
36
+ { model: "@cf/aisingapore/gemma-sea-lion-v4-27b-it", inputPrice: "$0.351", outputPrice: "$0.555", inputNeurons: "31876", outputNeurons: "50488" },
37
+ { model: "@cf/meta/llama-guard-3-8b", inputPrice: "$0.484", outputPrice: "$0.030", inputNeurons: "44003", outputNeurons: "2730" },
38
+ { model: "@cf/deepseek-ai/deepseek-r1-distill-qwen-32b", inputPrice: "$0.497", outputPrice: "$4.881", inputNeurons: "45170", outputNeurons: "443756" },
39
+ { model: "@cf/meta/llama-2-7b-chat-fp16", inputPrice: "$0.556", outputPrice: "$6.667", inputNeurons: "50505", outputNeurons: "606061" },
40
+ { model: "@cf/qwen/qwq-32b", inputPrice: "$0.660", outputPrice: "$1.000", inputNeurons: "60000", outputNeurons: "90909" },
41
+ { model: "@cf/qwen/qwen2.5-coder-32b-instruct", inputPrice: "$0.660", outputPrice: "$1.000", inputNeurons: "60000", outputNeurons: "90909" }
42
+ ];
43
+ var EMBEDDING_PRICING = [
44
+ { model: "@cf/baai/bge-m3", price: "$0.012", neurons: "1075" },
45
+ { model: "@cf/qwen/qwen3-embedding-0.6b", price: "$0.012", neurons: "1075" },
46
+ { model: "@cf/pfnet/plamo-embedding-1b", price: "$0.019", neurons: "1689" },
47
+ { model: "@cf/baai/bge-small-en-v1.5", price: "$0.020", neurons: "1841" },
48
+ { model: "@cf/baai/bge-base-en-v1.5", price: "$0.067", neurons: "6058" },
49
+ { model: "@cf/baai/bge-large-en-v1.5", price: "$0.204", neurons: "18582" }
50
+ ];
51
+ var IMAGE_PRICING = [
52
+ { model: "@cf/black-forest-labs/flux-1-schnell", tilePrice: "$0.0000528", stepPrice: "$0.0001056" },
53
+ { model: "@cf/leonardo/phoenix-1.0", tilePrice: "$0.005830", stepPrice: "$0.000110" },
54
+ { model: "@cf/leonardo/lucid-origin", tilePrice: "$0.006996", stepPrice: "$0.000132" }
55
+ ];
56
+ var AUDIO_PRICING = [
57
+ { model: "@cf/myshell-ai/melotts", price: "$0.0002", unit: "per audio minute" },
58
+ { model: "@cf/openai/whisper", price: "$0.0005", unit: "per audio minute" },
59
+ { model: "@cf/openai/whisper-large-v3-turbo", price: "$0.0005", unit: "per audio minute" },
60
+ { model: "@cf/deepgram/nova-3", price: "$0.0052", unit: "per audio minute" },
61
+ { model: "@cf/deepgram/flux (WebSocket)", price: "$0.0077", unit: "per audio minute" },
62
+ { model: "@cf/deepgram/nova-3 (WebSocket)", price: "$0.0092", unit: "per audio minute" },
63
+ { model: "@cf/deepgram/aura-1", price: "$0.015", unit: "per 1k characters" },
64
+ { model: "@cf/deepgram/aura-2-en", price: "$0.030", unit: "per 1k characters" },
65
+ { model: "@cf/deepgram/aura-2-es", price: "$0.030", unit: "per 1k characters" }
66
+ ];
67
+ function log(message = "") {
68
+ console.log(message);
69
+ }
70
+ function header(title) {
71
+ console.log(`
72
+ ${BG_BLUE}${WHITE}${BOLD} ${title} ${RESET}`);
73
+ }
74
+ function runAICommand() {
75
+ log("\uD83E\uDD16 Workers AI");
76
+ log();
77
+ log(`${BOLD}Pricing${RESET} $${PRICE_PER_1000_NEURONS_USD.toFixed(3)} per 1,000 neurons`);
78
+ log(`${BOLD}Free${RESET} ${FREE_TIER_NEURONS_PER_DAY.toLocaleString("en-US")} neurons/day`);
79
+ log(`${DIM}${PRICING_DOCS_URL}${RESET}`);
80
+ header("LLM model pricing");
81
+ for (const m of LLM_PRICING) {
82
+ log(` • ${m.model}`);
83
+ log(` ${DIM}${m.inputPrice} per M input tokens${RESET}`);
84
+ log(` ${DIM}${m.outputPrice} per M output tokens${RESET}`);
85
+ }
86
+ header("Embeddings model pricing");
87
+ for (const m of EMBEDDING_PRICING) {
88
+ log(` • ${m.model}`);
89
+ log(` ${DIM}${m.price} per M input tokens${RESET}`);
90
+ }
91
+ header("Image model pricing");
92
+ for (const m of IMAGE_PRICING) {
93
+ log(` • ${m.model}`);
94
+ log(` ${DIM}${m.tilePrice} per 512x512 tile${RESET}`);
95
+ log(` ${DIM}${m.stepPrice} per step${RESET}`);
96
+ }
97
+ header("Audio model pricing");
98
+ for (const m of AUDIO_PRICING) {
99
+ log(` • ${m.model}`);
100
+ log(` ${DIM}${m.price} ${m.unit}${RESET}`);
101
+ }
102
+ log();
103
+ return { exitCode: 0 };
104
+ }
105
+ export {
106
+ runAICommand
107
+ };
@@ -0,0 +1,82 @@
1
+ export interface BridgeClientOptions {
2
+ /** Bridge WebSocket URL (default: ws://localhost:8686) */
3
+ url?: string;
4
+ /** Auto-reconnect on disconnect */
5
+ autoReconnect?: boolean;
6
+ /** Reconnect delay in ms */
7
+ reconnectDelay?: number;
8
+ /** Connection timeout in ms */
9
+ connectTimeout?: number;
10
+ }
11
+ export interface PendingCall {
12
+ resolve: (value: unknown) => void;
13
+ reject: (error: Error) => void;
14
+ timeout: ReturnType<typeof setTimeout>;
15
+ }
16
+ export interface ActiveStream {
17
+ controller: ReadableStreamDefaultController<Uint8Array>;
18
+ buffer: Uint8Array[];
19
+ creditRemaining: number;
20
+ }
21
+ export interface ActiveWsProxy {
22
+ clientWs: WebSocket;
23
+ onMessage: (data: Uint8Array | string) => void;
24
+ onClose: (code?: number, reason?: string) => void;
25
+ }
26
+ export declare class BridgeClient {
27
+ private ws;
28
+ private url;
29
+ private autoReconnect;
30
+ private reconnectDelay;
31
+ private connectTimeout;
32
+ private pendingCalls;
33
+ private activeStreams;
34
+ private wsProxies;
35
+ private outgoingStreams;
36
+ private connectPromise;
37
+ private isConnected;
38
+ constructor(options?: BridgeClientOptions);
39
+ /** Get the WebSocket URL */
40
+ getUrl(): string;
41
+ /** Get the HTTP URL for transfer endpoint */
42
+ getHttpUrl(): string;
43
+ /** Connect to the bridge */
44
+ connect(): Promise<void>;
45
+ /** Disconnect from the bridge */
46
+ disconnect(): void;
47
+ /** Check if connected */
48
+ get connected(): boolean;
49
+ private handleDisconnect;
50
+ /** Call an RPC method */
51
+ call(method: string, params: unknown[], timeoutMs?: number): Promise<unknown>;
52
+ /** Create a proxied WebSocket to a Durable Object */
53
+ createWsProxy(binding: string, id: string, url: string, headers?: [string, string][]): Promise<{
54
+ wid: number;
55
+ send: (data: Uint8Array | string) => void;
56
+ close: (code?: number, reason?: string) => void;
57
+ onMessage: (handler: (data: Uint8Array | string) => void) => void;
58
+ onClose: (handler: (code?: number, reason?: string) => void) => void;
59
+ }>;
60
+ /** Create a readable stream that pulls from the bridge */
61
+ createReadableStream(sid: number): ReadableStream<Uint8Array>;
62
+ private handleMessage;
63
+ private handleJsonMessage;
64
+ private handleBinaryMessage;
65
+ private handleRpcOk;
66
+ private handleRpcErr;
67
+ private handleEvent;
68
+ private handleStreamPull;
69
+ private pumpStream;
70
+ private handleStreamChunk;
71
+ private handleStreamEnd;
72
+ private handleStreamAbort;
73
+ private handleWsData;
74
+ private handleWsClose;
75
+ private ensureConnected;
76
+ private send;
77
+ }
78
+ /** Get or create the default bridge client */
79
+ export declare function getClient(options?: BridgeClientOptions): BridgeClient;
80
+ /** Reset the default client (for testing) */
81
+ export declare function resetClient(): void;
82
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/bridge/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { type JsonMsg, type RpcCall, type RpcOk, type RpcErr, type StreamPull, type StreamOpen, type StreamEnd, type StreamAbort, type WsOpen, type WsOpened, type WsClose, type EventMsg, type HttpTransfer, type DecodedBinaryFrame, BinaryKind, BinaryFlags, BINARY_HEADER_SIZE, encodeBinaryFrame, decodeBinaryFrame, isFin, isText, parseJsonMsg, stringifyJsonMsg, nextRpcId, nextStreamId, nextWsId, resetIdCounters, DEFAULT_CHUNK_SIZE, HTTP_TRANSFER_THRESHOLD, DEFAULT_BRIDGE_PORT, DEFAULT_HTTP_PORT } from './protocol';
2
+ export { type SerializedRequest, type SerializedResponse, type BodyRef, serializeRequest, deserializeRequest, serializeResponse, deserializeResponse, serializeValue, deserializeValue, serializeDOId } from './serialization';
3
+ export { type BridgeClientOptions, type PendingCall, BridgeClient, getClient } from './client';
4
+ export { type EnvProxyOptions, type BindingHints, createEnvProxy, bridgeEnv, env, initEnv, setBindingHints } from './proxy';
5
+ export { startMiniflare, startMiniflareFromConfig, getMiniflare, stopMiniflare, type MiniflareInstance, type MiniflareOptions } from './miniflare';
6
+ export { default as gateway } from './server';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/bridge/index.ts"],"names":[],"mappings":"AAKA,OAAO,EACN,KAAK,OAAO,EACZ,KAAK,OAAO,EACZ,KAAK,KAAK,EACV,KAAK,MAAM,EACX,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,MAAM,EACX,KAAK,QAAQ,EACb,KAAK,OAAO,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,kBAAkB,EACvB,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,KAAK,EACL,MAAM,EACN,YAAY,EACZ,gBAAgB,EAChB,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,EACnB,iBAAiB,EACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EACN,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,OAAO,EACZ,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,aAAa,EACb,MAAM,iBAAiB,CAAA;AAGxB,OAAO,EACN,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,YAAY,EACZ,SAAS,EACT,MAAM,UAAU,CAAA;AAGjB,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,cAAc,EACd,SAAS,EACT,GAAG,EACH,OAAO,EACP,eAAe,EACf,MAAM,SAAS,CAAA;AAGhB,OAAO,EACN,cAAc,EACd,wBAAwB,EACxB,YAAY,EACZ,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,MAAM,aAAa,CAAA;AAGpB,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,UAAU,CAAA"}