memory-journal-mcp 7.7.0 → 8.0.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/README.md +126 -56
- package/dist/chunk-6OHRCNYW.js +3231 -0
- package/dist/chunk-JFMITANR.js +5168 -0
- package/dist/{chunk-QCQPAF4I.js → chunk-MWNLAEHR.js} +301 -4321
- package/dist/{chunk-ARLYSFSI.js → chunk-UHSO65A4.js} +4242 -6092
- package/dist/cli.js +21 -3
- package/dist/index.d.ts +16 -13
- package/dist/index.js +4 -2
- package/dist/resources-IJVKDFGS.js +2 -0
- package/dist/tools-44DGXE3V.js +2 -0
- package/dist/worker-script.js +201 -20
- package/package.json +7 -4
- package/skills/README.md +62 -25
- package/skills/adversarial-performance/SKILL.md +139 -0
- package/skills/adversarial-performance/references/audit-categories.md +462 -0
- package/skills/adversarial-performance/references/copilot-performance-prompts.md +44 -0
- package/skills/adversarial-performance/references/copilot-usage.md +16 -0
- package/skills/adversarial-performance/references/feedback-loop.md +177 -0
- package/skills/adversarial-performance/references/multi-pass-performance-protocol.md +398 -0
- package/skills/adversarial-planner/SKILL.md +23 -54
- package/skills/adversarial-planner/references/copilot-integration.md +25 -40
- package/skills/adversarial-planner/references/copilot-usage.md +16 -0
- package/skills/adversarial-planner/references/multi-pass-protocol.md +4 -0
- package/skills/adversarial-security/SKILL.md +149 -0
- package/skills/adversarial-security/references/adversarial-base-protocol.md +44 -0
- package/skills/adversarial-security/references/audit-categories.md +723 -0
- package/skills/adversarial-security/references/copilot-security-prompts.md +142 -0
- package/skills/adversarial-security/references/copilot-usage.md +16 -0
- package/skills/adversarial-security/references/feedback-loop.md +206 -0
- package/skills/adversarial-security/references/journal-opt-out.md +7 -0
- package/skills/adversarial-security/references/multi-pass-security-protocol.md +403 -0
- package/skills/adversarial-skill-audit/SKILL.md +118 -0
- package/skills/adversarial-skill-audit/references/audit-categories.md +308 -0
- package/skills/adversarial-skill-audit/references/copilot-skill-prompts.md +68 -0
- package/skills/adversarial-skill-audit/references/copilot-usage.md +16 -0
- package/skills/adversarial-skill-audit/references/feedback-loop.md +155 -0
- package/skills/adversarial-skill-audit/references/multi-pass-skill-protocol.md +367 -0
- package/skills/adversarial-skill-audit/scripts/check-skills.ps1 +48 -0
- package/skills/adversarial-skill-audit/scripts/run-copilot.ps1 +52 -0
- package/skills/adversarial-workflow-audit/SKILL.md +82 -0
- package/skills/adversarial-workflow-audit/references/audit-categories.md +28 -0
- package/skills/adversarial-workflow-audit/references/copilot-usage.md +16 -0
- package/skills/adversarial-workflow-audit/scripts/check-workflows.ps1 +24 -0
- package/skills/agents-sdk/SKILL.md +220 -0
- package/skills/agents-sdk/references/callable.md +92 -0
- package/skills/agents-sdk/references/codemode.md +209 -0
- package/skills/agents-sdk/references/email.md +144 -0
- package/skills/agents-sdk/references/mcp/SKILL.md +65 -0
- package/skills/agents-sdk/references/mcp/code-mode-reference.md +245 -0
- package/skills/agents-sdk/references/mcp/oauth-reference.md +359 -0
- package/skills/agents-sdk/references/mcp/references/architecture-reference.md +208 -0
- package/skills/agents-sdk/references/mcp/references/cloudflare-quickstart.md +156 -0
- package/skills/agents-sdk/references/mcp/references/error-handling.md +343 -0
- package/skills/agents-sdk/references/mcp/references/http-security.md +164 -0
- package/skills/agents-sdk/references/mcp/references/implementation-guide.md +507 -0
- package/skills/agents-sdk/references/mcp/references/testing-reference.md +171 -0
- package/skills/agents-sdk/references/mcp.md +157 -0
- package/skills/agents-sdk/references/state-scheduling.md +164 -0
- package/skills/agents-sdk/references/streaming-chat.md +168 -0
- package/skills/agents-sdk/references/workflows.md +136 -0
- package/skills/auth-identity/SKILL.md +48 -0
- package/skills/autonomous-dev/SKILL.md +46 -23
- package/skills/autonomous-dev/references/workflow_orchestration.md +22 -0
- package/skills/aws/SKILL.md +39 -0
- package/skills/azure/SKILL.md +38 -0
- package/skills/bin/sync.js +7 -1
- package/skills/biome/SKILL.md +59 -0
- package/skills/bun/SKILL.md +8 -2
- package/skills/cloudflare/SKILL.md +37 -0
- package/skills/cloudflare/references/agents-sdk/README.md +95 -0
- package/skills/cloudflare/references/agents-sdk/api.md +195 -0
- package/skills/cloudflare/references/agents-sdk/configuration.md +178 -0
- package/skills/cloudflare/references/agents-sdk/gotchas.md +173 -0
- package/skills/cloudflare/references/agents-sdk/patterns.md +215 -0
- package/skills/cloudflare/references/ai-gateway/README.md +176 -0
- package/skills/cloudflare/references/ai-gateway/configuration.md +117 -0
- package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +88 -0
- package/skills/cloudflare/references/ai-gateway/features.md +96 -0
- package/skills/cloudflare/references/ai-gateway/sdk-integration.md +110 -0
- package/skills/cloudflare/references/ai-gateway/troubleshooting.md +90 -0
- package/skills/cloudflare/references/ai-search/README.md +145 -0
- package/skills/cloudflare/references/ai-search/api.md +87 -0
- package/skills/cloudflare/references/ai-search/configuration.md +91 -0
- package/skills/cloudflare/references/ai-search/gotchas.md +92 -0
- package/skills/cloudflare/references/ai-search/patterns.md +87 -0
- package/skills/cloudflare/references/analytics-engine/README.md +96 -0
- package/skills/cloudflare/references/analytics-engine/api.md +112 -0
- package/skills/cloudflare/references/analytics-engine/configuration.md +107 -0
- package/skills/cloudflare/references/analytics-engine/gotchas.md +87 -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 +205 -0
- package/skills/cloudflare/references/api/configuration.md +158 -0
- package/skills/cloudflare/references/api/gotchas.md +231 -0
- package/skills/cloudflare/references/api/patterns.md +208 -0
- package/skills/cloudflare/references/api-shield/README.md +44 -0
- package/skills/cloudflare/references/api-shield/api.md +153 -0
- package/skills/cloudflare/references/api-shield/configuration.md +210 -0
- package/skills/cloudflare/references/api-shield/gotchas.md +132 -0
- package/skills/cloudflare/references/api-shield/patterns.md +185 -0
- package/skills/cloudflare/references/argo-smart-routing/README.md +96 -0
- package/skills/cloudflare/references/argo-smart-routing/api.md +253 -0
- package/skills/cloudflare/references/argo-smart-routing/configuration.md +205 -0
- package/skills/cloudflare/references/argo-smart-routing/gotchas.md +115 -0
- package/skills/cloudflare/references/argo-smart-routing/patterns.md +107 -0
- package/skills/cloudflare/references/bindings/README.md +127 -0
- package/skills/cloudflare/references/bindings/api.md +214 -0
- package/skills/cloudflare/references/bindings/configuration.md +200 -0
- package/skills/cloudflare/references/bindings/gotchas.md +210 -0
- package/skills/cloudflare/references/bindings/patterns.md +205 -0
- package/skills/cloudflare/references/bot-management/README.md +95 -0
- package/skills/cloudflare/references/bot-management/api.md +175 -0
- package/skills/cloudflare/references/bot-management/configuration.md +175 -0
- package/skills/cloudflare/references/bot-management/gotchas.md +116 -0
- package/skills/cloudflare/references/bot-management/patterns.md +181 -0
- package/skills/cloudflare/references/browser-rendering/README.md +84 -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 +91 -0
- package/skills/cloudflare/references/browser-rendering/patterns.md +93 -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 +85 -0
- package/skills/cloudflare/references/c3/gotchas.md +97 -0
- package/skills/cloudflare/references/c3/patterns.md +84 -0
- package/skills/cloudflare/references/cache-reserve/README.md +150 -0
- package/skills/cloudflare/references/cache-reserve/api.md +184 -0
- package/skills/cloudflare/references/cache-reserve/configuration.md +170 -0
- package/skills/cloudflare/references/cache-reserve/gotchas.md +136 -0
- package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
- package/skills/cloudflare/references/containers/README.md +87 -0
- package/skills/cloudflare/references/containers/api.md +197 -0
- package/skills/cloudflare/references/containers/configuration.md +191 -0
- package/skills/cloudflare/references/containers/gotchas.md +182 -0
- package/skills/cloudflare/references/containers/patterns.md +204 -0
- package/skills/cloudflare/references/cron-triggers/README.md +101 -0
- package/skills/cloudflare/references/cron-triggers/api.md +224 -0
- package/skills/cloudflare/references/cron-triggers/configuration.md +190 -0
- package/skills/cloudflare/references/cron-triggers/gotchas.md +207 -0
- package/skills/cloudflare/references/cron-triggers/patterns.md +274 -0
- package/skills/cloudflare/references/d1/README.md +137 -0
- package/skills/cloudflare/references/d1/api.md +213 -0
- package/skills/cloudflare/references/d1/configuration.md +198 -0
- package/skills/cloudflare/references/d1/gotchas.md +98 -0
- package/skills/cloudflare/references/d1/patterns.md +240 -0
- package/skills/cloudflare/references/ddos/README.md +42 -0
- package/skills/cloudflare/references/ddos/api.md +158 -0
- package/skills/cloudflare/references/ddos/configuration.md +94 -0
- package/skills/cloudflare/references/ddos/gotchas.md +114 -0
- package/skills/cloudflare/references/ddos/patterns.md +220 -0
- package/skills/cloudflare/references/decision-trees.md +95 -0
- package/skills/cloudflare/references/do-storage/README.md +79 -0
- package/skills/cloudflare/references/do-storage/api.md +107 -0
- package/skills/cloudflare/references/do-storage/configuration.md +114 -0
- package/skills/cloudflare/references/do-storage/gotchas.md +153 -0
- package/skills/cloudflare/references/do-storage/patterns.md +210 -0
- package/skills/cloudflare/references/do-storage/testing.md +186 -0
- package/skills/cloudflare/references/durable-objects/README.md +194 -0
- package/skills/cloudflare/references/durable-objects/api.md +205 -0
- package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
- package/skills/cloudflare/references/durable-objects/gotchas.md +200 -0
- package/skills/cloudflare/references/durable-objects/patterns.md +205 -0
- package/skills/cloudflare/references/email-routing/README.md +89 -0
- package/skills/cloudflare/references/email-routing/api.md +192 -0
- package/skills/cloudflare/references/email-routing/configuration.md +187 -0
- package/skills/cloudflare/references/email-routing/gotchas.md +203 -0
- package/skills/cloudflare/references/email-routing/patterns.md +241 -0
- package/skills/cloudflare/references/email-workers/README.md +153 -0
- package/skills/cloudflare/references/email-workers/api.md +227 -0
- package/skills/cloudflare/references/email-workers/configuration.md +115 -0
- package/skills/cloudflare/references/email-workers/gotchas.md +133 -0
- package/skills/cloudflare/references/email-workers/patterns.md +108 -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 +151 -0
- package/skills/cloudflare/references/graphql-api/gotchas.md +111 -0
- package/skills/cloudflare/references/graphql-api/patterns.md +276 -0
- package/skills/cloudflare/references/hyperdrive/README.md +84 -0
- package/skills/cloudflare/references/hyperdrive/api.md +149 -0
- package/skills/cloudflare/references/hyperdrive/configuration.md +166 -0
- package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
- package/skills/cloudflare/references/hyperdrive/patterns.md +203 -0
- package/skills/cloudflare/references/images/README.md +65 -0
- package/skills/cloudflare/references/images/api.md +101 -0
- package/skills/cloudflare/references/images/configuration.md +206 -0
- package/skills/cloudflare/references/images/gotchas.md +106 -0
- package/skills/cloudflare/references/images/patterns.md +126 -0
- package/skills/cloudflare/references/kv/README.md +90 -0
- package/skills/cloudflare/references/kv/api.md +163 -0
- package/skills/cloudflare/references/kv/configuration.md +148 -0
- package/skills/cloudflare/references/kv/gotchas.md +133 -0
- package/skills/cloudflare/references/kv/patterns.md +195 -0
- package/skills/cloudflare/references/miniflare/README.md +113 -0
- package/skills/cloudflare/references/miniflare/api.md +204 -0
- package/skills/cloudflare/references/miniflare/configuration.md +174 -0
- package/skills/cloudflare/references/miniflare/gotchas.md +179 -0
- package/skills/cloudflare/references/miniflare/patterns.md +187 -0
- package/skills/cloudflare/references/network-interconnect/README.md +104 -0
- package/skills/cloudflare/references/network-interconnect/api.md +220 -0
- package/skills/cloudflare/references/network-interconnect/configuration.md +123 -0
- package/skills/cloudflare/references/network-interconnect/gotchas.md +175 -0
- package/skills/cloudflare/references/network-interconnect/patterns.md +174 -0
- package/skills/cloudflare/references/observability/README.md +93 -0
- package/skills/cloudflare/references/observability/api.md +168 -0
- package/skills/cloudflare/references/observability/configuration.md +178 -0
- package/skills/cloudflare/references/observability/gotchas.md +125 -0
- package/skills/cloudflare/references/observability/patterns.md +105 -0
- package/skills/cloudflare/references/pages/README.md +92 -0
- package/skills/cloudflare/references/pages/api.md +205 -0
- package/skills/cloudflare/references/pages/configuration.md +216 -0
- package/skills/cloudflare/references/pages/gotchas.md +218 -0
- package/skills/cloudflare/references/pages/patterns.md +215 -0
- package/skills/cloudflare/references/pages-functions/README.md +104 -0
- package/skills/cloudflare/references/pages-functions/api.md +159 -0
- package/skills/cloudflare/references/pages-functions/configuration.md +130 -0
- package/skills/cloudflare/references/pages-functions/gotchas.md +102 -0
- package/skills/cloudflare/references/pages-functions/patterns.md +148 -0
- package/skills/cloudflare/references/pipelines/README.md +109 -0
- package/skills/cloudflare/references/pipelines/api.md +214 -0
- package/skills/cloudflare/references/pipelines/configuration.md +98 -0
- package/skills/cloudflare/references/pipelines/gotchas.md +84 -0
- package/skills/cloudflare/references/pipelines/patterns.md +87 -0
- package/skills/cloudflare/references/product-index.md +112 -0
- package/skills/cloudflare/references/pulumi/README.md +113 -0
- package/skills/cloudflare/references/pulumi/api.md +230 -0
- package/skills/cloudflare/references/pulumi/configuration.md +213 -0
- package/skills/cloudflare/references/pulumi/gotchas.md +205 -0
- package/skills/cloudflare/references/pulumi/patterns.md +260 -0
- package/skills/cloudflare/references/queues/README.md +99 -0
- package/skills/cloudflare/references/queues/api.md +211 -0
- package/skills/cloudflare/references/queues/configuration.md +151 -0
- package/skills/cloudflare/references/queues/gotchas.md +210 -0
- package/skills/cloudflare/references/queues/patterns.md +220 -0
- package/skills/cloudflare/references/r2/README.md +97 -0
- package/skills/cloudflare/references/r2/api.md +235 -0
- package/skills/cloudflare/references/r2/configuration.md +176 -0
- package/skills/cloudflare/references/r2/gotchas.md +190 -0
- package/skills/cloudflare/references/r2/patterns.md +203 -0
- package/skills/cloudflare/references/r2-data-catalog/README.md +157 -0
- package/skills/cloudflare/references/r2-data-catalog/api.md +199 -0
- package/skills/cloudflare/references/r2-data-catalog/configuration.md +205 -0
- package/skills/cloudflare/references/r2-data-catalog/gotchas.md +170 -0
- package/skills/cloudflare/references/r2-data-catalog/patterns.md +191 -0
- package/skills/cloudflare/references/r2-sql/README.md +138 -0
- package/skills/cloudflare/references/r2-sql/SKILL.md.backup +512 -0
- package/skills/cloudflare/references/r2-sql/api.md +159 -0
- package/skills/cloudflare/references/r2-sql/configuration.md +152 -0
- package/skills/cloudflare/references/r2-sql/gotchas.md +228 -0
- package/skills/cloudflare/references/r2-sql/patterns.md +230 -0
- package/skills/cloudflare/references/realtime-sfu/README.md +66 -0
- package/skills/cloudflare/references/realtime-sfu/api.md +164 -0
- package/skills/cloudflare/references/realtime-sfu/configuration.md +141 -0
- package/skills/cloudflare/references/realtime-sfu/gotchas.md +138 -0
- package/skills/cloudflare/references/realtime-sfu/patterns.md +187 -0
- package/skills/cloudflare/references/realtimekit/README.md +118 -0
- package/skills/cloudflare/references/realtimekit/api.md +234 -0
- package/skills/cloudflare/references/realtimekit/configuration.md +226 -0
- package/skills/cloudflare/references/realtimekit/gotchas.md +206 -0
- package/skills/cloudflare/references/realtimekit/patterns.md +240 -0
- package/skills/cloudflare/references/sandbox/README.md +104 -0
- package/skills/cloudflare/references/sandbox/api.md +200 -0
- package/skills/cloudflare/references/sandbox/configuration.md +154 -0
- package/skills/cloudflare/references/sandbox/gotchas.md +201 -0
- package/skills/cloudflare/references/sandbox/patterns.md +195 -0
- package/skills/cloudflare/references/secrets-store/README.md +77 -0
- package/skills/cloudflare/references/secrets-store/api.md +199 -0
- package/skills/cloudflare/references/secrets-store/configuration.md +187 -0
- package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
- package/skills/cloudflare/references/secrets-store/patterns.md +218 -0
- package/skills/cloudflare/references/smart-placement/README.md +143 -0
- package/skills/cloudflare/references/smart-placement/api.md +192 -0
- package/skills/cloudflare/references/smart-placement/configuration.md +202 -0
- package/skills/cloudflare/references/smart-placement/gotchas.md +180 -0
- package/skills/cloudflare/references/smart-placement/patterns.md +190 -0
- package/skills/cloudflare/references/snippets/README.md +74 -0
- package/skills/cloudflare/references/snippets/api.md +214 -0
- package/skills/cloudflare/references/snippets/configuration.md +239 -0
- package/skills/cloudflare/references/snippets/gotchas.md +104 -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 +184 -0
- package/skills/cloudflare/references/spectrum/configuration.md +203 -0
- package/skills/cloudflare/references/spectrum/gotchas.md +155 -0
- package/skills/cloudflare/references/spectrum/patterns.md +206 -0
- package/skills/cloudflare/references/static-assets/README.md +65 -0
- package/skills/cloudflare/references/static-assets/api.md +201 -0
- package/skills/cloudflare/references/static-assets/configuration.md +186 -0
- package/skills/cloudflare/references/static-assets/gotchas.md +164 -0
- package/skills/cloudflare/references/static-assets/patterns.md +189 -0
- package/skills/cloudflare/references/stream/README.md +123 -0
- package/skills/cloudflare/references/stream/api-live.md +202 -0
- package/skills/cloudflare/references/stream/api.md +206 -0
- package/skills/cloudflare/references/stream/configuration.md +151 -0
- package/skills/cloudflare/references/stream/gotchas.md +139 -0
- package/skills/cloudflare/references/stream/patterns.md +217 -0
- package/skills/cloudflare/references/tail-workers/README.md +92 -0
- package/skills/cloudflare/references/tail-workers/api.md +203 -0
- package/skills/cloudflare/references/tail-workers/configuration.md +178 -0
- package/skills/cloudflare/references/tail-workers/gotchas.md +206 -0
- package/skills/cloudflare/references/tail-workers/patterns.md +190 -0
- package/skills/cloudflare/references/terraform/README.md +100 -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 +137 -0
- package/skills/cloudflare/references/tunnel/api.md +205 -0
- package/skills/cloudflare/references/tunnel/configuration.md +163 -0
- package/skills/cloudflare/references/tunnel/gotchas.md +159 -0
- package/skills/cloudflare/references/tunnel/networking.md +174 -0
- package/skills/cloudflare/references/tunnel/patterns.md +199 -0
- package/skills/cloudflare/references/turn/README.md +86 -0
- package/skills/cloudflare/references/turn/api.md +236 -0
- package/skills/cloudflare/references/turn/configuration.md +181 -0
- package/skills/cloudflare/references/turn/gotchas.md +236 -0
- package/skills/cloudflare/references/turn/patterns.md +228 -0
- package/skills/cloudflare/references/turnstile/README.md +102 -0
- package/skills/cloudflare/references/turnstile/api.md +253 -0
- package/skills/cloudflare/references/turnstile/configuration.md +242 -0
- package/skills/cloudflare/references/turnstile/gotchas.md +253 -0
- package/skills/cloudflare/references/turnstile/patterns.md +195 -0
- package/skills/cloudflare/references/vectorize/README.md +133 -0
- package/skills/cloudflare/references/vectorize/api.md +89 -0
- package/skills/cloudflare/references/vectorize/configuration.md +91 -0
- package/skills/cloudflare/references/vectorize/gotchas.md +83 -0
- package/skills/cloudflare/references/vectorize/patterns.md +92 -0
- package/skills/cloudflare/references/waf/README.md +125 -0
- package/skills/cloudflare/references/waf/api.md +203 -0
- package/skills/cloudflare/references/waf/configuration.md +215 -0
- package/skills/cloudflare/references/waf/gotchas.md +208 -0
- package/skills/cloudflare/references/waf/patterns.md +236 -0
- package/skills/cloudflare/references/web-analytics/README.md +149 -0
- package/skills/cloudflare/references/web-analytics/configuration.md +81 -0
- package/skills/cloudflare/references/web-analytics/gotchas.md +86 -0
- package/skills/cloudflare/references/web-analytics/integration.md +63 -0
- package/skills/cloudflare/references/web-analytics/patterns.md +98 -0
- package/skills/cloudflare/references/workerd/README.md +85 -0
- package/skills/cloudflare/references/workerd/api.md +219 -0
- package/skills/cloudflare/references/workerd/configuration.md +200 -0
- package/skills/cloudflare/references/workerd/gotchas.md +151 -0
- package/skills/cloudflare/references/workerd/patterns.md +205 -0
- package/skills/cloudflare/references/workers/README.md +110 -0
- package/skills/cloudflare/references/workers/api.md +197 -0
- package/skills/cloudflare/references/workers/configuration.md +184 -0
- package/skills/cloudflare/references/workers/frameworks.md +200 -0
- package/skills/cloudflare/references/workers/gotchas.md +145 -0
- package/skills/cloudflare/references/workers/patterns.md +220 -0
- package/skills/cloudflare/references/workers-ai/README.md +206 -0
- package/skills/cloudflare/references/workers-ai/api.md +115 -0
- package/skills/cloudflare/references/workers-ai/configuration.md +98 -0
- package/skills/cloudflare/references/workers-ai/gotchas.md +130 -0
- package/skills/cloudflare/references/workers-ai/patterns.md +122 -0
- package/skills/cloudflare/references/workers-for-platforms/README.md +95 -0
- package/skills/cloudflare/references/workers-for-platforms/api.md +212 -0
- package/skills/cloudflare/references/workers-for-platforms/configuration.md +178 -0
- package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
- package/skills/cloudflare/references/workers-for-platforms/patterns.md +210 -0
- package/skills/cloudflare/references/workers-playground/README.md +131 -0
- package/skills/cloudflare/references/workers-playground/api.md +101 -0
- package/skills/cloudflare/references/workers-playground/configuration.md +169 -0
- package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
- package/skills/cloudflare/references/workers-playground/patterns.md +134 -0
- package/skills/cloudflare/references/workers-vpc/README.md +130 -0
- package/skills/cloudflare/references/workers-vpc/api.md +196 -0
- package/skills/cloudflare/references/workers-vpc/configuration.md +151 -0
- package/skills/cloudflare/references/workers-vpc/gotchas.md +171 -0
- package/skills/cloudflare/references/workers-vpc/patterns.md +235 -0
- package/skills/cloudflare/references/workflows/README.md +72 -0
- package/skills/cloudflare/references/workflows/api.md +237 -0
- package/skills/cloudflare/references/workflows/configuration.md +158 -0
- package/skills/cloudflare/references/workflows/gotchas.md +97 -0
- package/skills/cloudflare/references/workflows/patterns.md +245 -0
- package/skills/cloudflare/references/wrangler/README.md +143 -0
- package/skills/cloudflare/references/wrangler/api.md +188 -0
- package/skills/cloudflare/references/wrangler/configuration.md +198 -0
- package/skills/cloudflare/references/wrangler/gotchas.md +212 -0
- package/skills/cloudflare/references/wrangler/patterns.md +211 -0
- package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +131 -0
- package/skills/cloudflare/references/zaraz/README.md +114 -0
- package/skills/cloudflare/references/zaraz/api.md +118 -0
- package/skills/cloudflare/references/zaraz/configuration.md +94 -0
- package/skills/cloudflare/references/zaraz/gotchas.md +88 -0
- package/skills/cloudflare/references/zaraz/patterns.md +77 -0
- package/skills/docker/SKILL.md +7 -101
- package/skills/docker/references/advanced-examples.md +71 -0
- package/skills/docker/references/templates.md +34 -0
- package/skills/docs-marketer/SKILL.md +178 -0
- package/skills/docs-marketer/references/audit-categories.md +328 -0
- package/skills/docs-marketer/references/copilot-docs-prompts.md +88 -0
- package/skills/docs-marketer/references/copilot-usage.md +16 -0
- package/skills/docs-marketer/references/feedback-loop.md +155 -0
- package/skills/docs-marketer/references/multi-pass-docs-protocol.md +410 -0
- package/skills/drizzle-orm/SKILL.md +82 -0
- package/skills/durable-objects/SKILL.md +167 -0
- package/skills/durable-objects/references/advanced_features.md +29 -0
- package/skills/durable-objects/references/rules.md +300 -0
- package/skills/durable-objects/references/testing.md +261 -0
- package/skills/durable-objects/references/workers.md +336 -0
- package/skills/gcp/SKILL.md +37 -0
- package/skills/github-actions/SKILL.md +5 -58
- package/skills/github-actions/references/templates.md +65 -0
- package/skills/github-commander/SKILL.md +13 -21
- package/skills/github-commander/workflows/copilot-audit.md +12 -12
- package/skills/github-copilot-cli/SKILL.md +21 -26
- package/skills/github-repo-setup/SKILL.md +136 -0
- package/skills/github-repo-setup/references/community-standards.md +136 -0
- package/skills/github-repo-setup/references/github-automation.md +490 -0
- package/skills/github-repo-setup/references/inline-templates.md +205 -0
- package/skills/github-repo-setup/references/project-config.md +320 -0
- package/skills/gitlab/SKILL.md +7 -2
- package/skills/gitlab/package-lock.json +389 -389
- package/skills/golang/SKILL.md +8 -1
- package/skills/graphql/SKILL.md +30 -0
- package/skills/hono/SKILL.md +82 -0
- package/skills/journal-optimizer/SKILL.md +206 -0
- package/skills/journal-optimizer/references/optimizer-scripts.md +169 -0
- package/skills/llm-app-engineering/SKILL.md +18 -0
- package/skills/monorepo/SKILL.md +56 -0
- package/skills/multi-agent-orchestration/SKILL.md +14 -0
- package/skills/mysql/SKILL.md +6 -2
- package/skills/next-best-practices/SKILL.md +86 -0
- package/skills/next-best-practices/references/cache-components-examples.md +234 -0
- package/skills/next-best-practices/references/cache-components.md +210 -0
- package/skills/next-best-practices/references/upgrade-decision-tree.md +33 -0
- package/skills/next-best-practices/references/upgrade.md +43 -0
- package/skills/next-cache-components/SKILL.md +441 -0
- package/skills/next-upgrade/SKILL.md +43 -0
- package/skills/next-upgrade/references/decision-tree.md +33 -0
- package/skills/nodejs/SKILL.md +46 -0
- package/skills/opentelemetry/SKILL.md +62 -0
- package/skills/package.json +39 -4
- package/skills/playwright-standard/SKILL.md +6 -11
- package/skills/playwright-standard/references/locators.md +7 -0
- package/skills/postgres/SKILL.md +6 -1
- package/skills/python/SKILL.md +8 -70
- package/skills/python/references/advanced-patterns.md +37 -0
- package/skills/python/references/config-templates.md +48 -0
- package/skills/rag-pipelines/SKILL.md +14 -0
- package/skills/redis/SKILL.md +31 -0
- package/skills/render/SKILL.md +35 -0
- package/skills/rust/SKILL.md +15 -25
- package/skills/rust/references/borrow-checker.md +13 -0
- package/skills/rust/references/ecosystem.md +11 -0
- package/skills/sandbox-sdk/SKILL.md +186 -0
- package/skills/sandbox-sdk/references/api-quick-ref.md +113 -0
- package/skills/sandbox-sdk/references/examples.md +52 -0
- package/skills/shadcn-ui/SKILL.md +22 -57
- package/skills/skill-builder/SKILL.md +23 -424
- package/skills/skill-builder/references/tutorial.md +457 -0
- package/skills/sqlite/SKILL.md +16 -5
- package/skills/table.md +59 -0
- package/skills/tailwind-css/SKILL.md +11 -60
- package/skills/tailwind-css/references/component-patterns.md +52 -0
- package/skills/trpc/SKILL.md +56 -0
- package/skills/typescript/SKILL.md +30 -433
- package/skills/typescript/references/tutorial.md +453 -0
- package/skills/vercel-ai-sdk/SKILL.md +48 -0
- package/skills/vitest-standard/SKILL.md +5 -11
- package/skills/vitest-standard/references/assertions.md +11 -0
- package/skills/web-perf/SKILL.md +207 -0
- package/skills/workers-best-practices/SKILL.md +120 -0
- package/skills/workers-best-practices/references/anti-patterns.md +18 -0
- package/skills/workers-best-practices/references/review.md +174 -0
- package/skills/workers-best-practices/references/rules.md +485 -0
- package/skills/wrangler/SKILL.md +43 -0
- package/skills/wrangler/references/cli-commands.md +861 -0
- package/skills/zod/SKILL.md +48 -0
- package/dist/tools-P4VGG4FH.js +0 -1
- package/skills/react-best-practices/AGENTS.md +0 -2883
- package/skills/react-best-practices/SKILL.md +0 -138
- /package/skills/{react-best-practices → next-best-practices}/README.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/metadata.json +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/_sections.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/_template.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-event-handler-refs.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-init-once.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/advanced-use-latest.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-api-routes.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-defer-await.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-dependencies.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-parallel.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/async-suspense-boundaries.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-barrel-imports.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-conditional.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-defer-third-party.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-dynamic-imports.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/bundle-preload.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-event-listeners.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-localstorage-schema.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-passive-event-listeners.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/client-swr-dedup.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-batch-dom-css.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-function-results.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-property-access.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-storage.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-combine-iterations.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-early-exit.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-hoist-regexp.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-index-maps.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-length-check-first.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-min-max-loop.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-set-map-lookups.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/js-tosorted-immutable.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-activity.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-animate-svg-wrapper.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-conditional-render.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-content-visibility.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hoist-jsx.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-no-flicker.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-suppress-warning.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-svg-precision.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rendering-usetransition-loading.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-defer-reads.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-dependencies.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state-no-effect.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-functional-setstate.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-lazy-state-init.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo-with-default-value.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-move-effect-to-event.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-simple-expression-in-memo.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-transitions.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/rerender-use-ref-transient-values.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-after-nonblocking.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-auth-actions.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-lru.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-react.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-dedup-props.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-parallel-fetching.md +0 -0
- /package/skills/{react-best-practices → next-best-practices}/rules/server-serialization.md +0 -0
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
# Cloudflare Workers AI
|
|
2
|
+
|
|
3
|
+
Expert guidance for Cloudflare Workers AI - serverless GPU-powered AI inference at the edge.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
Workers AI provides:
|
|
8
|
+
|
|
9
|
+
- 50+ pre-trained models (LLMs, embeddings, image generation, speech-to-text, translation)
|
|
10
|
+
- Native Workers binding (no external API calls)
|
|
11
|
+
- Pay-per-use pricing (neurons consumed per inference)
|
|
12
|
+
- OpenAI-compatible REST API
|
|
13
|
+
- Streaming support for text generation
|
|
14
|
+
- Function calling with compatible models
|
|
15
|
+
|
|
16
|
+
**Architecture**: Inference runs on Cloudflare's GPU network. Models load on first request (cold start 1-3s), subsequent requests are faster.
|
|
17
|
+
|
|
18
|
+
## Quick Start
|
|
19
|
+
|
|
20
|
+
```typescript
|
|
21
|
+
interface Env {
|
|
22
|
+
AI: Ai
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
export default {
|
|
26
|
+
async fetch(request: Request, env: Env) {
|
|
27
|
+
const response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
|
|
28
|
+
messages: [{ role: 'user', content: 'What is Cloudflare?' }],
|
|
29
|
+
})
|
|
30
|
+
return Response.json(response)
|
|
31
|
+
},
|
|
32
|
+
}
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
# Setup - add binding to wrangler.jsonc
|
|
37
|
+
wrangler dev --remote # Must use --remote for AI
|
|
38
|
+
wrangler deploy
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Model Selection Decision Tree
|
|
42
|
+
|
|
43
|
+
### Text Generation (Chat/Completion)
|
|
44
|
+
|
|
45
|
+
**Quality Priority**:
|
|
46
|
+
|
|
47
|
+
- **Best quality**: `@cf/meta/llama-3.1-70b-instruct` (expensive, ~2000 neurons)
|
|
48
|
+
- **Balanced**: `@cf/meta/llama-3.1-8b-instruct` (good quality, ~200 neurons)
|
|
49
|
+
- **Fastest/cheapest**: `@cf/mistral/mistral-7b-instruct-v0.1` (~50 neurons)
|
|
50
|
+
|
|
51
|
+
**Function Calling**:
|
|
52
|
+
|
|
53
|
+
- Use `@cf/meta/llama-3.1-8b-instruct` or `@cf/meta/llama-3.1-70b-instruct` (native tool support)
|
|
54
|
+
|
|
55
|
+
**Code Generation**:
|
|
56
|
+
|
|
57
|
+
- Use `@cf/deepseek-ai/deepseek-coder-6.7b-instruct` (specialized for code)
|
|
58
|
+
|
|
59
|
+
### Embeddings (Semantic Search/RAG)
|
|
60
|
+
|
|
61
|
+
**English text**:
|
|
62
|
+
|
|
63
|
+
- **Best**: `@cf/baai/bge-large-en-v1.5` (1024 dims, highest quality)
|
|
64
|
+
- **Balanced**: `@cf/baai/bge-base-en-v1.5` (768 dims, good quality)
|
|
65
|
+
- **Fast**: `@cf/baai/bge-small-en-v1.5` (384 dims, lower quality but fast)
|
|
66
|
+
|
|
67
|
+
**Multilingual**:
|
|
68
|
+
|
|
69
|
+
- Use `@hf/sentence-transformers/paraphrase-multilingual-minilm-l12-v2`
|
|
70
|
+
|
|
71
|
+
### Image Generation
|
|
72
|
+
|
|
73
|
+
- **Stable Diffusion**: `@cf/stabilityai/stable-diffusion-xl-base-1.0` (~10,000 neurons)
|
|
74
|
+
- **Portraits**: `@cf/lykon/dreamshaper-8-lcm` (optimized for faces)
|
|
75
|
+
|
|
76
|
+
### Other Tasks
|
|
77
|
+
|
|
78
|
+
- **Speech-to-text**: `@cf/openai/whisper`
|
|
79
|
+
- **Translation**: `@cf/meta/m2m100-1.2b` (100 languages)
|
|
80
|
+
- **Image classification**: `@cf/microsoft/resnet-50`
|
|
81
|
+
|
|
82
|
+
## SDK Approach Decision Tree
|
|
83
|
+
|
|
84
|
+
### Native Binding (Recommended)
|
|
85
|
+
|
|
86
|
+
**When**: Building Workers/Pages with TypeScript
|
|
87
|
+
**Why**: Zero external dependencies, best performance, native types
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
await env.AI.run(model, input)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### REST API
|
|
94
|
+
|
|
95
|
+
**When**: External services, non-Workers environments, testing
|
|
96
|
+
**Why**: Standard HTTP, works anywhere
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
curl https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/ai/run/@cf/meta/llama-3.1-8b-instruct \
|
|
100
|
+
-H "Authorization: Bearer <API_TOKEN>" \
|
|
101
|
+
-d '{"messages":[{"role":"user","content":"Hello"}]}'
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Vercel AI SDK Integration
|
|
105
|
+
|
|
106
|
+
**When**: Using Vercel AI SDK features (streaming UI, tool calling abstractions)
|
|
107
|
+
**Why**: Unified interface across providers
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
import { openai } from '@ai-sdk/openai'
|
|
111
|
+
|
|
112
|
+
const model = openai('model-name', {
|
|
113
|
+
baseURL: 'https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/ai/v1',
|
|
114
|
+
headers: { Authorization: 'Bearer <API_TOKEN>' },
|
|
115
|
+
})
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## RAG vs Direct Generation
|
|
119
|
+
|
|
120
|
+
### Use RAG (Vectorize + Workers AI) When:
|
|
121
|
+
|
|
122
|
+
- Answering questions about specific documents/data
|
|
123
|
+
- Need factual accuracy from known corpus
|
|
124
|
+
- Context exceeds model's window (>4K tokens)
|
|
125
|
+
- Building knowledge base chat
|
|
126
|
+
|
|
127
|
+
### Use Direct Generation When:
|
|
128
|
+
|
|
129
|
+
- Creative writing, brainstorming
|
|
130
|
+
- General knowledge questions
|
|
131
|
+
- Small context fits in prompt (<4K tokens)
|
|
132
|
+
- Cost optimization (RAG adds embedding + vector search costs)
|
|
133
|
+
|
|
134
|
+
## Platform Limits
|
|
135
|
+
|
|
136
|
+
| Limit | Free Tier | Paid Plans |
|
|
137
|
+
| ---------------- | ---------------------------- | ------------------------ |
|
|
138
|
+
| Neurons/day | 10,000 | Pay per use |
|
|
139
|
+
| Rate limit | Varies by model | Higher (contact support) |
|
|
140
|
+
| Context window | Model dependent (2K-8K) | Same |
|
|
141
|
+
| Streaming | ✅ Supported | ✅ Supported |
|
|
142
|
+
| Function calling | ✅ Supported (select models) | ✅ Supported |
|
|
143
|
+
|
|
144
|
+
**Pricing**: Free 10K neurons/day, then pay per neuron consumed (varies by model)
|
|
145
|
+
|
|
146
|
+
## Common Tasks
|
|
147
|
+
|
|
148
|
+
```typescript
|
|
149
|
+
// Streaming text generation
|
|
150
|
+
const stream = await env.AI.run(model, { messages, stream: true });
|
|
151
|
+
for await (const chunk of stream) {
|
|
152
|
+
console.log(chunk.response);
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
// Embeddings for RAG
|
|
156
|
+
const { data } = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
|
|
157
|
+
text: ['Query text', 'Document 1', 'Document 2']
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// Function calling
|
|
161
|
+
const response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
|
|
162
|
+
messages: [{ role: 'user', content: 'What is the weather?' }],
|
|
163
|
+
tools: [{
|
|
164
|
+
type: 'function',
|
|
165
|
+
function: { name: 'getWeather', parameters: { ... } }
|
|
166
|
+
}]
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Development Workflow
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
# Always use --remote for AI (local doesn't have models)
|
|
174
|
+
wrangler dev --remote
|
|
175
|
+
|
|
176
|
+
# Deploy to production
|
|
177
|
+
wrangler deploy
|
|
178
|
+
|
|
179
|
+
# View model catalog
|
|
180
|
+
# https://developers.cloudflare.com/workers-ai/models/
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## Reading Order
|
|
184
|
+
|
|
185
|
+
**Start here**: Quick Start above → configuration.md (setup)
|
|
186
|
+
|
|
187
|
+
**Common tasks**:
|
|
188
|
+
|
|
189
|
+
- First time setup: configuration.md → Add binding + deploy
|
|
190
|
+
- Choose model: Model Selection Decision Tree (above) → api.md
|
|
191
|
+
- Build RAG: patterns.md → Vectorize integration
|
|
192
|
+
- Optimize costs: Model Selection + gotchas.md (rate limits)
|
|
193
|
+
- Debugging: gotchas.md → Common errors
|
|
194
|
+
|
|
195
|
+
## In This Reference
|
|
196
|
+
|
|
197
|
+
- [configuration.md](./configuration.md) - wrangler.jsonc setup, TypeScript types, bindings, environment variables
|
|
198
|
+
- [api.md](./api.md) - env.AI.run(), streaming, function calling, REST API, response types
|
|
199
|
+
- [patterns.md](./patterns.md) - RAG with Vectorize, prompt engineering, batching, error handling, caching
|
|
200
|
+
- [gotchas.md](./gotchas.md) - Deprecated @cloudflare/ai package, rate limits, pricing, common errors
|
|
201
|
+
|
|
202
|
+
## See Also
|
|
203
|
+
|
|
204
|
+
- [vectorize](../vectorize/) - Vector database for RAG patterns
|
|
205
|
+
- [ai-gateway](../ai-gateway/) - Caching, rate limiting, analytics for AI requests
|
|
206
|
+
- [workers](../workers/) - Worker runtime and fetch handler patterns
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Workers AI API Reference
|
|
2
|
+
|
|
3
|
+
## Core Method
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
const response = await env.AI.run(model, input)
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## Text Generation
|
|
10
|
+
|
|
11
|
+
```typescript
|
|
12
|
+
const result = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
|
|
13
|
+
messages: [
|
|
14
|
+
{ role: 'system', content: 'You are helpful' },
|
|
15
|
+
{ role: 'user', content: 'Hello' },
|
|
16
|
+
],
|
|
17
|
+
temperature: 0.7, // 0-1
|
|
18
|
+
max_tokens: 100,
|
|
19
|
+
})
|
|
20
|
+
console.log(result.response)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
**Streaming:**
|
|
24
|
+
|
|
25
|
+
```typescript
|
|
26
|
+
const stream = await env.AI.run(model, { messages, stream: true })
|
|
27
|
+
return new Response(stream, { headers: { 'Content-Type': 'text/event-stream' } })
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Embeddings
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
const result = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
|
|
34
|
+
text: ['Query', 'Doc 1', 'Doc 2'], // Batch for efficiency
|
|
35
|
+
})
|
|
36
|
+
const [queryEmbed, doc1Embed, doc2Embed] = result.data // 768-dim vectors
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Function Calling
|
|
40
|
+
|
|
41
|
+
```typescript
|
|
42
|
+
const tools = [
|
|
43
|
+
{
|
|
44
|
+
type: 'function',
|
|
45
|
+
function: {
|
|
46
|
+
name: 'getWeather',
|
|
47
|
+
description: 'Get weather for location',
|
|
48
|
+
parameters: {
|
|
49
|
+
type: 'object',
|
|
50
|
+
properties: { location: { type: 'string' } },
|
|
51
|
+
required: ['location'],
|
|
52
|
+
},
|
|
53
|
+
},
|
|
54
|
+
},
|
|
55
|
+
]
|
|
56
|
+
|
|
57
|
+
const response = await env.AI.run(model, { messages, tools })
|
|
58
|
+
if (response.tool_calls) {
|
|
59
|
+
const args = JSON.parse(response.tool_calls[0].function.arguments)
|
|
60
|
+
// Execute function, send result back
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Image Generation
|
|
65
|
+
|
|
66
|
+
```typescript
|
|
67
|
+
const image = await env.AI.run('@cf/stabilityai/stable-diffusion-xl-base-1.0', {
|
|
68
|
+
prompt: 'Mountain sunset',
|
|
69
|
+
num_steps: 20, // 1-20
|
|
70
|
+
guidance: 7.5, // 1-20
|
|
71
|
+
})
|
|
72
|
+
return new Response(image, { headers: { 'Content-Type': 'image/png' } })
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Speech Recognition
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
const audioArray = Array.from(new Uint8Array(await request.arrayBuffer()))
|
|
79
|
+
const result = await env.AI.run('@cf/openai/whisper', { audio: audioArray })
|
|
80
|
+
console.log(result.text)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Translation
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
const result = await env.AI.run('@cf/meta/m2m100-1.2b', {
|
|
87
|
+
text: 'Hello',
|
|
88
|
+
source_lang: 'en',
|
|
89
|
+
target_lang: 'es',
|
|
90
|
+
})
|
|
91
|
+
console.log(result.translated_text)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
## REST API
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
curl https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/run/@cf/meta/llama-3.1-8b-instruct \
|
|
98
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
99
|
+
-d '{"messages":[{"role":"user","content":"Hello"}]}'
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## Error Codes
|
|
103
|
+
|
|
104
|
+
| Code | Meaning | Fix |
|
|
105
|
+
| ---- | ----------------- | ---------------------- |
|
|
106
|
+
| 7502 | Model not found | Check spelling |
|
|
107
|
+
| 7504 | Validation failed | Verify input schema |
|
|
108
|
+
| 7505 | Rate limited | Reduce rate or upgrade |
|
|
109
|
+
| 7506 | Context exceeded | Reduce input size |
|
|
110
|
+
|
|
111
|
+
## Performance Tips
|
|
112
|
+
|
|
113
|
+
1. **Batch embeddings** - single request for multiple texts
|
|
114
|
+
2. **Stream long responses** - reduce perceived latency
|
|
115
|
+
3. **Accept cold starts** - first request ~1-3s, subsequent ~100-500ms
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
# Workers AI Configuration
|
|
2
|
+
|
|
3
|
+
## wrangler.jsonc
|
|
4
|
+
|
|
5
|
+
```jsonc
|
|
6
|
+
{
|
|
7
|
+
"name": "my-ai-worker",
|
|
8
|
+
"main": "src/index.ts",
|
|
9
|
+
"compatibility_date": "2024-01-01",
|
|
10
|
+
"ai": {
|
|
11
|
+
"binding": "AI",
|
|
12
|
+
},
|
|
13
|
+
}
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## TypeScript
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npm install --save-dev @cloudflare/workers-types
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
```typescript
|
|
23
|
+
interface Env {
|
|
24
|
+
AI: Ai
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export default {
|
|
28
|
+
async fetch(request: Request, env: Env) {
|
|
29
|
+
const response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
|
|
30
|
+
messages: [{ role: 'user', content: 'Hello' }],
|
|
31
|
+
})
|
|
32
|
+
return Response.json(response)
|
|
33
|
+
},
|
|
34
|
+
}
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Local Development
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
wrangler dev --remote # Required for AI - no local inference
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## REST API
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
const response = await fetch(
|
|
47
|
+
`https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/ai/run/@cf/meta/llama-3.1-8b-instruct`,
|
|
48
|
+
{
|
|
49
|
+
method: 'POST',
|
|
50
|
+
headers: { Authorization: `Bearer ${API_TOKEN}` },
|
|
51
|
+
body: JSON.stringify({ messages: [{ role: 'user', content: 'Hello' }] }),
|
|
52
|
+
}
|
|
53
|
+
)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Create API token at: dash.cloudflare.com/profile/api-tokens (Workers AI - Read permission)
|
|
57
|
+
|
|
58
|
+
## SDK Compatibility
|
|
59
|
+
|
|
60
|
+
**OpenAI SDK:**
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import OpenAI from 'openai'
|
|
64
|
+
const client = new OpenAI({
|
|
65
|
+
apiKey: env.CLOUDFLARE_API_TOKEN,
|
|
66
|
+
baseURL: `https://api.cloudflare.com/client/v4/accounts/${env.ACCOUNT_ID}/ai/v1`,
|
|
67
|
+
})
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Multi-Model Setup
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
const MODELS = {
|
|
74
|
+
chat: '@cf/meta/llama-3.1-8b-instruct',
|
|
75
|
+
embed: '@cf/baai/bge-base-en-v1.5',
|
|
76
|
+
image: '@cf/stabilityai/stable-diffusion-xl-base-1.0',
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## RAG Setup (with Vectorize)
|
|
81
|
+
|
|
82
|
+
```jsonc
|
|
83
|
+
{
|
|
84
|
+
"ai": { "binding": "AI" },
|
|
85
|
+
"vectorize": {
|
|
86
|
+
"bindings": [{ "binding": "VECTORIZE", "index_name": "embeddings-index" }],
|
|
87
|
+
},
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Troubleshooting
|
|
92
|
+
|
|
93
|
+
| Error | Fix |
|
|
94
|
+
| ---------------------------- | ------------------------------------ |
|
|
95
|
+
| `env.AI is undefined` | Check `ai` binding in wrangler.jsonc |
|
|
96
|
+
| Local AI doesn't work | Use `wrangler dev --remote` |
|
|
97
|
+
| Type 'Ai' not found | Install `@cloudflare/workers-types` |
|
|
98
|
+
| @cloudflare/ai package error | Don't install - use native binding |
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Workers AI Gotchas
|
|
2
|
+
|
|
3
|
+
## Critical: @cloudflare/ai is DEPRECATED
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
// ❌ WRONG - Don't install @cloudflare/ai
|
|
7
|
+
import Ai from '@cloudflare/ai';
|
|
8
|
+
|
|
9
|
+
// ✅ CORRECT - Use native binding
|
|
10
|
+
export default {
|
|
11
|
+
async fetch(request: Request, env: Env) {
|
|
12
|
+
await env.AI.run('@cf/meta/llama-3.1-8b-instruct', { messages: [...] });
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Development
|
|
18
|
+
|
|
19
|
+
### "AI inference doesn't work locally"
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
# ❌ Local AI doesn't work
|
|
23
|
+
wrangler dev
|
|
24
|
+
# ✅ Use remote
|
|
25
|
+
wrangler dev --remote
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### "env.AI is undefined"
|
|
29
|
+
|
|
30
|
+
Add binding to wrangler.jsonc:
|
|
31
|
+
|
|
32
|
+
```jsonc
|
|
33
|
+
{ "ai": { "binding": "AI" } }
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## API Responses
|
|
37
|
+
|
|
38
|
+
### Embedding response shape varies
|
|
39
|
+
|
|
40
|
+
```typescript
|
|
41
|
+
// @cf/baai/bge-base-en-v1.5 returns: { data: [[0.1, 0.2, ...]] }
|
|
42
|
+
const embedding = response.data[0] // Get first element
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### Stream returns ReadableStream
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
const stream = await env.AI.run(model, { messages: [...], stream: true });
|
|
49
|
+
for await (const chunk of stream) { console.log(chunk.response); }
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Rate Limits & Pricing
|
|
53
|
+
|
|
54
|
+
| Model Type | Neurons/Request |
|
|
55
|
+
| ---------------- | --------------- |
|
|
56
|
+
| Small text (7B) | ~50-200 |
|
|
57
|
+
| Large text (70B) | ~500-2000 |
|
|
58
|
+
| Embeddings | ~5-20 |
|
|
59
|
+
| Image gen | ~10,000+ |
|
|
60
|
+
|
|
61
|
+
**Free tier**: 10,000 neurons/day
|
|
62
|
+
|
|
63
|
+
```typescript
|
|
64
|
+
// ❌ EXPENSIVE - 70B model
|
|
65
|
+
await env.AI.run('@cf/meta/llama-3.1-70b-instruct', ...);
|
|
66
|
+
// ✅ CHEAPER - Use smallest that works
|
|
67
|
+
await env.AI.run('@cf/meta/llama-3.1-8b-instruct', ...);
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Model-Specific
|
|
71
|
+
|
|
72
|
+
### Function calling
|
|
73
|
+
|
|
74
|
+
Only `@cf/meta/llama-3.1-*` and `mistral-7b-instruct-v0.2` support tools.
|
|
75
|
+
|
|
76
|
+
### Empty response
|
|
77
|
+
|
|
78
|
+
Check context limits (2K-8K tokens). Validate input structure.
|
|
79
|
+
|
|
80
|
+
### Inconsistent responses
|
|
81
|
+
|
|
82
|
+
Set `temperature: 0` for deterministic outputs.
|
|
83
|
+
|
|
84
|
+
### Cold start latency
|
|
85
|
+
|
|
86
|
+
First request: 1-3s. Use AI Gateway caching for frequent prompts.
|
|
87
|
+
|
|
88
|
+
## TypeScript
|
|
89
|
+
|
|
90
|
+
```typescript
|
|
91
|
+
interface Env {
|
|
92
|
+
AI: Ai // From @cloudflare/workers-types
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
interface TextGenerationResponse {
|
|
96
|
+
response: string
|
|
97
|
+
}
|
|
98
|
+
interface EmbeddingResponse {
|
|
99
|
+
data: number[][]
|
|
100
|
+
shape: number[]
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Common Errors
|
|
105
|
+
|
|
106
|
+
### 7502: Model not found
|
|
107
|
+
|
|
108
|
+
Check exact model name at developers.cloudflare.com/workers-ai/models/
|
|
109
|
+
|
|
110
|
+
### 7504: Input validation failed
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
// Text gen requires messages array
|
|
114
|
+
await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
|
|
115
|
+
messages: [{ role: 'user', content: 'Hello' }], // ✅
|
|
116
|
+
})
|
|
117
|
+
|
|
118
|
+
// Embeddings require text
|
|
119
|
+
await env.AI.run('@cf/baai/bge-base-en-v1.5', { text: 'Hello' }) // ✅
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## Vercel AI SDK Integration
|
|
123
|
+
|
|
124
|
+
```typescript
|
|
125
|
+
import { openai } from '@ai-sdk/openai'
|
|
126
|
+
const model = openai('gpt-3.5-turbo', {
|
|
127
|
+
baseURL: 'https://api.cloudflare.com/client/v4/accounts/<ACCOUNT_ID>/ai/v1',
|
|
128
|
+
headers: { Authorization: 'Bearer <API_TOKEN>' },
|
|
129
|
+
})
|
|
130
|
+
```
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# Workers AI Patterns
|
|
2
|
+
|
|
3
|
+
## RAG (Retrieval-Augmented Generation)
|
|
4
|
+
|
|
5
|
+
```typescript
|
|
6
|
+
// 1. Embed query
|
|
7
|
+
const embedding = await env.AI.run('@cf/baai/bge-base-en-v1.5', { text: query })
|
|
8
|
+
|
|
9
|
+
// 2. Search vectors
|
|
10
|
+
const results = await env.VECTORIZE.query(embedding.data[0], {
|
|
11
|
+
topK: 5,
|
|
12
|
+
returnMetadata: true,
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
// 3. Build context
|
|
16
|
+
const context = results.matches.map((m) => m.metadata?.text).join('\n\n')
|
|
17
|
+
|
|
18
|
+
// 4. Generate with context
|
|
19
|
+
const response = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
|
|
20
|
+
messages: [
|
|
21
|
+
{ role: 'system', content: `Answer based on:\n\n${context}` },
|
|
22
|
+
{ role: 'user', content: query },
|
|
23
|
+
],
|
|
24
|
+
})
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## Streaming (SSE)
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
const stream = await env.AI.run('@cf/meta/llama-3.1-8b-instruct', {
|
|
31
|
+
messages,
|
|
32
|
+
stream: true,
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
const { readable, writable } = new TransformStream()
|
|
36
|
+
const writer = writable.getWriter()
|
|
37
|
+
|
|
38
|
+
;(async () => {
|
|
39
|
+
for await (const chunk of stream) {
|
|
40
|
+
await writer.write(new TextEncoder().encode(`data: ${JSON.stringify(chunk)}\n\n`))
|
|
41
|
+
}
|
|
42
|
+
await writer.write(new TextEncoder().encode('data: [DONE]\n\n'))
|
|
43
|
+
await writer.close()
|
|
44
|
+
})()
|
|
45
|
+
|
|
46
|
+
return new Response(readable, {
|
|
47
|
+
headers: { 'Content-Type': 'text/event-stream' },
|
|
48
|
+
})
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Error Handling & Retry
|
|
52
|
+
|
|
53
|
+
```typescript
|
|
54
|
+
async function runWithRetry(env, model, input, maxRetries = 3) {
|
|
55
|
+
for (let attempt = 0; attempt < maxRetries; attempt++) {
|
|
56
|
+
try {
|
|
57
|
+
return await env.AI.run(model, input)
|
|
58
|
+
} catch (error) {
|
|
59
|
+
if (error.message?.includes('7505') && attempt < maxRetries - 1) {
|
|
60
|
+
await new Promise((r) => setTimeout(r, Math.pow(2, attempt) * 1000))
|
|
61
|
+
continue
|
|
62
|
+
}
|
|
63
|
+
throw error
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Model Fallback
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
try {
|
|
73
|
+
return await env.AI.run('@cf/meta/llama-3.1-70b-instruct', { messages })
|
|
74
|
+
} catch {
|
|
75
|
+
return await env.AI.run('@cf/meta/llama-3.1-8b-instruct', { messages })
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Prompt Patterns
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
// System prompts
|
|
83
|
+
const PROMPTS = {
|
|
84
|
+
json: 'Respond with valid JSON only.',
|
|
85
|
+
concise: 'Keep responses brief.',
|
|
86
|
+
cot: 'Think step by step before answering.',
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Few-shot
|
|
90
|
+
messages: [
|
|
91
|
+
{ role: 'system', content: 'Extract as JSON' },
|
|
92
|
+
{ role: 'user', content: 'John bought 3 apples for $5' },
|
|
93
|
+
{ role: 'assistant', content: '{"name":"John","item":"apples","qty":3}' },
|
|
94
|
+
{ role: 'user', content: actualInput },
|
|
95
|
+
]
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Parallel Execution
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
const [sentiment, summary, embedding] = await Promise.all([
|
|
102
|
+
env.AI.run('@cf/mistral/mistral-7b-instruct-v0.1', { messages: sentimentPrompt }),
|
|
103
|
+
env.AI.run('@cf/meta/llama-3.1-8b-instruct', { messages: summaryPrompt }),
|
|
104
|
+
env.AI.run('@cf/baai/bge-base-en-v1.5', { text }),
|
|
105
|
+
])
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Cost Optimization
|
|
109
|
+
|
|
110
|
+
| Task | Model | Neurons |
|
|
111
|
+
| -------- | -------------------------------------- | ------- |
|
|
112
|
+
| Classify | `@cf/mistral/mistral-7b-instruct-v0.1` | ~50 |
|
|
113
|
+
| Chat | `@cf/meta/llama-3.1-8b-instruct` | ~200 |
|
|
114
|
+
| Complex | `@cf/meta/llama-3.1-70b-instruct` | ~2000 |
|
|
115
|
+
| Embed | `@cf/baai/bge-base-en-v1.5` | ~10 |
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
// Batch embeddings
|
|
119
|
+
const response = await env.AI.run('@cf/baai/bge-base-en-v1.5', {
|
|
120
|
+
text: textsArray, // Process multiple at once
|
|
121
|
+
})
|
|
122
|
+
```
|