pi-cloudflare 0.1.0

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 (410) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +67 -0
  3. package/bin/setup.mjs +103 -0
  4. package/dist/auth-flow.d.ts +15 -0
  5. package/dist/auth-flow.d.ts.map +1 -0
  6. package/dist/auth-flow.js +90 -0
  7. package/dist/auth-flow.js.map +1 -0
  8. package/dist/client.d.ts +18 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +47 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/config.d.ts +13 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +10 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/index.d.ts +24 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +109 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/oauth.d.ts +44 -0
  21. package/dist/oauth.d.ts.map +1 -0
  22. package/dist/oauth.js +135 -0
  23. package/dist/oauth.js.map +1 -0
  24. package/dist/proxy.d.ts +29 -0
  25. package/dist/proxy.d.ts.map +1 -0
  26. package/dist/proxy.js +39 -0
  27. package/dist/proxy.js.map +1 -0
  28. package/dist/servers.d.ts +19 -0
  29. package/dist/servers.d.ts.map +1 -0
  30. package/dist/servers.js +40 -0
  31. package/dist/servers.js.map +1 -0
  32. package/dist/token-store.d.ts +23 -0
  33. package/dist/token-store.d.ts.map +1 -0
  34. package/dist/token-store.js +47 -0
  35. package/dist/token-store.js.map +1 -0
  36. package/package.json +67 -0
  37. package/skills/agents-sdk/SKILL.md +221 -0
  38. package/skills/agents-sdk/references/browse-the-web.md +63 -0
  39. package/skills/agents-sdk/references/callable.md +92 -0
  40. package/skills/agents-sdk/references/client-sdk.md +110 -0
  41. package/skills/agents-sdk/references/codemode.md +110 -0
  42. package/skills/agents-sdk/references/configuration.md +72 -0
  43. package/skills/agents-sdk/references/durable-execution.md +51 -0
  44. package/skills/agents-sdk/references/email.md +146 -0
  45. package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
  46. package/skills/agents-sdk/references/mcp.md +188 -0
  47. package/skills/agents-sdk/references/observability.md +44 -0
  48. package/skills/agents-sdk/references/queue-retries.md +79 -0
  49. package/skills/agents-sdk/references/routing.md +75 -0
  50. package/skills/agents-sdk/references/server-driven-messages.md +63 -0
  51. package/skills/agents-sdk/references/state-scheduling.md +171 -0
  52. package/skills/agents-sdk/references/streaming-chat.md +198 -0
  53. package/skills/agents-sdk/references/think.md +112 -0
  54. package/skills/agents-sdk/references/voice.md +68 -0
  55. package/skills/agents-sdk/references/webhooks-push.md +86 -0
  56. package/skills/agents-sdk/references/workflows.md +132 -0
  57. package/skills/cloudflare/SKILL.md +248 -0
  58. package/skills/cloudflare/references/agents-sdk/README.md +89 -0
  59. package/skills/cloudflare/references/agents-sdk/api.md +190 -0
  60. package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
  61. package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
  62. package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
  63. package/skills/cloudflare/references/ai-gateway/README.md +175 -0
  64. package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
  65. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
  66. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  67. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
  68. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
  69. package/skills/cloudflare/references/ai-search/README.md +138 -0
  70. package/skills/cloudflare/references/ai-search/api.md +87 -0
  71. package/skills/cloudflare/references/ai-search/configuration.md +88 -0
  72. package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
  73. package/skills/cloudflare/references/ai-search/patterns.md +85 -0
  74. package/skills/cloudflare/references/analytics-engine/README.md +94 -0
  75. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  76. package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
  77. package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
  78. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  79. package/skills/cloudflare/references/api/README.md +66 -0
  80. package/skills/cloudflare/references/api/api.md +204 -0
  81. package/skills/cloudflare/references/api/configuration.md +160 -0
  82. package/skills/cloudflare/references/api/gotchas.md +225 -0
  83. package/skills/cloudflare/references/api/patterns.md +204 -0
  84. package/skills/cloudflare/references/api-shield/README.md +44 -0
  85. package/skills/cloudflare/references/api-shield/api.md +141 -0
  86. package/skills/cloudflare/references/api-shield/configuration.md +192 -0
  87. package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
  88. package/skills/cloudflare/references/api-shield/patterns.md +180 -0
  89. package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
  90. package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
  91. package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
  92. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
  93. package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
  94. package/skills/cloudflare/references/artifacts/README.md +79 -0
  95. package/skills/cloudflare/references/artifacts/api.md +128 -0
  96. package/skills/cloudflare/references/artifacts/configuration.md +92 -0
  97. package/skills/cloudflare/references/bindings/README.md +122 -0
  98. package/skills/cloudflare/references/bindings/api.md +203 -0
  99. package/skills/cloudflare/references/bindings/configuration.md +188 -0
  100. package/skills/cloudflare/references/bindings/gotchas.md +208 -0
  101. package/skills/cloudflare/references/bindings/patterns.md +200 -0
  102. package/skills/cloudflare/references/bot-management/README.md +94 -0
  103. package/skills/cloudflare/references/bot-management/api.md +169 -0
  104. package/skills/cloudflare/references/bot-management/configuration.md +163 -0
  105. package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
  106. package/skills/cloudflare/references/bot-management/patterns.md +182 -0
  107. package/skills/cloudflare/references/browser-rendering/README.md +78 -0
  108. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  109. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  110. package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
  111. package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
  112. package/skills/cloudflare/references/c3/README.md +111 -0
  113. package/skills/cloudflare/references/c3/api.md +71 -0
  114. package/skills/cloudflare/references/c3/configuration.md +81 -0
  115. package/skills/cloudflare/references/c3/gotchas.md +92 -0
  116. package/skills/cloudflare/references/c3/patterns.md +82 -0
  117. package/skills/cloudflare/references/cache-reserve/README.md +147 -0
  118. package/skills/cloudflare/references/cache-reserve/api.md +194 -0
  119. package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
  120. package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
  121. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  122. package/skills/cloudflare/references/containers/README.md +85 -0
  123. package/skills/cloudflare/references/containers/api.md +187 -0
  124. package/skills/cloudflare/references/containers/configuration.md +188 -0
  125. package/skills/cloudflare/references/containers/gotchas.md +178 -0
  126. package/skills/cloudflare/references/containers/patterns.md +202 -0
  127. package/skills/cloudflare/references/cron-triggers/README.md +99 -0
  128. package/skills/cloudflare/references/cron-triggers/api.md +196 -0
  129. package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
  130. package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
  131. package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
  132. package/skills/cloudflare/references/d1/README.md +133 -0
  133. package/skills/cloudflare/references/d1/api.md +196 -0
  134. package/skills/cloudflare/references/d1/configuration.md +191 -0
  135. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  136. package/skills/cloudflare/references/d1/patterns.md +189 -0
  137. package/skills/cloudflare/references/ddos/README.md +41 -0
  138. package/skills/cloudflare/references/ddos/api.md +164 -0
  139. package/skills/cloudflare/references/ddos/configuration.md +93 -0
  140. package/skills/cloudflare/references/ddos/gotchas.md +107 -0
  141. package/skills/cloudflare/references/ddos/patterns.md +174 -0
  142. package/skills/cloudflare/references/do-storage/README.md +75 -0
  143. package/skills/cloudflare/references/do-storage/api.md +102 -0
  144. package/skills/cloudflare/references/do-storage/configuration.md +112 -0
  145. package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
  146. package/skills/cloudflare/references/do-storage/patterns.md +194 -0
  147. package/skills/cloudflare/references/do-storage/testing.md +183 -0
  148. package/skills/cloudflare/references/durable-objects/README.md +185 -0
  149. package/skills/cloudflare/references/durable-objects/api.md +187 -0
  150. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  151. package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
  152. package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
  153. package/skills/cloudflare/references/email-routing/README.md +89 -0
  154. package/skills/cloudflare/references/email-routing/api.md +195 -0
  155. package/skills/cloudflare/references/email-routing/configuration.md +186 -0
  156. package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
  157. package/skills/cloudflare/references/email-routing/patterns.md +229 -0
  158. package/skills/cloudflare/references/email-workers/README.md +151 -0
  159. package/skills/cloudflare/references/email-workers/api.md +237 -0
  160. package/skills/cloudflare/references/email-workers/configuration.md +112 -0
  161. package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
  162. package/skills/cloudflare/references/email-workers/patterns.md +102 -0
  163. package/skills/cloudflare/references/flagship/README.md +59 -0
  164. package/skills/cloudflare/references/flagship/api.md +390 -0
  165. package/skills/cloudflare/references/flagship/configuration.md +202 -0
  166. package/skills/cloudflare/references/flagship/gotchas.md +178 -0
  167. package/skills/cloudflare/references/flagship/patterns.md +469 -0
  168. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  169. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  170. package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
  171. package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
  172. package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
  173. package/skills/cloudflare/references/hyperdrive/README.md +82 -0
  174. package/skills/cloudflare/references/hyperdrive/api.md +143 -0
  175. package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
  176. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  177. package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
  178. package/skills/cloudflare/references/images/README.md +61 -0
  179. package/skills/cloudflare/references/images/api.md +96 -0
  180. package/skills/cloudflare/references/images/configuration.md +211 -0
  181. package/skills/cloudflare/references/images/gotchas.md +99 -0
  182. package/skills/cloudflare/references/images/patterns.md +115 -0
  183. package/skills/cloudflare/references/kv/README.md +89 -0
  184. package/skills/cloudflare/references/kv/api.md +160 -0
  185. package/skills/cloudflare/references/kv/configuration.md +144 -0
  186. package/skills/cloudflare/references/kv/gotchas.md +131 -0
  187. package/skills/cloudflare/references/kv/patterns.md +196 -0
  188. package/skills/cloudflare/references/miniflare/README.md +105 -0
  189. package/skills/cloudflare/references/miniflare/api.md +187 -0
  190. package/skills/cloudflare/references/miniflare/configuration.md +173 -0
  191. package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
  192. package/skills/cloudflare/references/miniflare/patterns.md +181 -0
  193. package/skills/cloudflare/references/network-interconnect/README.md +99 -0
  194. package/skills/cloudflare/references/network-interconnect/api.md +199 -0
  195. package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
  196. package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
  197. package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
  198. package/skills/cloudflare/references/observability/README.md +88 -0
  199. package/skills/cloudflare/references/observability/api.md +164 -0
  200. package/skills/cloudflare/references/observability/configuration.md +169 -0
  201. package/skills/cloudflare/references/observability/gotchas.md +115 -0
  202. package/skills/cloudflare/references/observability/patterns.md +105 -0
  203. package/skills/cloudflare/references/pages/README.md +88 -0
  204. package/skills/cloudflare/references/pages/api.md +204 -0
  205. package/skills/cloudflare/references/pages/configuration.md +201 -0
  206. package/skills/cloudflare/references/pages/gotchas.md +203 -0
  207. package/skills/cloudflare/references/pages/patterns.md +204 -0
  208. package/skills/cloudflare/references/pages-functions/README.md +98 -0
  209. package/skills/cloudflare/references/pages-functions/api.md +143 -0
  210. package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
  211. package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
  212. package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
  213. package/skills/cloudflare/references/pipelines/README.md +90 -0
  214. package/skills/cloudflare/references/pipelines/api.md +124 -0
  215. package/skills/cloudflare/references/pipelines/configuration.md +155 -0
  216. package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
  217. package/skills/cloudflare/references/pipelines/patterns.md +130 -0
  218. package/skills/cloudflare/references/pulumi/README.md +100 -0
  219. package/skills/cloudflare/references/pulumi/api.md +200 -0
  220. package/skills/cloudflare/references/pulumi/configuration.md +198 -0
  221. package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
  222. package/skills/cloudflare/references/pulumi/patterns.md +191 -0
  223. package/skills/cloudflare/references/queues/README.md +96 -0
  224. package/skills/cloudflare/references/queues/api.md +206 -0
  225. package/skills/cloudflare/references/queues/configuration.md +144 -0
  226. package/skills/cloudflare/references/queues/gotchas.md +206 -0
  227. package/skills/cloudflare/references/queues/patterns.md +220 -0
  228. package/skills/cloudflare/references/r2/README.md +95 -0
  229. package/skills/cloudflare/references/r2/api.md +200 -0
  230. package/skills/cloudflare/references/r2/configuration.md +165 -0
  231. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  232. package/skills/cloudflare/references/r2/patterns.md +193 -0
  233. package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
  234. package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
  235. package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
  236. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
  237. package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
  238. package/skills/cloudflare/references/r2-sql/README.md +64 -0
  239. package/skills/cloudflare/references/r2-sql/api.md +121 -0
  240. package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
  241. package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
  242. package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
  243. package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
  244. package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
  245. package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
  246. package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
  247. package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
  248. package/skills/cloudflare/references/realtimekit/README.md +113 -0
  249. package/skills/cloudflare/references/realtimekit/api.md +212 -0
  250. package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
  251. package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
  252. package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
  253. package/skills/cloudflare/references/sandbox/README.md +96 -0
  254. package/skills/cloudflare/references/sandbox/api.md +198 -0
  255. package/skills/cloudflare/references/sandbox/configuration.md +143 -0
  256. package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
  257. package/skills/cloudflare/references/sandbox/patterns.md +201 -0
  258. package/skills/cloudflare/references/secrets-store/README.md +74 -0
  259. package/skills/cloudflare/references/secrets-store/api.md +200 -0
  260. package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
  261. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  262. package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
  263. package/skills/cloudflare/references/smart-placement/README.md +138 -0
  264. package/skills/cloudflare/references/smart-placement/api.md +183 -0
  265. package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
  266. package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
  267. package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
  268. package/skills/cloudflare/references/snippets/README.md +68 -0
  269. package/skills/cloudflare/references/snippets/api.md +198 -0
  270. package/skills/cloudflare/references/snippets/configuration.md +227 -0
  271. package/skills/cloudflare/references/snippets/gotchas.md +86 -0
  272. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  273. package/skills/cloudflare/references/spectrum/README.md +52 -0
  274. package/skills/cloudflare/references/spectrum/api.md +181 -0
  275. package/skills/cloudflare/references/spectrum/configuration.md +194 -0
  276. package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
  277. package/skills/cloudflare/references/spectrum/patterns.md +196 -0
  278. package/skills/cloudflare/references/static-assets/README.md +65 -0
  279. package/skills/cloudflare/references/static-assets/api.md +199 -0
  280. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  281. package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
  282. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  283. package/skills/cloudflare/references/stream/README.md +114 -0
  284. package/skills/cloudflare/references/stream/api-live.md +195 -0
  285. package/skills/cloudflare/references/stream/api.md +199 -0
  286. package/skills/cloudflare/references/stream/configuration.md +141 -0
  287. package/skills/cloudflare/references/stream/gotchas.md +130 -0
  288. package/skills/cloudflare/references/stream/patterns.md +184 -0
  289. package/skills/cloudflare/references/tail-workers/README.md +89 -0
  290. package/skills/cloudflare/references/tail-workers/api.md +200 -0
  291. package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
  292. package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
  293. package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
  294. package/skills/cloudflare/references/terraform/README.md +102 -0
  295. package/skills/cloudflare/references/terraform/api.md +178 -0
  296. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  297. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  298. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  299. package/skills/cloudflare/references/tunnel/README.md +129 -0
  300. package/skills/cloudflare/references/tunnel/api.md +193 -0
  301. package/skills/cloudflare/references/tunnel/configuration.md +157 -0
  302. package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
  303. package/skills/cloudflare/references/tunnel/networking.md +168 -0
  304. package/skills/cloudflare/references/tunnel/patterns.md +192 -0
  305. package/skills/cloudflare/references/turn/README.md +82 -0
  306. package/skills/cloudflare/references/turn/api.md +239 -0
  307. package/skills/cloudflare/references/turn/configuration.md +179 -0
  308. package/skills/cloudflare/references/turn/gotchas.md +231 -0
  309. package/skills/cloudflare/references/turn/patterns.md +213 -0
  310. package/skills/cloudflare/references/turnstile/README.md +99 -0
  311. package/skills/cloudflare/references/turnstile/api.md +240 -0
  312. package/skills/cloudflare/references/turnstile/configuration.md +222 -0
  313. package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
  314. package/skills/cloudflare/references/turnstile/patterns.md +193 -0
  315. package/skills/cloudflare/references/vectorize/README.md +133 -0
  316. package/skills/cloudflare/references/vectorize/api.md +88 -0
  317. package/skills/cloudflare/references/vectorize/configuration.md +88 -0
  318. package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
  319. package/skills/cloudflare/references/vectorize/patterns.md +90 -0
  320. package/skills/cloudflare/references/waf/README.md +113 -0
  321. package/skills/cloudflare/references/waf/api.md +202 -0
  322. package/skills/cloudflare/references/waf/configuration.md +203 -0
  323. package/skills/cloudflare/references/waf/gotchas.md +204 -0
  324. package/skills/cloudflare/references/waf/patterns.md +197 -0
  325. package/skills/cloudflare/references/web-analytics/README.md +141 -0
  326. package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
  327. package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
  328. package/skills/cloudflare/references/web-analytics/integration.md +60 -0
  329. package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
  330. package/skills/cloudflare/references/workerd/README.md +78 -0
  331. package/skills/cloudflare/references/workerd/api.md +185 -0
  332. package/skills/cloudflare/references/workerd/configuration.md +183 -0
  333. package/skills/cloudflare/references/workerd/gotchas.md +139 -0
  334. package/skills/cloudflare/references/workerd/patterns.md +192 -0
  335. package/skills/cloudflare/references/workers/README.md +108 -0
  336. package/skills/cloudflare/references/workers/api.md +195 -0
  337. package/skills/cloudflare/references/workers/configuration.md +185 -0
  338. package/skills/cloudflare/references/workers/frameworks.md +197 -0
  339. package/skills/cloudflare/references/workers/gotchas.md +137 -0
  340. package/skills/cloudflare/references/workers/patterns.md +198 -0
  341. package/skills/cloudflare/references/workers-ai/README.md +197 -0
  342. package/skills/cloudflare/references/workers-ai/api.md +112 -0
  343. package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
  344. package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
  345. package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
  346. package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
  347. package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
  348. package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
  349. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  350. package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
  351. package/skills/cloudflare/references/workers-playground/README.md +127 -0
  352. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  353. package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
  354. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  355. package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
  356. package/skills/cloudflare/references/workers-vpc/README.md +127 -0
  357. package/skills/cloudflare/references/workers-vpc/api.md +202 -0
  358. package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
  359. package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
  360. package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
  361. package/skills/cloudflare/references/workflows/README.md +77 -0
  362. package/skills/cloudflare/references/workflows/api.md +218 -0
  363. package/skills/cloudflare/references/workflows/configuration.md +152 -0
  364. package/skills/cloudflare/references/workflows/gotchas.md +90 -0
  365. package/skills/cloudflare/references/workflows/patterns.md +175 -0
  366. package/skills/cloudflare/references/wrangler/README.md +135 -0
  367. package/skills/cloudflare/references/wrangler/api.md +188 -0
  368. package/skills/cloudflare/references/wrangler/configuration.md +197 -0
  369. package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
  370. package/skills/cloudflare/references/wrangler/patterns.md +209 -0
  371. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
  372. package/skills/cloudflare/references/zaraz/README.md +111 -0
  373. package/skills/cloudflare/references/zaraz/api.md +112 -0
  374. package/skills/cloudflare/references/zaraz/configuration.md +90 -0
  375. package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
  376. package/skills/cloudflare/references/zaraz/patterns.md +74 -0
  377. package/skills/cloudflare-email-service/SKILL.md +103 -0
  378. package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
  379. package/skills/cloudflare-email-service/references/deliverability.md +285 -0
  380. package/skills/cloudflare-email-service/references/rest-api.md +184 -0
  381. package/skills/cloudflare-email-service/references/routing.md +199 -0
  382. package/skills/cloudflare-email-service/references/sending.md +252 -0
  383. package/skills/cloudflare-one/SKILL.md +176 -0
  384. package/skills/cloudflare-one-migrations/SKILL.md +110 -0
  385. package/skills/durable-objects/SKILL.md +186 -0
  386. package/skills/durable-objects/references/rules.md +295 -0
  387. package/skills/durable-objects/references/testing.md +264 -0
  388. package/skills/durable-objects/references/workers.md +346 -0
  389. package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
  390. package/skills/sandbox-next/SKILL.md +91 -0
  391. package/skills/sandbox-next/references/api-quick-ref.md +94 -0
  392. package/skills/sandbox-next/references/examples.md +15 -0
  393. package/skills/sandbox-stable/SKILL.md +110 -0
  394. package/skills/turnstile-spin/README.md +51 -0
  395. package/skills/turnstile-spin/SKILL.md +330 -0
  396. package/skills/turnstile-spin/references/astro.md +199 -0
  397. package/skills/turnstile-spin/references/hugo.md +114 -0
  398. package/skills/turnstile-spin/references/nextjs-app.md +261 -0
  399. package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
  400. package/skills/turnstile-spin/references/sveltekit.md +191 -0
  401. package/skills/turnstile-spin/references/vanilla-html.md +157 -0
  402. package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
  403. package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
  404. package/skills/turnstile-spin/scripts/validate.sh +137 -0
  405. package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
  406. package/skills/turnstile-spin/tests/validation.md +62 -0
  407. package/skills/workers-best-practices/SKILL.md +127 -0
  408. package/skills/workers-best-practices/references/review.md +174 -0
  409. package/skills/workers-best-practices/references/rules.md +467 -0
  410. package/skills/wrangler/SKILL.md +922 -0
