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.
Files changed (531) hide show
  1. package/README.md +126 -56
  2. package/dist/chunk-6OHRCNYW.js +3231 -0
  3. package/dist/chunk-JFMITANR.js +5168 -0
  4. package/dist/{chunk-QCQPAF4I.js → chunk-MWNLAEHR.js} +301 -4321
  5. package/dist/{chunk-ARLYSFSI.js → chunk-UHSO65A4.js} +4242 -6092
  6. package/dist/cli.js +21 -3
  7. package/dist/index.d.ts +16 -13
  8. package/dist/index.js +4 -2
  9. package/dist/resources-IJVKDFGS.js +2 -0
  10. package/dist/tools-44DGXE3V.js +2 -0
  11. package/dist/worker-script.js +201 -20
  12. package/package.json +7 -4
  13. package/skills/README.md +62 -25
  14. package/skills/adversarial-performance/SKILL.md +139 -0
  15. package/skills/adversarial-performance/references/audit-categories.md +462 -0
  16. package/skills/adversarial-performance/references/copilot-performance-prompts.md +44 -0
  17. package/skills/adversarial-performance/references/copilot-usage.md +16 -0
  18. package/skills/adversarial-performance/references/feedback-loop.md +177 -0
  19. package/skills/adversarial-performance/references/multi-pass-performance-protocol.md +398 -0
  20. package/skills/adversarial-planner/SKILL.md +23 -54
  21. package/skills/adversarial-planner/references/copilot-integration.md +25 -40
  22. package/skills/adversarial-planner/references/copilot-usage.md +16 -0
  23. package/skills/adversarial-planner/references/multi-pass-protocol.md +4 -0
  24. package/skills/adversarial-security/SKILL.md +149 -0
  25. package/skills/adversarial-security/references/adversarial-base-protocol.md +44 -0
  26. package/skills/adversarial-security/references/audit-categories.md +723 -0
  27. package/skills/adversarial-security/references/copilot-security-prompts.md +142 -0
  28. package/skills/adversarial-security/references/copilot-usage.md +16 -0
  29. package/skills/adversarial-security/references/feedback-loop.md +206 -0
  30. package/skills/adversarial-security/references/journal-opt-out.md +7 -0
  31. package/skills/adversarial-security/references/multi-pass-security-protocol.md +403 -0
  32. package/skills/adversarial-skill-audit/SKILL.md +118 -0
  33. package/skills/adversarial-skill-audit/references/audit-categories.md +308 -0
  34. package/skills/adversarial-skill-audit/references/copilot-skill-prompts.md +68 -0
  35. package/skills/adversarial-skill-audit/references/copilot-usage.md +16 -0
  36. package/skills/adversarial-skill-audit/references/feedback-loop.md +155 -0
  37. package/skills/adversarial-skill-audit/references/multi-pass-skill-protocol.md +367 -0
  38. package/skills/adversarial-skill-audit/scripts/check-skills.ps1 +48 -0
  39. package/skills/adversarial-skill-audit/scripts/run-copilot.ps1 +52 -0
  40. package/skills/adversarial-workflow-audit/SKILL.md +82 -0
  41. package/skills/adversarial-workflow-audit/references/audit-categories.md +28 -0
  42. package/skills/adversarial-workflow-audit/references/copilot-usage.md +16 -0
  43. package/skills/adversarial-workflow-audit/scripts/check-workflows.ps1 +24 -0
  44. package/skills/agents-sdk/SKILL.md +220 -0
  45. package/skills/agents-sdk/references/callable.md +92 -0
  46. package/skills/agents-sdk/references/codemode.md +209 -0
  47. package/skills/agents-sdk/references/email.md +144 -0
  48. package/skills/agents-sdk/references/mcp/SKILL.md +65 -0
  49. package/skills/agents-sdk/references/mcp/code-mode-reference.md +245 -0
  50. package/skills/agents-sdk/references/mcp/oauth-reference.md +359 -0
  51. package/skills/agents-sdk/references/mcp/references/architecture-reference.md +208 -0
  52. package/skills/agents-sdk/references/mcp/references/cloudflare-quickstart.md +156 -0
  53. package/skills/agents-sdk/references/mcp/references/error-handling.md +343 -0
  54. package/skills/agents-sdk/references/mcp/references/http-security.md +164 -0
  55. package/skills/agents-sdk/references/mcp/references/implementation-guide.md +507 -0
  56. package/skills/agents-sdk/references/mcp/references/testing-reference.md +171 -0
  57. package/skills/agents-sdk/references/mcp.md +157 -0
  58. package/skills/agents-sdk/references/state-scheduling.md +164 -0
  59. package/skills/agents-sdk/references/streaming-chat.md +168 -0
  60. package/skills/agents-sdk/references/workflows.md +136 -0
  61. package/skills/auth-identity/SKILL.md +48 -0
  62. package/skills/autonomous-dev/SKILL.md +46 -23
  63. package/skills/autonomous-dev/references/workflow_orchestration.md +22 -0
  64. package/skills/aws/SKILL.md +39 -0
  65. package/skills/azure/SKILL.md +38 -0
  66. package/skills/bin/sync.js +7 -1
  67. package/skills/biome/SKILL.md +59 -0
  68. package/skills/bun/SKILL.md +8 -2
  69. package/skills/cloudflare/SKILL.md +37 -0
  70. package/skills/cloudflare/references/agents-sdk/README.md +95 -0
  71. package/skills/cloudflare/references/agents-sdk/api.md +195 -0
  72. package/skills/cloudflare/references/agents-sdk/configuration.md +178 -0
  73. package/skills/cloudflare/references/agents-sdk/gotchas.md +173 -0
  74. package/skills/cloudflare/references/agents-sdk/patterns.md +215 -0
  75. package/skills/cloudflare/references/ai-gateway/README.md +176 -0
  76. package/skills/cloudflare/references/ai-gateway/configuration.md +117 -0
  77. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +88 -0
  78. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  79. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +110 -0
  80. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +90 -0
  81. package/skills/cloudflare/references/ai-search/README.md +145 -0
  82. package/skills/cloudflare/references/ai-search/api.md +87 -0
  83. package/skills/cloudflare/references/ai-search/configuration.md +91 -0
  84. package/skills/cloudflare/references/ai-search/gotchas.md +92 -0
  85. package/skills/cloudflare/references/ai-search/patterns.md +87 -0
  86. package/skills/cloudflare/references/analytics-engine/README.md +96 -0
  87. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  88. package/skills/cloudflare/references/analytics-engine/configuration.md +107 -0
  89. package/skills/cloudflare/references/analytics-engine/gotchas.md +87 -0
  90. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  91. package/skills/cloudflare/references/api/README.md +66 -0
  92. package/skills/cloudflare/references/api/api.md +205 -0
  93. package/skills/cloudflare/references/api/configuration.md +158 -0
  94. package/skills/cloudflare/references/api/gotchas.md +231 -0
  95. package/skills/cloudflare/references/api/patterns.md +208 -0
  96. package/skills/cloudflare/references/api-shield/README.md +44 -0
  97. package/skills/cloudflare/references/api-shield/api.md +153 -0
  98. package/skills/cloudflare/references/api-shield/configuration.md +210 -0
  99. package/skills/cloudflare/references/api-shield/gotchas.md +132 -0
  100. package/skills/cloudflare/references/api-shield/patterns.md +185 -0
  101. package/skills/cloudflare/references/argo-smart-routing/README.md +96 -0
  102. package/skills/cloudflare/references/argo-smart-routing/api.md +253 -0
  103. package/skills/cloudflare/references/argo-smart-routing/configuration.md +205 -0
  104. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +115 -0
  105. package/skills/cloudflare/references/argo-smart-routing/patterns.md +107 -0
  106. package/skills/cloudflare/references/bindings/README.md +127 -0
  107. package/skills/cloudflare/references/bindings/api.md +214 -0
  108. package/skills/cloudflare/references/bindings/configuration.md +200 -0
  109. package/skills/cloudflare/references/bindings/gotchas.md +210 -0
  110. package/skills/cloudflare/references/bindings/patterns.md +205 -0
  111. package/skills/cloudflare/references/bot-management/README.md +95 -0
  112. package/skills/cloudflare/references/bot-management/api.md +175 -0
  113. package/skills/cloudflare/references/bot-management/configuration.md +175 -0
  114. package/skills/cloudflare/references/bot-management/gotchas.md +116 -0
  115. package/skills/cloudflare/references/bot-management/patterns.md +181 -0
  116. package/skills/cloudflare/references/browser-rendering/README.md +84 -0
  117. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  118. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  119. package/skills/cloudflare/references/browser-rendering/gotchas.md +91 -0
  120. package/skills/cloudflare/references/browser-rendering/patterns.md +93 -0
  121. package/skills/cloudflare/references/c3/README.md +111 -0
  122. package/skills/cloudflare/references/c3/api.md +71 -0
  123. package/skills/cloudflare/references/c3/configuration.md +85 -0
  124. package/skills/cloudflare/references/c3/gotchas.md +97 -0
  125. package/skills/cloudflare/references/c3/patterns.md +84 -0
  126. package/skills/cloudflare/references/cache-reserve/README.md +150 -0
  127. package/skills/cloudflare/references/cache-reserve/api.md +184 -0
  128. package/skills/cloudflare/references/cache-reserve/configuration.md +170 -0
  129. package/skills/cloudflare/references/cache-reserve/gotchas.md +136 -0
  130. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  131. package/skills/cloudflare/references/containers/README.md +87 -0
  132. package/skills/cloudflare/references/containers/api.md +197 -0
  133. package/skills/cloudflare/references/containers/configuration.md +191 -0
  134. package/skills/cloudflare/references/containers/gotchas.md +182 -0
  135. package/skills/cloudflare/references/containers/patterns.md +204 -0
  136. package/skills/cloudflare/references/cron-triggers/README.md +101 -0
  137. package/skills/cloudflare/references/cron-triggers/api.md +224 -0
  138. package/skills/cloudflare/references/cron-triggers/configuration.md +190 -0
  139. package/skills/cloudflare/references/cron-triggers/gotchas.md +207 -0
  140. package/skills/cloudflare/references/cron-triggers/patterns.md +274 -0
  141. package/skills/cloudflare/references/d1/README.md +137 -0
  142. package/skills/cloudflare/references/d1/api.md +213 -0
  143. package/skills/cloudflare/references/d1/configuration.md +198 -0
  144. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  145. package/skills/cloudflare/references/d1/patterns.md +240 -0
  146. package/skills/cloudflare/references/ddos/README.md +42 -0
  147. package/skills/cloudflare/references/ddos/api.md +158 -0
  148. package/skills/cloudflare/references/ddos/configuration.md +94 -0
  149. package/skills/cloudflare/references/ddos/gotchas.md +114 -0
  150. package/skills/cloudflare/references/ddos/patterns.md +220 -0
  151. package/skills/cloudflare/references/decision-trees.md +95 -0
  152. package/skills/cloudflare/references/do-storage/README.md +79 -0
  153. package/skills/cloudflare/references/do-storage/api.md +107 -0
  154. package/skills/cloudflare/references/do-storage/configuration.md +114 -0
  155. package/skills/cloudflare/references/do-storage/gotchas.md +153 -0
  156. package/skills/cloudflare/references/do-storage/patterns.md +210 -0
  157. package/skills/cloudflare/references/do-storage/testing.md +186 -0
  158. package/skills/cloudflare/references/durable-objects/README.md +194 -0
  159. package/skills/cloudflare/references/durable-objects/api.md +205 -0
  160. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  161. package/skills/cloudflare/references/durable-objects/gotchas.md +200 -0
  162. package/skills/cloudflare/references/durable-objects/patterns.md +205 -0
  163. package/skills/cloudflare/references/email-routing/README.md +89 -0
  164. package/skills/cloudflare/references/email-routing/api.md +192 -0
  165. package/skills/cloudflare/references/email-routing/configuration.md +187 -0
  166. package/skills/cloudflare/references/email-routing/gotchas.md +203 -0
  167. package/skills/cloudflare/references/email-routing/patterns.md +241 -0
  168. package/skills/cloudflare/references/email-workers/README.md +153 -0
  169. package/skills/cloudflare/references/email-workers/api.md +227 -0
  170. package/skills/cloudflare/references/email-workers/configuration.md +115 -0
  171. package/skills/cloudflare/references/email-workers/gotchas.md +133 -0
  172. package/skills/cloudflare/references/email-workers/patterns.md +108 -0
  173. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  174. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  175. package/skills/cloudflare/references/graphql-api/configuration.md +151 -0
  176. package/skills/cloudflare/references/graphql-api/gotchas.md +111 -0
  177. package/skills/cloudflare/references/graphql-api/patterns.md +276 -0
  178. package/skills/cloudflare/references/hyperdrive/README.md +84 -0
  179. package/skills/cloudflare/references/hyperdrive/api.md +149 -0
  180. package/skills/cloudflare/references/hyperdrive/configuration.md +166 -0
  181. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  182. package/skills/cloudflare/references/hyperdrive/patterns.md +203 -0
  183. package/skills/cloudflare/references/images/README.md +65 -0
  184. package/skills/cloudflare/references/images/api.md +101 -0
  185. package/skills/cloudflare/references/images/configuration.md +206 -0
  186. package/skills/cloudflare/references/images/gotchas.md +106 -0
  187. package/skills/cloudflare/references/images/patterns.md +126 -0
  188. package/skills/cloudflare/references/kv/README.md +90 -0
  189. package/skills/cloudflare/references/kv/api.md +163 -0
  190. package/skills/cloudflare/references/kv/configuration.md +148 -0
  191. package/skills/cloudflare/references/kv/gotchas.md +133 -0
  192. package/skills/cloudflare/references/kv/patterns.md +195 -0
  193. package/skills/cloudflare/references/miniflare/README.md +113 -0
  194. package/skills/cloudflare/references/miniflare/api.md +204 -0
  195. package/skills/cloudflare/references/miniflare/configuration.md +174 -0
  196. package/skills/cloudflare/references/miniflare/gotchas.md +179 -0
  197. package/skills/cloudflare/references/miniflare/patterns.md +187 -0
  198. package/skills/cloudflare/references/network-interconnect/README.md +104 -0
  199. package/skills/cloudflare/references/network-interconnect/api.md +220 -0
  200. package/skills/cloudflare/references/network-interconnect/configuration.md +123 -0
  201. package/skills/cloudflare/references/network-interconnect/gotchas.md +175 -0
  202. package/skills/cloudflare/references/network-interconnect/patterns.md +174 -0
  203. package/skills/cloudflare/references/observability/README.md +93 -0
  204. package/skills/cloudflare/references/observability/api.md +168 -0
  205. package/skills/cloudflare/references/observability/configuration.md +178 -0
  206. package/skills/cloudflare/references/observability/gotchas.md +125 -0
  207. package/skills/cloudflare/references/observability/patterns.md +105 -0
  208. package/skills/cloudflare/references/pages/README.md +92 -0
  209. package/skills/cloudflare/references/pages/api.md +205 -0
  210. package/skills/cloudflare/references/pages/configuration.md +216 -0
  211. package/skills/cloudflare/references/pages/gotchas.md +218 -0
  212. package/skills/cloudflare/references/pages/patterns.md +215 -0
  213. package/skills/cloudflare/references/pages-functions/README.md +104 -0
  214. package/skills/cloudflare/references/pages-functions/api.md +159 -0
  215. package/skills/cloudflare/references/pages-functions/configuration.md +130 -0
  216. package/skills/cloudflare/references/pages-functions/gotchas.md +102 -0
  217. package/skills/cloudflare/references/pages-functions/patterns.md +148 -0
  218. package/skills/cloudflare/references/pipelines/README.md +109 -0
  219. package/skills/cloudflare/references/pipelines/api.md +214 -0
  220. package/skills/cloudflare/references/pipelines/configuration.md +98 -0
  221. package/skills/cloudflare/references/pipelines/gotchas.md +84 -0
  222. package/skills/cloudflare/references/pipelines/patterns.md +87 -0
  223. package/skills/cloudflare/references/product-index.md +112 -0
  224. package/skills/cloudflare/references/pulumi/README.md +113 -0
  225. package/skills/cloudflare/references/pulumi/api.md +230 -0
  226. package/skills/cloudflare/references/pulumi/configuration.md +213 -0
  227. package/skills/cloudflare/references/pulumi/gotchas.md +205 -0
  228. package/skills/cloudflare/references/pulumi/patterns.md +260 -0
  229. package/skills/cloudflare/references/queues/README.md +99 -0
  230. package/skills/cloudflare/references/queues/api.md +211 -0
  231. package/skills/cloudflare/references/queues/configuration.md +151 -0
  232. package/skills/cloudflare/references/queues/gotchas.md +210 -0
  233. package/skills/cloudflare/references/queues/patterns.md +220 -0
  234. package/skills/cloudflare/references/r2/README.md +97 -0
  235. package/skills/cloudflare/references/r2/api.md +235 -0
  236. package/skills/cloudflare/references/r2/configuration.md +176 -0
  237. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  238. package/skills/cloudflare/references/r2/patterns.md +203 -0
  239. package/skills/cloudflare/references/r2-data-catalog/README.md +157 -0
  240. package/skills/cloudflare/references/r2-data-catalog/api.md +199 -0
  241. package/skills/cloudflare/references/r2-data-catalog/configuration.md +205 -0
  242. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +170 -0
  243. package/skills/cloudflare/references/r2-data-catalog/patterns.md +191 -0
  244. package/skills/cloudflare/references/r2-sql/README.md +138 -0
  245. package/skills/cloudflare/references/r2-sql/SKILL.md.backup +512 -0
  246. package/skills/cloudflare/references/r2-sql/api.md +159 -0
  247. package/skills/cloudflare/references/r2-sql/configuration.md +152 -0
  248. package/skills/cloudflare/references/r2-sql/gotchas.md +228 -0
  249. package/skills/cloudflare/references/r2-sql/patterns.md +230 -0
  250. package/skills/cloudflare/references/realtime-sfu/README.md +66 -0
  251. package/skills/cloudflare/references/realtime-sfu/api.md +164 -0
  252. package/skills/cloudflare/references/realtime-sfu/configuration.md +141 -0
  253. package/skills/cloudflare/references/realtime-sfu/gotchas.md +138 -0
  254. package/skills/cloudflare/references/realtime-sfu/patterns.md +187 -0
  255. package/skills/cloudflare/references/realtimekit/README.md +118 -0
  256. package/skills/cloudflare/references/realtimekit/api.md +234 -0
  257. package/skills/cloudflare/references/realtimekit/configuration.md +226 -0
  258. package/skills/cloudflare/references/realtimekit/gotchas.md +206 -0
  259. package/skills/cloudflare/references/realtimekit/patterns.md +240 -0
  260. package/skills/cloudflare/references/sandbox/README.md +104 -0
  261. package/skills/cloudflare/references/sandbox/api.md +200 -0
  262. package/skills/cloudflare/references/sandbox/configuration.md +154 -0
  263. package/skills/cloudflare/references/sandbox/gotchas.md +201 -0
  264. package/skills/cloudflare/references/sandbox/patterns.md +195 -0
  265. package/skills/cloudflare/references/secrets-store/README.md +77 -0
  266. package/skills/cloudflare/references/secrets-store/api.md +199 -0
  267. package/skills/cloudflare/references/secrets-store/configuration.md +187 -0
  268. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  269. package/skills/cloudflare/references/secrets-store/patterns.md +218 -0
  270. package/skills/cloudflare/references/smart-placement/README.md +143 -0
  271. package/skills/cloudflare/references/smart-placement/api.md +192 -0
  272. package/skills/cloudflare/references/smart-placement/configuration.md +202 -0
  273. package/skills/cloudflare/references/smart-placement/gotchas.md +180 -0
  274. package/skills/cloudflare/references/smart-placement/patterns.md +190 -0
  275. package/skills/cloudflare/references/snippets/README.md +74 -0
  276. package/skills/cloudflare/references/snippets/api.md +214 -0
  277. package/skills/cloudflare/references/snippets/configuration.md +239 -0
  278. package/skills/cloudflare/references/snippets/gotchas.md +104 -0
  279. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  280. package/skills/cloudflare/references/spectrum/README.md +52 -0
  281. package/skills/cloudflare/references/spectrum/api.md +184 -0
  282. package/skills/cloudflare/references/spectrum/configuration.md +203 -0
  283. package/skills/cloudflare/references/spectrum/gotchas.md +155 -0
  284. package/skills/cloudflare/references/spectrum/patterns.md +206 -0
  285. package/skills/cloudflare/references/static-assets/README.md +65 -0
  286. package/skills/cloudflare/references/static-assets/api.md +201 -0
  287. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  288. package/skills/cloudflare/references/static-assets/gotchas.md +164 -0
  289. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  290. package/skills/cloudflare/references/stream/README.md +123 -0
  291. package/skills/cloudflare/references/stream/api-live.md +202 -0
  292. package/skills/cloudflare/references/stream/api.md +206 -0
  293. package/skills/cloudflare/references/stream/configuration.md +151 -0
  294. package/skills/cloudflare/references/stream/gotchas.md +139 -0
  295. package/skills/cloudflare/references/stream/patterns.md +217 -0
  296. package/skills/cloudflare/references/tail-workers/README.md +92 -0
  297. package/skills/cloudflare/references/tail-workers/api.md +203 -0
  298. package/skills/cloudflare/references/tail-workers/configuration.md +178 -0
  299. package/skills/cloudflare/references/tail-workers/gotchas.md +206 -0
  300. package/skills/cloudflare/references/tail-workers/patterns.md +190 -0
  301. package/skills/cloudflare/references/terraform/README.md +100 -0
  302. package/skills/cloudflare/references/terraform/api.md +178 -0
  303. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  304. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  305. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  306. package/skills/cloudflare/references/tunnel/README.md +137 -0
  307. package/skills/cloudflare/references/tunnel/api.md +205 -0
  308. package/skills/cloudflare/references/tunnel/configuration.md +163 -0
  309. package/skills/cloudflare/references/tunnel/gotchas.md +159 -0
  310. package/skills/cloudflare/references/tunnel/networking.md +174 -0
  311. package/skills/cloudflare/references/tunnel/patterns.md +199 -0
  312. package/skills/cloudflare/references/turn/README.md +86 -0
  313. package/skills/cloudflare/references/turn/api.md +236 -0
  314. package/skills/cloudflare/references/turn/configuration.md +181 -0
  315. package/skills/cloudflare/references/turn/gotchas.md +236 -0
  316. package/skills/cloudflare/references/turn/patterns.md +228 -0
  317. package/skills/cloudflare/references/turnstile/README.md +102 -0
  318. package/skills/cloudflare/references/turnstile/api.md +253 -0
  319. package/skills/cloudflare/references/turnstile/configuration.md +242 -0
  320. package/skills/cloudflare/references/turnstile/gotchas.md +253 -0
  321. package/skills/cloudflare/references/turnstile/patterns.md +195 -0
  322. package/skills/cloudflare/references/vectorize/README.md +133 -0
  323. package/skills/cloudflare/references/vectorize/api.md +89 -0
  324. package/skills/cloudflare/references/vectorize/configuration.md +91 -0
  325. package/skills/cloudflare/references/vectorize/gotchas.md +83 -0
  326. package/skills/cloudflare/references/vectorize/patterns.md +92 -0
  327. package/skills/cloudflare/references/waf/README.md +125 -0
  328. package/skills/cloudflare/references/waf/api.md +203 -0
  329. package/skills/cloudflare/references/waf/configuration.md +215 -0
  330. package/skills/cloudflare/references/waf/gotchas.md +208 -0
  331. package/skills/cloudflare/references/waf/patterns.md +236 -0
  332. package/skills/cloudflare/references/web-analytics/README.md +149 -0
  333. package/skills/cloudflare/references/web-analytics/configuration.md +81 -0
  334. package/skills/cloudflare/references/web-analytics/gotchas.md +86 -0
  335. package/skills/cloudflare/references/web-analytics/integration.md +63 -0
  336. package/skills/cloudflare/references/web-analytics/patterns.md +98 -0
  337. package/skills/cloudflare/references/workerd/README.md +85 -0
  338. package/skills/cloudflare/references/workerd/api.md +219 -0
  339. package/skills/cloudflare/references/workerd/configuration.md +200 -0
  340. package/skills/cloudflare/references/workerd/gotchas.md +151 -0
  341. package/skills/cloudflare/references/workerd/patterns.md +205 -0
  342. package/skills/cloudflare/references/workers/README.md +110 -0
  343. package/skills/cloudflare/references/workers/api.md +197 -0
  344. package/skills/cloudflare/references/workers/configuration.md +184 -0
  345. package/skills/cloudflare/references/workers/frameworks.md +200 -0
  346. package/skills/cloudflare/references/workers/gotchas.md +145 -0
  347. package/skills/cloudflare/references/workers/patterns.md +220 -0
  348. package/skills/cloudflare/references/workers-ai/README.md +206 -0
  349. package/skills/cloudflare/references/workers-ai/api.md +115 -0
  350. package/skills/cloudflare/references/workers-ai/configuration.md +98 -0
  351. package/skills/cloudflare/references/workers-ai/gotchas.md +130 -0
  352. package/skills/cloudflare/references/workers-ai/patterns.md +122 -0
  353. package/skills/cloudflare/references/workers-for-platforms/README.md +95 -0
  354. package/skills/cloudflare/references/workers-for-platforms/api.md +212 -0
  355. package/skills/cloudflare/references/workers-for-platforms/configuration.md +178 -0
  356. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  357. package/skills/cloudflare/references/workers-for-platforms/patterns.md +210 -0
  358. package/skills/cloudflare/references/workers-playground/README.md +131 -0
  359. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  360. package/skills/cloudflare/references/workers-playground/configuration.md +169 -0
  361. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  362. package/skills/cloudflare/references/workers-playground/patterns.md +134 -0
  363. package/skills/cloudflare/references/workers-vpc/README.md +130 -0
  364. package/skills/cloudflare/references/workers-vpc/api.md +196 -0
  365. package/skills/cloudflare/references/workers-vpc/configuration.md +151 -0
  366. package/skills/cloudflare/references/workers-vpc/gotchas.md +171 -0
  367. package/skills/cloudflare/references/workers-vpc/patterns.md +235 -0
  368. package/skills/cloudflare/references/workflows/README.md +72 -0
  369. package/skills/cloudflare/references/workflows/api.md +237 -0
  370. package/skills/cloudflare/references/workflows/configuration.md +158 -0
  371. package/skills/cloudflare/references/workflows/gotchas.md +97 -0
  372. package/skills/cloudflare/references/workflows/patterns.md +245 -0
  373. package/skills/cloudflare/references/wrangler/README.md +143 -0
  374. package/skills/cloudflare/references/wrangler/api.md +188 -0
  375. package/skills/cloudflare/references/wrangler/configuration.md +198 -0
  376. package/skills/cloudflare/references/wrangler/gotchas.md +212 -0
  377. package/skills/cloudflare/references/wrangler/patterns.md +211 -0
  378. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +131 -0
  379. package/skills/cloudflare/references/zaraz/README.md +114 -0
  380. package/skills/cloudflare/references/zaraz/api.md +118 -0
  381. package/skills/cloudflare/references/zaraz/configuration.md +94 -0
  382. package/skills/cloudflare/references/zaraz/gotchas.md +88 -0
  383. package/skills/cloudflare/references/zaraz/patterns.md +77 -0
  384. package/skills/docker/SKILL.md +7 -101
  385. package/skills/docker/references/advanced-examples.md +71 -0
  386. package/skills/docker/references/templates.md +34 -0
  387. package/skills/docs-marketer/SKILL.md +178 -0
  388. package/skills/docs-marketer/references/audit-categories.md +328 -0
  389. package/skills/docs-marketer/references/copilot-docs-prompts.md +88 -0
  390. package/skills/docs-marketer/references/copilot-usage.md +16 -0
  391. package/skills/docs-marketer/references/feedback-loop.md +155 -0
  392. package/skills/docs-marketer/references/multi-pass-docs-protocol.md +410 -0
  393. package/skills/drizzle-orm/SKILL.md +82 -0
  394. package/skills/durable-objects/SKILL.md +167 -0
  395. package/skills/durable-objects/references/advanced_features.md +29 -0
  396. package/skills/durable-objects/references/rules.md +300 -0
  397. package/skills/durable-objects/references/testing.md +261 -0
  398. package/skills/durable-objects/references/workers.md +336 -0
  399. package/skills/gcp/SKILL.md +37 -0
  400. package/skills/github-actions/SKILL.md +5 -58
  401. package/skills/github-actions/references/templates.md +65 -0
  402. package/skills/github-commander/SKILL.md +13 -21
  403. package/skills/github-commander/workflows/copilot-audit.md +12 -12
  404. package/skills/github-copilot-cli/SKILL.md +21 -26
  405. package/skills/github-repo-setup/SKILL.md +136 -0
  406. package/skills/github-repo-setup/references/community-standards.md +136 -0
  407. package/skills/github-repo-setup/references/github-automation.md +490 -0
  408. package/skills/github-repo-setup/references/inline-templates.md +205 -0
  409. package/skills/github-repo-setup/references/project-config.md +320 -0
  410. package/skills/gitlab/SKILL.md +7 -2
  411. package/skills/gitlab/package-lock.json +389 -389
  412. package/skills/golang/SKILL.md +8 -1
  413. package/skills/graphql/SKILL.md +30 -0
  414. package/skills/hono/SKILL.md +82 -0
  415. package/skills/journal-optimizer/SKILL.md +206 -0
  416. package/skills/journal-optimizer/references/optimizer-scripts.md +169 -0
  417. package/skills/llm-app-engineering/SKILL.md +18 -0
  418. package/skills/monorepo/SKILL.md +56 -0
  419. package/skills/multi-agent-orchestration/SKILL.md +14 -0
  420. package/skills/mysql/SKILL.md +6 -2
  421. package/skills/next-best-practices/SKILL.md +86 -0
  422. package/skills/next-best-practices/references/cache-components-examples.md +234 -0
  423. package/skills/next-best-practices/references/cache-components.md +210 -0
  424. package/skills/next-best-practices/references/upgrade-decision-tree.md +33 -0
  425. package/skills/next-best-practices/references/upgrade.md +43 -0
  426. package/skills/next-cache-components/SKILL.md +441 -0
  427. package/skills/next-upgrade/SKILL.md +43 -0
  428. package/skills/next-upgrade/references/decision-tree.md +33 -0
  429. package/skills/nodejs/SKILL.md +46 -0
  430. package/skills/opentelemetry/SKILL.md +62 -0
  431. package/skills/package.json +39 -4
  432. package/skills/playwright-standard/SKILL.md +6 -11
  433. package/skills/playwright-standard/references/locators.md +7 -0
  434. package/skills/postgres/SKILL.md +6 -1
  435. package/skills/python/SKILL.md +8 -70
  436. package/skills/python/references/advanced-patterns.md +37 -0
  437. package/skills/python/references/config-templates.md +48 -0
  438. package/skills/rag-pipelines/SKILL.md +14 -0
  439. package/skills/redis/SKILL.md +31 -0
  440. package/skills/render/SKILL.md +35 -0
  441. package/skills/rust/SKILL.md +15 -25
  442. package/skills/rust/references/borrow-checker.md +13 -0
  443. package/skills/rust/references/ecosystem.md +11 -0
  444. package/skills/sandbox-sdk/SKILL.md +186 -0
  445. package/skills/sandbox-sdk/references/api-quick-ref.md +113 -0
  446. package/skills/sandbox-sdk/references/examples.md +52 -0
  447. package/skills/shadcn-ui/SKILL.md +22 -57
  448. package/skills/skill-builder/SKILL.md +23 -424
  449. package/skills/skill-builder/references/tutorial.md +457 -0
  450. package/skills/sqlite/SKILL.md +16 -5
  451. package/skills/table.md +59 -0
  452. package/skills/tailwind-css/SKILL.md +11 -60
  453. package/skills/tailwind-css/references/component-patterns.md +52 -0
  454. package/skills/trpc/SKILL.md +56 -0
  455. package/skills/typescript/SKILL.md +30 -433
  456. package/skills/typescript/references/tutorial.md +453 -0
  457. package/skills/vercel-ai-sdk/SKILL.md +48 -0
  458. package/skills/vitest-standard/SKILL.md +5 -11
  459. package/skills/vitest-standard/references/assertions.md +11 -0
  460. package/skills/web-perf/SKILL.md +207 -0
  461. package/skills/workers-best-practices/SKILL.md +120 -0
  462. package/skills/workers-best-practices/references/anti-patterns.md +18 -0
  463. package/skills/workers-best-practices/references/review.md +174 -0
  464. package/skills/workers-best-practices/references/rules.md +485 -0
  465. package/skills/wrangler/SKILL.md +43 -0
  466. package/skills/wrangler/references/cli-commands.md +861 -0
  467. package/skills/zod/SKILL.md +48 -0
  468. package/dist/tools-P4VGG4FH.js +0 -1
  469. package/skills/react-best-practices/AGENTS.md +0 -2883
  470. package/skills/react-best-practices/SKILL.md +0 -138
  471. /package/skills/{react-best-practices → next-best-practices}/README.md +0 -0
  472. /package/skills/{react-best-practices → next-best-practices}/metadata.json +0 -0
  473. /package/skills/{react-best-practices → next-best-practices}/rules/_sections.md +0 -0
  474. /package/skills/{react-best-practices → next-best-practices}/rules/_template.md +0 -0
  475. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-event-handler-refs.md +0 -0
  476. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-init-once.md +0 -0
  477. /package/skills/{react-best-practices → next-best-practices}/rules/advanced-use-latest.md +0 -0
  478. /package/skills/{react-best-practices → next-best-practices}/rules/async-api-routes.md +0 -0
  479. /package/skills/{react-best-practices → next-best-practices}/rules/async-defer-await.md +0 -0
  480. /package/skills/{react-best-practices → next-best-practices}/rules/async-dependencies.md +0 -0
  481. /package/skills/{react-best-practices → next-best-practices}/rules/async-parallel.md +0 -0
  482. /package/skills/{react-best-practices → next-best-practices}/rules/async-suspense-boundaries.md +0 -0
  483. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-barrel-imports.md +0 -0
  484. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-conditional.md +0 -0
  485. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-defer-third-party.md +0 -0
  486. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-dynamic-imports.md +0 -0
  487. /package/skills/{react-best-practices → next-best-practices}/rules/bundle-preload.md +0 -0
  488. /package/skills/{react-best-practices → next-best-practices}/rules/client-event-listeners.md +0 -0
  489. /package/skills/{react-best-practices → next-best-practices}/rules/client-localstorage-schema.md +0 -0
  490. /package/skills/{react-best-practices → next-best-practices}/rules/client-passive-event-listeners.md +0 -0
  491. /package/skills/{react-best-practices → next-best-practices}/rules/client-swr-dedup.md +0 -0
  492. /package/skills/{react-best-practices → next-best-practices}/rules/js-batch-dom-css.md +0 -0
  493. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-function-results.md +0 -0
  494. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-property-access.md +0 -0
  495. /package/skills/{react-best-practices → next-best-practices}/rules/js-cache-storage.md +0 -0
  496. /package/skills/{react-best-practices → next-best-practices}/rules/js-combine-iterations.md +0 -0
  497. /package/skills/{react-best-practices → next-best-practices}/rules/js-early-exit.md +0 -0
  498. /package/skills/{react-best-practices → next-best-practices}/rules/js-hoist-regexp.md +0 -0
  499. /package/skills/{react-best-practices → next-best-practices}/rules/js-index-maps.md +0 -0
  500. /package/skills/{react-best-practices → next-best-practices}/rules/js-length-check-first.md +0 -0
  501. /package/skills/{react-best-practices → next-best-practices}/rules/js-min-max-loop.md +0 -0
  502. /package/skills/{react-best-practices → next-best-practices}/rules/js-set-map-lookups.md +0 -0
  503. /package/skills/{react-best-practices → next-best-practices}/rules/js-tosorted-immutable.md +0 -0
  504. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-activity.md +0 -0
  505. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-animate-svg-wrapper.md +0 -0
  506. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-conditional-render.md +0 -0
  507. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-content-visibility.md +0 -0
  508. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hoist-jsx.md +0 -0
  509. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-no-flicker.md +0 -0
  510. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-hydration-suppress-warning.md +0 -0
  511. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-svg-precision.md +0 -0
  512. /package/skills/{react-best-practices → next-best-practices}/rules/rendering-usetransition-loading.md +0 -0
  513. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-defer-reads.md +0 -0
  514. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-dependencies.md +0 -0
  515. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state-no-effect.md +0 -0
  516. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-derived-state.md +0 -0
  517. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-functional-setstate.md +0 -0
  518. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-lazy-state-init.md +0 -0
  519. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo-with-default-value.md +0 -0
  520. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-memo.md +0 -0
  521. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-move-effect-to-event.md +0 -0
  522. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-simple-expression-in-memo.md +0 -0
  523. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-transitions.md +0 -0
  524. /package/skills/{react-best-practices → next-best-practices}/rules/rerender-use-ref-transient-values.md +0 -0
  525. /package/skills/{react-best-practices → next-best-practices}/rules/server-after-nonblocking.md +0 -0
  526. /package/skills/{react-best-practices → next-best-practices}/rules/server-auth-actions.md +0 -0
  527. /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-lru.md +0 -0
  528. /package/skills/{react-best-practices → next-best-practices}/rules/server-cache-react.md +0 -0
  529. /package/skills/{react-best-practices → next-best-practices}/rules/server-dedup-props.md +0 -0
  530. /package/skills/{react-best-practices → next-best-practices}/rules/server-parallel-fetching.md +0 -0
  531. /package/skills/{react-best-practices → next-best-practices}/rules/server-serialization.md +0 -0
