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,87 @@
1
+ # AI Search API Reference
2
+
3
+ ## Workers Binding
4
+
5
+ ```typescript
6
+ const answer = await env.AI.autorag("instance-name").aiSearch(options);
7
+ const results = await env.AI.autorag("instance-name").search(options);
8
+ const instances = await env.AI.autorag("_").listInstances();
9
+ ```
10
+
11
+ ## aiSearch() Options
12
+
13
+ ```typescript
14
+ interface AiSearchOptions {
15
+ query: string; // User query
16
+ model: string; // Workers AI model ID
17
+ system_prompt?: string; // LLM instructions
18
+ rewrite_query?: boolean; // Fix typos (default: false)
19
+ max_num_results?: number; // Max chunks (default: 10)
20
+ ranking_options?: { score_threshold?: number }; // 0.0-1.0 (default: 0.3)
21
+ reranking?: { enabled: boolean; model: string };
22
+ stream?: boolean; // Stream response (default: false)
23
+ filters?: Filter; // Metadata filters
24
+ page?: string; // Pagination token
25
+ }
26
+ ```
27
+
28
+ ## Response
29
+
30
+ ```typescript
31
+ interface AiSearchResponse {
32
+ search_query: string; // Query used (rewritten if enabled)
33
+ response: string; // AI-generated answer
34
+ data: SearchResult[]; // Retrieved chunks
35
+ has_more: boolean;
36
+ next_page?: string;
37
+ }
38
+
39
+ interface SearchResult {
40
+ id: string;
41
+ score: number;
42
+ content: string;
43
+ metadata: { filename: string; folder: string; timestamp: number };
44
+ }
45
+ ```
46
+
47
+ ## Filters
48
+
49
+ ```typescript
50
+ // Comparison
51
+ { column: "folder", operator: "gte", value: "docs/" }
52
+
53
+ // Compound
54
+ { operator: "and", filters: [
55
+ { column: "folder", operator: "gte", value: "docs/" },
56
+ { column: "timestamp", operator: "gte", value: 1704067200 }
57
+ ]}
58
+ ```
59
+
60
+ **Operators:** `eq`, `ne`, `gt`, `gte`, `lt`, `lte`
61
+
62
+ **Built-in metadata:** `filename`, `folder`, `timestamp` (Unix seconds)
63
+
64
+ ## Streaming
65
+
66
+ ```typescript
67
+ const stream = await env.AI.autorag("docs").aiSearch({ query, model, stream: true });
68
+ return new Response(stream, { headers: { "Content-Type": "text/event-stream" } });
69
+ ```
70
+
71
+ ## Error Types
72
+
73
+ | Error | Cause |
74
+ |-------|-------|
75
+ | `AutoRAGNotFoundError` | Instance doesn't exist |
76
+ | `AutoRAGUnauthorizedError` | Invalid/missing token |
77
+ | `AutoRAGValidationError` | Invalid parameters |
78
+
79
+ ## REST API
80
+
81
+ ```bash
82
+ curl https://api.cloudflare.com/client/v4/accounts/{ACCOUNT_ID}/autorag/rags/{NAME}/ai-search \
83
+ -H "Authorization: Bearer {TOKEN}" \
84
+ -d '{"query": "...", "model": "@cf/meta/llama-3.3-70b-instruct-fp8-fast"}'
85
+ ```
86
+
87
+ Requires Service API token with "AI Search - Read" permission.
@@ -0,0 +1,88 @@
1
+ # AI Search Configuration
2
+
3
+ ## Worker Setup
4
+
5
+ ```jsonc
6
+ // wrangler.jsonc
7
+ {
8
+ "ai": { "binding": "AI" }
9
+ }
10
+ ```
11
+
12
+ ```typescript
13
+ interface Env {
14
+ AI: Ai;
15
+ }
16
+
17
+ const answer = await env.AI.autorag("my-instance").aiSearch({
18
+ query: "How do I configure caching?",
19
+ model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast"
20
+ });
21
+ ```
22
+
23
+ ## Data Sources
24
+
25
+ ### R2 Bucket
26
+
27
+ Dashboard: AI Search → Create Instance → Select R2 bucket
28
+
29
+ **Supported formats:** `.md`, `.txt`, `.html`, `.pdf`, `.doc`, `.docx`, `.csv`, `.json`
30
+
31
+ **Auto-indexed metadata:** `filename`, `folder`, `timestamp`
32
+
33
+ ### Website Crawler
34
+
35
+ Requirements:
36
+ - Domain on Cloudflare
37
+ - `sitemap.xml` at root
38
+ - Bot protection must allow `CloudflareAISearch` user agent
39
+
40
+ ## Path Filtering (R2)
41
+
42
+ ```
43
+ docs/**/*.md # All .md in docs/ recursively
44
+ **/*.draft.md # Exclude (use in exclude patterns)
45
+ ```
46
+
47
+ ## Indexing
48
+
49
+ - **Automatic:** Every 6 hours
50
+ - **Force Sync:** Dashboard button (30s rate limit between syncs)
51
+ - **Pause:** Settings → Pause Indexing (existing index remains searchable)
52
+
53
+ ## Service API Token
54
+
55
+ Dashboard: AI Search → Instance → Use AI Search → API → Create Token
56
+
57
+ Permissions:
58
+ - **Read** - search operations
59
+ - **Edit** - instance management
60
+
61
+ Store securely:
62
+ ```bash
63
+ wrangler secret put AI_SEARCH_TOKEN
64
+ ```
65
+
66
+ ## Multi-Environment
67
+
68
+ ```toml
69
+ # wrangler.toml
70
+ [env.production.vars]
71
+ AI_SEARCH_INSTANCE = "prod-docs"
72
+
73
+ [env.staging.vars]
74
+ AI_SEARCH_INSTANCE = "staging-docs"
75
+ ```
76
+
77
+ ```typescript
78
+ const answer = await env.AI.autorag(env.AI_SEARCH_INSTANCE).aiSearch({ query });
79
+ ```
80
+
81
+ ## Monitoring
82
+
83
+ ```typescript
84
+ const instances = await env.AI.autorag("_").listInstances();
85
+ console.log(instances.find(i => i.name === "docs"));
86
+ ```
87
+
88
+ Dashboard shows: files indexed, status, last index time, storage usage.
@@ -0,0 +1,81 @@
1
+ # AI Search Gotchas
2
+
3
+ ## Type Safety
4
+
5
+ **Timestamp precision:** Use seconds (10-digit), not milliseconds.
6
+ ```typescript
7
+ const nowInSeconds = Math.floor(Date.now() / 1000); // Correct
8
+ ```
9
+
10
+ **Folder prefix matching:** Use `gte` for "starts with" on paths.
11
+ ```typescript
12
+ filters: { column: "folder", operator: "gte", value: "docs/api/" } // Matches nested
13
+ ```
14
+
15
+ ## Filter Limitations
16
+
17
+ | Limit | Value |
18
+ |-------|-------|
19
+ | Max nesting depth | 2 levels |
20
+ | Filters per compound | 10 |
21
+ | `or` operator | Same column, `eq` only |
22
+
23
+ **OR restriction example:**
24
+ ```typescript
25
+ // ✅ Valid: same column, eq only
26
+ { operator: "or", filters: [
27
+ { column: "folder", operator: "eq", value: "docs/" },
28
+ { column: "folder", operator: "eq", value: "guides/" }
29
+ ]}
30
+ ```
31
+
32
+ ## Indexing Issues
33
+
34
+ | Problem | Cause | Solution |
35
+ |---------|-------|----------|
36
+ | File not indexed | Unsupported format or >4MB | Check format (.md/.txt/.html/.pdf/.doc/.csv/.json) |
37
+ | Index out of sync | 6-hour index cycle | Wait or use "Force Sync" (30s rate limit) |
38
+ | Empty results | Index incomplete | Check dashboard for indexing status |
39
+
40
+ ## Auth Errors
41
+
42
+ | Error | Cause | Fix |
43
+ |-------|-------|-----|
44
+ | `AutoRAGUnauthorizedError` | Invalid/missing token | Create Service API token with AI Search permissions |
45
+ | `AutoRAGNotFoundError` | Wrong instance name | Verify exact name from dashboard |
46
+
47
+ ## Performance
48
+
49
+ **Slow responses (>3s):**
50
+ ```typescript
51
+ // Add score threshold + limit results
52
+ ranking_options: { score_threshold: 0.5 },
53
+ max_num_results: 10
54
+ ```
55
+
56
+ **Empty results debug:**
57
+ 1. Remove filters, test basic query
58
+ 2. Lower `score_threshold` to 0.1
59
+ 3. Check index is populated
60
+
61
+ ## Limits
62
+
63
+ | Resource | Limit |
64
+ |----------|-------|
65
+ | Instances per account | 10 |
66
+ | Files per instance | 100,000 |
67
+ | Max file size | 4 MB |
68
+ | Index frequency | 6 hours |
69
+
70
+ ## Anti-Patterns
71
+
72
+ **Use env vars for instance names:**
73
+ ```typescript
74
+ const answer = await env.AI.autorag(env.AI_SEARCH_INSTANCE).aiSearch({...});
75
+ ```
76
+
77
+ **Handle specific error types:**
78
+ ```typescript
79
+ if (error instanceof AutoRAGNotFoundError) { /* 404 */ }
80
+ if (error instanceof AutoRAGUnauthorizedError) { /* 401 */ }
81
+ ```
@@ -0,0 +1,85 @@
1
+ # AI Search Patterns
2
+
3
+ ## search() vs aiSearch()
4
+
5
+ | Use | Method | Returns |
6
+ |-----|--------|---------|
7
+ | Custom UI, analytics | `search()` | Raw chunks only (~100-300ms) |
8
+ | Chatbots, Q&A | `aiSearch()` | AI response + chunks (~500-2000ms) |
9
+
10
+ ## rewrite_query
11
+
12
+ | Setting | Use When |
13
+ |---------|----------|
14
+ | `true` | User input (typos, vague queries) |
15
+ | `false` | LLM-generated queries (already optimized) |
16
+
17
+ ## Multitenancy (Folder-Based)
18
+
19
+ ```typescript
20
+ const answer = await env.AI.autorag("saas-docs").aiSearch({
21
+ query: "refund policy",
22
+ model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast",
23
+ filters: {
24
+ column: "folder",
25
+ operator: "gte", // "starts with" pattern
26
+ value: `tenants/${tenantId}/`
27
+ }
28
+ });
29
+ ```
30
+
31
+ ## Streaming
32
+
33
+ ```typescript
34
+ const stream = await env.AI.autorag("docs").aiSearch({
35
+ query, model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast", stream: true
36
+ });
37
+ return new Response(stream, { headers: { "Content-Type": "text/event-stream" } });
38
+ ```
39
+
40
+ ## Score Threshold
41
+
42
+ | Threshold | Use |
43
+ |-----------|-----|
44
+ | 0.3 (default) | Broad recall, exploratory |
45
+ | 0.5 | Balanced, production default |
46
+ | 0.7 | High precision, critical accuracy |
47
+
48
+ ## System Prompt Template
49
+
50
+ ```typescript
51
+ const systemPrompt = `You are a documentation assistant.
52
+ - Answer ONLY based on provided context
53
+ - If context doesn't contain answer, say "I don't have information"
54
+ - Include code examples from context`;
55
+ ```
56
+
57
+ ## Compound Filters
58
+
59
+ ```typescript
60
+ // OR: Multiple folders
61
+ filters: {
62
+ operator: "or",
63
+ filters: [
64
+ { column: "folder", operator: "gte", value: "docs/api/" },
65
+ { column: "folder", operator: "gte", value: "docs/auth/" }
66
+ ]
67
+ }
68
+
69
+ // AND: Folder + date
70
+ filters: {
71
+ operator: "and",
72
+ filters: [
73
+ { column: "folder", operator: "gte", value: "docs/" },
74
+ { column: "timestamp", operator: "gte", value: oneWeekAgoSeconds }
75
+ ]
76
+ }
77
+ ```
78
+
79
+ ## Reranking
80
+
81
+ Enable for high-stakes use cases (adds ~300ms latency):
82
+
83
+ ```typescript
84
+ reranking: { enabled: true, model: "@cf/baai/bge-reranker-base" }
85
+ ```
@@ -0,0 +1,94 @@
1
+ # Cloudflare Workers Analytics Engine Reference
2
+
3
+ Expert guidance for implementing unlimited-cardinality analytics at scale using Cloudflare Workers Analytics Engine.
4
+
5
+ ## What is Analytics Engine?
6
+
7
+ Time-series analytics database designed for high-cardinality data (millions of unique dimensions). Write data points from Workers, query via SQL API. Use for:
8
+ - Custom user-facing analytics dashboards
9
+ - Usage-based billing & metering
10
+ - Per-customer/per-feature monitoring
11
+ - High-frequency instrumentation without performance impact
12
+
13
+ **Key Capability:** Track metrics with unlimited unique values (e.g., millions of user IDs, API keys) without performance degradation.
14
+
15
+ ## Core Concepts
16
+
17
+ | Concept | Description | Example |
18
+ |---------|-------------|---------|
19
+ | **Dataset** | Logical table for related metrics | `api_requests`, `user_events` |
20
+ | **Data Point** | Single measurement with timestamp | One API request's metrics |
21
+ | **Blobs** | String dimensions (max 20) | endpoint, method, status, user_id |
22
+ | **Doubles** | Numeric values (max 20) | latency_ms, request_count, bytes |
23
+ | **Indexes** | Filtered blobs for efficient queries | customer_id, api_key |
24
+
25
+ ## Reading Order
26
+
27
+ | Task | Start Here | Then Read |
28
+ |------|------------|-----------|
29
+ | **First-time setup** | [configuration.md](configuration.md) → [api.md](api.md) → [patterns.md](patterns.md) | |
30
+ | **Writing data** | [api.md](api.md) → [gotchas.md](gotchas.md) (sampling) | |
31
+ | **Querying data** | [api.md](api.md) (SQL API) → [patterns.md](patterns.md) (examples) | |
32
+ | **Debugging** | [gotchas.md](gotchas.md) → [api.md](api.md) (limits) | |
33
+ | **Optimization** | [patterns.md](patterns.md) (anti-patterns) → [gotchas.md](gotchas.md) | |
34
+
35
+ ## When to Use Analytics Engine
36
+
37
+ ```
38
+ Need to track metrics? → Yes
39
+
40
+ Millions of unique dimension values? → Yes
41
+
42
+ Need real-time queries? → Yes
43
+
44
+ Use Analytics Engine ✓
45
+
46
+ Alternative scenarios:
47
+ - Low cardinality (<10k unique values) → Workers Analytics (free tier)
48
+ - Complex joins/relations → D1 Database
49
+ - Logs/debugging → Tail Workers (logpush)
50
+ - External tools → Send to external analytics (Datadog, etc.)
51
+ ```
52
+
53
+ ## Quick Start
54
+
55
+ 1. Add binding to `wrangler.jsonc`:
56
+ ```jsonc
57
+ {
58
+ "analytics_engine_datasets": [
59
+ { "binding": "ANALYTICS", "dataset": "my_events" }
60
+ ]
61
+ }
62
+ ```
63
+
64
+ 2. Write data points (fire-and-forget, no await):
65
+ ```typescript
66
+ env.ANALYTICS.writeDataPoint({
67
+ blobs: ["/api/users", "GET", "200"],
68
+ doubles: [145.2, 1], // latency_ms, count
69
+ indexes: [customerId]
70
+ });
71
+ ```
72
+
73
+ 3. Query via SQL API (HTTP):
74
+ ```sql
75
+ SELECT blob1, SUM(double2) AS total_requests
76
+ FROM my_events
77
+ WHERE index1 = 'customer_123'
78
+ AND timestamp >= NOW() - INTERVAL '7' DAY
79
+ GROUP BY blob1
80
+ ORDER BY total_requests DESC
81
+ ```
82
+
83
+ ## In This Reference
84
+
85
+ - **[configuration.md](configuration.md)** - Setup, bindings, TypeScript types, limits
86
+ - **[api.md](api.md)** - `writeDataPoint()`, SQL API, query syntax
87
+ - **[patterns.md](patterns.md)** - Use cases, examples, anti-patterns
88
+ - **[gotchas.md](gotchas.md)** - Sampling, index selection, troubleshooting
89
+
90
+ ## See Also
91
+
92
+ - [Cloudflare Analytics Engine Docs](https://developers.cloudflare.com/analytics/analytics-engine/)
93
+ - [GraphQL Analytics API Reference](../graphql-api/) - Query built-in Cloudflare analytics (HTTP, Workers, DNS, Firewall, etc.)
94
+ - [Observability Reference](../observability/) - Workers Logs, Traces, and real-time debugging
@@ -0,0 +1,112 @@
1
+ # Analytics Engine API Reference
2
+
3
+ ## Writing Data
4
+
5
+ ### `writeDataPoint()`
6
+
7
+ Fire-and-forget (returns `void`, not Promise). Writes happen asynchronously.
8
+
9
+ ```typescript
10
+ interface AnalyticsEngineDataPoint {
11
+ blobs?: string[]; // Up to 20 strings (dimensions), 16KB each
12
+ doubles?: number[]; // Up to 20 numbers (metrics)
13
+ indexes?: string[]; // 1 indexed string for high-cardinality filtering
14
+ }
15
+
16
+ env.ANALYTICS.writeDataPoint({
17
+ blobs: ["/api/users", "GET", "200"],
18
+ doubles: [145.2, 1], // latency_ms, count
19
+ indexes: ["customer_abc123"]
20
+ });
21
+ ```
22
+
23
+ **Behaviors:** No await needed, no error thrown (check tail logs), auto-sampled at high volumes, auto-timestamped.
24
+
25
+ **Blob vs Index:** Blob for GROUP BY (<100k unique), Index for filter-only (millions unique).
26
+
27
+ ### Full Example
28
+
29
+ ```typescript
30
+ export default {
31
+ async fetch(request: Request, env: Env): Promise<Response> {
32
+ const start = Date.now();
33
+ const url = new URL(request.url);
34
+ try {
35
+ const response = await handleRequest(request);
36
+ env.ANALYTICS.writeDataPoint({
37
+ blobs: [url.pathname, request.method, response.status.toString()],
38
+ doubles: [Date.now() - start, 1],
39
+ indexes: [request.headers.get("x-api-key") || "anonymous"]
40
+ });
41
+ return response;
42
+ } catch (error) {
43
+ env.ANALYTICS.writeDataPoint({
44
+ blobs: [url.pathname, request.method, "500"],
45
+ doubles: [Date.now() - start, 1, 0],
46
+ });
47
+ throw error;
48
+ }
49
+ }
50
+ };
51
+ ```
52
+
53
+ ## SQL API (External Only)
54
+
55
+ ```bash
56
+ curl -X POST https://api.cloudflare.com/client/v4/accounts/{account_id}/analytics_engine/sql \
57
+ -H "Authorization: Bearer $TOKEN" \
58
+ -d "SELECT blob1 AS endpoint, COUNT(*) AS requests FROM dataset WHERE timestamp >= NOW() - INTERVAL '1' HOUR GROUP BY blob1"
59
+ ```
60
+
61
+ ### Column References
62
+
63
+ ```sql
64
+ -- blob1..blob20, double1..double20, index1, timestamp
65
+ SELECT blob1 AS endpoint, SUM(double1) AS latency, COUNT(*) AS requests
66
+ FROM my_dataset
67
+ WHERE index1 = 'customer_123' AND timestamp >= NOW() - INTERVAL '7' DAY
68
+ GROUP BY blob1
69
+ HAVING COUNT(*) > 100
70
+ ORDER BY requests DESC LIMIT 100
71
+ ```
72
+
73
+ **Aggregations:** `SUM()`, `AVG()`, `COUNT()`, `MIN()`, `MAX()`, `quantile(0.95)()`
74
+
75
+ **Time ranges:** `NOW() - INTERVAL '1' HOUR`, `BETWEEN '2026-01-01' AND '2026-01-31'`
76
+
77
+ ### Query Examples
78
+
79
+ ```sql
80
+ -- Top endpoints
81
+ SELECT blob1, COUNT(*) AS requests, AVG(double1) AS avg_latency
82
+ FROM api_requests WHERE timestamp >= NOW() - INTERVAL '24' HOUR
83
+ GROUP BY blob1 ORDER BY requests DESC LIMIT 20
84
+
85
+ -- Error rate
86
+ SELECT blob1, COUNT(*) AS total,
87
+ SUM(CASE WHEN blob3 LIKE '5%' THEN 1 ELSE 0 END) AS errors
88
+ FROM api_requests WHERE timestamp >= NOW() - INTERVAL '1' HOUR
89
+ GROUP BY blob1 HAVING total > 50
90
+
91
+ -- P95 latency
92
+ SELECT blob1, quantile(0.95)(double1) AS p95
93
+ FROM api_requests GROUP BY blob1
94
+ ```
95
+
96
+ ## Response Format
97
+
98
+ ```json
99
+ {"data": [{"endpoint": "/api/users", "requests": 1523}], "rows": 2}
100
+ ```
101
+
102
+ ## Limits
103
+
104
+ | Resource | Limit |
105
+ |----------|-------|
106
+ | Blobs/Doubles per point | 20 each |
107
+ | Indexes per point | 1 |
108
+ | Blob/Index size | 16KB |
109
+ | Data retention | 90 days |
110
+ | Query timeout | 30s |
111
+
112
+ **Critical:** High write volumes (>1M/min) trigger automatic sampling.
@@ -0,0 +1,112 @@
1
+ # Analytics Engine Configuration
2
+
3
+ ## Setup
4
+
5
+ 1. Add binding to `wrangler.jsonc`
6
+ 2. Deploy Worker
7
+ 3. Dataset created automatically on first write
8
+ 4. Query via SQL API
9
+
10
+ ## wrangler.jsonc
11
+
12
+ ```jsonc
13
+ {
14
+ "name": "my-worker",
15
+ "analytics_engine_datasets": [
16
+ { "binding": "ANALYTICS", "dataset": "my_events" }
17
+ ]
18
+ }
19
+ ```
20
+
21
+ Multiple datasets for separate concerns:
22
+ ```jsonc
23
+ {
24
+ "analytics_engine_datasets": [
25
+ { "binding": "API_ANALYTICS", "dataset": "api_requests" },
26
+ { "binding": "USER_EVENTS", "dataset": "user_activity" }
27
+ ]
28
+ }
29
+ ```
30
+
31
+ ## TypeScript
32
+
33
+ ```typescript
34
+ interface Env {
35
+ ANALYTICS: AnalyticsEngineDataset;
36
+ }
37
+
38
+ export default {
39
+ async fetch(request: Request, env: Env) {
40
+ // No await - returns void, fire-and-forget
41
+ env.ANALYTICS.writeDataPoint({
42
+ blobs: [pathname, method, status], // String dimensions (max 20)
43
+ doubles: [latency, 1], // Numeric metrics (max 20)
44
+ indexes: [apiKey] // High-cardinality filter (max 1)
45
+ });
46
+ return response;
47
+ }
48
+ };
49
+ ```
50
+
51
+ ## Data Point Limits
52
+
53
+ | Field | Limit | SQL Access |
54
+ |-------|-------|------------|
55
+ | blobs | 20 strings, 16KB each | `blob1`...`blob20` |
56
+ | doubles | 20 numbers | `double1`...`double20` |
57
+ | indexes | 1 string, 16KB | `index1` |
58
+
59
+ ## Write Behavior
60
+
61
+ | Scenario | Behavior |
62
+ |----------|----------|
63
+ | <1M writes/min | All accepted |
64
+ | >1M writes/min | Automatic sampling |
65
+ | Invalid data | Silent failure (check tail logs) |
66
+
67
+ **Mitigate sampling:** Pre-aggregate, use multiple datasets, write only critical metrics.
68
+
69
+ ## Query Limits
70
+
71
+ | Resource | Limit |
72
+ |----------|-------|
73
+ | Query timeout | 30 seconds |
74
+ | Data retention | 90 days (default) |
75
+ | Result size | ~10MB |
76
+
77
+ ## Cost
78
+
79
+ **Free tier:** 10M writes/month, 1M reads/month
80
+
81
+ **Paid:** $0.05 per 1M writes, $1.00 per 1M reads
82
+
83
+ ## Environment-Specific
84
+
85
+ ```jsonc
86
+ {
87
+ "analytics_engine_datasets": [
88
+ { "binding": "ANALYTICS", "dataset": "prod_events" }
89
+ ],
90
+ "env": {
91
+ "staging": {
92
+ "analytics_engine_datasets": [
93
+ { "binding": "ANALYTICS", "dataset": "staging_events" }
94
+ ]
95
+ }
96
+ }
97
+ }
98
+ ```
99
+
100
+ ## Monitoring
101
+
102
+ ```bash
103
+ npx wrangler tail # Check for sampling/write errors
104
+ ```
105
+
106
+ ```sql
107
+ -- Check write activity
108
+ SELECT DATE_TRUNC('hour', timestamp) AS hour, COUNT(*) AS writes
109
+ FROM my_dataset
110
+ WHERE timestamp >= NOW() - INTERVAL '24' HOUR
111
+ GROUP BY hour
112
+ ```