@@ -0,0 +1,191 @@
1
+ # Architecture Patterns
2
+
3
+ ## Component Resources
4
+
5
+ ```typescript
6
+ class WorkerApp extends pulumi.ComponentResource {
7
+ constructor(name: string, args: WorkerAppArgs, opts?) {
8
+ super("custom:cloudflare:WorkerApp", name, {}, opts);
9
+ const defaultOpts = {parent: this};
10
+
11
+ this.kv = new cloudflare.WorkersKvNamespace(`${name}-kv`, {accountId: args.accountId, title: `${name}-kv`}, defaultOpts);
12
+ this.worker = new cloudflare.WorkerScript(`${name}-worker`, {
13
+ accountId: args.accountId, name: `${name}-worker`, content: args.workerCode,
14
+ module: true, kvNamespaceBindings: [{name: "KV", namespaceId: this.kv.id}],
15
+ }, defaultOpts);
16
+ this.domain = new cloudflare.WorkersDomain(`${name}-domain`, {
17
+ accountId: args.accountId, hostname: args.domain, service: this.worker.name,
18
+ }, defaultOpts);
19
+ }
20
+ }
21
+ ```
22
+
23
+ ## Full-Stack Worker App
24
+
25
+ ```typescript
26
+ const kv = new cloudflare.WorkersKvNamespace("cache", {accountId, title: "api-cache"});
27
+ const db = new cloudflare.D1Database("db", {accountId, name: "app-database"});
28
+ const bucket = new cloudflare.R2Bucket("assets", {accountId, name: "app-assets"});
29
+
30
+ const apiWorker = new cloudflare.WorkerScript("api", {
31
+ accountId, name: "api-worker", content: fs.readFileSync("./dist/api.js", "utf8"),
32
+ module: true, kvNamespaceBindings: [{name: "CACHE", namespaceId: kv.id}],
33
+ d1DatabaseBindings: [{name: "DB", databaseId: db.id}],
34
+ r2BucketBindings: [{name: "ASSETS", bucketName: bucket.name}],
35
+ });
36
+ ```
37
+
38
+ ## Multi-Environment Setup
39
+
40
+ ```typescript
41
+ const stack = pulumi.getStack();
42
+ const worker = new cloudflare.WorkerScript(`worker-${stack}`, {
43
+ accountId, name: `my-worker-${stack}`, content: code,
44
+ plainTextBindings: [{name: "ENVIRONMENT", text: stack}],
45
+ });
46
+ ```
47
+
48
+ ## Queue-Based Processing
49
+
50
+ ```typescript
51
+ const queue = new cloudflare.Queue("processing-queue", {accountId, name: "image-processing"});
52
+
53
+ // Producer: API receives requests
54
+ const apiWorker = new cloudflare.WorkerScript("api", {
55
+ accountId, name: "api-worker", content: apiCode,
56
+ queueBindings: [{name: "PROCESSING_QUEUE", queue: queue.id}],
57
+ });
58
+
59
+ // Consumer: Process async
60
+ const processorWorker = new cloudflare.WorkerScript("processor", {
61
+ accountId, name: "processor-worker", content: processorCode,
62
+ queueConsumers: [{queue: queue.name, maxBatchSize: 10, maxRetries: 3, maxWaitTimeMs: 5000}],
63
+ r2BucketBindings: [{name: "OUTPUT_BUCKET", bucketName: outputBucket.name}],
64
+ });
65
+ ```
66
+
67
+ ## Microservices with Service Bindings
68
+
69
+ ```typescript
70
+ const authWorker = new cloudflare.WorkerScript("auth", {accountId, name: "auth-service", content: authCode});
71
+ const apiWorker = new cloudflare.WorkerScript("api", {
72
+ accountId, name: "api-service", content: apiCode,
73
+ serviceBindings: [{name: "AUTH", service: authWorker.name}],
74
+ });
75
+ ```
76
+
77
+ ## Event-Driven Architecture
78
+
79
+ ```typescript
80
+ const eventQueue = new cloudflare.Queue("events", {accountId, name: "event-bus"});
81
+ const producer = new cloudflare.WorkerScript("producer", {
82
+ accountId, name: "api-producer", content: producerCode,
83
+ queueBindings: [{name: "EVENTS", queue: eventQueue.id}],
84
+ });
85
+ const consumer = new cloudflare.WorkerScript("consumer", {
86
+ accountId, name: "email-consumer", content: consumerCode,
87
+ queueConsumers: [{queue: eventQueue.name, maxBatchSize: 10}],
88
+ });
89
+ ```
90
+
91
+ ## v6.x Versioned Deployments (Blue-Green/Canary)
92
+
93
+ ```typescript
94
+ const worker = new cloudflare.Worker("api", {accountId, name: "api-worker"});
95
+ const v1 = new cloudflare.WorkerVersion("v1", {accountId, workerId: worker.id, content: fs.readFileSync("./dist/v1.js", "utf8"), compatibilityDate: "2025-01-01"});
96
+ const v2 = new cloudflare.WorkerVersion("v2", {accountId, workerId: worker.id, content: fs.readFileSync("./dist/v2.js", "utf8"), compatibilityDate: "2025-01-01"});
97
+
98
+ // Gradual rollout: 10% v2, 90% v1
99
+ const deployment = new cloudflare.WorkersDeployment("canary", {
100
+ accountId, workerId: worker.id,
101
+ versions: [{versionId: v2.id, percentage: 10}, {versionId: v1.id, percentage: 90}],
102
+ kvNamespaceBindings: [{name: "MY_KV", namespaceId: kv.id}],
103
+ });
104
+ ```
105
+
106
+ **Use:** Canary releases, A/B testing, blue-green. Most apps use `WorkerScript` (auto-versioning).
107
+
108
+ ## Wrangler.toml Generation (Bridge IaC with Local Dev)
109
+
110
+ Generate wrangler.toml from Pulumi config to keep local dev in sync:
111
+
112
+ ```typescript
113
+ import * as command from "@pulumi/command";
114
+
115
+ const workerConfig = {
116
+ name: "my-worker",
117
+ compatibilityDate: "2025-01-01",
118
+ compatibilityFlags: ["nodejs_compat"],
119
+ };
120
+
121
+ // Create resources
122
+ const kv = new cloudflare.WorkersKvNamespace("kv", {accountId, title: "my-kv"});
123
+ const db = new cloudflare.D1Database("db", {accountId, name: "my-db"});
124
+ const bucket = new cloudflare.R2Bucket("bucket", {accountId, name: "my-bucket"});
125
+
126
+ // Generate wrangler.toml after resources created
127
+ const wranglerGen = new command.local.Command("gen-wrangler", {
128
+ create: pulumi.interpolate`cat > wrangler.toml <<EOF
129
+ name = "${workerConfig.name}"
130
+ main = "src/index.ts"
131
+ compatibility_date = "${workerConfig.compatibilityDate}"
132
+ compatibility_flags = ${JSON.stringify(workerConfig.compatibilityFlags)}
133
+
134
+ [[kv_namespaces]]
135
+ binding = "MY_KV"
136
+ id = "${kv.id}"
137
+
138
+ [[d1_databases]]
139
+ binding = "DB"
140
+ database_id = "${db.id}"
141
+ database_name = "${db.name}"
142
+
143
+ [[r2_buckets]]
144
+ binding = "MY_BUCKET"
145
+ bucket_name = "${bucket.name}"
146
+ EOF`,
147
+ }, {dependsOn: [kv, db, bucket]});
148
+
149
+ // Deploy worker after wrangler.toml generated
150
+ const worker = new cloudflare.WorkerScript("worker", {
151
+ accountId, name: workerConfig.name, content: code,
152
+ compatibilityDate: workerConfig.compatibilityDate,
153
+ compatibilityFlags: workerConfig.compatibilityFlags,
154
+ kvNamespaceBindings: [{name: "MY_KV", namespaceId: kv.id}],
155
+ d1DatabaseBindings: [{name: "DB", databaseId: db.id}],
156
+ r2BucketBindings: [{name: "MY_BUCKET", bucketName: bucket.name}],
157
+ }, {dependsOn: [wranglerGen]});
158
+ ```
159
+
160
+ **Benefits:**
161
+ - `wrangler dev` uses same bindings as production
162
+ - No config drift between Pulumi and local dev
163
+ - Single source of truth (Pulumi config)
164
+
165
+ **Alternative:** Read wrangler.toml in Pulumi (reverse direction) if wrangler is source of truth
166
+
167
+ ## Build + Deploy Pattern
168
+
169
+ ```typescript
170
+ import * as command from "@pulumi/command";
171
+ const build = new command.local.Command("build", {create: "npm run build", dir: "./worker"});
172
+ const worker = new cloudflare.WorkerScript("worker", {
173
+ accountId, name: "my-worker",
174
+ content: build.stdout.apply(() => fs.readFileSync("./worker/dist/index.js", "utf8")),
175
+ }, {dependsOn: [build]});
176
+ ```
177
+
178
+ ## Content SHA Pattern (Force Updates)
179
+
180
+ Prevent false "no changes" detections:
181
+
182
+ ```typescript
183
+ const version = Date.now().toString();
184
+ const worker = new cloudflare.WorkerScript("worker", {
185
+ accountId, name: "my-worker", content: code,
186
+ plainTextBindings: [{name: "VERSION", text: version}], // Forces deployment
187
+ });
188
+ ```
189
+
190
+ ---
191
+ See: [README.md](./README.md), [configuration.md](./configuration.md), [api.md](./api.md), [gotchas.md](./gotchas.md)
@@ -0,0 +1,96 @@
1
+ # Cloudflare Queues
2
+
3
+ Flexible message queuing for async task processing with guaranteed at-least-once delivery and configurable batching.
4
+
5
+ ## Overview
6
+
7
+ Queues provide:
8
+ - At-least-once delivery guarantee
9
+ - Push-based (Worker) and pull-based (HTTP) consumers
10
+ - Configurable batching and retries
11
+ - Dead Letter Queues (DLQ)
12
+ - Delays up to 12 hours
13
+
14
+ **Use cases:** Async processing, API buffering, rate limiting, event workflows, deferred jobs
15
+
16
+ ## Quick Start
17
+
18
+ ```bash
19
+ wrangler queues create my-queue
20
+ wrangler queues consumer add my-queue my-worker
21
+ ```
22
+
23
+ ```typescript
24
+ // Producer
25
+ await env.MY_QUEUE.send({ userId: 123, action: 'notify' });
26
+
27
+ // Consumer (with proper error handling)
28
+ export default {
29
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
30
+ for (const msg of batch.messages) {
31
+ try {
32
+ await process(msg.body);
33
+ msg.ack();
34
+ } catch (error) {
35
+ msg.retry({ delaySeconds: 60 });
36
+ }
37
+ }
38
+ }
39
+ };
40
+ ```
41
+
42
+ ## Critical Warnings
43
+
44
+ **Before using Queues, understand these production mistakes:**
45
+
46
+ 1. **Uncaught errors retry ENTIRE batch** (not just failed message). Always use per-message try/catch.
47
+ 2. **Messages not ack'd/retry'd will auto-retry forever** until max_retries. Always explicitly handle each message.
48
+
49
+ See [gotchas.md](./gotchas.md) for detailed solutions.
50
+
51
+ ## Core Operations
52
+
53
+ | Operation | Purpose | Limit |
54
+ |-----------|---------|-------|
55
+ | `send(body, options?)` | Publish message | 128 KB |
56
+ | `sendBatch(messages)` | Bulk publish | 100 msgs/256 KB |
57
+ | `message.ack()` | Acknowledge success | - |
58
+ | `message.retry(options?)` | Retry with delay | - |
59
+ | `batch.ackAll()` | Ack entire batch | - |
60
+
61
+ ## Architecture
62
+
63
+ ```
64
+ [Producer Worker] → [Queue] → [Consumer Worker/HTTP] → [Processing]
65
+ ```
66
+
67
+ - Max 10,000 queues per account
68
+ - 5,000 msgs/second per queue
69
+ - 4-14 day retention (configurable)
70
+
71
+ ## Reading Order
72
+
73
+ **New to Queues?** Start here:
74
+ 1. [configuration.md](./configuration.md) - Set up queues, bindings, consumers
75
+ 2. [api.md](./api.md) - Send messages, handle batches, ack/retry patterns
76
+ 3. [patterns.md](./patterns.md) - Real-world examples and integrations
77
+ 4. [gotchas.md](./gotchas.md) - Critical warnings and troubleshooting
78
+
79
+ **Task-based routing:**
80
+ - Setup queue → [configuration.md](./configuration.md)
81
+ - Send/receive messages → [api.md](./api.md)
82
+ - Implement specific pattern → [patterns.md](./patterns.md)
83
+ - Debug/troubleshoot → [gotchas.md](./gotchas.md)
84
+
85
+ ## In This Reference
86
+
87
+ - [configuration.md](./configuration.md) - wrangler.jsonc setup, producer/consumer config, DLQ, content types
88
+ - [api.md](./api.md) - Send/batch methods, queue handler, ack/retry rules, type-safe patterns
89
+ - [patterns.md](./patterns.md) - Async tasks, buffering, rate limiting, D1/Workflows/DO integrations
90
+ - [gotchas.md](./gotchas.md) - Critical batch error handling, idempotency, error classification
91
+
92
+ ## See Also
93
+
94
+ - [workers](../workers/) - Worker runtime for producers/consumers
95
+ - [r2](../r2/) - Process R2 event notifications via queues
96
+ - [d1](../d1/) - Batch write to D1 from queue consumers
@@ -0,0 +1,206 @@
1
+ # Queues API Reference
2
+
3
+ ## Producer: Send Messages
4
+
5
+ ```typescript
6
+ // Basic send
7
+ await env.MY_QUEUE.send({ url: request.url, timestamp: Date.now() });
8
+
9
+ // Options: delay (max 43200s), contentType (json|text|bytes|v8)
10
+ await env.MY_QUEUE.send(message, { delaySeconds: 600 });
11
+ await env.MY_QUEUE.send(message, { delaySeconds: 0 }); // Override queue default
12
+
13
+ // Batch (up to 100 msgs or 256 KB)
14
+ await env.MY_QUEUE.sendBatch([
15
+ { body: 'msg1' },
16
+ { body: 'msg2' },
17
+ { body: 'msg3', options: { delaySeconds: 300 } }
18
+ ]);
19
+
20
+ // Non-blocking with ctx.waitUntil - send continues after response
21
+ ctx.waitUntil(env.MY_QUEUE.send({ data: 'async' }));
22
+
23
+ // Background tasks in queue consumer
24
+ export default {
25
+ async queue(batch: MessageBatch, env: Env, ctx: ExecutionContext): Promise<void> {
26
+ for (const msg of batch.messages) {
27
+ await processMessage(msg.body);
28
+
29
+ // Fire-and-forget analytics (doesn't block ack)
30
+ ctx.waitUntil(
31
+ env.ANALYTICS_QUEUE.send({ messageId: msg.id, processedAt: Date.now() })
32
+ );
33
+
34
+ msg.ack();
35
+ }
36
+ }
37
+ };
38
+ ```
39
+
40
+ ## Consumer: Push-based (Worker)
41
+
42
+ ```typescript
43
+ // Type-safe handler with ExportedHandler
44
+ interface Env {
45
+ MY_QUEUE: Queue;
46
+ DB: D1Database;
47
+ }
48
+
49
+ export default {
50
+ async queue(batch: MessageBatch<MessageBody>, env: Env, ctx: ExecutionContext): Promise<void> {
51
+ // batch.queue, batch.messages.length
52
+ for (const msg of batch.messages) {
53
+ // msg.id, msg.body, msg.timestamp, msg.attempts
54
+ try {
55
+ await processMessage(msg.body);
56
+ msg.ack();
57
+ } catch (error) {
58
+ msg.retry({ delaySeconds: 600 });
59
+ }
60
+ }
61
+ }
62
+ } satisfies ExportedHandler<Env>;
63
+ ```
64
+
65
+ **CRITICAL WARNINGS:**
66
+
67
+ 1. **Messages not explicitly ack'd or retry'd will auto-retry indefinitely** until `max_retries` is reached. Always call `msg.ack()` or `msg.retry()` for each message.
68
+
69
+ 2. **Throwing uncaught errors retries the ENTIRE batch**, not just the failed message. Always wrap individual message processing in try/catch and call `msg.retry()` explicitly per message.
70
+
71
+ ```typescript
72
+ // ❌ BAD: Uncaught error retries entire batch
73
+ async queue(batch: MessageBatch): Promise<void> {
74
+ for (const msg of batch.messages) {
75
+ await riskyOperation(msg.body); // If this throws, entire batch retries
76
+ msg.ack();
77
+ }
78
+ }
79
+
80
+ // ✅ GOOD: Catch per message, handle individually
81
+ async queue(batch: MessageBatch): Promise<void> {
82
+ for (const msg of batch.messages) {
83
+ try {
84
+ await riskyOperation(msg.body);
85
+ msg.ack();
86
+ } catch (error) {
87
+ msg.retry({ delaySeconds: 60 });
88
+ }
89
+ }
90
+ }
91
+ ```
92
+
93
+ ## Ack/Retry Precedence Rules
94
+
95
+ 1. **Per-message calls take precedence**: If you call both `msg.ack()` and `msg.retry()`, last call wins
96
+ 2. **Batch calls don't override**: `batch.ackAll()` only affects messages without explicit ack/retry
97
+ 3. **No action = automatic retry**: Messages with no explicit action retry with configured delay
98
+
99
+ ```typescript
100
+ async queue(batch: MessageBatch): Promise<void> {
101
+ for (const msg of batch.messages) {
102
+ msg.ack(); // Message marked for ack
103
+ msg.retry(); // Overrides ack - message will retry
104
+ }
105
+
106
+ batch.ackAll(); // Only affects messages not explicitly handled above
107
+ }
108
+ ```
109
+
110
+ ## Batch Operations
111
+
112
+ ```typescript
113
+ // Acknowledge entire batch
114
+ try {
115
+ await bulkProcess(batch.messages);
116
+ batch.ackAll();
117
+ } catch (error) {
118
+ batch.retryAll({ delaySeconds: 300 });
119
+ }
120
+ ```
121
+
122
+ ## Exponential Backoff
123
+
124
+ ```typescript
125
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
126
+ for (const msg of batch.messages) {
127
+ try {
128
+ await processMessage(msg.body);
129
+ msg.ack();
130
+ } catch (error) {
131
+ // 30s, 60s, 120s, 240s, 480s, ... up to 12h max
132
+ const delay = Math.min(30 * (2 ** msg.attempts), 43200);
133
+ msg.retry({ delaySeconds: delay });
134
+ }
135
+ }
136
+ }
137
+ ```
138
+
139
+ ## Multiple Queues, Single Consumer
140
+
141
+ ```typescript
142
+ export default {
143
+ async queue(batch: MessageBatch, env: Env): Promise<void> {
144
+ switch (batch.queue) {
145
+ case 'high-priority': await processUrgent(batch.messages); break;
146
+ case 'low-priority': await processDeferred(batch.messages); break;
147
+ case 'email': await sendEmails(batch.messages); break;
148
+ default: batch.retryAll();
149
+ }
150
+ }
151
+ };
152
+ ```
153
+
154
+ ## Consumer: Pull-based (HTTP)
155
+
156
+ ```typescript
157
+ // Pull messages
158
+ const response = await fetch(
159
+ `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/queues/${QUEUE_ID}/messages/pull`,
160
+ {
161
+ method: 'POST',
162
+ headers: { 'authorization': `Bearer ${API_TOKEN}`, 'content-type': 'application/json' },
163
+ body: JSON.stringify({ visibility_timeout_ms: 6000, batch_size: 50 })
164
+ }
165
+ );
166
+
167
+ const data = await response.json();
168
+
169
+ // Acknowledge
170
+ await fetch(
171
+ `https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/queues/${QUEUE_ID}/messages/ack`,
172
+ {
173
+ method: 'POST',
174
+ headers: { 'authorization': `Bearer ${API_TOKEN}`, 'content-type': 'application/json' },
175
+ body: JSON.stringify({
176
+ acks: [{ lease_id: msg.lease_id }],
177
+ retries: [{ lease_id: msg2.lease_id, delay_seconds: 600 }]
178
+ })
179
+ }
180
+ );
181
+ ```
182
+
183
+ ## Interfaces
184
+
185
+ ```typescript
186
+ interface MessageBatch<Body = unknown> {
187
+ readonly queue: string;
188
+ readonly messages: Message<Body>[];
189
+ ackAll(): void;
190
+ retryAll(options?: QueueRetryOptions): void;
191
+ }
192
+
193
+ interface Message<Body = unknown> {
194
+ readonly id: string;
195
+ readonly timestamp: Date;
196
+ readonly body: Body;
197
+ readonly attempts: number;
198
+ ack(): void;
199
+ retry(options?: QueueRetryOptions): void;
200
+ }
201
+
202
+ interface QueueSendOptions {
203
+ contentType?: 'text' | 'bytes' | 'json' | 'v8';
204
+ delaySeconds?: number; // 0-43200
205
+ }
206
+ ```
@@ -0,0 +1,144 @@
1
+ # Queues Configuration
2
+
3
+ ## Create Queue
4
+
5
+ ```bash
6
+ wrangler queues create my-queue
7
+ wrangler queues create my-queue --retention-period-hours=336 # 14 days
8
+ wrangler queues create my-queue --delivery-delay-secs=300
9
+ ```
10
+
11
+ ## Producer Binding
12
+
13
+ **wrangler.jsonc:**
14
+ ```jsonc
15
+ {
16
+ "queues": {
17
+ "producers": [
18
+ {
19
+ "queue": "my-queue-name",
20
+ "binding": "MY_QUEUE",
21
+ "delivery_delay": 60 // Optional: default delay in seconds
22
+ }
23
+ ]
24
+ }
25
+ }
26
+ ```
27
+
28
+ ## Consumer Configuration (Push-based)
29
+
30
+ **wrangler.jsonc:**
31
+ ```jsonc
32
+ {
33
+ "queues": {
34
+ "consumers": [
35
+ {
36
+ "queue": "my-queue-name",
37
+ "max_batch_size": 10, // 1-100, default 10
38
+ "max_batch_timeout": 5, // 0-60s, default 5
39
+ "max_retries": 3, // default 3, max 100
40
+ "dead_letter_queue": "my-dlq", // optional
41
+ "retry_delay": 300 // optional: delay retries in seconds
42
+ }
43
+ ]
44
+ }
45
+ }
46
+ ```
47
+
48
+ ## Consumer Configuration (Pull-based)
49
+
50
+ **wrangler.jsonc:**
51
+ ```jsonc
52
+ {
53
+ "queues": {
54
+ "consumers": [
55
+ {
56
+ "queue": "my-queue-name",
57
+ "type": "http_pull",
58
+ "visibility_timeout_ms": 5000, // default 30000, max 12h
59
+ "max_retries": 5,
60
+ "dead_letter_queue": "my-dlq"
61
+ }
62
+ ]
63
+ }
64
+ }
65
+ ```
66
+
67
+ ## TypeScript Types
68
+
69
+ ```typescript
70
+ interface Env {
71
+ MY_QUEUE: Queue<MessageBody>;
72
+ ANALYTICS_QUEUE: Queue<AnalyticsEvent>;
73
+ }
74
+
75
+ interface MessageBody {
76
+ id: string;
77
+ action: 'create' | 'update' | 'delete';
78
+ data: Record<string, any>;
79
+ }
80
+
81
+ export default {
82
+ async queue(batch: MessageBatch<MessageBody>, env: Env): Promise<void> {
83
+ for (const msg of batch.messages) {
84
+ console.log(msg.body.action);
85
+ msg.ack();
86
+ }
87
+ }
88
+ } satisfies ExportedHandler<Env>;
89
+ ```
90
+
91
+ ## Content Type Selection
92
+
93
+ Choose content type based on consumer type and data requirements:
94
+
95
+ | Content Type | Use When | Readable By | Supports | Size |
96
+ |--------------|----------|-------------|----------|------|
97
+ | `json` | Pull consumers, dashboard visibility, simple objects | All (push/pull/dashboard) | JSON-serializable types only | Medium |
98
+ | `v8` | Push consumers only, complex JS objects | Push consumers only | Date, Map, Set, BigInt, typed arrays | Small |
99
+ | `text` | String-only payloads | All | Strings only | Smallest |
100
+ | `bytes` | Binary data (images, files) | All | ArrayBuffer, Uint8Array | Variable |
101
+
102
+ **Decision tree:**
103
+ 1. Need to view in dashboard or use pull consumer? → Use `json`
104
+ 2. Need Date, Map, Set, or other V8 types? → Use `v8` (push consumers only)
105
+ 3. Just strings? → Use `text`
106
+ 4. Binary data? → Use `bytes`
107
+
108
+ ```typescript
109
+ // JSON: Good for simple objects, pull consumers, dashboard visibility
110
+ await env.QUEUE.send({ id: 123, name: 'test' }, { contentType: 'json' });
111
+
112
+ // V8: Good for Date, Map, Set (push consumers only)
113
+ await env.QUEUE.send({
114
+ created: new Date(),
115
+ tags: new Set(['a', 'b'])
116
+ }, { contentType: 'v8' });
117
+
118
+ // Text: Simple strings
119
+ await env.QUEUE.send('process-user-123', { contentType: 'text' });
120
+
121
+ // Bytes: Binary data
122
+ await env.QUEUE.send(imageBuffer, { contentType: 'bytes' });
123
+ ```
124
+
125
+ **Default behavior:** If not specified, Cloudflare auto-selects `json` for JSON-serializable objects and `v8` for complex types.
126
+
127
+ **IMPORTANT:** `v8` messages cannot be read by pull consumers or viewed in the dashboard. Use `json` if you need visibility or pull-based consumption.
128
+
129
+ ## CLI Commands
130
+
131
+ ```bash
132
+ # Consumer management
133
+ wrangler queues consumer add my-queue my-worker --batch-size=50 --max-retries=5
134
+ wrangler queues consumer http add my-queue
135
+ wrangler queues consumer worker remove my-queue my-worker
136
+ wrangler queues consumer http remove my-queue
137
+
138
+ # Queue operations
139
+ wrangler queues list
140
+ wrangler queues pause my-queue
141
+ wrangler queues resume my-queue
142
+ wrangler queues purge my-queue
143
+ wrangler queues delete my-queue
144
+ ```