pi-cloudflare 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (410) hide show
  1. package/LICENSE +674 -0
  2. package/README.md +67 -0
  3. package/bin/setup.mjs +103 -0
  4. package/dist/auth-flow.d.ts +15 -0
  5. package/dist/auth-flow.d.ts.map +1 -0
  6. package/dist/auth-flow.js +90 -0
  7. package/dist/auth-flow.js.map +1 -0
  8. package/dist/client.d.ts +18 -0
  9. package/dist/client.d.ts.map +1 -0
  10. package/dist/client.js +47 -0
  11. package/dist/client.js.map +1 -0
  12. package/dist/config.d.ts +13 -0
  13. package/dist/config.d.ts.map +1 -0
  14. package/dist/config.js +10 -0
  15. package/dist/config.js.map +1 -0
  16. package/dist/index.d.ts +24 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +109 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/oauth.d.ts +44 -0
  21. package/dist/oauth.d.ts.map +1 -0
  22. package/dist/oauth.js +135 -0
  23. package/dist/oauth.js.map +1 -0
  24. package/dist/proxy.d.ts +29 -0
  25. package/dist/proxy.d.ts.map +1 -0
  26. package/dist/proxy.js +39 -0
  27. package/dist/proxy.js.map +1 -0
  28. package/dist/servers.d.ts +19 -0
  29. package/dist/servers.d.ts.map +1 -0
  30. package/dist/servers.js +40 -0
  31. package/dist/servers.js.map +1 -0
  32. package/dist/token-store.d.ts +23 -0
  33. package/dist/token-store.d.ts.map +1 -0
  34. package/dist/token-store.js +47 -0
  35. package/dist/token-store.js.map +1 -0
  36. package/package.json +67 -0
  37. package/skills/agents-sdk/SKILL.md +221 -0
  38. package/skills/agents-sdk/references/browse-the-web.md +63 -0
  39. package/skills/agents-sdk/references/callable.md +92 -0
  40. package/skills/agents-sdk/references/client-sdk.md +110 -0
  41. package/skills/agents-sdk/references/codemode.md +110 -0
  42. package/skills/agents-sdk/references/configuration.md +72 -0
  43. package/skills/agents-sdk/references/durable-execution.md +51 -0
  44. package/skills/agents-sdk/references/email.md +146 -0
  45. package/skills/agents-sdk/references/human-in-the-loop.md +67 -0
  46. package/skills/agents-sdk/references/mcp.md +188 -0
  47. package/skills/agents-sdk/references/observability.md +44 -0
  48. package/skills/agents-sdk/references/queue-retries.md +79 -0
  49. package/skills/agents-sdk/references/routing.md +75 -0
  50. package/skills/agents-sdk/references/server-driven-messages.md +63 -0
  51. package/skills/agents-sdk/references/state-scheduling.md +171 -0
  52. package/skills/agents-sdk/references/streaming-chat.md +198 -0
  53. package/skills/agents-sdk/references/think.md +112 -0
  54. package/skills/agents-sdk/references/voice.md +68 -0
  55. package/skills/agents-sdk/references/webhooks-push.md +86 -0
  56. package/skills/agents-sdk/references/workflows.md +132 -0
  57. package/skills/cloudflare/SKILL.md +248 -0
  58. package/skills/cloudflare/references/agents-sdk/README.md +89 -0
  59. package/skills/cloudflare/references/agents-sdk/api.md +190 -0
  60. package/skills/cloudflare/references/agents-sdk/configuration.md +182 -0
  61. package/skills/cloudflare/references/agents-sdk/gotchas.md +158 -0
  62. package/skills/cloudflare/references/agents-sdk/patterns.md +192 -0
  63. package/skills/cloudflare/references/ai-gateway/README.md +175 -0
  64. package/skills/cloudflare/references/ai-gateway/configuration.md +111 -0
  65. package/skills/cloudflare/references/ai-gateway/dynamic-routing.md +82 -0
  66. package/skills/cloudflare/references/ai-gateway/features.md +96 -0
  67. package/skills/cloudflare/references/ai-gateway/sdk-integration.md +114 -0
  68. package/skills/cloudflare/references/ai-gateway/troubleshooting.md +88 -0
  69. package/skills/cloudflare/references/ai-search/README.md +138 -0
  70. package/skills/cloudflare/references/ai-search/api.md +87 -0
  71. package/skills/cloudflare/references/ai-search/configuration.md +88 -0
  72. package/skills/cloudflare/references/ai-search/gotchas.md +81 -0
  73. package/skills/cloudflare/references/ai-search/patterns.md +85 -0
  74. package/skills/cloudflare/references/analytics-engine/README.md +94 -0
  75. package/skills/cloudflare/references/analytics-engine/api.md +112 -0
  76. package/skills/cloudflare/references/analytics-engine/configuration.md +112 -0
  77. package/skills/cloudflare/references/analytics-engine/gotchas.md +85 -0
  78. package/skills/cloudflare/references/analytics-engine/patterns.md +83 -0
  79. package/skills/cloudflare/references/api/README.md +66 -0
  80. package/skills/cloudflare/references/api/api.md +204 -0
  81. package/skills/cloudflare/references/api/configuration.md +160 -0
  82. package/skills/cloudflare/references/api/gotchas.md +225 -0
  83. package/skills/cloudflare/references/api/patterns.md +204 -0
  84. package/skills/cloudflare/references/api-shield/README.md +44 -0
  85. package/skills/cloudflare/references/api-shield/api.md +141 -0
  86. package/skills/cloudflare/references/api-shield/configuration.md +192 -0
  87. package/skills/cloudflare/references/api-shield/gotchas.md +125 -0
  88. package/skills/cloudflare/references/api-shield/patterns.md +180 -0
  89. package/skills/cloudflare/references/argo-smart-routing/README.md +90 -0
  90. package/skills/cloudflare/references/argo-smart-routing/api.md +240 -0
  91. package/skills/cloudflare/references/argo-smart-routing/configuration.md +197 -0
  92. package/skills/cloudflare/references/argo-smart-routing/gotchas.md +111 -0
  93. package/skills/cloudflare/references/argo-smart-routing/patterns.md +104 -0
  94. package/skills/cloudflare/references/artifacts/README.md +79 -0
  95. package/skills/cloudflare/references/artifacts/api.md +128 -0
  96. package/skills/cloudflare/references/artifacts/configuration.md +92 -0
  97. package/skills/cloudflare/references/bindings/README.md +122 -0
  98. package/skills/cloudflare/references/bindings/api.md +203 -0
  99. package/skills/cloudflare/references/bindings/configuration.md +188 -0
  100. package/skills/cloudflare/references/bindings/gotchas.md +208 -0
  101. package/skills/cloudflare/references/bindings/patterns.md +200 -0
  102. package/skills/cloudflare/references/bot-management/README.md +94 -0
  103. package/skills/cloudflare/references/bot-management/api.md +169 -0
  104. package/skills/cloudflare/references/bot-management/configuration.md +163 -0
  105. package/skills/cloudflare/references/bot-management/gotchas.md +114 -0
  106. package/skills/cloudflare/references/bot-management/patterns.md +182 -0
  107. package/skills/cloudflare/references/browser-rendering/README.md +78 -0
  108. package/skills/cloudflare/references/browser-rendering/api.md +108 -0
  109. package/skills/cloudflare/references/browser-rendering/configuration.md +78 -0
  110. package/skills/cloudflare/references/browser-rendering/gotchas.md +88 -0
  111. package/skills/cloudflare/references/browser-rendering/patterns.md +91 -0
  112. package/skills/cloudflare/references/c3/README.md +111 -0
  113. package/skills/cloudflare/references/c3/api.md +71 -0
  114. package/skills/cloudflare/references/c3/configuration.md +81 -0
  115. package/skills/cloudflare/references/c3/gotchas.md +92 -0
  116. package/skills/cloudflare/references/c3/patterns.md +82 -0
  117. package/skills/cloudflare/references/cache-reserve/README.md +147 -0
  118. package/skills/cloudflare/references/cache-reserve/api.md +194 -0
  119. package/skills/cloudflare/references/cache-reserve/configuration.md +169 -0
  120. package/skills/cloudflare/references/cache-reserve/gotchas.md +132 -0
  121. package/skills/cloudflare/references/cache-reserve/patterns.md +197 -0
  122. package/skills/cloudflare/references/containers/README.md +85 -0
  123. package/skills/cloudflare/references/containers/api.md +187 -0
  124. package/skills/cloudflare/references/containers/configuration.md +188 -0
  125. package/skills/cloudflare/references/containers/gotchas.md +178 -0
  126. package/skills/cloudflare/references/containers/patterns.md +202 -0
  127. package/skills/cloudflare/references/cron-triggers/README.md +99 -0
  128. package/skills/cloudflare/references/cron-triggers/api.md +196 -0
  129. package/skills/cloudflare/references/cron-triggers/configuration.md +180 -0
  130. package/skills/cloudflare/references/cron-triggers/gotchas.md +199 -0
  131. package/skills/cloudflare/references/cron-triggers/patterns.md +190 -0
  132. package/skills/cloudflare/references/d1/README.md +133 -0
  133. package/skills/cloudflare/references/d1/api.md +196 -0
  134. package/skills/cloudflare/references/d1/configuration.md +191 -0
  135. package/skills/cloudflare/references/d1/gotchas.md +98 -0
  136. package/skills/cloudflare/references/d1/patterns.md +189 -0
  137. package/skills/cloudflare/references/ddos/README.md +41 -0
  138. package/skills/cloudflare/references/ddos/api.md +164 -0
  139. package/skills/cloudflare/references/ddos/configuration.md +93 -0
  140. package/skills/cloudflare/references/ddos/gotchas.md +107 -0
  141. package/skills/cloudflare/references/ddos/patterns.md +174 -0
  142. package/skills/cloudflare/references/do-storage/README.md +75 -0
  143. package/skills/cloudflare/references/do-storage/api.md +102 -0
  144. package/skills/cloudflare/references/do-storage/configuration.md +112 -0
  145. package/skills/cloudflare/references/do-storage/gotchas.md +150 -0
  146. package/skills/cloudflare/references/do-storage/patterns.md +194 -0
  147. package/skills/cloudflare/references/do-storage/testing.md +183 -0
  148. package/skills/cloudflare/references/durable-objects/README.md +185 -0
  149. package/skills/cloudflare/references/durable-objects/api.md +187 -0
  150. package/skills/cloudflare/references/durable-objects/configuration.md +160 -0
  151. package/skills/cloudflare/references/durable-objects/gotchas.md +197 -0
  152. package/skills/cloudflare/references/durable-objects/patterns.md +201 -0
  153. package/skills/cloudflare/references/email-routing/README.md +89 -0
  154. package/skills/cloudflare/references/email-routing/api.md +195 -0
  155. package/skills/cloudflare/references/email-routing/configuration.md +186 -0
  156. package/skills/cloudflare/references/email-routing/gotchas.md +196 -0
  157. package/skills/cloudflare/references/email-routing/patterns.md +229 -0
  158. package/skills/cloudflare/references/email-workers/README.md +151 -0
  159. package/skills/cloudflare/references/email-workers/api.md +237 -0
  160. package/skills/cloudflare/references/email-workers/configuration.md +112 -0
  161. package/skills/cloudflare/references/email-workers/gotchas.md +125 -0
  162. package/skills/cloudflare/references/email-workers/patterns.md +102 -0
  163. package/skills/cloudflare/references/flagship/README.md +59 -0
  164. package/skills/cloudflare/references/flagship/api.md +390 -0
  165. package/skills/cloudflare/references/flagship/configuration.md +202 -0
  166. package/skills/cloudflare/references/flagship/gotchas.md +178 -0
  167. package/skills/cloudflare/references/flagship/patterns.md +469 -0
  168. package/skills/cloudflare/references/graphql-api/README.md +147 -0
  169. package/skills/cloudflare/references/graphql-api/api.md +175 -0
  170. package/skills/cloudflare/references/graphql-api/configuration.md +118 -0
  171. package/skills/cloudflare/references/graphql-api/gotchas.md +110 -0
  172. package/skills/cloudflare/references/graphql-api/patterns.md +225 -0
  173. package/skills/cloudflare/references/hyperdrive/README.md +82 -0
  174. package/skills/cloudflare/references/hyperdrive/api.md +143 -0
  175. package/skills/cloudflare/references/hyperdrive/configuration.md +159 -0
  176. package/skills/cloudflare/references/hyperdrive/gotchas.md +77 -0
  177. package/skills/cloudflare/references/hyperdrive/patterns.md +190 -0
  178. package/skills/cloudflare/references/images/README.md +61 -0
  179. package/skills/cloudflare/references/images/api.md +96 -0
  180. package/skills/cloudflare/references/images/configuration.md +211 -0
  181. package/skills/cloudflare/references/images/gotchas.md +99 -0
  182. package/skills/cloudflare/references/images/patterns.md +115 -0
  183. package/skills/cloudflare/references/kv/README.md +89 -0
  184. package/skills/cloudflare/references/kv/api.md +160 -0
  185. package/skills/cloudflare/references/kv/configuration.md +144 -0
  186. package/skills/cloudflare/references/kv/gotchas.md +131 -0
  187. package/skills/cloudflare/references/kv/patterns.md +196 -0
  188. package/skills/cloudflare/references/miniflare/README.md +105 -0
  189. package/skills/cloudflare/references/miniflare/api.md +187 -0
  190. package/skills/cloudflare/references/miniflare/configuration.md +173 -0
  191. package/skills/cloudflare/references/miniflare/gotchas.md +160 -0
  192. package/skills/cloudflare/references/miniflare/patterns.md +181 -0
  193. package/skills/cloudflare/references/network-interconnect/README.md +99 -0
  194. package/skills/cloudflare/references/network-interconnect/api.md +199 -0
  195. package/skills/cloudflare/references/network-interconnect/configuration.md +114 -0
  196. package/skills/cloudflare/references/network-interconnect/gotchas.md +165 -0
  197. package/skills/cloudflare/references/network-interconnect/patterns.md +166 -0
  198. package/skills/cloudflare/references/observability/README.md +88 -0
  199. package/skills/cloudflare/references/observability/api.md +164 -0
  200. package/skills/cloudflare/references/observability/configuration.md +169 -0
  201. package/skills/cloudflare/references/observability/gotchas.md +115 -0
  202. package/skills/cloudflare/references/observability/patterns.md +105 -0
  203. package/skills/cloudflare/references/pages/README.md +88 -0
  204. package/skills/cloudflare/references/pages/api.md +204 -0
  205. package/skills/cloudflare/references/pages/configuration.md +201 -0
  206. package/skills/cloudflare/references/pages/gotchas.md +203 -0
  207. package/skills/cloudflare/references/pages/patterns.md +204 -0
  208. package/skills/cloudflare/references/pages-functions/README.md +98 -0
  209. package/skills/cloudflare/references/pages-functions/api.md +143 -0
  210. package/skills/cloudflare/references/pages-functions/configuration.md +122 -0
  211. package/skills/cloudflare/references/pages-functions/gotchas.md +94 -0
  212. package/skills/cloudflare/references/pages-functions/patterns.md +137 -0
  213. package/skills/cloudflare/references/pipelines/README.md +90 -0
  214. package/skills/cloudflare/references/pipelines/api.md +124 -0
  215. package/skills/cloudflare/references/pipelines/configuration.md +155 -0
  216. package/skills/cloudflare/references/pipelines/gotchas.md +58 -0
  217. package/skills/cloudflare/references/pipelines/patterns.md +130 -0
  218. package/skills/cloudflare/references/pulumi/README.md +100 -0
  219. package/skills/cloudflare/references/pulumi/api.md +200 -0
  220. package/skills/cloudflare/references/pulumi/configuration.md +198 -0
  221. package/skills/cloudflare/references/pulumi/gotchas.md +181 -0
  222. package/skills/cloudflare/references/pulumi/patterns.md +191 -0
  223. package/skills/cloudflare/references/queues/README.md +96 -0
  224. package/skills/cloudflare/references/queues/api.md +206 -0
  225. package/skills/cloudflare/references/queues/configuration.md +144 -0
  226. package/skills/cloudflare/references/queues/gotchas.md +206 -0
  227. package/skills/cloudflare/references/queues/patterns.md +220 -0
  228. package/skills/cloudflare/references/r2/README.md +95 -0
  229. package/skills/cloudflare/references/r2/api.md +200 -0
  230. package/skills/cloudflare/references/r2/configuration.md +165 -0
  231. package/skills/cloudflare/references/r2/gotchas.md +190 -0
  232. package/skills/cloudflare/references/r2/patterns.md +193 -0
  233. package/skills/cloudflare/references/r2-data-catalog/README.md +75 -0
  234. package/skills/cloudflare/references/r2-data-catalog/api.md +122 -0
  235. package/skills/cloudflare/references/r2-data-catalog/configuration.md +98 -0
  236. package/skills/cloudflare/references/r2-data-catalog/gotchas.md +55 -0
  237. package/skills/cloudflare/references/r2-data-catalog/patterns.md +122 -0
  238. package/skills/cloudflare/references/r2-sql/README.md +64 -0
  239. package/skills/cloudflare/references/r2-sql/api.md +121 -0
  240. package/skills/cloudflare/references/r2-sql/configuration.md +50 -0
  241. package/skills/cloudflare/references/r2-sql/gotchas.md +39 -0
  242. package/skills/cloudflare/references/r2-sql/patterns.md +118 -0
  243. package/skills/cloudflare/references/realtime-sfu/README.md +65 -0
  244. package/skills/cloudflare/references/realtime-sfu/api.md +158 -0
  245. package/skills/cloudflare/references/realtime-sfu/configuration.md +137 -0
  246. package/skills/cloudflare/references/realtime-sfu/gotchas.md +133 -0
  247. package/skills/cloudflare/references/realtime-sfu/patterns.md +174 -0
  248. package/skills/cloudflare/references/realtimekit/README.md +113 -0
  249. package/skills/cloudflare/references/realtimekit/api.md +212 -0
  250. package/skills/cloudflare/references/realtimekit/configuration.md +203 -0
  251. package/skills/cloudflare/references/realtimekit/gotchas.md +169 -0
  252. package/skills/cloudflare/references/realtimekit/patterns.md +223 -0
  253. package/skills/cloudflare/references/sandbox/README.md +96 -0
  254. package/skills/cloudflare/references/sandbox/api.md +198 -0
  255. package/skills/cloudflare/references/sandbox/configuration.md +143 -0
  256. package/skills/cloudflare/references/sandbox/gotchas.md +194 -0
  257. package/skills/cloudflare/references/sandbox/patterns.md +201 -0
  258. package/skills/cloudflare/references/secrets-store/README.md +74 -0
  259. package/skills/cloudflare/references/secrets-store/api.md +200 -0
  260. package/skills/cloudflare/references/secrets-store/configuration.md +185 -0
  261. package/skills/cloudflare/references/secrets-store/gotchas.md +97 -0
  262. package/skills/cloudflare/references/secrets-store/patterns.md +207 -0
  263. package/skills/cloudflare/references/smart-placement/README.md +138 -0
  264. package/skills/cloudflare/references/smart-placement/api.md +183 -0
  265. package/skills/cloudflare/references/smart-placement/configuration.md +196 -0
  266. package/skills/cloudflare/references/smart-placement/gotchas.md +174 -0
  267. package/skills/cloudflare/references/smart-placement/patterns.md +183 -0
  268. package/skills/cloudflare/references/snippets/README.md +68 -0
  269. package/skills/cloudflare/references/snippets/api.md +198 -0
  270. package/skills/cloudflare/references/snippets/configuration.md +227 -0
  271. package/skills/cloudflare/references/snippets/gotchas.md +86 -0
  272. package/skills/cloudflare/references/snippets/patterns.md +135 -0
  273. package/skills/cloudflare/references/spectrum/README.md +52 -0
  274. package/skills/cloudflare/references/spectrum/api.md +181 -0
  275. package/skills/cloudflare/references/spectrum/configuration.md +194 -0
  276. package/skills/cloudflare/references/spectrum/gotchas.md +145 -0
  277. package/skills/cloudflare/references/spectrum/patterns.md +196 -0
  278. package/skills/cloudflare/references/static-assets/README.md +65 -0
  279. package/skills/cloudflare/references/static-assets/api.md +199 -0
  280. package/skills/cloudflare/references/static-assets/configuration.md +186 -0
  281. package/skills/cloudflare/references/static-assets/gotchas.md +162 -0
  282. package/skills/cloudflare/references/static-assets/patterns.md +189 -0
  283. package/skills/cloudflare/references/stream/README.md +114 -0
  284. package/skills/cloudflare/references/stream/api-live.md +195 -0
  285. package/skills/cloudflare/references/stream/api.md +199 -0
  286. package/skills/cloudflare/references/stream/configuration.md +141 -0
  287. package/skills/cloudflare/references/stream/gotchas.md +130 -0
  288. package/skills/cloudflare/references/stream/patterns.md +184 -0
  289. package/skills/cloudflare/references/tail-workers/README.md +89 -0
  290. package/skills/cloudflare/references/tail-workers/api.md +200 -0
  291. package/skills/cloudflare/references/tail-workers/configuration.md +176 -0
  292. package/skills/cloudflare/references/tail-workers/gotchas.md +192 -0
  293. package/skills/cloudflare/references/tail-workers/patterns.md +180 -0
  294. package/skills/cloudflare/references/terraform/README.md +102 -0
  295. package/skills/cloudflare/references/terraform/api.md +178 -0
  296. package/skills/cloudflare/references/terraform/configuration.md +197 -0
  297. package/skills/cloudflare/references/terraform/gotchas.md +150 -0
  298. package/skills/cloudflare/references/terraform/patterns.md +174 -0
  299. package/skills/cloudflare/references/tunnel/README.md +129 -0
  300. package/skills/cloudflare/references/tunnel/api.md +193 -0
  301. package/skills/cloudflare/references/tunnel/configuration.md +157 -0
  302. package/skills/cloudflare/references/tunnel/gotchas.md +147 -0
  303. package/skills/cloudflare/references/tunnel/networking.md +168 -0
  304. package/skills/cloudflare/references/tunnel/patterns.md +192 -0
  305. package/skills/cloudflare/references/turn/README.md +82 -0
  306. package/skills/cloudflare/references/turn/api.md +239 -0
  307. package/skills/cloudflare/references/turn/configuration.md +179 -0
  308. package/skills/cloudflare/references/turn/gotchas.md +231 -0
  309. package/skills/cloudflare/references/turn/patterns.md +213 -0
  310. package/skills/cloudflare/references/turnstile/README.md +99 -0
  311. package/skills/cloudflare/references/turnstile/api.md +240 -0
  312. package/skills/cloudflare/references/turnstile/configuration.md +222 -0
  313. package/skills/cloudflare/references/turnstile/gotchas.md +218 -0
  314. package/skills/cloudflare/references/turnstile/patterns.md +193 -0
  315. package/skills/cloudflare/references/vectorize/README.md +133 -0
  316. package/skills/cloudflare/references/vectorize/api.md +88 -0
  317. package/skills/cloudflare/references/vectorize/configuration.md +88 -0
  318. package/skills/cloudflare/references/vectorize/gotchas.md +76 -0
  319. package/skills/cloudflare/references/vectorize/patterns.md +90 -0
  320. package/skills/cloudflare/references/waf/README.md +113 -0
  321. package/skills/cloudflare/references/waf/api.md +202 -0
  322. package/skills/cloudflare/references/waf/configuration.md +203 -0
  323. package/skills/cloudflare/references/waf/gotchas.md +204 -0
  324. package/skills/cloudflare/references/waf/patterns.md +197 -0
  325. package/skills/cloudflare/references/web-analytics/README.md +141 -0
  326. package/skills/cloudflare/references/web-analytics/configuration.md +76 -0
  327. package/skills/cloudflare/references/web-analytics/gotchas.md +82 -0
  328. package/skills/cloudflare/references/web-analytics/integration.md +60 -0
  329. package/skills/cloudflare/references/web-analytics/patterns.md +91 -0
  330. package/skills/cloudflare/references/workerd/README.md +78 -0
  331. package/skills/cloudflare/references/workerd/api.md +185 -0
  332. package/skills/cloudflare/references/workerd/configuration.md +183 -0
  333. package/skills/cloudflare/references/workerd/gotchas.md +139 -0
  334. package/skills/cloudflare/references/workerd/patterns.md +192 -0
  335. package/skills/cloudflare/references/workers/README.md +108 -0
  336. package/skills/cloudflare/references/workers/api.md +195 -0
  337. package/skills/cloudflare/references/workers/configuration.md +185 -0
  338. package/skills/cloudflare/references/workers/frameworks.md +197 -0
  339. package/skills/cloudflare/references/workers/gotchas.md +137 -0
  340. package/skills/cloudflare/references/workers/patterns.md +198 -0
  341. package/skills/cloudflare/references/workers-ai/README.md +197 -0
  342. package/skills/cloudflare/references/workers-ai/api.md +112 -0
  343. package/skills/cloudflare/references/workers-ai/configuration.md +97 -0
  344. package/skills/cloudflare/references/workers-ai/gotchas.md +114 -0
  345. package/skills/cloudflare/references/workers-ai/patterns.md +120 -0
  346. package/skills/cloudflare/references/workers-for-platforms/README.md +89 -0
  347. package/skills/cloudflare/references/workers-for-platforms/api.md +196 -0
  348. package/skills/cloudflare/references/workers-for-platforms/configuration.md +167 -0
  349. package/skills/cloudflare/references/workers-for-platforms/gotchas.md +134 -0
  350. package/skills/cloudflare/references/workers-for-platforms/patterns.md +188 -0
  351. package/skills/cloudflare/references/workers-playground/README.md +127 -0
  352. package/skills/cloudflare/references/workers-playground/api.md +101 -0
  353. package/skills/cloudflare/references/workers-playground/configuration.md +163 -0
  354. package/skills/cloudflare/references/workers-playground/gotchas.md +88 -0
  355. package/skills/cloudflare/references/workers-playground/patterns.md +132 -0
  356. package/skills/cloudflare/references/workers-vpc/README.md +127 -0
  357. package/skills/cloudflare/references/workers-vpc/api.md +202 -0
  358. package/skills/cloudflare/references/workers-vpc/configuration.md +147 -0
  359. package/skills/cloudflare/references/workers-vpc/gotchas.md +167 -0
  360. package/skills/cloudflare/references/workers-vpc/patterns.md +209 -0
  361. package/skills/cloudflare/references/workflows/README.md +77 -0
  362. package/skills/cloudflare/references/workflows/api.md +218 -0
  363. package/skills/cloudflare/references/workflows/configuration.md +152 -0
  364. package/skills/cloudflare/references/workflows/gotchas.md +90 -0
  365. package/skills/cloudflare/references/workflows/patterns.md +175 -0
  366. package/skills/cloudflare/references/wrangler/README.md +135 -0
  367. package/skills/cloudflare/references/wrangler/api.md +188 -0
  368. package/skills/cloudflare/references/wrangler/configuration.md +197 -0
  369. package/skills/cloudflare/references/wrangler/gotchas.md +197 -0
  370. package/skills/cloudflare/references/wrangler/patterns.md +209 -0
  371. package/skills/cloudflare/references/zaraz/IMPLEMENTATION_SUMMARY.md +121 -0
  372. package/skills/cloudflare/references/zaraz/README.md +111 -0
  373. package/skills/cloudflare/references/zaraz/api.md +112 -0
  374. package/skills/cloudflare/references/zaraz/configuration.md +90 -0
  375. package/skills/cloudflare/references/zaraz/gotchas.md +81 -0
  376. package/skills/cloudflare/references/zaraz/patterns.md +74 -0
  377. package/skills/cloudflare-email-service/SKILL.md +103 -0
  378. package/skills/cloudflare-email-service/references/cli-and-mcp.md +125 -0
  379. package/skills/cloudflare-email-service/references/deliverability.md +285 -0
  380. package/skills/cloudflare-email-service/references/rest-api.md +184 -0
  381. package/skills/cloudflare-email-service/references/routing.md +199 -0
  382. package/skills/cloudflare-email-service/references/sending.md +252 -0
  383. package/skills/cloudflare-one/SKILL.md +176 -0
  384. package/skills/cloudflare-one-migrations/SKILL.md +110 -0
  385. package/skills/durable-objects/SKILL.md +186 -0
  386. package/skills/durable-objects/references/rules.md +295 -0
  387. package/skills/durable-objects/references/testing.md +264 -0
  388. package/skills/durable-objects/references/workers.md +346 -0
  389. package/skills/sandbox-migrate-to-next/SKILL.md +185 -0
  390. package/skills/sandbox-next/SKILL.md +91 -0
  391. package/skills/sandbox-next/references/api-quick-ref.md +94 -0
  392. package/skills/sandbox-next/references/examples.md +15 -0
  393. package/skills/sandbox-stable/SKILL.md +110 -0
  394. package/skills/turnstile-spin/README.md +51 -0
  395. package/skills/turnstile-spin/SKILL.md +330 -0
  396. package/skills/turnstile-spin/references/astro.md +199 -0
  397. package/skills/turnstile-spin/references/hugo.md +114 -0
  398. package/skills/turnstile-spin/references/nextjs-app.md +261 -0
  399. package/skills/turnstile-spin/references/nextjs-pages.md +82 -0
  400. package/skills/turnstile-spin/references/sveltekit.md +191 -0
  401. package/skills/turnstile-spin/references/vanilla-html.md +157 -0
  402. package/skills/turnstile-spin/scripts/auth-probe.sh +285 -0
  403. package/skills/turnstile-spin/scripts/persist-skill.sh +114 -0
  404. package/skills/turnstile-spin/scripts/validate.sh +137 -0
  405. package/skills/turnstile-spin/scripts/widget-create.sh +121 -0
  406. package/skills/turnstile-spin/tests/validation.md +62 -0
  407. package/skills/workers-best-practices/SKILL.md +127 -0
  408. package/skills/workers-best-practices/references/review.md +174 -0
  409. package/skills/workers-best-practices/references/rules.md +467 -0
  410. package/skills/wrangler/SKILL.md +922 -0