@@ -0,0 +1,194 @@
1
+ # Cloudflare Durable Objects
2
+
3
+ Expert guidance for building stateful applications with Cloudflare Durable Objects.
4
+
5
+ ## Reading Order
6
+
7
+ 1. **First time?** Read this overview + Quick Start
8
+ 2. **Setting up?** See [Configuration](./configuration.md)
9
+ 3. **Building features?** Use decision trees below → [Patterns](./patterns.md)
10
+ 4. **Debugging issues?** Check [Gotchas](./gotchas.md)
11
+ 5. **Deep dive?** [API](./api.md) and [DO Storage](../do-storage/README.md)
12
+
13
+ ## Overview
14
+
15
+ Durable Objects combine compute with storage in globally-unique, strongly-consistent packages:
16
+
17
+ - **Globally unique instances**: Each DO has unique ID for multi-client coordination
18
+ - **Co-located storage**: Fast, strongly-consistent storage with compute
19
+ - **Automatic placement**: Objects spawn near first request location
20
+ - **Stateful serverless**: In-memory state + persistent storage
21
+ - **Single-threaded**: Serial request processing (no race conditions)
22
+
23
+ ## Rules of Durable Objects
24
+
25
+ Critical rules preventing most production issues:
26
+
27
+ 1. **One alarm per DO** - Schedule multiple events via queue pattern
28
+ 2. **~1K req/s per DO max** - Shard for higher throughput
29
+ 3. **Constructor runs every wake** - Keep initialization light; use lazy loading
30
+ 4. **Hibernation clears memory** - In-memory state lost; persist critical data
31
+ 5. **Use `ctx.waitUntil()` for cleanup** - Ensures completion after response sent
32
+ 6. **No setTimeout for persistence** - Use `setAlarm()` for reliable scheduling
33
+
34
+ ## Core Concepts
35
+
36
+ ### Class Structure
37
+
38
+ All DOs extend `DurableObject` base class with constructor receiving `DurableObjectState` (storage, WebSockets, alarms) and `Env` (bindings).
39
+
40
+ ### Lifecycle States
41
+
42
+ ```
43
+ [Not Created] → [Active] ⇄ [Hibernated] → [Evicted]
44
+
45
+ [Destroyed]
46
+ ```
47
+
48
+ - **Not Created**: DO ID exists but instance never spawned
49
+ - **Active**: Processing requests, in-memory state valid, billed per GB-hour
50
+ - **Hibernated**: WebSocket connections open but zero compute, zero cost
51
+ - **Evicted**: Removed from memory; next request triggers cold start
52
+ - **Destroyed**: Data deleted via migration or manual deletion
53
+
54
+ ### Accessing from Workers
55
+
56
+ Workers use bindings to get stubs, then call RPC methods directly (recommended) or use fetch handler (legacy).
57
+
58
+ **RPC vs fetch() decision:**
59
+
60
+ ```
61
+ ├─ New project + compat ≥2024-04-03 → RPC (type-safe, simpler)
62
+ ├─ Need HTTP semantics (headers, status) → fetch()
63
+ ├─ Proxying requests to DO → fetch()
64
+ └─ Legacy compatibility → fetch()
65
+ ```
66
+
67
+ See [Patterns: RPC vs fetch()](./patterns.md) for examples.
68
+
69
+ ### ID Generation
70
+
71
+ - `idFromName()`: Deterministic, named coordination (rate limiting, locks)
72
+ - `newUniqueId()`: Random IDs for sharding high-throughput workloads
73
+ - `idFromString()`: Derive from existing IDs
74
+ - Jurisdiction option: Data locality compliance
75
+
76
+ ### Storage Options
77
+
78
+ **Which storage API?**
79
+
80
+ ```
81
+ ├─ Structured data, relations, transactions → SQLite (recommended)
82
+ ├─ Simple KV on SQLite DO → ctx.storage.kv (sync KV)
83
+ └─ Legacy KV-only DO → ctx.storage (async KV)
84
+ ```
85
+
86
+ - **SQLite** (recommended): Structured data, transactions, 10GB/DO
87
+ - **Synchronous KV API**: Simple key-value on SQLite objects
88
+ - **Asynchronous KV API**: Legacy/advanced use cases
89
+
90
+ See [DO Storage](../do-storage/README.md) for deep dive.
91
+
92
+ ### Special Features
93
+
94
+ - **Alarms**: Schedule future execution per-DO (1 per DO - use queue pattern for multiple)
95
+ - **WebSocket Hibernation**: Zero-cost idle connections (memory cleared on hibernation)
96
+ - **Point-in-Time Recovery**: Restore to any point in 30 days (SQLite only)
97
+
98
+ ## Quick Start
99
+
100
+ ```typescript
101
+ import { DurableObject } from 'cloudflare:workers'
102
+
103
+ export class Counter extends DurableObject<Env> {
104
+ async increment(): Promise<number> {
105
+ const result = this.ctx.storage.sql
106
+ .exec(
107
+ `INSERT INTO counters (id, value) VALUES (1, 1)
108
+ ON CONFLICT(id) DO UPDATE SET value = value + 1
109
+ RETURNING value`
110
+ )
111
+ .one()
112
+ return result.value
113
+ }
114
+ }
115
+
116
+ // Worker access
117
+ export default {
118
+ async fetch(request: Request, env: Env): Promise<Response> {
119
+ const id = env.COUNTER.idFromName('global')
120
+ const stub = env.COUNTER.get(id)
121
+ const count = await stub.increment()
122
+ return new Response(`Count: ${count}`)
123
+ },
124
+ }
125
+ ```
126
+
127
+ ## Decision Trees
128
+
129
+ ### What do you need?
130
+
131
+ ```
132
+ ├─ Coordinate requests (rate limit, lock, session)
133
+ │ → idFromName(identifier) → [Patterns: Rate Limiting/Locks](./patterns.md)
134
+
135
+ ├─ High throughput (>1K req/s)
136
+ │ → Sharding with newUniqueId() or hash → [Patterns: Sharding](./patterns.md)
137
+
138
+ ├─ Real-time updates (WebSocket, chat, collab)
139
+ │ → WebSocket hibernation + room pattern → [Patterns: Real-time](./patterns.md)
140
+
141
+ ├─ Background work (cleanup, notifications, scheduled tasks)
142
+ │ → Alarms + queue pattern (1 alarm/DO) → [Patterns: Multiple Events](./patterns.md)
143
+
144
+ └─ User sessions with expiration
145
+ → Session pattern + alarm cleanup → [Patterns: Session Management](./patterns.md)
146
+ ```
147
+
148
+ ### Which access pattern?
149
+
150
+ ```
151
+ ├─ New project + typed methods → RPC (compat ≥2024-04-03)
152
+ ├─ Need HTTP semantics → fetch()
153
+ ├─ Proxying to DO → fetch()
154
+ └─ Legacy compat → fetch()
155
+ ```
156
+
157
+ See [Patterns: RPC vs fetch()](./patterns.md) for examples.
158
+
159
+ ### Which storage?
160
+
161
+ ```
162
+ ├─ Structured data, SQL queries, transactions → SQLite (recommended)
163
+ ├─ Simple KV on SQLite DO → ctx.storage.kv (sync API)
164
+ └─ Legacy KV-only DO → ctx.storage (async API)
165
+ ```
166
+
167
+ See [DO Storage](../do-storage/README.md) for complete guide.
168
+
169
+ ## Essential Commands
170
+
171
+ ```bash
172
+ npx wrangler dev # Local dev with DOs
173
+ npx wrangler dev --remote # Test against prod DOs
174
+ npx wrangler deploy # Deploy + auto-apply migrations
175
+ ```
176
+
177
+ ## Resources
178
+
179
+ **Docs**: https://developers.cloudflare.com/durable-objects/
180
+ **API Reference**: https://developers.cloudflare.com/durable-objects/api/
181
+ **Examples**: https://developers.cloudflare.com/durable-objects/examples/
182
+
183
+ ## In This Reference
184
+
185
+ - **[Configuration](./configuration.md)** - wrangler.jsonc setup, migrations, bindings, environments
186
+ - **[API](./api.md)** - Class structure, ctx methods, alarms, WebSocket hibernation
187
+ - **[Patterns](./patterns.md)** - Sharding, rate limiting, locks, real-time, sessions
188
+ - **[Gotchas](./gotchas.md)** - Limits, hibernation caveats, common errors
189
+
190
+ ## See Also
191
+
192
+ - **[DO Storage](../do-storage/README.md)** - SQLite, KV, transactions (detailed storage guide)
193
+ - **[Workers](../workers/README.md)** - Core Workers runtime features
194
+ - **[WebSockets](../websockets/README.md)** - WebSocket APIs and patterns
@@ -0,0 +1,205 @@
1
+ # Durable Objects API
2
+
3
+ ## Class Structure
4
+
5
+ ```typescript
6
+ import { DurableObject } from 'cloudflare:workers'
7
+
8
+ export class MyDO extends DurableObject<Env> {
9
+ constructor(ctx: DurableObjectState, env: Env) {
10
+ super(ctx, env)
11
+ // Runs on EVERY wake - keep light!
12
+ }
13
+
14
+ // RPC methods (called directly from worker)
15
+ async myMethod(arg: string): Promise<string> {
16
+ return arg
17
+ }
18
+
19
+ // fetch handler (legacy/HTTP semantics)
20
+ async fetch(req: Request): Promise<Response> {
21
+ /* ... */
22
+ }
23
+
24
+ // Lifecycle handlers
25
+ async alarm() {
26
+ /* alarm fired */
27
+ }
28
+ async webSocketMessage(ws: WebSocket, msg: string | ArrayBuffer) {
29
+ /* ... */
30
+ }
31
+ async webSocketClose(ws: WebSocket, code: number, reason: string, wasClean: boolean) {
32
+ /* ... */
33
+ }
34
+ async webSocketError(ws: WebSocket, error: unknown) {
35
+ /* ... */
36
+ }
37
+ }
38
+ ```
39
+
40
+ ## DurableObjectState Context Methods
41
+
42
+ ### Concurrency Control
43
+
44
+ ```typescript
45
+ // Complete work after response sent (e.g., cleanup, logging)
46
+ this.ctx.waitUntil(promise: Promise<any>): void
47
+
48
+ // Critical section - blocks all other requests until complete
49
+ await this.ctx.blockConcurrencyWhile(async () => {
50
+ // No other requests processed during this block
51
+ // Use for initialization or critical operations
52
+ })
53
+ ```
54
+
55
+ **When to use:**
56
+
57
+ - `waitUntil()`: Background cleanup, logging, non-critical work after response
58
+ - `blockConcurrencyWhile()`: First-time init, schema migration, critical state setup
59
+
60
+ ### Lifecycle
61
+
62
+ ```typescript
63
+ this.ctx.id // DurableObjectId of this instance
64
+ this.ctx.abort() // Force eviction (use after PITR restore to reload state)
65
+ ```
66
+
67
+ ### Storage Access
68
+
69
+ ```typescript
70
+ this.ctx.storage.sql // SQLite API (recommended)
71
+ this.ctx.storage.kv // Sync KV API (SQLite DOs only)
72
+ this.ctx.storage // Async KV API (legacy/KV-only DOs)
73
+ ```
74
+
75
+ See **[DO Storage](../do-storage/README.md)** for complete storage API reference.
76
+
77
+ ### WebSocket Management
78
+
79
+ ```typescript
80
+ this.ctx.acceptWebSocket(ws: WebSocket, tags?: string[]) // Enable hibernation
81
+ this.ctx.getWebSockets(tag?: string): WebSocket[] // Get by tag or all
82
+ this.ctx.getTags(ws: WebSocket): string[] // Get tags for connection
83
+ ```
84
+
85
+ ### Alarms
86
+
87
+ ```typescript
88
+ await this.ctx.storage.setAlarm(timestamp: number | Date) // Schedule (overwrites existing)
89
+ await this.ctx.storage.getAlarm(): number | null // Get next alarm time
90
+ await this.ctx.storage.deleteAlarm(): void // Cancel alarm
91
+ ```
92
+
93
+ **Limit:** 1 alarm per DO. Use queue pattern for multiple events (see [Patterns](./patterns.md)).
94
+
95
+ ## Storage APIs
96
+
97
+ For detailed storage documentation including SQLite queries, KV operations, transactions, and Point-in-Time Recovery, see **[DO Storage](../do-storage/README.md)**.
98
+
99
+ Quick reference:
100
+
101
+ ```typescript
102
+ // SQLite (recommended)
103
+ this.ctx.storage.sql.exec('SELECT * FROM users WHERE id = ?', userId).one()
104
+
105
+ // Sync KV (SQLite DOs only)
106
+ this.ctx.storage.kv.get('key')
107
+
108
+ // Async KV (legacy)
109
+ await this.ctx.storage.get('key')
110
+ ```
111
+
112
+ ## Alarms
113
+
114
+ Schedule future work that survives eviction:
115
+
116
+ ```typescript
117
+ // Set alarm (overwrites any existing alarm)
118
+ await this.ctx.storage.setAlarm(Date.now() + 3600000) // 1 hour from now
119
+ await this.ctx.storage.setAlarm(new Date("2026-02-01")) // Absolute time
120
+
121
+ // Check next alarm
122
+ const nextRun = await this.ctx.storage.getAlarm() // null if none
123
+
124
+ // Cancel alarm
125
+ await this.ctx.storage.deleteAlarm()
126
+
127
+ // Handler called when alarm fires
128
+ async alarm() {
129
+ // Runs once alarm triggers
130
+ // DO wakes from hibernation if needed
131
+ // Use for cleanup, notifications, scheduled tasks
132
+ }
133
+ ```
134
+
135
+ **Limitations:**
136
+
137
+ - 1 alarm per DO maximum
138
+ - Overwrites previous alarm when set
139
+ - Use queue pattern for multiple scheduled events (see [Patterns](./patterns.md))
140
+
141
+ **Reliability:**
142
+
143
+ - Alarms survive DO eviction/restart
144
+ - Cloudflare retries failed alarms automatically
145
+ - Not guaranteed exactly-once (handle idempotently)
146
+
147
+ ## WebSocket Hibernation
148
+
149
+ Hibernation allows DOs with open WebSocket connections to consume zero compute/memory until message arrives.
150
+
151
+ ```typescript
152
+ async fetch(req: Request): Promise<Response> {
153
+ const [client, server] = Object.values(new WebSocketPair());
154
+ this.ctx.acceptWebSocket(server, ["room:123"]); // Tags for filtering
155
+ server.serializeAttachment({ userId: "abc" }); // Persisted metadata
156
+ return new Response(null, { status: 101, webSocket: client });
157
+ }
158
+
159
+ // Called when message arrives (DO wakes from hibernation)
160
+ async webSocketMessage(ws: WebSocket, msg: string | ArrayBuffer) {
161
+ const data = ws.deserializeAttachment(); // Retrieve metadata
162
+ for (const c of this.ctx.getWebSockets("room:123")) c.send(msg);
163
+ }
164
+
165
+ // Called on close (optional handler)
166
+ async webSocketClose(ws: WebSocket, code: number, reason: string, wasClean: boolean) {
167
+ // Cleanup logic, remove from lists, etc.
168
+ }
169
+
170
+ // Called on error (optional handler)
171
+ async webSocketError(ws: WebSocket, error: unknown) {
172
+ console.error("WebSocket error:", error);
173
+ // Handle error, close connection, etc.
174
+ }
175
+ ```
176
+
177
+ **Key concepts:**
178
+
179
+ - **Auto-hibernation:** DO hibernates when no active requests/alarms
180
+ - **Zero cost:** Hibernated DOs incur no charges while preserving connections
181
+ - **Memory cleared:** All in-memory state lost on hibernation
182
+ - **Attachment persistence:** Use `serializeAttachment()` for per-connection metadata that survives hibernation
183
+ - **Tags for filtering:** Group connections by room/channel/user for targeted broadcasts
184
+
185
+ **Handler lifecycle:**
186
+
187
+ - `webSocketMessage`: DO wakes, processes message, may hibernate after
188
+ - `webSocketClose`: Called when client closes (optional - implement for cleanup)
189
+ - `webSocketError`: Called on connection error (optional - implement for error handling)
190
+
191
+ **Metadata persistence:**
192
+
193
+ ```typescript
194
+ // Store connection metadata (survives hibernation)
195
+ ws.serializeAttachment({ userId: 'abc', room: 'lobby' })
196
+
197
+ // Retrieve after hibernation
198
+ const { userId, room } = ws.deserializeAttachment()
199
+ ```
200
+
201
+ ## See Also
202
+
203
+ - **[DO Storage](../do-storage/README.md)** - Complete storage API reference
204
+ - **[Patterns](./patterns.md)** - Real-world usage patterns
205
+ - **[Gotchas](./gotchas.md)** - Hibernation caveats and limits
@@ -0,0 +1,160 @@
1
+ # Durable Objects Configuration
2
+
3
+ ## Basic Setup
4
+
5
+ ```jsonc
6
+ {
7
+ "name": "my-worker",
8
+ "main": "src/index.ts",
9
+ "compatibility_date": "2025-01-01", // Use latest; ≥2024-04-03 for RPC
10
+ "durable_objects": {
11
+ "bindings": [
12
+ {
13
+ "name": "MY_DO", // Env binding name
14
+ "class_name": "MyDO", // Class exported from this worker
15
+ },
16
+ {
17
+ "name": "EXTERNAL", // Access DO from another worker
18
+ "class_name": "ExternalDO",
19
+ "script_name": "other-worker",
20
+ },
21
+ ],
22
+ },
23
+ "migrations": [
24
+ { "tag": "v1", "new_sqlite_classes": ["MyDO"] }, // Prefer SQLite
25
+ ],
26
+ }
27
+ ```
28
+
29
+ ## Binding Options
30
+
31
+ ```jsonc
32
+ {
33
+ "name": "BINDING_NAME",
34
+ "class_name": "ClassName",
35
+ "script_name": "other-worker", // Optional: external DO
36
+ "environment": "production", // Optional: isolate by env
37
+ }
38
+ ```
39
+
40
+ ## Jurisdiction (Data Locality)
41
+
42
+ Specify jurisdiction at ID creation for data residency compliance:
43
+
44
+ ```typescript
45
+ // EU data residency
46
+ const id = env.MY_DO.idFromName('user:123', { jurisdiction: 'eu' })
47
+
48
+ // Available jurisdictions
49
+ const jurisdictions = ['eu', 'fedramp'] // More may be added
50
+
51
+ // All operations on this DO stay within jurisdiction
52
+ const stub = env.MY_DO.get(id)
53
+ await stub.someMethod() // Data stays in EU
54
+ ```
55
+
56
+ **Key points:**
57
+
58
+ - Set at ID creation time, immutable afterward
59
+ - DO instance physically located within jurisdiction
60
+ - Storage and compute guaranteed within boundary
61
+ - Use for GDPR, FedRAMP, other compliance requirements
62
+ - No cross-jurisdiction access (requests fail if DO in different jurisdiction)
63
+
64
+ ## Migrations
65
+
66
+ ```jsonc
67
+ {
68
+ "migrations": [
69
+ { "tag": "v1", "new_sqlite_classes": ["MyDO"] }, // Create SQLite (recommended)
70
+ // { "tag": "v1", "new_classes": ["MyDO"] }, // Create KV (paid only)
71
+ { "tag": "v2", "renamed_classes": [{ "from": "Old", "to": "New" }] },
72
+ { "tag": "v3", "transferred_classes": [{ "from": "Src", "from_script": "old", "to": "Dest" }] },
73
+ { "tag": "v4", "deleted_classes": ["Obsolete"] }, // Destroys ALL data!
74
+ ],
75
+ }
76
+ ```
77
+
78
+ **Migration rules:**
79
+
80
+ - Tags must be unique and sequential (v1, v2, v3...)
81
+ - No rollback supported (test with `--dry-run` first)
82
+ - Auto-applied on deploy
83
+ - `new_sqlite_classes` recommended over `new_classes` (SQLite vs KV)
84
+ - `deleted_classes` immediately destroys ALL data (irreversible)
85
+
86
+ ## Environment Isolation
87
+
88
+ Separate DO namespaces per environment (staging/production have distinct object instances):
89
+
90
+ ```jsonc
91
+ {
92
+ "durable_objects": {
93
+ "bindings": [{ "name": "MY_DO", "class_name": "MyDO" }],
94
+ },
95
+ "env": {
96
+ "production": {
97
+ "durable_objects": {
98
+ "bindings": [{ "name": "MY_DO", "class_name": "MyDO", "environment": "production" }],
99
+ },
100
+ },
101
+ },
102
+ }
103
+ ```
104
+
105
+ Deploy: `npx wrangler deploy --env production`
106
+
107
+ ## Limits & Settings
108
+
109
+ ```jsonc
110
+ {
111
+ "limits": {
112
+ "cpu_ms": 300000, // Max CPU time: 30s default, 300s max
113
+ },
114
+ }
115
+ ```
116
+
117
+ See [Gotchas](./gotchas.md) for complete limits table.
118
+
119
+ ## Types
120
+
121
+ ```typescript
122
+ import { DurableObject } from 'cloudflare:workers'
123
+
124
+ interface Env {
125
+ MY_DO: DurableObjectNamespace<MyDO>
126
+ }
127
+
128
+ export class MyDO extends DurableObject<Env> {}
129
+
130
+ type DurableObjectNamespace<T> = {
131
+ newUniqueId(options?: { jurisdiction?: string }): DurableObjectId
132
+ idFromName(name: string): DurableObjectId
133
+ idFromString(id: string): DurableObjectId
134
+ get(id: DurableObjectId): DurableObjectStub<T>
135
+ }
136
+ ```
137
+
138
+ ## Commands
139
+
140
+ ```bash
141
+ # Development
142
+ npx wrangler dev # Local dev
143
+ npx wrangler dev --remote # Test against production DOs
144
+
145
+ # Deployment
146
+ npx wrangler deploy # Deploy + auto-apply migrations
147
+ npx wrangler deploy --dry-run # Validate migrations without deploying
148
+ npx wrangler deploy --env production
149
+
150
+ # Management
151
+ npx wrangler durable-objects list # List namespaces
152
+ npx wrangler durable-objects info <namespace> <id> # Inspect specific DO
153
+ npx wrangler durable-objects delete <namespace> <id> # Delete DO (destroys data)
154
+ ```
155
+
156
+ ## See Also
157
+
158
+ - **[API](./api.md)** - DurableObjectState and lifecycle handlers
159
+ - **[Patterns](./patterns.md)** - Multi-environment patterns
160
+ - **[Gotchas](./gotchas.md)** - Migration caveats, limits