opencodekit 0.15.4 → 0.15.5
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/dist/index.js +1 -1
- package/dist/template/.opencode/command/cloudflare.md +70 -0
- package/dist/template/.opencode/package.json +1 -1
- package/dist/template/.opencode/skill/cloudflare/SKILL.md +233 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/README.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/api.md +100 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/configuration.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/gotchas.md +59 -0
- package/dist/template/.opencode/skill/cloudflare/references/agents-sdk/patterns.md +89 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-gateway/README.md +695 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/api.md +38 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/configuration.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/gotchas.md +41 -0
- package/dist/template/.opencode/skill/cloudflare/references/ai-search/patterns.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/api.md +27 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/configuration.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/gotchas.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/analytics-engine/patterns.md +36 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/README.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/api.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/configuration.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/gotchas.md +28 -0
- package/dist/template/.opencode/skill/cloudflare/references/api/patterns.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/README.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/api.md +78 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/configuration.md +128 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/gotchas.md +51 -0
- package/dist/template/.opencode/skill/cloudflare/references/api-shield/patterns.md +145 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/api.md +50 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/configuration.md +53 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/gotchas.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/argo-smart-routing/patterns.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/configuration.md +58 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/gotchas.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/bindings/patterns.md +37 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/README.md +71 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/api.md +168 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/configuration.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/gotchas.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/bot-management/patterns.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/api.md +54 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/configuration.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/gotchas.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/browser-rendering/patterns.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/c3/README.md +264 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/README.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/api.md +176 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/configuration.md +164 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/gotchas.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/cache-reserve/patterns.md +180 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/api.md +43 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/configuration.md +56 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/gotchas.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/containers/patterns.md +40 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/README.md +85 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/api.md +198 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/configuration.md +151 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/gotchas.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/cron-triggers/patterns.md +122 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/README.md +92 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/api.md +141 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/gotchas.md +70 -0
- package/dist/template/.opencode/skill/cloudflare/references/d1/patterns.md +144 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/README.md +34 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/api.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/configuration.md +67 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/gotchas.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/ddos/patterns.md +158 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/api.md +89 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/configuration.md +116 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/gotchas.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/do-storage/patterns.md +112 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/README.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/api.md +152 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/configuration.md +148 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/gotchas.md +158 -0
- package/dist/template/.opencode/skill/cloudflare/references/durable-objects/patterns.md +255 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/api.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/configuration.md +63 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/gotchas.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-routing/patterns.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/email-workers/README.md +598 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/api.md +137 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/configuration.md +133 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/gotchas.md +184 -0
- package/dist/template/.opencode/skill/cloudflare/references/hyperdrive/patterns.md +176 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/configuration.md +45 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/gotchas.md +23 -0
- package/dist/template/.opencode/skill/cloudflare/references/images/patterns.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/README.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/api.md +114 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/configuration.md +92 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/gotchas.md +117 -0
- package/dist/template/.opencode/skill/cloudflare/references/kv/patterns.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/README.md +64 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/api.md +144 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/configuration.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/gotchas.md +187 -0
- package/dist/template/.opencode/skill/cloudflare/references/miniflare/patterns.md +211 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/README.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/api.md +240 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/gotchas.md +171 -0
- package/dist/template/.opencode/skill/cloudflare/references/network-interconnect/patterns.md +171 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/api.md +51 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/configuration.md +60 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/gotchas.md +36 -0
- package/dist/template/.opencode/skill/cloudflare/references/observability/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/README.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/api.md +200 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/configuration.md +228 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/gotchas.md +161 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages/patterns.md +145 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/README.md +57 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/api.md +201 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/configuration.md +159 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/gotchas.md +151 -0
- package/dist/template/.opencode/skill/cloudflare/references/pages-functions/patterns.md +190 -0
- package/dist/template/.opencode/skill/cloudflare/references/pipelines/README.md +664 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/README.md +107 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/api.md +194 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/configuration.md +216 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/gotchas.md +223 -0
- package/dist/template/.opencode/skill/cloudflare/references/pulumi/patterns.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/README.md +69 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/api.md +138 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/configuration.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/gotchas.md +112 -0
- package/dist/template/.opencode/skill/cloudflare/references/queues/patterns.md +155 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/README.md +61 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/api.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/configuration.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/gotchas.md +94 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2/patterns.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/README.md +18 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/api.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/configuration.md +39 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/gotchas.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-data-catalog/patterns.md +46 -0
- package/dist/template/.opencode/skill/cloudflare/references/r2-sql/README.md +512 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/README.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/api.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/configuration.md +63 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/gotchas.md +75 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtime-sfu/patterns.md +102 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/README.md +81 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/api.md +164 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/configuration.md +147 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/gotchas.md +172 -0
- package/dist/template/.opencode/skill/cloudflare/references/realtimekit/patterns.md +155 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/README.md +90 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/api.md +178 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/configuration.md +131 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/gotchas.md +156 -0
- package/dist/template/.opencode/skill/cloudflare/references/sandbox/patterns.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/README.md +58 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/api.md +182 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/configuration.md +140 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/gotchas.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/secrets-store/patterns.md +218 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/README.md +91 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/api.md +139 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/configuration.md +129 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/gotchas.md +87 -0
- package/dist/template/.opencode/skill/cloudflare/references/smart-placement/patterns.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/README.md +15 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/api.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/configuration.md +33 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/gotchas.md +21 -0
- package/dist/template/.opencode/skill/cloudflare/references/snippets/patterns.md +34 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/api.md +24 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/configuration.md +43 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/gotchas.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/spectrum/patterns.md +40 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/configuration.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/gotchas.md +44 -0
- package/dist/template/.opencode/skill/cloudflare/references/static-assets/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/README.md +103 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/api.md +204 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/configuration.md +127 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/gotchas.md +131 -0
- package/dist/template/.opencode/skill/cloudflare/references/stream/patterns.md +152 -0
- package/dist/template/.opencode/skill/cloudflare/references/tail-workers/README.md +640 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/README.md +76 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/api.md +159 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/configuration.md +156 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/gotchas.md +207 -0
- package/dist/template/.opencode/skill/cloudflare/references/terraform/patterns.md +135 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/README.md +82 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/api.md +105 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/configuration.md +113 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/gotchas.md +115 -0
- package/dist/template/.opencode/skill/cloudflare/references/tunnel/patterns.md +157 -0
- package/dist/template/.opencode/skill/cloudflare/references/turn/README.md +699 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/configuration.md +19 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/gotchas.md +27 -0
- package/dist/template/.opencode/skill/cloudflare/references/turnstile/patterns.md +41 -0
- package/dist/template/.opencode/skill/cloudflare/references/vectorize/README.md +682 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/README.md +14 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/api.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/configuration.md +44 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/gotchas.md +24 -0
- package/dist/template/.opencode/skill/cloudflare/references/waf/patterns.md +29 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/README.md +19 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/api.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/configuration.md +31 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/gotchas.md +28 -0
- package/dist/template/.opencode/skill/cloudflare/references/web-analytics/patterns.md +52 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/README.md +47 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/api.md +199 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/configuration.md +185 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/gotchas.md +203 -0
- package/dist/template/.opencode/skill/cloudflare/references/workerd/patterns.md +216 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/README.md +96 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/api.md +137 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/configuration.md +147 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/gotchas.md +99 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers/patterns.md +149 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-ai/README.md +116 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/README.md +48 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/api.md +169 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/configuration.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/gotchas.md +130 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-for-platforms/patterns.md +170 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/README.md +16 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/api.md +20 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/configuration.md +3 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/gotchas.md +35 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-playground/patterns.md +42 -0
- package/dist/template/.opencode/skill/cloudflare/references/workers-vpc/README.md +579 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/README.md +62 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/api.md +125 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/configuration.md +177 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/gotchas.md +136 -0
- package/dist/template/.opencode/skill/cloudflare/references/workflows/patterns.md +132 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/README.md +90 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/api.md +140 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/configuration.md +128 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/gotchas.md +93 -0
- package/dist/template/.opencode/skill/cloudflare/references/wrangler/patterns.md +150 -0
- package/dist/template/.opencode/skill/cloudflare/references/zaraz/README.md +360 -0
- package/dist/template/.opencode/skill/react-best-practices/AGENTS.md +2410 -0
- package/dist/template/.opencode/skill/react-best-practices/README.md +123 -0
- package/dist/template/.opencode/skill/react-best-practices/SKILL.md +125 -0
- package/dist/template/.opencode/skill/react-best-practices/metadata.json +15 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/_sections.md +46 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/_template.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/advanced-use-latest.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-api-routes.md +38 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-defer-await.md +80 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-dependencies.md +36 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-parallel.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-barrel-imports.md +59 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-conditional.md +31 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/bundle-preload.md +50 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-event-listeners.md +74 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-batch-dom-css.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-cache-storage.md +70 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-length-check-first.md +49 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/template/.opencode/skill/react-best-practices/rules/server-serialization.md +38 -0
- package/dist/template/.opencode/skill/supabase/SKILL.md +120 -0
- package/dist/template/.opencode/skill/supabase/mcp.json +27 -0
- package/dist/template/.opencode/skill/vercel-deploy-claimable/SKILL.md +112 -0
- package/dist/template/.opencode/skill/vercel-deploy-claimable/scripts/deploy.sh +249 -0
- package/dist/template/.opencode/skill/web-design-guidelines/SKILL.md +39 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -750,7 +750,7 @@ var cac = (name = "") => new CAC(name);
|
|
|
750
750
|
// package.json
|
|
751
751
|
var package_default = {
|
|
752
752
|
name: "opencodekit",
|
|
753
|
-
version: "0.15.
|
|
753
|
+
version: "0.15.5",
|
|
754
754
|
description: "CLI tool for bootstrapping and managing OpenCodeKit projects",
|
|
755
755
|
keywords: ["agents", "cli", "mcp", "opencode", "opencodekit", "template"],
|
|
756
756
|
license: "MIT",
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Load Cloudflare skill and get contextual guidance for your task
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
Load the Cloudflare platform skill and help with any Cloudflare development task.
|
|
6
|
+
|
|
7
|
+
## Workflow
|
|
8
|
+
|
|
9
|
+
### Step 1: Check for --update-skill flag
|
|
10
|
+
|
|
11
|
+
If $ARGUMENTS contains `--update-skill`:
|
|
12
|
+
|
|
13
|
+
1. Determine install location by checking which exists:
|
|
14
|
+
- Local: `.opencode/skill/cloudflare/`
|
|
15
|
+
- Global: `~/.config/opencode/skill/cloudflare/`
|
|
16
|
+
|
|
17
|
+
2. Run the appropriate install command:
|
|
18
|
+
```bash
|
|
19
|
+
# For local installation
|
|
20
|
+
curl -fsSL https://raw.githubusercontent.com/dmmulroy/cloudflare-skill/main/install.sh | bash
|
|
21
|
+
|
|
22
|
+
# For global installation
|
|
23
|
+
curl -fsSL https://raw.githubusercontent.com/dmmulroy/cloudflare-skill/main/install.sh | bash -s -- --global
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
3. Output success message and stop (do not continue to other steps).
|
|
27
|
+
|
|
28
|
+
### Step 2: Load cloudflare skill
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
skill({ name: 'cloudflare' })
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### Step 3: Identify task type from user request
|
|
35
|
+
|
|
36
|
+
Analyze $ARGUMENTS to determine:
|
|
37
|
+
- **Product(s) needed** (Workers, D1, R2, Durable Objects, etc.)
|
|
38
|
+
- **Task type** (new project setup, feature implementation, debugging, config)
|
|
39
|
+
|
|
40
|
+
Use decision trees in SKILL.md to select correct product.
|
|
41
|
+
|
|
42
|
+
### Step 4: Read relevant reference files
|
|
43
|
+
|
|
44
|
+
Based on task type, read from `references/<product>/`:
|
|
45
|
+
|
|
46
|
+
| Task | Files to Read |
|
|
47
|
+
|------|---------------|
|
|
48
|
+
| New project | `README.md` + `configuration.md` |
|
|
49
|
+
| Implement feature | `README.md` + `api.md` + `patterns.md` |
|
|
50
|
+
| Debug/troubleshoot | `gotchas.md` |
|
|
51
|
+
| All-in-one (monolithic) | `SKILL.md` |
|
|
52
|
+
|
|
53
|
+
### Step 5: Execute task
|
|
54
|
+
|
|
55
|
+
Apply Cloudflare-specific patterns and APIs from references to complete the user's request.
|
|
56
|
+
|
|
57
|
+
### Step 6: Summarize
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
=== Cloudflare Task Complete ===
|
|
61
|
+
|
|
62
|
+
Product(s): <products used>
|
|
63
|
+
Files referenced: <reference files consulted>
|
|
64
|
+
|
|
65
|
+
<brief summary of what was done>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
<user-request>
|
|
69
|
+
$ARGUMENTS
|
|
70
|
+
</user-request>
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cloudflare
|
|
3
|
+
description: Comprehensive Cloudflare platform skill covering Workers, Pages, storage (KV, D1, R2), AI (Workers AI, Vectorize, Agents SDK), networking (Tunnel, Spectrum), security (WAF, DDoS), and infrastructure-as-code (Terraform, Pulumi). Use for any Cloudflare development task.
|
|
4
|
+
references:
|
|
5
|
+
- workers
|
|
6
|
+
- pages
|
|
7
|
+
- d1
|
|
8
|
+
- durable-objects
|
|
9
|
+
- workers-ai
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Cloudflare Platform Skill
|
|
13
|
+
|
|
14
|
+
Consolidated skill for building on the Cloudflare platform. Use decision trees below to find the right product, then load detailed references.
|
|
15
|
+
|
|
16
|
+
## How to Use This Skill
|
|
17
|
+
|
|
18
|
+
### Reference File Structure
|
|
19
|
+
|
|
20
|
+
Each product in `./references/<product>/` contains a `README.md` as the entry point, which may be structured in one of two ways:
|
|
21
|
+
|
|
22
|
+
**Multi-file format (5 files):**
|
|
23
|
+
| File | Purpose | When to Read |
|
|
24
|
+
|------|---------|--------------|
|
|
25
|
+
| `README.md` | Overview, when to use, getting started | **Always read first** |
|
|
26
|
+
| `api.md` | Runtime API, types, method signatures | Writing code |
|
|
27
|
+
| `configuration.md` | wrangler.toml, bindings, setup | Configuring a project |
|
|
28
|
+
| `patterns.md` | Common patterns, best practices | Implementation guidance |
|
|
29
|
+
| `gotchas.md` | Pitfalls, limitations, edge cases | Debugging, avoiding mistakes |
|
|
30
|
+
|
|
31
|
+
**Single-file format:** All information consolidated in `README.md`.
|
|
32
|
+
|
|
33
|
+
### Reading Order
|
|
34
|
+
|
|
35
|
+
1. Start with `README.md`
|
|
36
|
+
2. Then read additional files relevant to your task (if multi-file format):
|
|
37
|
+
- Building feature → `api.md` + `patterns.md`
|
|
38
|
+
- Setting up project → `configuration.md`
|
|
39
|
+
- Troubleshooting → `gotchas.md`
|
|
40
|
+
|
|
41
|
+
### Example Paths
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
./references/workflows/README.md # Start here for Workflows
|
|
45
|
+
./references/workflows/api.md # Workflow class, step methods
|
|
46
|
+
./references/durable-objects/gotchas.md # DO limitations
|
|
47
|
+
./references/workers-ai/README.md # Single-file - all Workers AI docs
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Quick Decision Trees
|
|
51
|
+
|
|
52
|
+
### "I need to run code"
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Need to run code?
|
|
56
|
+
├─ Serverless functions at the edge → workers/
|
|
57
|
+
├─ Full-stack web app with Git deploys → pages/
|
|
58
|
+
├─ Stateful coordination/real-time → durable-objects/
|
|
59
|
+
├─ Long-running multi-step jobs → workflows/
|
|
60
|
+
├─ Run containers → containers/
|
|
61
|
+
├─ Multi-tenant (customers deploy code) → workers-for-platforms/
|
|
62
|
+
└─ Scheduled tasks (cron) → cron-triggers/
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### "I need to store data"
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
Need storage?
|
|
69
|
+
├─ Key-value (config, sessions, cache) → kv/
|
|
70
|
+
├─ Relational SQL → d1/ (SQLite) or hyperdrive/ (existing Postgres/MySQL)
|
|
71
|
+
├─ Object/file storage (S3-compatible) → r2/
|
|
72
|
+
├─ Message queue (async processing) → queues/
|
|
73
|
+
├─ Vector embeddings (AI/semantic search) → vectorize/
|
|
74
|
+
├─ Strongly-consistent per-entity state → durable-objects/ (DO storage)
|
|
75
|
+
├─ Secrets management → secrets-store/
|
|
76
|
+
└─ Streaming ETL to R2 → pipelines/
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### "I need AI/ML"
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
Need AI?
|
|
83
|
+
├─ Run inference (LLMs, embeddings, images) → workers-ai/
|
|
84
|
+
├─ Vector database for RAG/search → vectorize/
|
|
85
|
+
├─ Build stateful AI agents → agents-sdk/
|
|
86
|
+
├─ Gateway for any AI provider (caching, routing) → ai-gateway/
|
|
87
|
+
└─ AI-powered search widget → ai-search/
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### "I need networking/connectivity"
|
|
91
|
+
|
|
92
|
+
```
|
|
93
|
+
Need networking?
|
|
94
|
+
├─ Expose local service to internet → tunnel/
|
|
95
|
+
├─ TCP/UDP proxy (non-HTTP) → spectrum/
|
|
96
|
+
├─ WebRTC TURN server → turn/
|
|
97
|
+
├─ Private network connectivity → network-interconnect/
|
|
98
|
+
├─ Optimize routing → argo-smart-routing/
|
|
99
|
+
└─ Real-time video/audio → realtimekit/ or realtime-sfu/
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### "I need security"
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
Need security?
|
|
106
|
+
├─ Web Application Firewall → waf/
|
|
107
|
+
├─ DDoS protection → ddos/
|
|
108
|
+
├─ Bot detection/management → bot-management/
|
|
109
|
+
├─ API protection → api-shield/
|
|
110
|
+
├─ CAPTCHA alternative → turnstile/
|
|
111
|
+
└─ Credential leak detection → waf/ (managed ruleset)
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### "I need media/content"
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
Need media?
|
|
118
|
+
├─ Image optimization/transformation → images/
|
|
119
|
+
├─ Video streaming/encoding → stream/
|
|
120
|
+
├─ Browser automation/screenshots → browser-rendering/
|
|
121
|
+
└─ Third-party script management → zaraz/
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### "I need infrastructure-as-code"
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
Need IaC?
|
|
128
|
+
├─ Pulumi → pulumi/
|
|
129
|
+
├─ Terraform → terraform/
|
|
130
|
+
└─ Direct API → api/
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Product Index
|
|
134
|
+
|
|
135
|
+
### Compute & Runtime
|
|
136
|
+
| Product | Entry File |
|
|
137
|
+
|---------|------------|
|
|
138
|
+
| Workers | `./references/workers/README.md` |
|
|
139
|
+
| Pages | `./references/pages/README.md` |
|
|
140
|
+
| Pages Functions | `./references/pages-functions/README.md` |
|
|
141
|
+
| Durable Objects | `./references/durable-objects/README.md` |
|
|
142
|
+
| Workflows | `./references/workflows/README.md` |
|
|
143
|
+
| Containers | `./references/containers/README.md` |
|
|
144
|
+
| Workers for Platforms | `./references/workers-for-platforms/README.md` |
|
|
145
|
+
| Cron Triggers | `./references/cron-triggers/README.md` |
|
|
146
|
+
| Tail Workers | `./references/tail-workers/README.md` |
|
|
147
|
+
| Snippets | `./references/snippets/README.md` |
|
|
148
|
+
| Smart Placement | `./references/smart-placement/README.md` |
|
|
149
|
+
|
|
150
|
+
### Storage & Data
|
|
151
|
+
| Product | Entry File |
|
|
152
|
+
|---------|------------|
|
|
153
|
+
| KV | `./references/kv/README.md` |
|
|
154
|
+
| D1 | `./references/d1/README.md` |
|
|
155
|
+
| R2 | `./references/r2/README.md` |
|
|
156
|
+
| Queues | `./references/queues/README.md` |
|
|
157
|
+
| Hyperdrive | `./references/hyperdrive/README.md` |
|
|
158
|
+
| DO Storage | `./references/do-storage/README.md` |
|
|
159
|
+
| Secrets Store | `./references/secrets-store/README.md` |
|
|
160
|
+
| Pipelines | `./references/pipelines/README.md` |
|
|
161
|
+
| R2 Data Catalog | `./references/r2-data-catalog/README.md` |
|
|
162
|
+
| R2 SQL | `./references/r2-sql/README.md` |
|
|
163
|
+
|
|
164
|
+
### AI & Machine Learning
|
|
165
|
+
| Product | Entry File |
|
|
166
|
+
|---------|------------|
|
|
167
|
+
| Workers AI | `./references/workers-ai/README.md` |
|
|
168
|
+
| Vectorize | `./references/vectorize/README.md` |
|
|
169
|
+
| Agents SDK | `./references/agents-sdk/README.md` |
|
|
170
|
+
| AI Gateway | `./references/ai-gateway/README.md` |
|
|
171
|
+
| AI Search | `./references/ai-search/README.md` |
|
|
172
|
+
|
|
173
|
+
### Networking & Connectivity
|
|
174
|
+
| Product | Entry File |
|
|
175
|
+
|---------|------------|
|
|
176
|
+
| Tunnel | `./references/tunnel/README.md` |
|
|
177
|
+
| Spectrum | `./references/spectrum/README.md` |
|
|
178
|
+
| TURN | `./references/turn/README.md` |
|
|
179
|
+
| Network Interconnect | `./references/network-interconnect/README.md` |
|
|
180
|
+
| Argo Smart Routing | `./references/argo-smart-routing/README.md` |
|
|
181
|
+
| Workers VPC | `./references/workers-vpc/README.md` |
|
|
182
|
+
|
|
183
|
+
### Security
|
|
184
|
+
| Product | Entry File |
|
|
185
|
+
|---------|------------|
|
|
186
|
+
| WAF | `./references/waf/README.md` |
|
|
187
|
+
| DDoS Protection | `./references/ddos/README.md` |
|
|
188
|
+
| Bot Management | `./references/bot-management/README.md` |
|
|
189
|
+
| API Shield | `./references/api-shield/README.md` |
|
|
190
|
+
| Turnstile | `./references/turnstile/README.md` |
|
|
191
|
+
|
|
192
|
+
### Media & Content
|
|
193
|
+
| Product | Entry File |
|
|
194
|
+
|---------|------------|
|
|
195
|
+
| Images | `./references/images/README.md` |
|
|
196
|
+
| Stream | `./references/stream/README.md` |
|
|
197
|
+
| Browser Rendering | `./references/browser-rendering/README.md` |
|
|
198
|
+
| Zaraz | `./references/zaraz/README.md` |
|
|
199
|
+
|
|
200
|
+
### Real-Time Communication
|
|
201
|
+
| Product | Entry File |
|
|
202
|
+
|---------|------------|
|
|
203
|
+
| RealtimeKit | `./references/realtimekit/README.md` |
|
|
204
|
+
| Realtime SFU | `./references/realtime-sfu/README.md` |
|
|
205
|
+
|
|
206
|
+
### Developer Tools
|
|
207
|
+
| Product | Entry File |
|
|
208
|
+
|---------|------------|
|
|
209
|
+
| Wrangler | `./references/wrangler/README.md` |
|
|
210
|
+
| Miniflare | `./references/miniflare/README.md` |
|
|
211
|
+
| C3 | `./references/c3/README.md` |
|
|
212
|
+
| Observability | `./references/observability/README.md` |
|
|
213
|
+
| Analytics Engine | `./references/analytics-engine/README.md` |
|
|
214
|
+
| Web Analytics | `./references/web-analytics/README.md` |
|
|
215
|
+
| Sandbox | `./references/sandbox/README.md` |
|
|
216
|
+
| Workerd | `./references/workerd/README.md` |
|
|
217
|
+
| Workers Playground | `./references/workers-playground/README.md` |
|
|
218
|
+
|
|
219
|
+
### Infrastructure as Code
|
|
220
|
+
| Product | Entry File |
|
|
221
|
+
|---------|------------|
|
|
222
|
+
| Pulumi | `./references/pulumi/README.md` |
|
|
223
|
+
| Terraform | `./references/terraform/README.md` |
|
|
224
|
+
| API | `./references/api/README.md` |
|
|
225
|
+
|
|
226
|
+
### Other Services
|
|
227
|
+
| Product | Entry File |
|
|
228
|
+
|---------|------------|
|
|
229
|
+
| Email Routing | `./references/email-routing/README.md` |
|
|
230
|
+
| Email Workers | `./references/email-workers/README.md` |
|
|
231
|
+
| Static Assets | `./references/static-assets/README.md` |
|
|
232
|
+
| Bindings | `./references/bindings/README.md` |
|
|
233
|
+
| Cache Reserve | `./references/cache-reserve/README.md` |
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Cloudflare Agents SDK
|
|
2
|
+
|
|
3
|
+
Cloudflare Agents SDK enables building AI-powered agents on Durable Objects with state, WebSockets, SQL, scheduling, and AI integration.
|
|
4
|
+
|
|
5
|
+
## Core Value
|
|
6
|
+
Build stateful, globally distributed AI agents with persistent memory, real-time connections, scheduled tasks, and async workflows.
|
|
7
|
+
|
|
8
|
+
## When to Use
|
|
9
|
+
- Persistent state + memory required
|
|
10
|
+
- Real-time WebSocket connections
|
|
11
|
+
- Long-running workflows (minutes/hours)
|
|
12
|
+
- Chat interfaces with AI models
|
|
13
|
+
- Scheduled/recurring tasks with state
|
|
14
|
+
- DB queries with agent state
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
```typescript
|
|
18
|
+
import { Agent } from "agents";
|
|
19
|
+
|
|
20
|
+
export class MyAgent extends Agent<Env> {
|
|
21
|
+
onStart() {
|
|
22
|
+
this.sql`CREATE TABLE IF NOT EXISTS users (id TEXT PRIMARY KEY)`;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
async onRequest(request: Request) {
|
|
26
|
+
return Response.json({ state: this.state });
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## See Also
|
|
32
|
+
- durable-objects - Agent infrastructure
|
|
33
|
+
- d1 - External database integration
|
|
34
|
+
- workers-ai - AI model integration
|
|
35
|
+
- vectorize - Vector search for RAG patterns
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# API Reference
|
|
2
|
+
|
|
3
|
+
## Lifecycle
|
|
4
|
+
|
|
5
|
+
**onStart()** - Init/hibernation restart:
|
|
6
|
+
```ts
|
|
7
|
+
onStart() {
|
|
8
|
+
this.sql`CREATE TABLE IF NOT EXISTS users (id TEXT PRIMARY KEY, name TEXT)`;
|
|
9
|
+
if (!this.state.initialized) this.setState({initialized: true, messages: []});
|
|
10
|
+
}
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
**onRequest(req)** - HTTP:
|
|
14
|
+
```ts
|
|
15
|
+
async onRequest(req: Request) {
|
|
16
|
+
const {pathname} = new URL(req.url);
|
|
17
|
+
if (pathname === "/users") return Response.json(this.sql<{id,name}>`SELECT * FROM users`);
|
|
18
|
+
return new Response("Not found", {status: 404});
|
|
19
|
+
}
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**onConnect(conn, ctx)** - WebSocket:
|
|
23
|
+
```ts
|
|
24
|
+
async onConnect(conn: Connection, ctx: ConnectionContext) {
|
|
25
|
+
conn.accept();
|
|
26
|
+
conn.setState({userId: ctx.request.headers.get("X-User-ID")});
|
|
27
|
+
conn.send(JSON.stringify({type: "connected", state: this.state}));
|
|
28
|
+
}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**onMessage(conn, msg)** - WS messages:
|
|
32
|
+
```ts
|
|
33
|
+
async onMessage(conn: Connection, msg: WSMessage) {
|
|
34
|
+
const m = JSON.parse(msg as string);
|
|
35
|
+
if (m.type === "chat") {
|
|
36
|
+
this.setState({messages: [...this.state.messages, m]});
|
|
37
|
+
this.connections.forEach(c => c.send(JSON.stringify(m)));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
**onEmail(email)** - Email routing:
|
|
43
|
+
```ts
|
|
44
|
+
async onEmail(email: AgentEmail) {
|
|
45
|
+
const text = await email.text();
|
|
46
|
+
this.sql`INSERT INTO emails (from_addr,subject,body) VALUES (${email.from},${email.headers.get("subject")},${text})`;
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## State
|
|
51
|
+
|
|
52
|
+
```ts
|
|
53
|
+
this.setState({count: 42, users: []}); // Auto-syncs
|
|
54
|
+
this.setState({...this.state, count: this.state.count + 1});
|
|
55
|
+
const s = this.state;
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## SQL
|
|
59
|
+
|
|
60
|
+
```ts
|
|
61
|
+
this.sql`CREATE TABLE IF NOT EXISTS users (id TEXT PRIMARY KEY, name TEXT)`;
|
|
62
|
+
this.sql`INSERT INTO users (id,name) VALUES (${userId},${name})`;
|
|
63
|
+
const users = this.sql<{id,name}>`SELECT * FROM users`;
|
|
64
|
+
const user = this.sql<{name}>`SELECT name FROM users WHERE id = ${userId}`; // Prevents injection
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Scheduling
|
|
68
|
+
|
|
69
|
+
```ts
|
|
70
|
+
await this.schedule(new Date("2026-12-25T00:00:00Z"), "sendGreeting", {msg:"Hi"}); // Time
|
|
71
|
+
await this.schedule(60, "checkStatus", {}); // Delay (sec)
|
|
72
|
+
await this.schedule("0 0 * * *", "dailyCleanup", {}); // Cron
|
|
73
|
+
await this.schedule("*/5 * * * *", "syncData", {}); // Every 5min
|
|
74
|
+
const schedules = await this.getSchedules();
|
|
75
|
+
await this.cancelSchedule(scheduleId);
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Connections
|
|
79
|
+
|
|
80
|
+
```ts
|
|
81
|
+
this.connections.forEach(c => c.send(JSON.stringify(msg))); // Broadcast
|
|
82
|
+
conn.send(JSON.stringify({type:"update",data})); // Specific
|
|
83
|
+
conn.close(1000, "Goodbye");
|
|
84
|
+
conn.setState({userId:"123",role:"admin"});
|
|
85
|
+
const uid = conn.state.userId;
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## AI
|
|
89
|
+
|
|
90
|
+
```ts
|
|
91
|
+
const r = await this.env.AI.run("@cf/meta/llama-3.1-8b-instruct", {prompt});
|
|
92
|
+
|
|
93
|
+
const stream = await client.chat.completions.create({
|
|
94
|
+
model: "gpt-4", messages: [{role:"user",content:prompt}], stream: true
|
|
95
|
+
});
|
|
96
|
+
for await (const chunk of stream) {
|
|
97
|
+
const content = chunk.choices[0]?.delta?.content;
|
|
98
|
+
if (content) conn.send(JSON.stringify({type:"chunk",content}));
|
|
99
|
+
}
|
|
100
|
+
```
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Configuration
|
|
2
|
+
|
|
3
|
+
## Wrangler Setup
|
|
4
|
+
|
|
5
|
+
```toml
|
|
6
|
+
name = "my-agents-app"
|
|
7
|
+
|
|
8
|
+
[[durable_objects.bindings]]
|
|
9
|
+
name = "MyAgent"
|
|
10
|
+
class_name = "MyAgent"
|
|
11
|
+
|
|
12
|
+
[[migrations]]
|
|
13
|
+
tag = "v1"
|
|
14
|
+
new_sqlite_classes = ["MyAgent"]
|
|
15
|
+
|
|
16
|
+
[ai]
|
|
17
|
+
binding = "AI"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
```jsonc
|
|
21
|
+
{
|
|
22
|
+
"durable_objects": {
|
|
23
|
+
"bindings": [
|
|
24
|
+
{"name": "MyAgent", "class_name": "MyAgent"}
|
|
25
|
+
]
|
|
26
|
+
},
|
|
27
|
+
"migrations": [
|
|
28
|
+
{"tag": "v1", "new_sqlite_classes": ["MyAgent"]}
|
|
29
|
+
],
|
|
30
|
+
"ai": {
|
|
31
|
+
"binding": "AI"
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Environment Bindings
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
interface Env {
|
|
40
|
+
AI?: Ai; // Workers AI
|
|
41
|
+
MyAgent?: DurableObjectNamespace<MyAgent>;
|
|
42
|
+
DB?: D1Database; // D1 database
|
|
43
|
+
KV?: KVNamespace; // KV storage
|
|
44
|
+
R2?: R2Bucket; // R2 bucket
|
|
45
|
+
OPENAI_API_KEY?: string; // Secrets
|
|
46
|
+
QUEUE?: Queue; // Queues
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Deployment
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# Local dev
|
|
54
|
+
npx wrangler dev
|
|
55
|
+
|
|
56
|
+
# Deploy production
|
|
57
|
+
npx wrangler deploy
|
|
58
|
+
|
|
59
|
+
# Set secrets
|
|
60
|
+
npx wrangler secret put OPENAI_API_KEY
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Agent Routing
|
|
64
|
+
|
|
65
|
+
```typescript
|
|
66
|
+
export default {
|
|
67
|
+
async fetch(request: Request, env: Env) {
|
|
68
|
+
const id = env.MyAgent.idFromName("user-123");
|
|
69
|
+
const stub = env.MyAgent.get(id);
|
|
70
|
+
return stub.fetch(request);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Email Routing
|
|
76
|
+
|
|
77
|
+
Configure email routing in dashboard to deliver emails to agent:
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Destination: Workers with Durable Objects
|
|
81
|
+
Worker: my-agents-app
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## AI Gateway (Optional)
|
|
85
|
+
|
|
86
|
+
```typescript
|
|
87
|
+
// Enable caching/routing through AI Gateway
|
|
88
|
+
const response = await this.env.AI.run(
|
|
89
|
+
"@cf/meta/llama-3.1-8b-instruct",
|
|
90
|
+
{ prompt },
|
|
91
|
+
{
|
|
92
|
+
gateway: {
|
|
93
|
+
id: "my-gateway-id",
|
|
94
|
+
skipCache: false,
|
|
95
|
+
cacheTtl: 3600
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
```
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Gotchas & Best Practices
|
|
2
|
+
|
|
3
|
+
## State
|
|
4
|
+
DO: `setState()` (auto-syncs), serializable, limit size | DON'T: Mutate directly, large objects (SQL), functions/circular
|
|
5
|
+
```ts
|
|
6
|
+
// ❌ this.state.count++ | ✅ this.setState({...this.state, count: this.state.count + 1})
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## SQL
|
|
10
|
+
DO: Parameterized, create in `onStart()`, types | DON'T: Direct interpolation, assume exists
|
|
11
|
+
```ts
|
|
12
|
+
// ❌ this.sql`...WHERE id = '${userId}'` | ✅ this.sql`...WHERE id = ${userId}`
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## WebSocket
|
|
16
|
+
DO: `conn.accept()`, errors, cleanup | DON'T: Forget accept (timeout), assume persist, sensitive in state
|
|
17
|
+
```ts
|
|
18
|
+
async onConnect(conn: Connection, ctx: ConnectionContext) { conn.accept(); conn.setState({userId: "123"}); }
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## Scheduling
|
|
22
|
+
1000 tasks/agent, 1min min, persist. Clean old, descriptive names, handle failures
|
|
23
|
+
```ts
|
|
24
|
+
async checkSchedules() { if ((await this.getSchedules()).length > 800) console.warn("Near limit!"); }
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## AI
|
|
28
|
+
Optimize: AI Gateway cache, rate limit, stream | Error: try/catch, fallback, quota/timeout
|
|
29
|
+
```ts
|
|
30
|
+
try { return await this.env.AI.run(model, {prompt}); } catch (e) { return {error: "Unavailable"}; }
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Perf
|
|
34
|
+
State: Batch `setState()`, low-freq, SQL for large | Conns: Limit broadcast, selective, backpressure
|
|
35
|
+
|
|
36
|
+
## Debug
|
|
37
|
+
`npx wrangler dev` (local), `npx wrangler tail` (remote)
|
|
38
|
+
Issues: "Agent not found" (DO binding), State not sync (`setState()`), Timeout (`conn.accept()`), SQL (create in `onStart()`)
|
|
39
|
+
|
|
40
|
+
## Security
|
|
41
|
+
DO: Validate, sanitize, auth WS, env secrets | DON'T: Trust headers, expose sensitive, unauth
|
|
42
|
+
```ts
|
|
43
|
+
async onConnect(conn: Connection, ctx: ConnectionContext) {
|
|
44
|
+
const token = ctx.request.headers.get("Authorization");
|
|
45
|
+
if (!await this.validateToken(token)) { conn.close(4001, "Unauthorized"); return; }
|
|
46
|
+
conn.accept();
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Limits
|
|
51
|
+
CPU: 30s/req, Mem: 128MB/inst, Storage: SQL shares DO quota, Conns: no limit (watch mem), Schedules: 1000/agent
|
|
52
|
+
|
|
53
|
+
## Migration
|
|
54
|
+
`new_sqlite_classes`, test staging, no downgrade w/SQL, careful state
|
|
55
|
+
```toml
|
|
56
|
+
[[migrations]]
|
|
57
|
+
tag = "v1"
|
|
58
|
+
new_sqlite_classes = ["MyAgent"]
|
|
59
|
+
```
|