@@ -0,0 +1,212 @@
1
+ # RealtimeKit API Reference
2
+
3
+ Complete API reference for Meeting object, REST endpoints, and SDK methods.
4
+
5
+ ## Meeting Object API
6
+
7
+ ### `meeting.self` - Local Participant
8
+
9
+ ```typescript
10
+ // Properties: id, userId, name, audioEnabled, videoEnabled, screenShareEnabled, audioTrack, videoTrack, screenShareTracks, roomJoined, roomState
11
+ // Methods
12
+ await meeting.self.enableAudio() / disableAudio() / enableVideo() / disableVideo() / enableScreenShare() / disableScreenShare()
13
+ await meeting.self.setName("Name") // Before join only
14
+ await meeting.self.setDevice(device)
15
+ const devices = await meeting.self.getAllDevices() / getAudioDevices() / getVideoDevices() / getSpeakerDevices()
16
+ // Events: 'roomJoined', 'audioUpdate', 'videoUpdate', 'screenShareUpdate', 'deviceUpdate', 'deviceListUpdate'
17
+ meeting.self.on('roomJoined', () => {})
18
+ meeting.self.on('audioUpdate', ({ audioEnabled, audioTrack }) => {})
19
+ ```
20
+
21
+ ### `meeting.participants` - Remote Participants
22
+
23
+ **Collections**:
24
+ ```typescript
25
+ meeting.participants.joined / active / waitlisted / pinned // Maps
26
+ const participants = meeting.participants.joined.toArray()
27
+ const count = meeting.participants.joined.size()
28
+ const p = meeting.participants.joined.get('peer-id')
29
+ ```
30
+
31
+ **Participant Properties**:
32
+ ```typescript
33
+ participant.id / userId / name
34
+ participant.audioEnabled / videoEnabled / screenShareEnabled
35
+ participant.audioTrack / videoTrack / screenShareTracks
36
+ ```
37
+
38
+ **Events**:
39
+ ```typescript
40
+ meeting.participants.joined.on('participantJoined', (participant) => {})
41
+ meeting.participants.joined.on('participantLeft', (participant) => {})
42
+ ```
43
+
44
+ ### `meeting.meta` - Metadata
45
+ ```typescript
46
+ meeting.meta.meetingId / meetingTitle / meetingStartedTimestamp
47
+ ```
48
+
49
+ ### `meeting.chat` - Chat
50
+ ```typescript
51
+ meeting.chat.messages // Array
52
+ await meeting.chat.sendTextMessage("Hello") / sendImageMessage(file)
53
+ meeting.chat.on('chatUpdate', ({ message, messages }) => {})
54
+ ```
55
+
56
+ ### `meeting.polls` - Polling
57
+ ```typescript
58
+ meeting.polls.items // Array
59
+ await meeting.polls.create(question, options, anonymous, hideVotes)
60
+ await meeting.polls.vote(pollId, optionIndex)
61
+ ```
62
+
63
+ ### `meeting.plugins` - Collaborative Apps
64
+ ```typescript
65
+ meeting.plugins.all // Array
66
+ await meeting.plugins.activate(pluginId) / deactivate()
67
+ ```
68
+
69
+ ### `meeting.ai` - AI Features
70
+ ```typescript
71
+ meeting.ai.transcripts // Live transcriptions (when enabled in Preset)
72
+ ```
73
+
74
+ ### Core Methods
75
+ ```typescript
76
+ await meeting.join() // Emits 'roomJoined' on meeting.self
77
+ await meeting.leave()
78
+ ```
79
+
80
+ ## TypeScript Types
81
+
82
+ ```typescript
83
+ import type { RealtimeKitClient, States, UIConfig, Participant } from '@cloudflare/realtimekit';
84
+
85
+ // Main interface
86
+ interface RealtimeKitClient {
87
+ self: SelfState; // Local participant (id, userId, name, audioEnabled, videoEnabled, roomJoined, roomState)
88
+ participants: { joined, active, waitlisted, pinned }; // Reactive Maps
89
+ chat: ChatNamespace; // messages[], sendTextMessage(), sendImageMessage()
90
+ polls: PollsNamespace; // items[], create(), vote()
91
+ plugins: PluginsNamespace; // all[], activate(), deactivate()
92
+ ai: AINamespace; // transcripts[]
93
+ meta: MetaState; // meetingId, meetingTitle, meetingStartedTimestamp
94
+ join(): Promise<void>;
95
+ leave(): Promise<void>;
96
+ }
97
+
98
+ // Participant (self & remote share same shape)
99
+ interface Participant {
100
+ id: string; // Peer ID (changes on rejoin)
101
+ userId: string; // Persistent participant ID
102
+ name: string;
103
+ audioEnabled: boolean;
104
+ videoEnabled: boolean;
105
+ screenShareEnabled: boolean;
106
+ audioTrack: MediaStreamTrack | null;
107
+ videoTrack: MediaStreamTrack | null;
108
+ screenShareTracks: MediaStreamTrack[];
109
+ }
110
+ ```
111
+
112
+ ## Store Architecture
113
+
114
+ RealtimeKit uses reactive store (event-driven updates, live Maps):
115
+
116
+ ```typescript
117
+ // Subscribe to state changes
118
+ meeting.self.on('audioUpdate', ({ audioEnabled, audioTrack }) => {});
119
+ meeting.participants.joined.on('participantJoined', (p) => {});
120
+
121
+ // Access current state synchronously
122
+ const isAudioOn = meeting.self.audioEnabled;
123
+ const count = meeting.participants.joined.size();
124
+ ```
125
+
126
+ **Key principles:** State updates emit events after changes. Use `.toArray()` sparingly. Collections are live Maps.
127
+
128
+ ## REST API
129
+
130
+ Base: `https://api.cloudflare.com/client/v4/accounts/{account_id}/realtime/kit/{app_id}`
131
+
132
+ ### Meetings
133
+ ```bash
134
+ GET /meetings # List all
135
+ GET /meetings/{meeting_id} # Get details
136
+ POST /meetings # Create: {"title": "..."}
137
+ PATCH /meetings/{meeting_id} # Update: {"title": "...", "record_on_start": true}
138
+ ```
139
+
140
+ ### Participants
141
+ ```bash
142
+ GET /meetings/{meeting_id}/participants # List all
143
+ GET /meetings/{meeting_id}/participants/{participant_id} # Get details
144
+ POST /meetings/{meeting_id}/participants # Add: {"name": "...", "preset_name": "...", "custom_participant_id": "..."}
145
+ PATCH /meetings/{meeting_id}/participants/{participant_id} # Update: {"name": "...", "preset_name": "..."}
146
+ DELETE /meetings/{meeting_id}/participants/{participant_id} # Delete
147
+ POST /meetings/{meeting_id}/participants/{participant_id}/token # Refresh token
148
+ ```
149
+
150
+ ### Active Session
151
+ ```bash
152
+ GET /meetings/{meeting_id}/active-session # Get active session
153
+ POST /meetings/{meeting_id}/active-session/kick # Kick users: {"user_ids": ["id1", "id2"]}
154
+ POST /meetings/{meeting_id}/active-session/kick-all # Kick all
155
+ POST /meetings/{meeting_id}/active-session/poll # Create poll: {"question": "...", "options": [...], "anonymous": false}
156
+ ```
157
+
158
+ ### Recording
159
+ ```bash
160
+ GET /recordings?meeting_id={meeting_id} # List recordings
161
+ GET /recordings/active-recording/{meeting_id} # Get active recording
162
+ POST /recordings # Start: {"meeting_id": "...", "type": "composite"} (or "track")
163
+ PUT /recordings/{recording_id} # Control: {"action": "pause"} (or "resume", "stop")
164
+ POST /recordings/track # Track recording: {"meeting_id": "...", "layers": [...]}
165
+ ```
166
+
167
+ ### Livestreaming
168
+ ```bash
169
+ GET /livestreams?exclude_meetings=false # List all
170
+ GET /livestreams/{livestream_id} # Get details
171
+ POST /meetings/{meeting_id}/livestreams # Start for meeting
172
+ POST /meetings/{meeting_id}/active-livestream/stop # Stop
173
+ POST /livestreams # Create independent: returns {ingest_server, stream_key, playback_url}
174
+ ```
175
+
176
+ ### Sessions & Analytics
177
+ ```bash
178
+ GET /sessions # List all
179
+ GET /sessions/{session_id} # Get details
180
+ GET /sessions/{session_id}/participants # List participants
181
+ GET /sessions/{session_id}/participants/{participant_id} # Call stats
182
+ GET /sessions/{session_id}/chat # Download chat CSV
183
+ GET /sessions/{session_id}/transcript # Download transcript CSV
184
+ GET /sessions/{session_id}/summary # Get summary
185
+ POST /sessions/{session_id}/summary # Generate summary
186
+ GET /analytics/daywise?start_date=YYYY-MM-DD&end_date=YYYY-MM-DD # Day-wise analytics
187
+ GET /analytics/livestreams/overall # Livestream analytics
188
+ ```
189
+
190
+ ### Webhooks
191
+ ```bash
192
+ GET /webhooks # List all
193
+ POST /webhooks # Create: {"url": "https://...", "events": ["session.started", "session.ended"]}
194
+ PATCH /webhooks/{webhook_id} # Update
195
+ DELETE /webhooks/{webhook_id} # Delete
196
+ ```
197
+
198
+ ## Session Lifecycle
199
+
200
+ ```
201
+ Initialization → Join Intent → [Waitlist?] → Meeting Screen (Stage) → Ended
202
+ ↓ Approved
203
+ [Rejected → Ended]
204
+ ```
205
+
206
+ UI Kit handles state transitions automatically.
207
+
208
+ ## See Also
209
+
210
+ - [Configuration](./configuration.md) - Setup and installation
211
+ - [Patterns](./patterns.md) - Usage examples
212
+ - [README](./README.md) - Overview and quick start
@@ -0,0 +1,203 @@
1
+ # RealtimeKit Configuration
2
+
3
+ Configuration guide for RealtimeKit setup, client SDKs, and wrangler integration.
4
+
5
+ ## Installation
6
+
7
+ ### React
8
+ ```bash
9
+ npm install @cloudflare/realtimekit @cloudflare/realtimekit-react-ui
10
+ ```
11
+
12
+ ### Angular
13
+ ```bash
14
+ npm install @cloudflare/realtimekit @cloudflare/realtimekit-angular-ui
15
+ ```
16
+
17
+ ### Web Components/HTML
18
+ ```bash
19
+ npm install @cloudflare/realtimekit @cloudflare/realtimekit-ui
20
+ ```
21
+
22
+ ## Client SDK Configuration
23
+
24
+ ### React UI Kit
25
+ ```tsx
26
+ import { RtkMeeting } from '@cloudflare/realtimekit-react-ui';
27
+ <RtkMeeting authToken="<token>" onLeave={() => {}} />
28
+ ```
29
+
30
+ ### Angular UI Kit
31
+ ```typescript
32
+ @Component({ template: `<rtk-meeting [authToken]="authToken" (rtkLeave)="onLeave($event)"></rtk-meeting>` })
33
+ export class AppComponent { authToken = '<token>'; onLeave() {} }
34
+ ```
35
+
36
+ ### Web Components
37
+ ```html
38
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@cloudflare/realtimekit-ui/dist/realtimekit-ui/realtimekit-ui.esm.js"></script>
39
+ <rtk-meeting id="meeting"></rtk-meeting>
40
+ <script>
41
+ document.getElementById('meeting').authToken = '<token>';
42
+ </script>
43
+ ```
44
+
45
+ ### Core SDK Configuration
46
+ ```typescript
47
+ import RealtimeKitClient from '@cloudflare/realtimekit';
48
+
49
+ const meeting = new RealtimeKitClient({
50
+ authToken: '<token>',
51
+ video: true, audio: true, autoSwitchAudioDevice: true,
52
+ mediaConfiguration: {
53
+ video: { width: { ideal: 1280 }, height: { ideal: 720 }, frameRate: { ideal: 30 } },
54
+ audio: { echoCancellation: true, noiseSuppression: true, autoGainControl: true },
55
+ screenshare: { width: { max: 1920 }, height: { max: 1080 }, frameRate: { ideal: 15 } }
56
+ }
57
+ });
58
+ await meeting.join();
59
+ ```
60
+
61
+ ## Backend Setup
62
+
63
+ ### Create App & Credentials
64
+
65
+ **Dashboard**: https://dash.cloudflare.com/?to=/:account/realtime/kit
66
+
67
+ **API**:
68
+ ```bash
69
+ curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/apps' \
70
+ -H 'Content-Type: application/json' \
71
+ -H 'Authorization: Bearer <api_token>' \
72
+ -d '{"name": "My RealtimeKit App"}'
73
+ ```
74
+
75
+ **Required Permissions**: API token with **Realtime / Realtime Admin** permissions
76
+
77
+ ### Create Presets
78
+
79
+ ```bash
80
+ curl -X POST 'https://api.cloudflare.com/client/v4/accounts/<account_id>/realtime/kit/<app_id>/presets' \
81
+ -H 'Authorization: Bearer <api_token>' \
82
+ -d '{
83
+ "name": "host",
84
+ "permissions": {
85
+ "canShareAudio": true,
86
+ "canShareVideo": true,
87
+ "canRecord": true,
88
+ "canLivestream": true,
89
+ "canStartStopRecording": true
90
+ }
91
+ }'
92
+ ```
93
+
94
+ ## Wrangler Configuration
95
+
96
+ ### Basic Configuration
97
+ ```jsonc
98
+ // wrangler.jsonc
99
+ {
100
+ "name": "realtimekit-app",
101
+ "main": "src/index.ts",
102
+ "compatibility_date": "2025-01-01", // Use current date
103
+ "vars": {
104
+ "CLOUDFLARE_ACCOUNT_ID": "abc123",
105
+ "REALTIMEKIT_APP_ID": "xyz789"
106
+ }
107
+ // Secrets: wrangler secret put CLOUDFLARE_API_TOKEN
108
+ }
109
+ ```
110
+
111
+ ### With Database & Storage
112
+ ```jsonc
113
+ {
114
+ "d1_databases": [{ "binding": "DB", "database_name": "meetings", "database_id": "d1-id" }],
115
+ "r2_buckets": [{ "binding": "RECORDINGS", "bucket_name": "recordings" }],
116
+ "kv_namespaces": [{ "binding": "SESSIONS", "id": "kv-id" }]
117
+ }
118
+ ```
119
+
120
+ ### Multi-Environment
121
+ ```bash
122
+ # Deploy to environments
123
+ wrangler deploy --env staging
124
+ wrangler deploy --env production
125
+ ```
126
+
127
+ ## TURN Service Configuration
128
+
129
+ RealtimeKit can use Cloudflare's TURN service for connectivity through restrictive networks:
130
+
131
+ ```jsonc
132
+ // wrangler.jsonc
133
+ {
134
+ "vars": {
135
+ "TURN_SERVICE_ID": "your_turn_service_id"
136
+ }
137
+ // Set secret: wrangler secret put TURN_SERVICE_TOKEN
138
+ }
139
+ ```
140
+
141
+ TURN automatically configured when enabled in account - no client-side changes needed.
142
+
143
+ ## Theming & Design Tokens
144
+
145
+ ```typescript
146
+ import type { UIConfig } from '@cloudflare/realtimekit';
147
+
148
+ const uiConfig: UIConfig = {
149
+ designTokens: {
150
+ colors: {
151
+ brand: { 500: '#0066ff', 600: '#0052cc' },
152
+ background: { 1000: '#1A1A1A', 900: '#2D2D2D' },
153
+ text: { 1000: '#FFFFFF', 900: '#E0E0E0' }
154
+ },
155
+ borderRadius: 'extra-rounded', // 'rounded' | 'extra-rounded' | 'sharp'
156
+ theme: 'dark' // 'light' | 'dark'
157
+ },
158
+ logo: { url: 'https://example.com/logo.png', altText: 'Company' }
159
+ };
160
+
161
+ // Apply to React
162
+ <RtkMeeting authToken={token} config={uiConfig} onLeave={() => {}} />
163
+
164
+ // Or use CSS variables
165
+ // :root { --rtk-color-brand-500: #0066ff; --rtk-border-radius: 12px; }
166
+ ```
167
+
168
+ ## Internationalization (i18n)
169
+
170
+ ### Custom Language Strings
171
+ ```typescript
172
+ import { useLanguage } from '@cloudflare/realtimekit-ui';
173
+
174
+ const customLanguage = {
175
+ 'join': 'Entrar',
176
+ 'leave': 'Salir',
177
+ 'mute': 'Silenciar',
178
+ 'unmute': 'Activar audio',
179
+ 'turn_on_camera': 'Encender cámara',
180
+ 'turn_off_camera': 'Apagar cámara',
181
+ 'share_screen': 'Compartir pantalla',
182
+ 'stop_sharing': 'Dejar de compartir'
183
+ };
184
+
185
+ const t = useLanguage(customLanguage);
186
+
187
+ // React usage
188
+ <RtkMeeting authToken={token} t={t} onLeave={() => {}} />
189
+ ```
190
+
191
+ ### Supported Locales
192
+ Default locales available: `en`, `es`, `fr`, `de`, `pt`, `ja`, `zh`
193
+
194
+ ```typescript
195
+ import { setLocale } from '@cloudflare/realtimekit-ui';
196
+ setLocale('es'); // Switch to Spanish
197
+ ```
198
+
199
+ ## See Also
200
+
201
+ - [API](./api.md) - Meeting APIs, REST endpoints
202
+ - [Patterns](./patterns.md) - Backend integration examples
203
+ - [README](./README.md) - Overview and quick start
@@ -0,0 +1,169 @@
1
+ # RealtimeKit Gotchas & Troubleshooting
2
+
3
+ ## Common Errors
4
+
5
+ ### "Cannot connect to meeting"
6
+
7
+ **Cause:** Auth token invalid/expired, API credentials lack permissions, or network blocks WebRTC
8
+ **Solution:**
9
+ Verify token validity, check API token has **Realtime / Realtime Admin** permissions, enable TURN service for restrictive networks
10
+
11
+ ### "No video/audio tracks"
12
+
13
+ **Cause:** Browser permissions not granted, video/audio not enabled, device in use, or device unavailable
14
+ **Solution:**
15
+ Request browser permissions explicitly, verify initialization config, use `meeting.self.getAllDevices()` to debug, close other apps using device
16
+
17
+ ### "Participant count mismatched"
18
+
19
+ **Cause:** `meeting.participants` doesn't include `meeting.self`
20
+ **Solution:** Total count = `meeting.participants.joined.size() + 1`
21
+
22
+ ### "Events not firing"
23
+
24
+ **Cause:** Listeners registered after actions, incorrect event name, or wrong namespace
25
+ **Solution:**
26
+ Register listeners before calling `meeting.join()`, check event names against docs, verify correct namespace
27
+
28
+ ### "CORS errors in API calls"
29
+
30
+ **Cause:** Making REST API calls from client-side
31
+ **Solution:** All REST API calls **must** be server-side (Workers, backend). Never expose API tokens to clients.
32
+
33
+ ### "Preset not applying"
34
+
35
+ **Cause:** Preset doesn't exist, name mismatch (case-sensitive), or participant created before preset
36
+ **Solution:**
37
+ Verify preset exists via Dashboard or API, check exact spelling and case, create preset before adding participants
38
+
39
+ ### "Token reuse error"
40
+
41
+ **Cause:** Reusing participant tokens across sessions
42
+ **Solution:** Generate fresh token per session. Use refresh endpoint if token expires during session.
43
+
44
+ ### "Video quality poor"
45
+
46
+ **Cause:** Insufficient bandwidth, resolution/bitrate too high, or CPU overload
47
+ **Solution:**
48
+ Lower `mediaConfiguration.video` resolution/frameRate, monitor network conditions, reduce participant count or grid size
49
+
50
+ ### "Echo or audio feedback"
51
+
52
+ **Cause:** Multiple devices picking up same audio source
53
+ **Solution:**
54
+ - Lower `mediaConfiguration.video` resolution/frameRate
55
+ - Monitor network conditions
56
+ - Reduce participant count or grid size
57
+
58
+ ### Issue: Echo or audio feedback
59
+ **Cause**: Multiple devices picking up same audio source
60
+
61
+ **Solutions**:
62
+ Enable `echoCancellation: true` in `mediaConfiguration.audio`, use headphones, mute when not speaking
63
+
64
+ ### "Screen share not working"
65
+
66
+ **Cause:** Browser doesn't support screen sharing API, permission denied, or wrong `displaySurface` config
67
+ **Solution:**
68
+ Use Chrome/Edge/Firefox (Safari limited support), check browser permissions, try different `displaySurface` values ('window', 'monitor', 'browser')
69
+
70
+ ### "How do I schedule meetings?"
71
+
72
+ **Cause:** RealtimeKit has no built-in scheduling system
73
+ **Solution:**
74
+ Store meeting IDs in your database with timestamps. Generate participant tokens only when user should join. Example:
75
+ ```typescript
76
+ // Store in DB
77
+ { meetingId: 'abc123', scheduledFor: '2026-02-15T10:00:00Z', userId: 'user456' }
78
+
79
+ // Generate token when user clicks "Join" near scheduled time
80
+ const response = await fetch('/api/join-meeting', {
81
+ method: 'POST',
82
+ body: JSON.stringify({ meetingId: 'abc123' })
83
+ });
84
+ const { authToken } = await response.json();
85
+ ```
86
+
87
+ ### "Recording not starting"
88
+
89
+ **Cause:** Preset lacks recording permissions, no active session, or API call from client
90
+ **Solution:**
91
+ Verify preset has `canRecord: true` and `canStartStopRecording: true`, ensure session is active (at least one participant), make recording API calls server-side only
92
+
93
+ ## Limits
94
+
95
+ | Resource | Limit |
96
+ |----------|-------|
97
+ | Max participants per session | 100 |
98
+ | Max concurrent sessions per App | 1000 |
99
+ | Max recording duration | 6 hours |
100
+ | Max meeting duration | 24 hours |
101
+ | Max chat message length | 4000 characters |
102
+ | Max preset name length | 64 characters |
103
+ | Max meeting title length | 256 characters |
104
+ | Max participant name length | 256 characters |
105
+ | Token expiration | 24 hours (default) |
106
+ | WebRTC ports required | UDP 1024-65535 |
107
+
108
+ ## Network Requirements
109
+
110
+ ### Firewall Rules
111
+ Allow outbound UDP/TCP to:
112
+ - `*.cloudflare.com` ports 443, 80
113
+ - UDP ports 1024-65535 (WebRTC media)
114
+
115
+ ### TURN Service
116
+ Enable for users behind restrictive firewalls/proxies:
117
+ ```jsonc
118
+ // wrangler.jsonc
119
+ {
120
+ "vars": {
121
+ "TURN_SERVICE_ID": "your_turn_service_id"
122
+ }
123
+ // Set secret: wrangler secret put TURN_SERVICE_TOKEN
124
+ }
125
+ ```
126
+
127
+ TURN automatically configured in SDK when enabled in account.
128
+
129
+ ## Debugging Tips
130
+
131
+ ```typescript
132
+ // Check devices
133
+ const devices = await meeting.self.getAllDevices();
134
+ meeting.self.on('deviceListUpdate', ({ added, removed, devices }) => console.log('Devices:', { added, removed, devices }));
135
+
136
+ // Monitor participants
137
+ meeting.participants.joined.on('participantJoined', (p) => console.log(`${p.name} joined:`, { id: p.id, userId: p.userId, audioEnabled: p.audioEnabled, videoEnabled: p.videoEnabled }));
138
+
139
+ // Check room state
140
+ meeting.self.on('roomJoined', () => console.log('Room:', { meetingId: meeting.meta.meetingId, meetingTitle: meeting.meta.meetingTitle, participantCount: meeting.participants.joined.size() + 1, audioEnabled: meeting.self.audioEnabled, videoEnabled: meeting.self.videoEnabled }));
141
+
142
+ // Log all events
143
+ ['roomJoined', 'audioUpdate', 'videoUpdate', 'screenShareUpdate', 'deviceUpdate', 'deviceListUpdate'].forEach(event => meeting.self.on(event, (data) => console.log(`[self] ${event}:`, data)));
144
+ ['participantJoined', 'participantLeft'].forEach(event => meeting.participants.joined.on(event, (data) => console.log(`[participants] ${event}:`, data)));
145
+ meeting.chat.on('chatUpdate', (data) => console.log('[chat] chatUpdate:', data));
146
+ ```
147
+
148
+ ## Security & Performance
149
+
150
+ ### Security: Do NOT
151
+ - Expose `CLOUDFLARE_API_TOKEN` in client code, hardcode credentials in frontend
152
+ - Reuse participant tokens, store tokens in localStorage without encryption
153
+ - Allow client-side meeting creation
154
+
155
+ ### Security: DO
156
+ - Generate tokens server-side only, use HTTPS, implement rate limiting
157
+ - Validate user auth before generating tokens, use `custom_participant_id` to map to your user system
158
+ - Set appropriate preset permissions per user role, rotate API tokens regularly
159
+
160
+ ### Performance
161
+ - **CPU**: Lower video resolution/frameRate, disable video for audio-only, use `meeting.participants.active` for large meetings, implement virtual scrolling
162
+ - **Bandwidth**: Set max resolution in `mediaConfiguration`, disable screenshare audio if unneeded, use audio-only mode, implement adaptive bitrate
163
+ - **Memory**: Clean up event listeners on unmount, call `meeting.leave()` when done, don't store large participant arrays
164
+
165
+ ## In This Reference
166
+ - [README.md](README.md) - Overview, core concepts, quick start
167
+ - [configuration.md](configuration.md) - SDK config, presets, wrangler setup
168
+ - [api.md](api.md) - Client SDK APIs, REST endpoints
169
+ - [patterns.md](patterns.md) - Common patterns, React hooks, backend integration