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.
- package/LICENSE +674 -0
- package/README.md +67 -0
- package/bin/setup.mjs +103 -0
- package/dist/auth-flow.d.ts +15 -0
- package/dist/auth-flow.d.ts.map +1 -0
- package/dist/auth-flow.js +90 -0
- package/dist/auth-flow.js.map +1 -0
- package/dist/client.d.ts +18 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +47 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +13 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +10 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +109 -0
- package/dist/index.js.map +1 -0
- package/dist/oauth.d.ts +44 -0
- package/dist/oauth.d.ts.map +1 -0
- package/dist/oauth.js +135 -0
- package/dist/oauth.js.map +1 -0
- package/dist/proxy.d.ts +29 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +39 -0
- package/dist/proxy.js.map +1 -0
- package/dist/servers.d.ts +19 -0
- package/dist/servers.d.ts.map +1 -0
- package/dist/servers.js +40 -0
- package/dist/servers.js.map +1 -0
- package/dist/token-store.d.ts +23 -0
- package/dist/token-store.d.ts.map +1 -0
- package/dist/token-store.js +47 -0
- package/dist/token-store.js.map +1 -0
- package/package.json +67 -0
- package/skills/agents-sdk/SKILL.md +221 -0
- package/skills/agents-sdk/references/browse-the-web.md +63 -0
- package/skills/agents-sdk/references/callable.md +92 -0
- package/skills/agents-sdk/references/client-sdk.md +110 -0
- package/skills/agents-sdk/references/codemode.md +110 -0
- package/skills/agents-sdk/references/configuration.md +72 -0
- package/skills/agents-sdk/references/durable-execution.md +51 -0
- package/skills/agents-sdk/references/email.md +146 -0
- package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
- package/skills/agents-sdk/references/mcp.md +188 -0
- package/skills/agents-sdk/references/observability.md +44 -0
- package/skills/agents-sdk/references/queue-retries.md +79 -0
- package/skills/agents-sdk/references/routing.md +75 -0
- package/skills/agents-sdk/references/server-driven-messages.md +63 -0
- package/skills/agents-sdk/references/state-scheduling.md +171 -0
- package/skills/agents-sdk/references/streaming-chat.md +198 -0
- package/skills/agents-sdk/references/think.md +112 -0
- package/skills/agents-sdk/references/voice.md +68 -0
- package/skills/agents-sdk/references/webhooks-push.md +86 -0
- package/skills/agents-sdk/references/workflows.md +132 -0
- package/skills/cloudflare/SKILL.md +248 -0
- package/skills/cloudflare/references/agents-sdk/README.md +89 -0
- package/skills/cloudflare/references/agents-sdk/api.md +190 -0
- package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
- package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
- package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
- package/skills/cloudflare/references/ai-gateway/README.md +175 -0
- package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
- package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
- package/skills/cloudflare/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
- package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
- package/skills/cloudflare/references/ai-search/README.md +138 -0
- package/skills/cloudflare/references/ai-search/api.md +87 -0
- package/skills/cloudflare/references/ai-search/configuration.md +88 -0
- package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
- package/skills/cloudflare/references/ai-search/patterns.md +85 -0
- package/skills/cloudflare/references/analytics-engine/README.md +94 -0
- package/skills/cloudflare/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
- package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
- package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
- package/skills/cloudflare/references/api/README.md +66 -0
- package/skills/cloudflare/references/api/api.md +204 -0
- package/skills/cloudflare/references/api/configuration.md +160 -0
- package/skills/cloudflare/references/api/gotchas.md +225 -0
- package/skills/cloudflare/references/api/patterns.md +204 -0
- package/skills/cloudflare/references/api-shield/README.md +44 -0
- package/skills/cloudflare/references/api-shield/api.md +141 -0
- package/skills/cloudflare/references/api-shield/configuration.md +192 -0
- package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
- package/skills/cloudflare/references/api-shield/patterns.md +180 -0
- package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
- package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
- package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
- package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
- package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
- package/skills/cloudflare/references/artifacts/README.md +79 -0
- package/skills/cloudflare/references/artifacts/api.md +128 -0
- package/skills/cloudflare/references/artifacts/configuration.md +92 -0
- package/skills/cloudflare/references/bindings/README.md +122 -0
- package/skills/cloudflare/references/bindings/api.md +203 -0
- package/skills/cloudflare/references/bindings/configuration.md +188 -0
- package/skills/cloudflare/references/bindings/gotchas.md +208 -0
- package/skills/cloudflare/references/bindings/patterns.md +200 -0
- package/skills/cloudflare/references/bot-management/README.md +94 -0
- package/skills/cloudflare/references/bot-management/api.md +169 -0
- package/skills/cloudflare/references/bot-management/configuration.md +163 -0
- package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
- package/skills/cloudflare/references/bot-management/patterns.md +182 -0
- package/skills/cloudflare/references/browser-rendering/README.md +78 -0
- package/skills/cloudflare/references/browser-rendering/api.md +108 -0
- package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
- package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
- package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
- package/skills/cloudflare/references/c3/README.md +111 -0
- package/skills/cloudflare/references/c3/api.md +71 -0
- package/skills/cloudflare/references/c3/configuration.md +81 -0
- package/skills/cloudflare/references/c3/gotchas.md +92 -0
- package/skills/cloudflare/references/c3/patterns.md +82 -0
- package/skills/cloudflare/references/cache-reserve/README.md +147 -0
- package/skills/cloudflare/references/cache-reserve/api.md +194 -0
- package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
- package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
- package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare/references/containers/README.md +85 -0
- package/skills/cloudflare/references/containers/api.md +187 -0
- package/skills/cloudflare/references/containers/configuration.md +188 -0
- package/skills/cloudflare/references/containers/gotchas.md +178 -0
- package/skills/cloudflare/references/containers/patterns.md +202 -0
- package/skills/cloudflare/references/cron-triggers/README.md +99 -0
- package/skills/cloudflare/references/cron-triggers/api.md +196 -0
- package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
- package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
- package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
- package/skills/cloudflare/references/d1/README.md +133 -0
- package/skills/cloudflare/references/d1/api.md +196 -0
- package/skills/cloudflare/references/d1/configuration.md +191 -0
- package/skills/cloudflare/references/d1/gotchas.md +98 -0
- package/skills/cloudflare/references/d1/patterns.md +189 -0
- package/skills/cloudflare/references/ddos/README.md +41 -0
- package/skills/cloudflare/references/ddos/api.md +164 -0
- package/skills/cloudflare/references/ddos/configuration.md +93 -0
- package/skills/cloudflare/references/ddos/gotchas.md +107 -0
- package/skills/cloudflare/references/ddos/patterns.md +174 -0
- package/skills/cloudflare/references/do-storage/README.md +75 -0
- package/skills/cloudflare/references/do-storage/api.md +102 -0
- package/skills/cloudflare/references/do-storage/configuration.md +112 -0
- package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
- package/skills/cloudflare/references/do-storage/patterns.md +194 -0
- package/skills/cloudflare/references/do-storage/testing.md +183 -0
- package/skills/cloudflare/references/durable-objects/README.md +185 -0
- package/skills/cloudflare/references/durable-objects/api.md +187 -0
- package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
- package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
- package/skills/cloudflare/references/email-routing/README.md +89 -0
- package/skills/cloudflare/references/email-routing/api.md +195 -0
- package/skills/cloudflare/references/email-routing/configuration.md +186 -0
- package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
- package/skills/cloudflare/references/email-routing/patterns.md +229 -0
- package/skills/cloudflare/references/email-workers/README.md +151 -0
- package/skills/cloudflare/references/email-workers/api.md +237 -0
- package/skills/cloudflare/references/email-workers/configuration.md +112 -0
- package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
- package/skills/cloudflare/references/email-workers/patterns.md +102 -0
- package/skills/cloudflare/references/flagship/README.md +59 -0
- package/skills/cloudflare/references/flagship/api.md +390 -0
- package/skills/cloudflare/references/flagship/configuration.md +202 -0
- package/skills/cloudflare/references/flagship/gotchas.md +178 -0
- package/skills/cloudflare/references/flagship/patterns.md +469 -0
- package/skills/cloudflare/references/graphql-api/README.md +147 -0
- package/skills/cloudflare/references/graphql-api/api.md +175 -0
- package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
- package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
- package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
- package/skills/cloudflare/references/hyperdrive/README.md +82 -0
- package/skills/cloudflare/references/hyperdrive/api.md +143 -0
- package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
- package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
- package/skills/cloudflare/references/images/README.md +61 -0
- package/skills/cloudflare/references/images/api.md +96 -0
- package/skills/cloudflare/references/images/configuration.md +211 -0
- package/skills/cloudflare/references/images/gotchas.md +99 -0
- package/skills/cloudflare/references/images/patterns.md +115 -0
- package/skills/cloudflare/references/kv/README.md +89 -0
- package/skills/cloudflare/references/kv/api.md +160 -0
- package/skills/cloudflare/references/kv/configuration.md +144 -0
- package/skills/cloudflare/references/kv/gotchas.md +131 -0
- package/skills/cloudflare/references/kv/patterns.md +196 -0
- package/skills/cloudflare/references/miniflare/README.md +105 -0
- package/skills/cloudflare/references/miniflare/api.md +187 -0
- package/skills/cloudflare/references/miniflare/configuration.md +173 -0
- package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
- package/skills/cloudflare/references/miniflare/patterns.md +181 -0
- package/skills/cloudflare/references/network-interconnect/README.md +99 -0
- package/skills/cloudflare/references/network-interconnect/api.md +199 -0
- package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
- package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
- package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
- package/skills/cloudflare/references/observability/README.md +88 -0
- package/skills/cloudflare/references/observability/api.md +164 -0
- package/skills/cloudflare/references/observability/configuration.md +169 -0
- package/skills/cloudflare/references/observability/gotchas.md +115 -0
- package/skills/cloudflare/references/observability/patterns.md +105 -0
- package/skills/cloudflare/references/pages/README.md +88 -0
- package/skills/cloudflare/references/pages/api.md +204 -0
- package/skills/cloudflare/references/pages/configuration.md +201 -0
- package/skills/cloudflare/references/pages/gotchas.md +203 -0
- package/skills/cloudflare/references/pages/patterns.md +204 -0
- package/skills/cloudflare/references/pages-functions/README.md +98 -0
- package/skills/cloudflare/references/pages-functions/api.md +143 -0
- package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
- package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
- package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
- package/skills/cloudflare/references/pipelines/README.md +90 -0
- package/skills/cloudflare/references/pipelines/api.md +124 -0
- package/skills/cloudflare/references/pipelines/configuration.md +155 -0
- package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
- package/skills/cloudflare/references/pipelines/patterns.md +130 -0
- package/skills/cloudflare/references/pulumi/README.md +100 -0
- package/skills/cloudflare/references/pulumi/api.md +200 -0
- package/skills/cloudflare/references/pulumi/configuration.md +198 -0
- package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
- package/skills/cloudflare/references/pulumi/patterns.md +191 -0
- package/skills/cloudflare/references/queues/README.md +96 -0
- package/skills/cloudflare/references/queues/api.md +206 -0
- package/skills/cloudflare/references/queues/configuration.md +144 -0
- package/skills/cloudflare/references/queues/gotchas.md +206 -0
- package/skills/cloudflare/references/queues/patterns.md +220 -0
- package/skills/cloudflare/references/r2/README.md +95 -0
- package/skills/cloudflare/references/r2/api.md +200 -0
- package/skills/cloudflare/references/r2/configuration.md +165 -0
- package/skills/cloudflare/references/r2/gotchas.md +190 -0
- package/skills/cloudflare/references/r2/patterns.md +193 -0
- package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
- package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
- package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
- package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
- package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
- package/skills/cloudflare/references/r2-sql/README.md +64 -0
- package/skills/cloudflare/references/r2-sql/api.md +121 -0
- package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
- package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
- package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
- package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
- package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
- package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
- package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
- package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
- package/skills/cloudflare/references/realtimekit/README.md +113 -0
- package/skills/cloudflare/references/realtimekit/api.md +212 -0
- package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
- package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
- package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
- package/skills/cloudflare/references/sandbox/README.md +96 -0
- package/skills/cloudflare/references/sandbox/api.md +198 -0
- package/skills/cloudflare/references/sandbox/configuration.md +143 -0
- package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
- package/skills/cloudflare/references/sandbox/patterns.md +201 -0
- package/skills/cloudflare/references/secrets-store/README.md +74 -0
- package/skills/cloudflare/references/secrets-store/api.md +200 -0
- package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
- package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
- package/skills/cloudflare/references/smart-placement/README.md +138 -0
- package/skills/cloudflare/references/smart-placement/api.md +183 -0
- package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
- package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
- package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
- package/skills/cloudflare/references/snippets/README.md +68 -0
- package/skills/cloudflare/references/snippets/api.md +198 -0
- package/skills/cloudflare/references/snippets/configuration.md +227 -0
- package/skills/cloudflare/references/snippets/gotchas.md +86 -0
- package/skills/cloudflare/references/snippets/patterns.md +135 -0
- package/skills/cloudflare/references/spectrum/README.md +52 -0
- package/skills/cloudflare/references/spectrum/api.md +181 -0
- package/skills/cloudflare/references/spectrum/configuration.md +194 -0
- package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
- package/skills/cloudflare/references/spectrum/patterns.md +196 -0
- package/skills/cloudflare/references/static-assets/README.md +65 -0
- package/skills/cloudflare/references/static-assets/api.md +199 -0
- package/skills/cloudflare/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
- package/skills/cloudflare/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare/references/stream/README.md +114 -0
- package/skills/cloudflare/references/stream/api-live.md +195 -0
- package/skills/cloudflare/references/stream/api.md +199 -0
- package/skills/cloudflare/references/stream/configuration.md +141 -0
- package/skills/cloudflare/references/stream/gotchas.md +130 -0
- package/skills/cloudflare/references/stream/patterns.md +184 -0
- package/skills/cloudflare/references/tail-workers/README.md +89 -0
- package/skills/cloudflare/references/tail-workers/api.md +200 -0
- package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
- package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
- package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
- package/skills/cloudflare/references/terraform/README.md +102 -0
- package/skills/cloudflare/references/terraform/api.md +178 -0
- package/skills/cloudflare/references/terraform/configuration.md +197 -0
- package/skills/cloudflare/references/terraform/gotchas.md +150 -0
- package/skills/cloudflare/references/terraform/patterns.md +174 -0
- package/skills/cloudflare/references/tunnel/README.md +129 -0
- package/skills/cloudflare/references/tunnel/api.md +193 -0
- package/skills/cloudflare/references/tunnel/configuration.md +157 -0
- package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
- package/skills/cloudflare/references/tunnel/networking.md +168 -0
- package/skills/cloudflare/references/tunnel/patterns.md +192 -0
- package/skills/cloudflare/references/turn/README.md +82 -0
- package/skills/cloudflare/references/turn/api.md +239 -0
- package/skills/cloudflare/references/turn/configuration.md +179 -0
- package/skills/cloudflare/references/turn/gotchas.md +231 -0
- package/skills/cloudflare/references/turn/patterns.md +213 -0
- package/skills/cloudflare/references/turnstile/README.md +99 -0
- package/skills/cloudflare/references/turnstile/api.md +240 -0
- package/skills/cloudflare/references/turnstile/configuration.md +222 -0
- package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
- package/skills/cloudflare/references/turnstile/patterns.md +193 -0
- package/skills/cloudflare/references/vectorize/README.md +133 -0
- package/skills/cloudflare/references/vectorize/api.md +88 -0
- package/skills/cloudflare/references/vectorize/configuration.md +88 -0
- package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
- package/skills/cloudflare/references/vectorize/patterns.md +90 -0
- package/skills/cloudflare/references/waf/README.md +113 -0
- package/skills/cloudflare/references/waf/api.md +202 -0
- package/skills/cloudflare/references/waf/configuration.md +203 -0
- package/skills/cloudflare/references/waf/gotchas.md +204 -0
- package/skills/cloudflare/references/waf/patterns.md +197 -0
- package/skills/cloudflare/references/web-analytics/README.md +141 -0
- package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
- package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
- package/skills/cloudflare/references/web-analytics/integration.md +60 -0
- package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
- package/skills/cloudflare/references/workerd/README.md +78 -0
- package/skills/cloudflare/references/workerd/api.md +185 -0
- package/skills/cloudflare/references/workerd/configuration.md +183 -0
- package/skills/cloudflare/references/workerd/gotchas.md +139 -0
- package/skills/cloudflare/references/workerd/patterns.md +192 -0
- package/skills/cloudflare/references/workers/README.md +108 -0
- package/skills/cloudflare/references/workers/api.md +195 -0
- package/skills/cloudflare/references/workers/configuration.md +185 -0
- package/skills/cloudflare/references/workers/frameworks.md +197 -0
- package/skills/cloudflare/references/workers/gotchas.md +137 -0
- package/skills/cloudflare/references/workers/patterns.md +198 -0
- package/skills/cloudflare/references/workers-ai/README.md +197 -0
- package/skills/cloudflare/references/workers-ai/api.md +112 -0
- package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
- package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
- package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
- package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
- package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
- package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
- package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
- package/skills/cloudflare/references/workers-playground/README.md +127 -0
- package/skills/cloudflare/references/workers-playground/api.md +101 -0
- package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
- package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
- package/skills/cloudflare/references/workers-vpc/README.md +127 -0
- package/skills/cloudflare/references/workers-vpc/api.md +202 -0
- package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
- package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
- package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
- package/skills/cloudflare/references/workflows/README.md +77 -0
- package/skills/cloudflare/references/workflows/api.md +218 -0
- package/skills/cloudflare/references/workflows/configuration.md +152 -0
- package/skills/cloudflare/references/workflows/gotchas.md +90 -0
- package/skills/cloudflare/references/workflows/patterns.md +175 -0
- package/skills/cloudflare/references/wrangler/README.md +135 -0
- package/skills/cloudflare/references/wrangler/api.md +188 -0
- package/skills/cloudflare/references/wrangler/configuration.md +197 -0
- package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
- package/skills/cloudflare/references/wrangler/patterns.md +209 -0
- package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
- package/skills/cloudflare/references/zaraz/README.md +111 -0
- package/skills/cloudflare/references/zaraz/api.md +112 -0
- package/skills/cloudflare/references/zaraz/configuration.md +90 -0
- package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
- package/skills/cloudflare/references/zaraz/patterns.md +74 -0
- package/skills/cloudflare-email-service/SKILL.md +103 -0
- package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
- package/skills/cloudflare-email-service/references/deliverability.md +285 -0
- package/skills/cloudflare-email-service/references/rest-api.md +184 -0
- package/skills/cloudflare-email-service/references/routing.md +199 -0
- package/skills/cloudflare-email-service/references/sending.md +252 -0
- package/skills/cloudflare-one/SKILL.md +176 -0
- package/skills/cloudflare-one-migrations/SKILL.md +110 -0
- package/skills/durable-objects/SKILL.md +186 -0
- package/skills/durable-objects/references/rules.md +295 -0
- package/skills/durable-objects/references/testing.md +264 -0
- package/skills/durable-objects/references/workers.md +346 -0
- package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
- package/skills/sandbox-next/SKILL.md +91 -0
- package/skills/sandbox-next/references/api-quick-ref.md +94 -0
- package/skills/sandbox-next/references/examples.md +15 -0
- package/skills/sandbox-stable/SKILL.md +110 -0
- package/skills/turnstile-spin/README.md +51 -0
- package/skills/turnstile-spin/SKILL.md +330 -0
- package/skills/turnstile-spin/references/astro.md +199 -0
- package/skills/turnstile-spin/references/hugo.md +114 -0
- package/skills/turnstile-spin/references/nextjs-app.md +261 -0
- package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
- package/skills/turnstile-spin/references/sveltekit.md +191 -0
- package/skills/turnstile-spin/references/vanilla-html.md +157 -0
- package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
- package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
- package/skills/turnstile-spin/scripts/validate.sh +137 -0
- package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
- package/skills/turnstile-spin/tests/validation.md +62 -0
- package/skills/workers-best-practices/SKILL.md +127 -0
- package/skills/workers-best-practices/references/review.md +174 -0
- package/skills/workers-best-practices/references/rules.md +467 -0
- package/skills/wrangler/SKILL.md +922 -0
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# Configuration & Setup
|
|
2
|
+
|
|
3
|
+
## Creating a Gateway
|
|
4
|
+
|
|
5
|
+
### Dashboard
|
|
6
|
+
AI > AI Gateway > Create Gateway > Configure (auth, caching, rate limiting, logging)
|
|
7
|
+
|
|
8
|
+
### API
|
|
9
|
+
```bash
|
|
10
|
+
curl -X POST https://api.cloudflare.com/client/v4/accounts/{account_id}/ai-gateway/gateways \
|
|
11
|
+
-H "Authorization: Bearer $CF_API_TOKEN" -H "Content-Type: application/json" \
|
|
12
|
+
-d '{"id":"my-gateway","cache_ttl":3600,"rate_limiting_interval":60,"rate_limiting_limit":100,"collect_logs":true}'
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Naming:** lowercase alphanumeric + hyphens (e.g., `prod-api`, `dev-chat`)
|
|
16
|
+
|
|
17
|
+
## Wrangler Integration
|
|
18
|
+
|
|
19
|
+
```toml
|
|
20
|
+
[ai]
|
|
21
|
+
binding = "AI"
|
|
22
|
+
|
|
23
|
+
[[ai.gateway]]
|
|
24
|
+
id = "my-gateway"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
wrangler secret put CF_API_TOKEN
|
|
29
|
+
wrangler secret put OPENAI_API_KEY # If not using BYOK
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Authentication
|
|
33
|
+
|
|
34
|
+
### Gateway Auth (protects gateway access)
|
|
35
|
+
```typescript
|
|
36
|
+
const client = new OpenAI({
|
|
37
|
+
baseURL: `https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/openai`,
|
|
38
|
+
defaultHeaders: { 'cf-aig-authorization': `Bearer ${cfToken}` }
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Provider Auth Options
|
|
43
|
+
|
|
44
|
+
**1. Unified Billing (keyless)** - pay through Cloudflare, no provider key:
|
|
45
|
+
```typescript
|
|
46
|
+
const client = new OpenAI({
|
|
47
|
+
baseURL: `https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/openai`,
|
|
48
|
+
defaultHeaders: { 'cf-aig-authorization': `Bearer ${cfToken}` }
|
|
49
|
+
});
|
|
50
|
+
```
|
|
51
|
+
Supports: OpenAI, Anthropic, Google AI Studio
|
|
52
|
+
|
|
53
|
+
**2. BYOK** - store keys in dashboard (Provider Keys > Add), no key in code
|
|
54
|
+
|
|
55
|
+
**3. Request Headers** - pass provider key per request:
|
|
56
|
+
```typescript
|
|
57
|
+
const client = new OpenAI({
|
|
58
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
59
|
+
baseURL: `https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/openai`,
|
|
60
|
+
defaultHeaders: { 'cf-aig-authorization': `Bearer ${cfToken}` }
|
|
61
|
+
});
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## API Token Permissions
|
|
65
|
+
|
|
66
|
+
- **Gateway management:** AI Gateway - Read + Edit
|
|
67
|
+
- **Gateway access:** AI Gateway - Read (minimum)
|
|
68
|
+
|
|
69
|
+
## Gateway Management API
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# List
|
|
73
|
+
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/ai-gateway/gateways \
|
|
74
|
+
-H "Authorization: Bearer $CF_API_TOKEN"
|
|
75
|
+
|
|
76
|
+
# Get
|
|
77
|
+
curl .../gateways/{gateway_id}
|
|
78
|
+
|
|
79
|
+
# Update
|
|
80
|
+
curl -X PUT .../gateways/{gateway_id} \
|
|
81
|
+
-d '{"cache_ttl":7200,"rate_limiting_limit":200}'
|
|
82
|
+
|
|
83
|
+
# Delete
|
|
84
|
+
curl -X DELETE .../gateways/{gateway_id}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Getting IDs
|
|
88
|
+
|
|
89
|
+
- **Account ID:** Dashboard > Overview > Copy
|
|
90
|
+
- **Gateway ID:** AI Gateway > Gateway name column
|
|
91
|
+
|
|
92
|
+
## Python Example
|
|
93
|
+
|
|
94
|
+
```python
|
|
95
|
+
from openai import OpenAI
|
|
96
|
+
import os
|
|
97
|
+
|
|
98
|
+
client = OpenAI(
|
|
99
|
+
api_key=os.environ.get("OPENAI_API_KEY"),
|
|
100
|
+
base_url=f"https://gateway.ai.cloudflare.com/v1/{os.environ['CF_ACCOUNT_ID']}/{os.environ['GATEWAY_ID']}/openai",
|
|
101
|
+
default_headers={"cf-aig-authorization": f"Bearer {os.environ['CF_API_TOKEN']}"}
|
|
102
|
+
)
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Best Practices
|
|
106
|
+
|
|
107
|
+
1. **Always authenticate gateways in production**
|
|
108
|
+
2. **Use BYOK or unified billing** - secrets out of code
|
|
109
|
+
3. **Environment-specific gateways** - separate dev/staging/prod
|
|
110
|
+
4. **Set rate limits** - prevent runaway costs
|
|
111
|
+
5. **Enable logging** - track usage, debug issues
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Dynamic Routing
|
|
2
|
+
|
|
3
|
+
Configure complex routing in dashboard without code changes. Use route names instead of model names.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
const response = await client.chat.completions.create({
|
|
9
|
+
model: 'dynamic/smart-chat', // Route name from dashboard
|
|
10
|
+
messages: [{ role: 'user', content: 'Hello!' }]
|
|
11
|
+
});
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Node Types
|
|
15
|
+
|
|
16
|
+
| Node | Purpose | Use Case |
|
|
17
|
+
|------|---------|----------|
|
|
18
|
+
| **Conditional** | Branch on metadata | Paid vs free users, geo routing |
|
|
19
|
+
| **Percentage** | A/B split traffic | Model testing, gradual rollouts |
|
|
20
|
+
| **Rate Limit** | Enforce quotas | Per-user/team limits |
|
|
21
|
+
| **Budget Limit** | Cost quotas | Per-user spending caps |
|
|
22
|
+
| **Model** | Call provider | Final destination |
|
|
23
|
+
|
|
24
|
+
## Metadata
|
|
25
|
+
|
|
26
|
+
Pass via header (max 5 entries, flat only):
|
|
27
|
+
```typescript
|
|
28
|
+
headers: {
|
|
29
|
+
'cf-aig-metadata': JSON.stringify({
|
|
30
|
+
userId: 'user-123',
|
|
31
|
+
tier: 'pro',
|
|
32
|
+
region: 'us-east'
|
|
33
|
+
})
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Common Patterns
|
|
38
|
+
|
|
39
|
+
**Multi-model fallback:**
|
|
40
|
+
```
|
|
41
|
+
Start → GPT-4 → On error: Claude → On error: Llama
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Tiered access:**
|
|
45
|
+
```
|
|
46
|
+
Conditional: tier == 'enterprise' → GPT-4 (no limit)
|
|
47
|
+
Conditional: tier == 'pro' → Rate Limit 1000/hr → GPT-4o
|
|
48
|
+
Conditional: tier == 'free' → Rate Limit 10/hr → GPT-4o-mini
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**Gradual rollout:**
|
|
52
|
+
```
|
|
53
|
+
Percentage: 10% → New model, 90% → Old model
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
**Cost-based fallback:**
|
|
57
|
+
```
|
|
58
|
+
Budget Limit: $100/day per teamId
|
|
59
|
+
< 80%: GPT-4
|
|
60
|
+
>= 80%: GPT-4o-mini
|
|
61
|
+
>= 100%: Error
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Version Management
|
|
65
|
+
|
|
66
|
+
- Save changes as new version
|
|
67
|
+
- Test with `model: 'dynamic/route@v2'`
|
|
68
|
+
- Roll back by deploying previous version
|
|
69
|
+
|
|
70
|
+
## Monitoring
|
|
71
|
+
|
|
72
|
+
Dashboard → Gateway → Dynamic Routes:
|
|
73
|
+
- Request count per path
|
|
74
|
+
- Success/error rates
|
|
75
|
+
- Latency/cost by path
|
|
76
|
+
|
|
77
|
+
## Limitations
|
|
78
|
+
|
|
79
|
+
- Max 5 metadata entries
|
|
80
|
+
- Values: string/number/boolean/null only
|
|
81
|
+
- No nested objects
|
|
82
|
+
- Route names: alphanumeric + hyphens
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
# Features & Capabilities
|
|
2
|
+
|
|
3
|
+
## Caching
|
|
4
|
+
|
|
5
|
+
Dashboard: Settings → Cache Responses → Enable
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
// Custom TTL (1 hour)
|
|
9
|
+
headers: { 'cf-aig-cache-ttl': '3600' }
|
|
10
|
+
|
|
11
|
+
// Skip cache
|
|
12
|
+
headers: { 'cf-aig-skip-cache': 'true' }
|
|
13
|
+
|
|
14
|
+
// Custom cache key
|
|
15
|
+
headers: { 'cf-aig-cache-key': 'greeting-en' }
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
**Limits:** TTL 60s - 30 days. **Does NOT work with streaming.**
|
|
19
|
+
|
|
20
|
+
## Rate Limiting
|
|
21
|
+
|
|
22
|
+
Dashboard: Settings → Rate-limiting → Enable
|
|
23
|
+
|
|
24
|
+
- **Fixed window:** Resets at intervals
|
|
25
|
+
- **Sliding window:** Rolling window (more accurate)
|
|
26
|
+
- Returns `429` when exceeded
|
|
27
|
+
|
|
28
|
+
## Guardrails
|
|
29
|
+
|
|
30
|
+
Dashboard: Settings → Guardrails → Enable
|
|
31
|
+
|
|
32
|
+
Filter prompts/responses for inappropriate content. Actions: Flag (log) or Block (reject).
|
|
33
|
+
|
|
34
|
+
## Data Loss Prevention (DLP)
|
|
35
|
+
|
|
36
|
+
Dashboard: Settings → DLP → Enable
|
|
37
|
+
|
|
38
|
+
Detect PII (emails, SSNs, credit cards). Actions: Flag, Block, or Redact.
|
|
39
|
+
|
|
40
|
+
## Billing Modes
|
|
41
|
+
|
|
42
|
+
| Mode | Description | Setup |
|
|
43
|
+
|------|-------------|-------|
|
|
44
|
+
| **Unified Billing** | Pay through Cloudflare, no provider keys | Use `cf-aig-authorization` header only |
|
|
45
|
+
| **BYOK** | Store provider keys in dashboard | Add keys in Provider Keys section |
|
|
46
|
+
| **Pass-through** | Send provider key with each request | Include provider's auth header |
|
|
47
|
+
|
|
48
|
+
## Zero Data Retention
|
|
49
|
+
|
|
50
|
+
Dashboard: Settings → Privacy → Zero Data Retention
|
|
51
|
+
|
|
52
|
+
No prompts/responses stored. Request counts and costs still tracked.
|
|
53
|
+
|
|
54
|
+
## Logging
|
|
55
|
+
|
|
56
|
+
Dashboard: Settings → Logs → Enable (up to 10M logs)
|
|
57
|
+
|
|
58
|
+
Each entry: prompt, response, provider, model, tokens, cost, duration, cache status, metadata.
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
// Skip logging for request
|
|
62
|
+
headers: { 'cf-aig-collect-log': 'false' }
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
**Export:** Use Logpush to S3, GCS, Datadog, Splunk, etc.
|
|
66
|
+
|
|
67
|
+
## Custom Cost Tracking
|
|
68
|
+
|
|
69
|
+
For models not in Cloudflare's pricing database:
|
|
70
|
+
|
|
71
|
+
Dashboard: Gateway → Settings → Custom Costs
|
|
72
|
+
|
|
73
|
+
Or via API: set `model`, `input_cost`, `output_cost`.
|
|
74
|
+
|
|
75
|
+
## Supported Providers (22+)
|
|
76
|
+
|
|
77
|
+
| Provider | Unified API | Notes |
|
|
78
|
+
|----------|-------------|-------|
|
|
79
|
+
| OpenAI | `openai/gpt-4o` | Full support |
|
|
80
|
+
| Anthropic | `anthropic/claude-sonnet-4-5` | Full support |
|
|
81
|
+
| Google AI | `google-ai-studio/gemini-2.0-flash` | Full support |
|
|
82
|
+
| Workers AI | `workersai/@cf/meta/llama-3` | Native |
|
|
83
|
+
| Azure OpenAI | `azure-openai/*` | Deployment names |
|
|
84
|
+
| AWS Bedrock | Provider endpoint only | `/bedrock/*` |
|
|
85
|
+
| Groq | `groq/*` | Fast inference |
|
|
86
|
+
| Mistral, Cohere, Perplexity, xAI, DeepSeek, Cerebras | Full support | - |
|
|
87
|
+
|
|
88
|
+
## Best Practices
|
|
89
|
+
|
|
90
|
+
1. Enable caching for deterministic prompts
|
|
91
|
+
2. Set rate limits to prevent abuse
|
|
92
|
+
3. Use guardrails for user-facing AI
|
|
93
|
+
4. Enable DLP for sensitive data
|
|
94
|
+
5. Use unified billing or BYOK for simpler key management
|
|
95
|
+
6. Enable logging for debugging
|
|
96
|
+
7. Use zero data retention when privacy required
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
# AI Gateway SDK Integration
|
|
2
|
+
|
|
3
|
+
## Vercel AI SDK (Recommended)
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
import { createAiGateway } from 'ai-gateway-provider';
|
|
7
|
+
import { createOpenAI } from '@ai-sdk/openai';
|
|
8
|
+
import { generateText } from 'ai';
|
|
9
|
+
|
|
10
|
+
const gateway = createAiGateway({
|
|
11
|
+
accountId: process.env.CF_ACCOUNT_ID,
|
|
12
|
+
gateway: process.env.CF_GATEWAY_ID,
|
|
13
|
+
apiKey: process.env.CF_API_TOKEN // Optional for auth gateways
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
const openai = createOpenAI({ apiKey: process.env.OPENAI_API_KEY });
|
|
17
|
+
|
|
18
|
+
// Single model
|
|
19
|
+
const { text } = await generateText({
|
|
20
|
+
model: gateway(openai('gpt-4o')),
|
|
21
|
+
prompt: 'Hello'
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
// Automatic fallback array
|
|
25
|
+
const { text } = await generateText({
|
|
26
|
+
model: gateway([
|
|
27
|
+
openai('gpt-4o'),
|
|
28
|
+
anthropic('claude-sonnet-4-5'),
|
|
29
|
+
openai('gpt-4o-mini')
|
|
30
|
+
]),
|
|
31
|
+
prompt: 'Complex task'
|
|
32
|
+
});
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Options
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
model: gateway(openai('gpt-4o'), {
|
|
39
|
+
cacheKey: 'my-key',
|
|
40
|
+
cacheTtl: 3600,
|
|
41
|
+
metadata: { userId: 'u123', team: 'eng' }, // Max 5 entries
|
|
42
|
+
retries: { maxAttempts: 3, backoff: 'exponential' }
|
|
43
|
+
})
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## OpenAI SDK
|
|
47
|
+
|
|
48
|
+
```typescript
|
|
49
|
+
const client = new OpenAI({
|
|
50
|
+
apiKey: process.env.OPENAI_API_KEY,
|
|
51
|
+
baseURL: `https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/openai`,
|
|
52
|
+
defaultHeaders: { 'cf-aig-authorization': `Bearer ${cfToken}` }
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
// Unified API - switch providers via model name
|
|
56
|
+
model: 'openai/gpt-4o' // or 'anthropic/claude-sonnet-4-5'
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## Anthropic SDK
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
const client = new Anthropic({
|
|
63
|
+
apiKey: process.env.ANTHROPIC_API_KEY,
|
|
64
|
+
baseURL: `https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/anthropic`,
|
|
65
|
+
defaultHeaders: { 'cf-aig-authorization': `Bearer ${cfToken}` }
|
|
66
|
+
});
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Workers AI Binding
|
|
70
|
+
|
|
71
|
+
```toml
|
|
72
|
+
# wrangler.toml
|
|
73
|
+
[ai]
|
|
74
|
+
binding = "AI"
|
|
75
|
+
[[ai.gateway]]
|
|
76
|
+
id = "my-gateway"
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
await env.AI.run('@cf/meta/llama-3-8b-instruct',
|
|
81
|
+
{ messages: [...] },
|
|
82
|
+
{ gateway: { id: 'my-gateway', metadata: { userId: '123' } } }
|
|
83
|
+
);
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## LangChain / LlamaIndex
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
// Use OpenAI SDK pattern with custom baseURL
|
|
90
|
+
new ChatOpenAI({
|
|
91
|
+
configuration: {
|
|
92
|
+
baseURL: `https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/openai`
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
## HTTP / cURL
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
curl https://gateway.ai.cloudflare.com/v1/{account}/{gateway}/openai/chat/completions \
|
|
101
|
+
-H "Authorization: Bearer $OPENAI_KEY" \
|
|
102
|
+
-H "cf-aig-authorization: Bearer $CF_TOKEN" \
|
|
103
|
+
-H "cf-aig-metadata: {\"userId\":\"123\"}" \
|
|
104
|
+
-d '{"model":"gpt-4o","messages":[...]}'
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Headers Reference
|
|
108
|
+
|
|
109
|
+
| Header | Purpose |
|
|
110
|
+
|--------|---------|
|
|
111
|
+
| `cf-aig-authorization` | Gateway auth token |
|
|
112
|
+
| `cf-aig-metadata` | JSON object (max 5 keys) |
|
|
113
|
+
| `cf-aig-cache-ttl` | Cache TTL in seconds |
|
|
114
|
+
| `cf-aig-skip-cache` | `true` to bypass cache |
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# AI Gateway Troubleshooting
|
|
2
|
+
|
|
3
|
+
## Common Errors
|
|
4
|
+
|
|
5
|
+
| Error | Cause | Fix |
|
|
6
|
+
|-------|-------|-----|
|
|
7
|
+
| 401 | Missing `cf-aig-authorization` header | Add header with CF API token |
|
|
8
|
+
| 403 | Invalid provider key / BYOK expired | Check provider key in dashboard |
|
|
9
|
+
| 429 | Rate limit exceeded | Increase limit or implement backoff |
|
|
10
|
+
|
|
11
|
+
### 401 Fix
|
|
12
|
+
|
|
13
|
+
```typescript
|
|
14
|
+
const client = new OpenAI({
|
|
15
|
+
baseURL: `https://gateway.ai.cloudflare.com/v1/${accountId}/${gatewayId}/openai`,
|
|
16
|
+
defaultHeaders: { 'cf-aig-authorization': `Bearer ${CF_API_TOKEN}` }
|
|
17
|
+
});
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### 429 Retry Pattern
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
async function requestWithRetry(fn, maxRetries = 3) {
|
|
24
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
25
|
+
try { return await fn(); }
|
|
26
|
+
catch (e) {
|
|
27
|
+
if (e.status === 429 && i < maxRetries - 1) {
|
|
28
|
+
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000));
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
throw e;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Gotchas
|
|
38
|
+
|
|
39
|
+
| Issue | Reality |
|
|
40
|
+
|-------|---------|
|
|
41
|
+
| Metadata limits | Max 5 entries, flat only (no nesting) |
|
|
42
|
+
| Cache key collision | Use unique keys per expected response |
|
|
43
|
+
| BYOK + Unified Billing | Mutually exclusive |
|
|
44
|
+
| Rate limit scope | Per-gateway, not per-user (use dynamic routing for per-user) |
|
|
45
|
+
| Log delay | 30-60 seconds normal |
|
|
46
|
+
| Streaming + caching | **Incompatible** |
|
|
47
|
+
| Model name (unified API) | Prefix required: `openai/gpt-4o`, not `gpt-4o` |
|
|
48
|
+
|
|
49
|
+
## Cache Not Working
|
|
50
|
+
|
|
51
|
+
**Causes:**
|
|
52
|
+
- Different request params (temperature, etc.)
|
|
53
|
+
- Streaming enabled
|
|
54
|
+
- Caching disabled in settings
|
|
55
|
+
|
|
56
|
+
**Check:** `response.headers.get('cf-aig-cache-status')` → HIT or MISS
|
|
57
|
+
|
|
58
|
+
## Logs Not Appearing
|
|
59
|
+
|
|
60
|
+
1. Check logging enabled: Dashboard → Gateway → Settings
|
|
61
|
+
2. Remove `cf-aig-collect-log: false` header
|
|
62
|
+
3. Wait 30-60 seconds
|
|
63
|
+
4. Check log limit (10M default)
|
|
64
|
+
|
|
65
|
+
## Debugging
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Test connectivity
|
|
69
|
+
curl -v https://gateway.ai.cloudflare.com/v1/{account}/{gateway}/openai/models \
|
|
70
|
+
-H "Authorization: Bearer $OPENAI_KEY" \
|
|
71
|
+
-H "cf-aig-authorization: Bearer $CF_TOKEN"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
```typescript
|
|
75
|
+
// Check response headers
|
|
76
|
+
console.log('Cache:', response.headers.get('cf-aig-cache-status'));
|
|
77
|
+
console.log('Request ID:', response.headers.get('cf-ray'));
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Analytics
|
|
81
|
+
|
|
82
|
+
Dashboard → AI Gateway → Select gateway
|
|
83
|
+
|
|
84
|
+
**Metrics:** Requests, tokens, latency (p50/p95/p99), cache hit rate, costs
|
|
85
|
+
|
|
86
|
+
**Log filters:** `status: error`, `provider: openai`, `cost > 0.01`, `duration > 1000`
|
|
87
|
+
|
|
88
|
+
**Export:** Logpush to S3/GCS/Datadog/Splunk
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
# Cloudflare AI Search Reference
|
|
2
|
+
|
|
3
|
+
Expert guidance for implementing Cloudflare AI Search (formerly AutoRAG), Cloudflare's managed semantic search and RAG service.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
**AI Search** is a managed RAG (Retrieval-Augmented Generation) pipeline that combines:
|
|
8
|
+
- Automatic semantic indexing of your content
|
|
9
|
+
- Vector similarity search
|
|
10
|
+
- Built-in LLM generation
|
|
11
|
+
|
|
12
|
+
**Key value propositions:**
|
|
13
|
+
- **Zero vector management** - No manual embedding, indexing, or storage
|
|
14
|
+
- **Auto-indexing** - Content automatically re-indexed every 6 hours
|
|
15
|
+
- **Built-in generation** - Optional AI response generation from retrieved context
|
|
16
|
+
- **Multi-source** - Index from R2 buckets or website crawls
|
|
17
|
+
|
|
18
|
+
**Data source options:**
|
|
19
|
+
- **R2 bucket** - Index files from Cloudflare R2 (supports MD, TXT, HTML, PDF, DOC, CSV, JSON)
|
|
20
|
+
- **Website** - Crawl and index website content (requires Cloudflare-hosted domain)
|
|
21
|
+
|
|
22
|
+
**Indexing lifecycle:**
|
|
23
|
+
- Automatic 6-hour refresh cycle
|
|
24
|
+
- Manual "Force Sync" available (30s rate limit)
|
|
25
|
+
- Not designed for real-time updates
|
|
26
|
+
|
|
27
|
+
## Quick Start
|
|
28
|
+
|
|
29
|
+
**1. Create AI Search instance in dashboard:**
|
|
30
|
+
- Go to Cloudflare Dashboard → AI Search → Create
|
|
31
|
+
- Choose data source (R2 or website)
|
|
32
|
+
- Configure instance name and settings
|
|
33
|
+
|
|
34
|
+
**2. Configure Worker:**
|
|
35
|
+
|
|
36
|
+
```jsonc
|
|
37
|
+
// wrangler.jsonc
|
|
38
|
+
{
|
|
39
|
+
"ai": {
|
|
40
|
+
"binding": "AI"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**3. Use in Worker:**
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
export default {
|
|
49
|
+
async fetch(request, env) {
|
|
50
|
+
const answer = await env.AI.autorag("my-search-instance").aiSearch({
|
|
51
|
+
query: "How do I configure caching?",
|
|
52
|
+
model: "@cf/meta/llama-3.3-70b-instruct-fp8-fast"
|
|
53
|
+
});
|
|
54
|
+
|
|
55
|
+
return Response.json({ answer: answer.response });
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## When to Use AI Search
|
|
61
|
+
|
|
62
|
+
### AI Search vs Vectorize
|
|
63
|
+
|
|
64
|
+
| Factor | AI Search | Vectorize |
|
|
65
|
+
|--------|-----------|-----------|
|
|
66
|
+
| **Management** | Fully managed | Manual embedding + indexing |
|
|
67
|
+
| **Use when** | Want zero-ops RAG pipeline | Need custom embeddings/control |
|
|
68
|
+
| **Indexing** | Automatic (6hr cycle) | Manual via API |
|
|
69
|
+
| **Generation** | Built-in optional | Bring your own LLM |
|
|
70
|
+
| **Data sources** | R2 or website | Manual insert |
|
|
71
|
+
| **Best for** | Docs, support, enterprise search | Custom ML pipelines, real-time |
|
|
72
|
+
|
|
73
|
+
### AI Search vs Direct Workers AI
|
|
74
|
+
|
|
75
|
+
| Factor | AI Search | Workers AI (direct) |
|
|
76
|
+
|--------|-----------|---------------------|
|
|
77
|
+
| **Context** | Automatic retrieval | Manual context building |
|
|
78
|
+
| **Use when** | Need RAG (search + generate) | Simple generation tasks |
|
|
79
|
+
| **Indexing** | Built-in | Not applicable |
|
|
80
|
+
| **Best for** | Knowledge bases, docs | Simple chat, transformations |
|
|
81
|
+
|
|
82
|
+
### search() vs aiSearch()
|
|
83
|
+
|
|
84
|
+
| Method | Returns | Use When |
|
|
85
|
+
|--------|---------|----------|
|
|
86
|
+
| `search()` | Search results only | Building custom UI, need raw chunks |
|
|
87
|
+
| `aiSearch()` | AI response + results | Need ready-to-use answer (chatbot, Q&A) |
|
|
88
|
+
|
|
89
|
+
### Real-time Updates Consideration
|
|
90
|
+
|
|
91
|
+
**AI Search is NOT ideal if:**
|
|
92
|
+
- Need real-time content updates (<6 hours)
|
|
93
|
+
- Content changes multiple times per hour
|
|
94
|
+
- Strict freshness requirements
|
|
95
|
+
|
|
96
|
+
**AI Search IS ideal if:**
|
|
97
|
+
- Content relatively stable (docs, policies, knowledge bases)
|
|
98
|
+
- 6-hour refresh acceptable
|
|
99
|
+
- Prefer zero-ops over real-time
|
|
100
|
+
|
|
101
|
+
## Platform Limits
|
|
102
|
+
|
|
103
|
+
| Limit | Value |
|
|
104
|
+
|-------|-------|
|
|
105
|
+
| Max instances per account | 10 |
|
|
106
|
+
| Max files per instance | 100,000 |
|
|
107
|
+
| Max file size | 4 MB |
|
|
108
|
+
| Index frequency | Every 6 hours |
|
|
109
|
+
| Force Sync rate limit | Once per 30 seconds |
|
|
110
|
+
| Filter nesting depth | 2 levels |
|
|
111
|
+
| Filters per compound | 10 |
|
|
112
|
+
| Score threshold range | 0.0 - 1.0 |
|
|
113
|
+
|
|
114
|
+
## Reading Order
|
|
115
|
+
|
|
116
|
+
Navigate these references based on your task:
|
|
117
|
+
|
|
118
|
+
| Task | Read | Est. Time |
|
|
119
|
+
|------|------|-----------|
|
|
120
|
+
| **Understand AI Search** | README only | 5 min |
|
|
121
|
+
| **Implement basic search** | README → api.md | 10 min |
|
|
122
|
+
| **Configure data source** | README → configuration.md | 10 min |
|
|
123
|
+
| **Production patterns** | patterns.md | 15 min |
|
|
124
|
+
| **Debug issues** | gotchas.md | 10 min |
|
|
125
|
+
| **Full implementation** | README → api.md → patterns.md | 30 min |
|
|
126
|
+
|
|
127
|
+
## In This Reference
|
|
128
|
+
|
|
129
|
+
- **[api.md](api.md)** - API endpoints, methods, TypeScript interfaces
|
|
130
|
+
- **[configuration.md](configuration.md)** - Setup, data sources, wrangler config
|
|
131
|
+
- **[patterns.md](patterns.md)** - Common patterns, decision guidance, code examples
|
|
132
|
+
- **[gotchas.md](gotchas.md)** - Troubleshooting, code-level gotchas, limits
|
|
133
|
+
|
|
134
|
+
## See Also
|
|
135
|
+
|
|
136
|
+
- [Cloudflare AI Search Docs](https://developers.cloudflare.com/ai-search/)
|
|
137
|
+
- [Workers AI Docs](https://developers.cloudflare.com/workers-ai/)
|
|
138
|
+
- [Vectorize Docs](https://developers.cloudflare.com/vectorize/)
|