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,160 @@
1
+ # Gotchas & Troubleshooting
2
+
3
+ ## Miniflare Limitations
4
+
5
+ **Not supported:**
6
+ - Analytics Engine (use mocks)
7
+ - Cloudflare Images/Stream
8
+ - Browser Rendering API
9
+ - Tail Workers
10
+ - Workers for Platforms (partial support)
11
+
12
+ **Behavior differences from production:**
13
+ - Runs workerd locally, not Cloudflare edge
14
+ - Storage is local (filesystem/memory), not distributed
15
+ - `Request.cf` is cached/mocked, not real edge data
16
+ - Performance differs from edge
17
+ - Caching implementation may vary slightly
18
+
19
+ ## Common Errors
20
+
21
+ ### "Cannot find module"
22
+ **Cause:** Module path wrong or `modulesRules` not configured
23
+ **Solution:**
24
+ ```js
25
+ new Miniflare({
26
+ modules: true,
27
+ modulesRules: [{ type: "ESModule", include: ["**/*.js"] }],
28
+ });
29
+ ```
30
+
31
+ ### "Data not persisting"
32
+ **Cause:** Persist paths are files, not directories
33
+ **Solution:**
34
+ ```js
35
+ kvPersist: "./data/kv", // Directory, not file
36
+ ```
37
+
38
+ ### "Cannot run TypeScript"
39
+ **Cause:** Miniflare doesn't transpile TypeScript
40
+ **Solution:** Build first with esbuild/tsc, then run compiled JS
41
+
42
+ ### "`request.cf` is undefined"
43
+ **Cause:** CF data not configured
44
+ **Solution:**
45
+ ```js
46
+ new Miniflare({ cf: true }); // Or cf: "./cf.json"
47
+ ```
48
+
49
+ ### "EADDRINUSE" port conflict
50
+ **Cause:** Multiple instances using same port
51
+ **Solution:** Use `dispatchFetch()` (no HTTP server) or `port: 0` for auto-assign
52
+
53
+ ### "Durable Object not found"
54
+ **Cause:** Class export doesn't match config name
55
+ **Solution:**
56
+ ```js
57
+ export class Counter {} // Must match
58
+ new Miniflare({ durableObjects: { COUNTER: "Counter" } });
59
+ ```
60
+
61
+ ## Debugging
62
+
63
+ **Enable verbose logging:**
64
+ ```js
65
+ import { Log, LogLevel } from "miniflare";
66
+ new Miniflare({ log: new Log(LogLevel.DEBUG) });
67
+ ```
68
+
69
+ **Chrome DevTools:**
70
+ ```js
71
+ const url = await mf.getInspectorURL();
72
+ console.log(`DevTools: ${url}`); // Open in Chrome
73
+ ```
74
+
75
+ **Inspect bindings:**
76
+ ```js
77
+ const env = await mf.getBindings();
78
+ console.log(Object.keys(env));
79
+ ```
80
+
81
+ **Verify storage:**
82
+ ```js
83
+ const ns = await mf.getKVNamespace("TEST");
84
+ const { keys } = await ns.list();
85
+ ```
86
+
87
+ ## Best Practices
88
+
89
+ **✓ Do:**
90
+ - Use `dispatchFetch()` for tests (no HTTP server)
91
+ - In-memory storage for CI (omit persist options)
92
+ - New instances per test for isolation
93
+ - Type-safe bindings with interfaces
94
+ - `await mf.dispose()` in cleanup
95
+
96
+ **✗ Avoid:**
97
+ - HTTP server in tests
98
+ - Shared instances without cleanup
99
+ - Old compatibility dates (use 2026+)
100
+
101
+ ## Migration Guides
102
+
103
+ ### From Miniflare 2.x to 3+
104
+
105
+ Breaking changes in v3+:
106
+
107
+ | v2 | v3+ |
108
+ |----|-----|
109
+ | `getBindings()` sync | `getBindings()` returns Promise |
110
+ | `ready` is void | `ready` returns `Promise<URL>` |
111
+ | service-worker-mock | Built on workerd |
112
+ | Different options | Restructured constructor |
113
+
114
+ **Example migration:**
115
+ ```js
116
+ // v2
117
+ const bindings = mf.getBindings();
118
+ mf.ready; // void
119
+
120
+ // v3+
121
+ const bindings = await mf.getBindings();
122
+ const url = await mf.ready; // Promise<URL>
123
+ ```
124
+
125
+ ### From unstable_dev to Miniflare
126
+
127
+ ```js
128
+ // Old (deprecated)
129
+ import { unstable_dev } from "wrangler";
130
+ const worker = await unstable_dev("src/index.ts");
131
+
132
+ // New
133
+ import { Miniflare } from "miniflare";
134
+ const mf = new Miniflare({ scriptPath: "src/index.ts" });
135
+ ```
136
+
137
+ ### From Wrangler Dev
138
+
139
+ Miniflare doesn't auto-read `wrangler.toml`:
140
+
141
+ ```js
142
+ // Translate manually:
143
+ new Miniflare({
144
+ scriptPath: "dist/worker.js",
145
+ compatibilityDate: "2026-01-01",
146
+ kvNamespaces: ["KV"],
147
+ bindings: { API_KEY: process.env.API_KEY },
148
+ });
149
+ ```
150
+
151
+ ## Resource Limits
152
+
153
+ | Limit | Value | Notes |
154
+ |-------|-------|-------|
155
+ | CPU time | 30s default | Configurable via `scriptTimeout` |
156
+ | Storage | Filesystem | Performance varies by disk |
157
+ | Memory | System dependent | No artificial limits |
158
+ | Request.cf | Cached/mocked | Not live edge data |
159
+
160
+ See [patterns.md](./patterns.md) for testing examples.
@@ -0,0 +1,181 @@
1
+ # Testing Patterns
2
+
3
+ ## Choosing a Testing Approach
4
+
5
+ | Approach | Use Case | Speed | Setup | Runtime |
6
+ |----------|----------|-------|-------|---------|
7
+ | **getPlatformProxy** | Unit tests, logic testing | Fast | Low | Miniflare |
8
+ | **Miniflare API** | Integration tests, full control | Medium | Medium | Miniflare |
9
+ | **vitest-pool-workers** | Vitest runner integration | Medium | Medium | workerd |
10
+
11
+ **Quick guide:**
12
+ - Unit tests → getPlatformProxy
13
+ - Integration tests → Miniflare API
14
+ - Vitest workflows → vitest-pool-workers
15
+
16
+ ## getPlatformProxy
17
+
18
+ Lightweight unit testing - provides bindings without full Worker runtime.
19
+
20
+ ```js
21
+ // vitest.config.js
22
+ export default { test: { environment: "node" } };
23
+ ```
24
+
25
+ ```js
26
+ import { env } from "cloudflare:test";
27
+ import { describe, it, expect } from "vitest";
28
+
29
+ describe("Business logic", () => {
30
+ it("processes data with KV", async () => {
31
+ await env.KV.put("test", "value");
32
+ expect(await env.KV.get("test")).toBe("value");
33
+ });
34
+ });
35
+ ```
36
+
37
+ **Pros:** Fast, simple
38
+ **Cons:** No full runtime, can't test fetch handler
39
+
40
+ ## vitest-pool-workers
41
+
42
+ Full Workers runtime in Vitest. Reads `wrangler.toml`.
43
+
44
+ ```bash
45
+ npm i -D @cloudflare/vitest-pool-workers
46
+ ```
47
+
48
+ ```js
49
+ // vitest.config.js
50
+ import { defineWorkersConfig } from "@cloudflare/vitest-pool-workers/config";
51
+
52
+ export default defineWorkersConfig({
53
+ test: {
54
+ poolOptions: { workers: { wrangler: { configPath: "./wrangler.toml" } } },
55
+ },
56
+ });
57
+ ```
58
+
59
+ ```js
60
+ import { env, SELF } from "cloudflare:test";
61
+ import { it, expect } from "vitest";
62
+
63
+ it("handles fetch", async () => {
64
+ const res = await SELF.fetch("http://example.com/");
65
+ expect(res.status).toBe(200);
66
+ });
67
+ ```
68
+
69
+ **Pros:** Full runtime, uses wrangler.toml
70
+ **Cons:** Requires Wrangler config
71
+
72
+ ## Miniflare API (node:test)
73
+
74
+ ```js
75
+ import assert from "node:assert";
76
+ import test, { after, before } from "node:test";
77
+ import { Miniflare } from "miniflare";
78
+
79
+ let mf;
80
+ before(() => {
81
+ mf = new Miniflare({ scriptPath: "src/index.js", kvNamespaces: ["TEST_KV"] });
82
+ });
83
+
84
+ test("fetch", async () => {
85
+ const res = await mf.dispatchFetch("http://localhost/");
86
+ assert.strictEqual(await res.text(), "Hello");
87
+ });
88
+
89
+ after(() => mf.dispose());
90
+ ```
91
+
92
+ ## Testing Durable Objects & Events
93
+
94
+ ```js
95
+ // Durable Objects
96
+ const ns = await mf.getDurableObjectNamespace("COUNTER");
97
+ const stub = ns.get(ns.idFromName("test-counter"));
98
+ await stub.fetch("http://localhost/increment");
99
+
100
+ // Direct storage
101
+ const storage = await mf.getDurableObjectStorage(ns.idFromName("test-counter"));
102
+ const count = await storage.get("count");
103
+
104
+ // Queue
105
+ const worker = await mf.getWorker();
106
+ await worker.queue("my-queue", [
107
+ { id: "msg1", timestamp: new Date(), body: { userId: 123 }, attempts: 1 },
108
+ ]);
109
+
110
+ // Scheduled
111
+ await worker.scheduled({ cron: "0 0 * * *" });
112
+ ```
113
+
114
+ ## Test Isolation & Mocking
115
+
116
+ ```js
117
+ // Per-test isolation
118
+ beforeEach(() => { mf = new Miniflare({ kvNamespaces: ["TEST"] }); });
119
+ afterEach(() => mf.dispose());
120
+
121
+ // Mock external APIs
122
+ new Miniflare({
123
+ workers: [
124
+ { name: "main", serviceBindings: { API: "mock-api" }, script: `...` },
125
+ { name: "mock-api", script: `export default { async fetch() { return Response.json({mock: true}); } }` },
126
+ ],
127
+ });
128
+ ```
129
+
130
+ ## Type Safety
131
+
132
+ ```ts
133
+ import type { KVNamespace } from "@cloudflare/workers-types";
134
+
135
+ interface Env {
136
+ KV: KVNamespace;
137
+ API_KEY: string;
138
+ }
139
+
140
+ const env = await mf.getBindings<Env>();
141
+ await env.KV.put("key", "value"); // Typed!
142
+
143
+ export default {
144
+ async fetch(req: Request, env: Env) {
145
+ return new Response(await env.KV.get("key"));
146
+ }
147
+ } satisfies ExportedHandler<Env>;
148
+ ```
149
+
150
+ ## WebSocket Testing
151
+
152
+ ```js
153
+ const res = await mf.dispatchFetch("http://localhost/ws", {
154
+ headers: { Upgrade: "websocket" },
155
+ });
156
+ assert.strictEqual(res.status, 101);
157
+ ```
158
+
159
+ ## Migration from unstable_dev
160
+
161
+ ```js
162
+ // Old (deprecated)
163
+ import { unstable_dev } from "wrangler";
164
+ const worker = await unstable_dev("src/index.ts");
165
+
166
+ // New
167
+ import { Miniflare } from "miniflare";
168
+ const mf = new Miniflare({ scriptPath: "src/index.ts" });
169
+ ```
170
+
171
+ ## CI/CD Tips
172
+
173
+ ```js
174
+ // In-memory storage (faster)
175
+ new Miniflare({ kvNamespaces: ["TEST"] }); // No persist = in-memory
176
+
177
+ // Use dispatchFetch (no port conflicts)
178
+ await mf.dispatchFetch("http://localhost/");
179
+ ```
180
+
181
+ See [gotchas.md](./gotchas.md) for troubleshooting.
@@ -0,0 +1,99 @@
1
+ # Cloudflare Network Interconnect (CNI)
2
+
3
+ Private, high-performance connectivity to Cloudflare's network. **Enterprise-only**.
4
+
5
+ ## Connection Types
6
+
7
+ **Direct**: Physical fiber in shared datacenter. 10/100 Gbps. You order cross-connect.
8
+
9
+ **Partner**: Virtual via Console Connect, Equinix, Megaport, etc. Managed via partner SDN.
10
+
11
+ **Cloud**: AWS Direct Connect or GCP Cloud Interconnect. Magic WAN only.
12
+
13
+ ## Dataplane Versions
14
+
15
+ **v1 (Classic)**: GRE tunnel support, VLAN/BFD/LACP, asymmetric MTU (1500↓/1476↑), peering support.
16
+
17
+ **v2 (Beta)**: No GRE, 1500 MTU both ways, no VLAN/BFD/LACP yet, ECMP instead.
18
+
19
+ ## Use Cases
20
+
21
+ - **Magic Transit DSR**: DDoS protection, egress via ISP (v1/v2)
22
+ - **Magic Transit + Egress**: DDoS + egress via CF (v1/v2)
23
+ - **Magic WAN + Zero Trust**: Private backbone (v1 needs GRE, v2 native)
24
+ - **Peering**: Public routes at PoP (v1 only)
25
+ - **App Security**: WAF/Cache/LB (v1/v2 over Magic Transit)
26
+
27
+ ## Prerequisites
28
+
29
+ - Enterprise plan
30
+ - IPv4 /24+ or IPv6 /48+ prefixes
31
+ - BGP ASN for v1
32
+ - See [locations PDF](https://developers.cloudflare.com/network-interconnect/static/cni-locations-2026-01.pdf)
33
+
34
+ ## Specs
35
+
36
+ - /31 point-to-point subnets
37
+ - 10km max optical distance
38
+ - 10G: 10GBASE-LR single-mode
39
+ - 100G: 100GBASE-LR4 single-mode
40
+ - **No SLA** (free service)
41
+ - Backup Internet required
42
+
43
+ ## Throughput
44
+
45
+ | Direction | 10G | 100G |
46
+ |-----------|-----|------|
47
+ | CF → Customer | 10 Gbps | 100 Gbps |
48
+ | Customer → CF (peering) | 10 Gbps | 100 Gbps |
49
+ | Customer → CF (Magic) | 1 Gbps/tunnel or CNI | 1 Gbps/tunnel or CNI |
50
+
51
+ ## Timeline
52
+
53
+ 2-4 weeks typical. Steps: request → config review → order connection → configure → test → enable health checks → activate → monitor.
54
+
55
+ ## In This Reference
56
+ - [configuration.md](./configuration.md) - BGP, routing, setup
57
+ - [api.md](./api.md) - API endpoints, SDKs
58
+ - [patterns.md](./patterns.md) - HA, hybrid cloud, failover
59
+ - [gotchas.md](./gotchas.md) - Troubleshooting, limits
60
+
61
+ ## Reading Order by Task
62
+
63
+ | Task | Files to Load |
64
+ |------|---------------|
65
+ | Initial setup | README → configuration.md → api.md |
66
+ | Create interconnect via API | api.md → gotchas.md |
67
+ | Design HA architecture | patterns.md → README |
68
+ | Troubleshoot connection | gotchas.md → configuration.md |
69
+ | Cloud integration (AWS/GCP) | configuration.md → patterns.md |
70
+ | Monitor + alerts | configuration.md |
71
+
72
+ ## Automation Boundary
73
+
74
+ **API-Automatable:**
75
+ - List/create/delete interconnects (Direct, Partner)
76
+ - List available slots
77
+ - Get interconnect status
78
+ - Download LOA PDF
79
+ - Create/update CNI objects (BGP config)
80
+ - Query settings
81
+
82
+ **Requires Account Team:**
83
+ - Initial request approval
84
+ - AWS Direct Connect setup (send LOA+VLAN to CF)
85
+ - GCP Cloud Interconnect final activation
86
+ - Partner interconnect acceptance (Equinix, Megaport)
87
+ - VLAN assignment (v1)
88
+ - Configuration document generation (v1)
89
+ - Escalations + troubleshooting support
90
+
91
+ **Cannot Be Automated:**
92
+ - Physical cross-connect installation (Direct)
93
+ - Partner portal operations (virtual circuit ordering)
94
+ - AWS/GCP portal operations
95
+ - Maintenance window coordination
96
+
97
+ ## See Also
98
+ - [tunnel](../tunnel/) - Alternative for private network connectivity
99
+ - [spectrum](../spectrum/) - Layer 4 proxy for TCP/UDP traffic
@@ -0,0 +1,199 @@
1
+ # CNI API Reference
2
+
3
+ See [README.md](README.md) for overview.
4
+
5
+ ## Base
6
+
7
+ ```
8
+ https://api.cloudflare.com/client/v4
9
+ Auth: Authorization: Bearer <token>
10
+ ```
11
+
12
+ ## SDK Namespaces
13
+
14
+ **Primary (recommended):**
15
+ ```typescript
16
+ client.networkInterconnects.interconnects.*
17
+ client.networkInterconnects.cnis.*
18
+ client.networkInterconnects.slots.*
19
+ ```
20
+
21
+ **Alternate (deprecated):**
22
+ ```typescript
23
+ client.magicTransit.cfInterconnects.*
24
+ ```
25
+
26
+ Use `networkInterconnects` namespace for all new code.
27
+
28
+ ## Interconnects
29
+
30
+ ```http
31
+ GET /accounts/{account_id}/cni/interconnects # Query: page, per_page
32
+ POST /accounts/{account_id}/cni/interconnects # Query: validate_only=true (optional)
33
+ GET /accounts/{account_id}/cni/interconnects/{icon}
34
+ GET /accounts/{account_id}/cni/interconnects/{icon}/status
35
+ GET /accounts/{account_id}/cni/interconnects/{icon}/loa # Returns PDF
36
+ DELETE /accounts/{account_id}/cni/interconnects/{icon}
37
+ ```
38
+
39
+ **Create Body:** `account`, `slot_id`, `type`, `facility`, `speed`, `name`, `description`
40
+ **Status Values:** `active` | `healthy` | `unhealthy` | `pending` | `down`
41
+
42
+ **Response Example:**
43
+ ```json
44
+ {"result": [{"id": "icon_abc", "name": "prod", "type": "direct", "facility": "EWR1", "speed": "10G", "status": "active"}]}
45
+ ```
46
+
47
+ ## CNI Objects (BGP config)
48
+
49
+ ```http
50
+ GET /accounts/{account_id}/cni/cnis
51
+ POST /accounts/{account_id}/cni/cnis
52
+ GET /accounts/{account_id}/cni/cnis/{cni}
53
+ PUT /accounts/{account_id}/cni/cnis/{cni}
54
+ DELETE /accounts/{account_id}/cni/cnis/{cni}
55
+ ```
56
+
57
+ Body: `account`, `cust_ip`, `cf_ip`, `bgp_asn`, `bgp_password`, `vlan`
58
+
59
+ ## Slots
60
+
61
+ ```http
62
+ GET /accounts/{account_id}/cni/slots
63
+ GET /accounts/{account_id}/cni/slots/{slot}
64
+ ```
65
+
66
+ Query: `facility`, `occupied`, `speed`
67
+
68
+ ## Health Checks
69
+
70
+ Configure via Magic Transit/WAN tunnel endpoints (CNI v2).
71
+
72
+ ```typescript
73
+ await client.magicTransit.tunnels.update(accountId, tunnelId, {
74
+ health_check: { enabled: true, target: '192.0.2.1', rate: 'high', type: 'request' },
75
+ });
76
+ ```
77
+
78
+ Rates: `high` | `medium` | `low`. Types: `request` | `reply`. See [Magic Transit docs](https://developers.cloudflare.com/magic-transit/how-to/configure-tunnel-endpoints/#add-tunnels).
79
+
80
+ ## Settings
81
+
82
+ ```http
83
+ GET /accounts/{account_id}/cni/settings
84
+ PUT /accounts/{account_id}/cni/settings
85
+ ```
86
+
87
+ Body: `default_asn`
88
+
89
+ ## TypeScript SDK
90
+
91
+ ```typescript
92
+ import Cloudflare from 'cloudflare';
93
+
94
+ const client = new Cloudflare({ apiToken: process.env.CF_TOKEN });
95
+
96
+ // List
97
+ await client.networkInterconnects.interconnects.list({ account_id: id });
98
+
99
+ // Create with validation
100
+ await client.networkInterconnects.interconnects.create({
101
+ account_id: id,
102
+ account: id,
103
+ slot_id: 'slot_abc',
104
+ type: 'direct',
105
+ facility: 'EWR1',
106
+ speed: '10G',
107
+ name: 'prod-interconnect',
108
+ }, {
109
+ query: { validate_only: true }, // Dry-run validation
110
+ });
111
+
112
+ // Create without validation
113
+ await client.networkInterconnects.interconnects.create({
114
+ account_id: id,
115
+ account: id,
116
+ slot_id: 'slot_abc',
117
+ type: 'direct',
118
+ facility: 'EWR1',
119
+ speed: '10G',
120
+ name: 'prod-interconnect',
121
+ });
122
+
123
+ // Status
124
+ await client.networkInterconnects.interconnects.get(accountId, iconId);
125
+
126
+ // LOA (use fetch)
127
+ const res = await fetch(`https://api.cloudflare.com/client/v4/accounts/${id}/cni/interconnects/${iconId}/loa`, {
128
+ headers: { Authorization: `Bearer ${token}` },
129
+ });
130
+ await fs.writeFile('loa.pdf', Buffer.from(await res.arrayBuffer()));
131
+
132
+ // CNI object
133
+ await client.networkInterconnects.cnis.create({
134
+ account_id: id,
135
+ account: id,
136
+ cust_ip: '192.0.2.1/31',
137
+ cf_ip: '192.0.2.0/31',
138
+ bgp_asn: 65000,
139
+ vlan: 100,
140
+ });
141
+
142
+ // Slots (filter by facility and speed)
143
+ await client.networkInterconnects.slots.list({
144
+ account_id: id,
145
+ occupied: false,
146
+ facility: 'EWR1',
147
+ speed: '10G',
148
+ });
149
+ ```
150
+
151
+ ## Python SDK
152
+
153
+ ```python
154
+ from cloudflare import Cloudflare
155
+
156
+ client = Cloudflare(api_token=os.environ["CF_TOKEN"])
157
+
158
+ # List, create, status (same pattern as TypeScript)
159
+ client.network_interconnects.interconnects.list(account_id=id)
160
+ client.network_interconnects.interconnects.create(account_id=id, account=id, slot_id="slot_abc", type="direct", facility="EWR1", speed="10G")
161
+ client.network_interconnects.interconnects.get(account_id=id, icon=icon_id)
162
+
163
+ # CNI objects and slots
164
+ client.network_interconnects.cnis.create(account_id=id, cust_ip="192.0.2.1/31", cf_ip="192.0.2.0/31", bgp_asn=65000)
165
+ client.network_interconnects.slots.list(account_id=id, occupied=False)
166
+ ```
167
+
168
+ ## cURL
169
+
170
+ ```bash
171
+ # List interconnects
172
+ curl "https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/cni/interconnects" \
173
+ -H "Authorization: Bearer ${CF_TOKEN}"
174
+
175
+ # Create interconnect
176
+ curl -X POST "https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/cni/interconnects?validate_only=true" \
177
+ -H "Authorization: Bearer ${CF_TOKEN}" -H "Content-Type: application/json" \
178
+ -d '{"account": "id", "slot_id": "slot_abc", "type": "direct", "facility": "EWR1", "speed": "10G"}'
179
+
180
+ # LOA PDF
181
+ curl "https://api.cloudflare.com/client/v4/accounts/${ACCOUNT_ID}/cni/interconnects/${ICON_ID}/loa" \
182
+ -H "Authorization: Bearer ${CF_TOKEN}" --output loa.pdf
183
+ ```
184
+
185
+ ## Not Available via API
186
+
187
+ **Missing Capabilities:**
188
+ - BGP session state query (use Dashboard or BGP logs)
189
+ - Bandwidth utilization metrics (use external monitoring)
190
+ - Traffic statistics per interconnect
191
+ - Historical uptime/downtime data
192
+ - Light level readings (contact account team)
193
+ - Maintenance window scheduling (notifications only)
194
+
195
+ ## Resources
196
+
197
+ - [API Docs](https://developers.cloudflare.com/api/resources/network_interconnects/)
198
+ - [TypeScript SDK](https://github.com/cloudflare/cloudflare-typescript)
199
+ - [Python SDK](https://github.com/cloudflare/cloudflare-python)