@zackbart/connecta 0.28.1 → 0.29.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 (319) hide show
  1. package/CHANGELOG.md +788 -5
  2. package/README.md +62 -42
  3. package/bin/connecta.mjs +110 -139
  4. package/bin/meta-tool-names.d.mts +2 -0
  5. package/bin/meta-tool-names.mjs +9 -0
  6. package/bin/version.mjs +3 -0
  7. package/dist/access-tokens.js +53 -63
  8. package/dist/activity-request.js +8 -0
  9. package/dist/activity.d.ts +76 -42
  10. package/dist/activity.js +110 -42
  11. package/dist/auth/clerk-sdk/client.d.ts +65 -0
  12. package/dist/auth/clerk-sdk/client.js +5 -0
  13. package/dist/auth/clerk-sdk/generated.js +1845 -0
  14. package/dist/auth/clerk-transport.js +19 -0
  15. package/dist/auth/clerk.d.ts +17 -7
  16. package/dist/auth/clerk.js +189 -107
  17. package/dist/auth/cloudflare-access.js +25 -26
  18. package/dist/auth/downstream-client-metadata.d.ts +29 -0
  19. package/dist/auth/downstream-client-metadata.js +133 -0
  20. package/dist/auth/downstream-oauth.js +1584 -1580
  21. package/dist/auth/downstream-revocation.js +106 -0
  22. package/dist/auth/oauth-token-response.js +231 -0
  23. package/dist/auth/oauth-v2-migration.js +116 -0
  24. package/dist/auth/static-oauth.js +93 -71
  25. package/dist/auth-elicitation.js +283 -0
  26. package/dist/branding.d.ts +8 -16
  27. package/dist/branding.js +26 -59
  28. package/dist/byte-read-response.js +39 -0
  29. package/dist/call-admission.js +12 -16
  30. package/dist/catalog-cache.js +739 -0
  31. package/dist/catalog-drift.d.ts +50 -15
  32. package/dist/catalog-drift.js +365 -128
  33. package/dist/catalog-fingerprint.js +2 -4
  34. package/dist/catalog-freshness.js +13 -0
  35. package/dist/catalog-limits.js +2 -2
  36. package/dist/catalog-service.js +368 -224
  37. package/dist/catalog.js +43 -84
  38. package/dist/concurrency.js +3 -4
  39. package/dist/config-defaults.d.ts +39 -0
  40. package/dist/config-defaults.js +46 -0
  41. package/dist/config-schema.d.ts +181 -0
  42. package/dist/config-schema.js +435 -0
  43. package/dist/config-value-sources.js +102 -0
  44. package/dist/config.d.ts +631 -0
  45. package/dist/config.js +503 -0
  46. package/dist/connector-access.d.ts +1 -0
  47. package/dist/connector-access.js +13 -15
  48. package/dist/connector-caller.d.ts +8 -0
  49. package/dist/connector-caller.js +15 -6
  50. package/dist/connector-scope.js +1 -1
  51. package/dist/connectors/api-connector.d.ts +59 -7
  52. package/dist/connectors/api-connector.js +106 -19
  53. package/dist/connectors/api.js +4 -1
  54. package/dist/connectors/guarded-fetch.d.ts +144 -0
  55. package/dist/connectors/guarded-fetch.js +84 -35
  56. package/dist/connectors/negotiation-cache.js +46 -0
  57. package/dist/connectors/option-shapes.js +27 -0
  58. package/dist/connectors/remote-mcp.d.ts +30 -4
  59. package/dist/connectors/remote-mcp.js +1774 -320
  60. package/dist/connectors/resource-uri.js +335 -0
  61. package/dist/credential-contract.d.ts +10 -0
  62. package/dist/credential-rules.js +1 -3
  63. package/dist/credential-url.js +108 -0
  64. package/dist/credentials.d.ts +6 -1
  65. package/dist/credentials.js +27 -18
  66. package/dist/d1.d.ts +130 -0
  67. package/dist/d1.js +290 -0
  68. package/dist/describe-config.d.ts +165 -0
  69. package/dist/describe-config.js +315 -0
  70. package/dist/described.js +106 -0
  71. package/dist/downstream-input-context.js +119 -0
  72. package/dist/downstream-input.js +323 -0
  73. package/dist/errors.d.ts +97 -20
  74. package/dist/errors.js +158 -80
  75. package/dist/execute.js +453 -305
  76. package/dist/executor-admission.d.ts +1 -0
  77. package/dist/executor-admission.js +11 -15
  78. package/dist/executor-contract.d.ts +20 -0
  79. package/dist/executor-contract.js +48 -0
  80. package/dist/executor-result.js +24 -9
  81. package/dist/executors/quickjs-child.js +3 -4
  82. package/dist/executors/quickjs-runtime.js +147 -59
  83. package/dist/executors/quickjs.js +29 -35
  84. package/dist/favicon.js +1 -2
  85. package/dist/fix-prompt.js +1 -3
  86. package/dist/guest-runtime.js +188 -0
  87. package/dist/guest-types.d.ts +176 -0
  88. package/dist/guest-types.js +1 -0
  89. package/dist/html-security.js +24 -0
  90. package/dist/identity.js +1 -3
  91. package/dist/inbound-credential.js +52 -0
  92. package/dist/index.d.ts +24 -256
  93. package/dist/index.js +65 -478
  94. package/dist/invocation-auth.js +69 -0
  95. package/dist/invocation.js +230 -73
  96. package/dist/json-schema.d.ts +1 -1
  97. package/dist/mcp-client-context.js +35 -0
  98. package/dist/mcp-result.js +11 -7
  99. package/dist/meta-output.js +76 -0
  100. package/dist/meta-tool-names.d.ts +2 -0
  101. package/dist/meta-tool-names.js +3 -0
  102. package/dist/meta-tools.js +285 -209
  103. package/dist/module-contracts.d.ts +8 -23
  104. package/dist/node.d.ts +0 -2
  105. package/dist/node.js +2 -2
  106. package/dist/oauth-callback-outcome.js +1 -3
  107. package/dist/oauth-handoff.js +117 -0
  108. package/dist/oauth-sealing.js +20 -0
  109. package/dist/operator-record.d.ts +137 -0
  110. package/dist/operator-record.js +420 -0
  111. package/dist/operator-ui/assets.js +31 -0
  112. package/dist/operator-ui/contract.d.ts +72 -0
  113. package/dist/operator-ui/contract.js +1 -0
  114. package/dist/operator-ui/fix-prompts.d.ts +18 -0
  115. package/dist/operator-ui/generated.js +5 -4
  116. package/dist/operator-ui/model.d.ts +12 -87
  117. package/dist/operator-ui/model.js +2 -9
  118. package/dist/operator-ui/setup-commands.js +1 -3
  119. package/dist/operator-ui/view.d.ts +323 -0
  120. package/dist/operator-ui/view.js +62 -189
  121. package/dist/page-styles.js +2 -3
  122. package/dist/program-source.js +14 -2
  123. package/dist/{exempt-writes.js → program-writes.js} +55 -18
  124. package/dist/provider.d.ts +142 -0
  125. package/dist/provider.js +187 -0
  126. package/dist/providers/_shared/google/result-size.js +57 -0
  127. package/dist/providers/_shared/google/service-account.d.ts +58 -0
  128. package/dist/providers/_shared/google/service-account.js +500 -0
  129. package/dist/providers/_shared/google/workspace.d.ts +276 -0
  130. package/dist/providers/_shared/google/workspace.js +518 -0
  131. package/dist/providers/{basecamp.d.ts → basecamp/index.d.ts} +6 -28
  132. package/dist/providers/basecamp/index.js +997 -0
  133. package/dist/providers/basecamp/skill.generated.js +9 -0
  134. package/dist/providers/{breeze.d.ts → breeze/index.d.ts} +2 -2
  135. package/dist/providers/{breeze.js → breeze/index.js} +184 -140
  136. package/dist/providers/breeze/skill.generated.js +9 -0
  137. package/dist/providers/{ccb.d.ts → ccb/index.d.ts} +2 -2
  138. package/dist/providers/{ccb.js → ccb/index.js} +271 -116
  139. package/dist/providers/ccb/skill.generated.js +9 -0
  140. package/dist/providers/{cloudflare.d.ts → cloudflare/index.d.ts} +8 -7
  141. package/dist/providers/{cloudflare.js → cloudflare/index.js} +171 -738
  142. package/dist/providers/cloudflare/skill.generated.js +10 -0
  143. package/dist/providers/docs/index.d.ts +54 -0
  144. package/dist/providers/docs/index.js +1237 -0
  145. package/dist/providers/docs/skill.generated.js +9 -0
  146. package/dist/providers/drive/index.d.ts +53 -0
  147. package/dist/providers/drive/index.js +1523 -0
  148. package/dist/providers/drive/skill.generated.js +9 -0
  149. package/dist/providers/forms/index.d.ts +54 -0
  150. package/dist/providers/forms/index.js +1217 -0
  151. package/dist/providers/forms/skill.generated.js +11 -0
  152. package/dist/providers/github/auth.d.ts +32 -0
  153. package/dist/providers/github/auth.js +361 -0
  154. package/dist/providers/github/hosted.js +218 -0
  155. package/dist/providers/github/index.d.ts +13 -0
  156. package/dist/providers/github/index.js +140 -0
  157. package/dist/providers/github/key.js +100 -0
  158. package/dist/providers/github/rest.js +321 -0
  159. package/dist/providers/github/scope.d.ts +29 -0
  160. package/dist/providers/github/scope.js +124 -0
  161. package/dist/providers/github/skill.generated.js +8 -0
  162. package/dist/providers/gmail/index.d.ts +51 -0
  163. package/dist/providers/gmail/index.js +1436 -0
  164. package/dist/providers/gmail/skill.generated.js +9 -0
  165. package/dist/providers/{linear.d.ts → linear/index.d.ts} +11 -14
  166. package/dist/providers/linear/index.js +352 -0
  167. package/dist/providers/linear/skill.generated.js +8 -0
  168. package/dist/providers/{mixpanel.d.ts → mixpanel/index.d.ts} +5 -10
  169. package/dist/providers/mixpanel/index.js +416 -0
  170. package/dist/providers/mixpanel/skill.generated.js +9 -0
  171. package/dist/providers/{notion.d.ts → notion/index.d.ts} +8 -8
  172. package/dist/providers/{notion.js → notion/index.js} +226 -239
  173. package/dist/providers/notion/skill.generated.js +10 -0
  174. package/dist/providers/{overflow.d.ts → overflow/index.d.ts} +2 -2
  175. package/dist/providers/{overflow.js → overflow/index.js} +74 -111
  176. package/dist/providers/overflow/skill.generated.js +8 -0
  177. package/dist/providers/{planning-center.d.ts → planning-center/index.d.ts} +2 -2
  178. package/dist/providers/{planning-center.js → planning-center/index.js} +264 -104
  179. package/dist/providers/planning-center/skill.generated.js +10 -0
  180. package/dist/providers/{revenuecat.d.ts → revenuecat/index.d.ts} +5 -10
  181. package/dist/providers/revenuecat/index.js +557 -0
  182. package/dist/providers/revenuecat/skill.generated.js +11 -0
  183. package/dist/providers/sheets/index.d.ts +54 -0
  184. package/dist/providers/sheets/index.js +1237 -0
  185. package/dist/providers/sheets/skill.generated.js +10 -0
  186. package/dist/providers/slides/index.d.ts +53 -0
  187. package/dist/providers/slides/index.js +2645 -0
  188. package/dist/providers/slides/skill.generated.js +9 -0
  189. package/dist/providers/{stripe.d.ts → stripe/index.d.ts} +5 -12
  190. package/dist/providers/stripe/index.js +266 -0
  191. package/dist/providers/stripe/skill.generated.js +11 -0
  192. package/dist/providers/{tithely.d.ts → tithely/index.d.ts} +2 -2
  193. package/dist/providers/{tithely.js → tithely/index.js} +60 -91
  194. package/dist/providers/tithely/skill.generated.js +8 -0
  195. package/dist/providers/{vercel.d.ts → vercel/index.d.ts} +8 -8
  196. package/dist/providers/vercel/index.js +1038 -0
  197. package/dist/providers/vercel/mcp-ownership.js +212 -0
  198. package/dist/providers/vercel/skill.generated.js +11 -0
  199. package/dist/registry.d.ts +108 -171
  200. package/dist/registry.js +513 -925
  201. package/dist/request-state.js +21 -0
  202. package/dist/resource-read.js +100 -0
  203. package/dist/result-shapes.js +17 -49
  204. package/dist/retired-toolkits.js +1 -1
  205. package/dist/routes/access-tokens.js +3 -6
  206. package/dist/routes/activity-context.js +21 -0
  207. package/dist/routes/activity-disclosure.js +40 -0
  208. package/dist/routes/activity.js +59 -21
  209. package/dist/routes/actor-labels.js +3 -50
  210. package/dist/routes/connect.js +221 -0
  211. package/dist/routes/credentials.js +15 -27
  212. package/dist/routes/mcp.js +356 -130
  213. package/dist/routes/oauth-client-metadata.js +15 -0
  214. package/dist/routes/oauth-management.js +45 -107
  215. package/dist/routes/oauth.js +110 -57
  216. package/dist/routes/operator.js +3 -3
  217. package/dist/routes/shared.d.ts +25 -64
  218. package/dist/routes/shared.js +160 -80
  219. package/dist/routes/skills.js +30 -0
  220. package/dist/routes/ui-config.js +225 -0
  221. package/dist/routes/ui-data.js +40 -35
  222. package/dist/routes/ui.js +66 -56
  223. package/dist/runtime/admission.js +4 -2
  224. package/dist/runtime/call-admission.js +3 -1
  225. package/dist/runtime/connector-scope.js +1 -4
  226. package/dist/runtime/run.js +10 -39
  227. package/dist/runtime/services.js +12 -117
  228. package/dist/runtime/shared-read.js +1 -3
  229. package/dist/runtime/storage.js +8 -1
  230. package/dist/sent-secrets.d.ts +52 -0
  231. package/dist/sent-secrets.js +474 -0
  232. package/dist/server.js +28 -71
  233. package/dist/skills.js +406 -174
  234. package/dist/sqlite.d.ts +48 -0
  235. package/dist/sqlite.js +166 -0
  236. package/dist/storage/keys.js +428 -0
  237. package/dist/storage/memory.js +7 -0
  238. package/dist/storage/sql.d.ts +66 -0
  239. package/dist/storage/sql.js +534 -0
  240. package/dist/timeout.js +4 -2
  241. package/dist/tool-name.js +17 -0
  242. package/dist/tool-safety.d.ts +9 -35
  243. package/dist/tool-safety.js +20 -40
  244. package/dist/types.d.ts +320 -54
  245. package/dist/types.js +0 -1
  246. package/dist/ui.d.ts +7 -19
  247. package/dist/ui.js +76 -90
  248. package/dist/url-safety.js +3 -6
  249. package/dist/usage-guide.js +137 -0
  250. package/dist/validate.d.ts +7 -0
  251. package/dist/validate.js +309 -47
  252. package/dist/version.d.ts +1 -7
  253. package/dist/version.js +3 -7
  254. package/dist/worker.d.ts +11 -0
  255. package/dist/worker.js +434 -0
  256. package/documentation/architecture.md +664 -231
  257. package/documentation/auth.md +936 -546
  258. package/documentation/code-mode.md +501 -312
  259. package/documentation/meta-tools.md +449 -200
  260. package/documentation/operator-tests.md +93 -0
  261. package/documentation/provider-migration-0.29.md +60 -0
  262. package/examples/worker/AGENTS.md +34 -12
  263. package/examples/worker/README.md +286 -255
  264. package/examples/worker/kv-to-d1.wrangler.jsonc +26 -0
  265. package/examples/worker/scripts/copy-kv-to-d1.mjs +162 -0
  266. package/examples/worker/src/connecta.config.ts +151 -0
  267. package/examples/worker/src/index.ts +14 -197
  268. package/examples/worker/wrangler.jsonc +15 -35
  269. package/package.json +120 -54
  270. package/templates/node/.dockerignore +1 -2
  271. package/templates/node/.env.example +20 -21
  272. package/templates/node/AGENTS.md +21 -17
  273. package/templates/node/Dockerfile +3 -5
  274. package/templates/node/README.md +133 -58
  275. package/templates/node/docker-compose.yml +11 -12
  276. package/templates/node/package.json +4 -2
  277. package/templates/node/src/connecta.config.ts +119 -0
  278. package/templates/node/src/index.ts +9 -154
  279. package/templates/node/src/provision-token.ts +17 -0
  280. package/AGENTS.md +0 -170
  281. package/dist/artifacts/connector.d.ts +0 -58
  282. package/dist/artifacts/connector.js +0 -730
  283. package/dist/artifacts/document.js +0 -86
  284. package/dist/artifacts/guide.js +0 -140
  285. package/dist/artifacts/html-scan.js +0 -329
  286. package/dist/artifacts/json.js +0 -78
  287. package/dist/artifacts/kv-store.d.ts +0 -20
  288. package/dist/artifacts/kv-store.js +0 -140
  289. package/dist/artifacts/markdown.js +0 -478
  290. package/dist/artifacts/module.d.ts +0 -37
  291. package/dist/artifacts/module.js +0 -66
  292. package/dist/artifacts/operations.d.ts +0 -197
  293. package/dist/artifacts/operations.js +0 -1002
  294. package/dist/artifacts/refresh.d.ts +0 -55
  295. package/dist/artifacts/refresh.js +0 -236
  296. package/dist/artifacts/routes.js +0 -206
  297. package/dist/artifacts/types.d.ts +0 -214
  298. package/dist/artifacts/types.js +0 -22
  299. package/dist/artifacts/validate.d.ts +0 -62
  300. package/dist/artifacts/validate.js +0 -651
  301. package/dist/artifacts.d.ts +0 -6
  302. package/dist/artifacts.js +0 -9
  303. package/dist/auth/bearer.d.ts +0 -11
  304. package/dist/auth/bearer.js +0 -50
  305. package/dist/providers/basecamp.js +0 -445
  306. package/dist/providers/linear.js +0 -217
  307. package/dist/providers/mixpanel.js +0 -247
  308. package/dist/providers/revenuecat.js +0 -317
  309. package/dist/providers/stripe.js +0 -253
  310. package/dist/providers/vercel.js +0 -1253
  311. package/dist/storage/file.d.ts +0 -15
  312. package/dist/storage/file.js +0 -455
  313. package/ethos.md +0 -93
  314. package/examples/worker/src/cloudflare-kv.ts +0 -43
  315. package/examples/worker/src/d1-activity-row.ts +0 -155
  316. package/examples/worker/src/d1-activity.ts +0 -147
  317. package/examples/worker/src/d1-storage.ts +0 -138
  318. package/examples/worker/src/r2-artifact-blobs.ts +0 -29
  319. package/templates/node/src/file-activity.ts +0 -182
@@ -0,0 +1,10 @@
1
+ // Generated by scripts/generate-providers.mjs; do not edit.
2
+ export const skill = {
3
+ "content": "- This is the explicit `surface: \"api\"` complement. Hosted MCP is the default; configure each under a separate connector id with independent authorization and recovery. Never fall back to another credential after an error or repeat a write to recover its response.\n- Named tools are canonical for reads in read-only programs. `cloudflare_api_get` covers other GET endpoints, including text and byte-preserving `responseType: \"base64\"` downloads. Hosted `search` discovers API contracts; hosted `execute` owns ordinary JSON mutations. Execute remains a write even for a GET-only program.\n- `cloudflare_api_mutate` retains only a demonstrated auth/header gap: Global API Key identity, or R2 bucket endpoints (including bucket creation at the collection) requiring `cf-r2-jurisdiction`, or bucket storage-class edits with `PATCH /accounts/{accountId}/r2/buckets/{bucketName}` and `cf-r2-storage-class: Standard` or `InfrequentAccess`. The vendor request helper cannot send either header. Storage-class edits do not require a jurisdiction header for ordinary buckets. Ordinary headers such as `Accept` do not qualify. Other API-token JSON mutations are refused locally and must use hosted `execute`.\n- `cloudflare_api_upload` retains byte-safe upload bodies, explicit endpoint headers and multipart field/file encoding for Worker scripts, KV values, R2 objects, Images, Stream and Pages uploads. PUT owns Worker scripts, KV values and R2 objects; POST owns Worker versions, Images, Stream collection uploads and Pages uploads. Stream metadata edits, copy-from-URL and direct-upload URL creation use hosted `execute`. Other method/path pairs are refused, regardless of claimed content type. The vendor supports raw/multipart bodies, but its helper returns non-JSON bodies as text and exposes only content type on the request. Use API uploads when those compatibility requirements matter. Raw tools take a path below `/client/v4`; absolute URLs, traversal and embedded query strings are refused. `Authorization`, `Cookie`, `Host`, `Content-Length`, `Content-Type`, and `Transfer-Encoding` are connector-owned headers and cannot be overridden.\n- Useful paths include `/accounts/{accountId}/images/v1`, `/accounts/{accountId}/stream`, `/accounts/{accountId}/d1/database`, `/accounts/{accountId}/queues`, `/accounts/{accountId}/r2/buckets/{bucketName}/cors`, and `/accounts/{accountId}/r2/metrics`. Change CORS with hosted `execute`, except for the explicit legacy-identity/header gaps above.\n- Lists use `page`/`perPage` and return `page.hasMore`; rulesets, R2 buckets/objects and KV keys instead use opaque cursors. `list_worker_scripts` is unpaginated. Use `get_zone_setting` for one setting; Cloudflare deprecated the bulk `/zones/{zoneId}/settings` read. Reads project resource identity and state; `raw: true` returns dropped vendor fields.\n- - Honor vendor rate-limit waits. The documented 1,200 calls per five minutes are cumulative across a user and its tokens.\n- Read state before replacement, rollback or purge. Prefer targeted cache purges in hosted `execute`. Mutations/uploads stay write-classified; approval belongs to the host and program access to the configured pool.\n\n\n- Hosted `execute` owns ordinary mutations. The separate `surface: \"api\"`\n complement owns read-only-program reads, binary/header-compatible uploads\n and legacy Global API Key or R2 jurisdiction/storage-class mutations. Configure distinct\n connector ids and authorize each explicitly; there is no credential fallback.\n- Resolve account and zone ids independently. Defaults do not constrain token permissions. Distinguish missing or revoked credentials from missing product permissions, and honor supplied rate-limit waits.\n- The catalog contains `search` and `execute`. Search runs code against\n Cloudflare's OpenAPI document. Execute runs code that may call any authorized\n Cloudflare API endpoint.\n- Use `search` to find the exact method, path, and fields before writing an\n execute program. Do not guess an endpoint from product naming.\n- Connecta classifies `execute` as a write because it can mix GET, POST,\n PUT, PATCH, and DELETE requests inside one program. Fetch\n `skills({ name: \"usage\" })` for guest calls and routing. The MCP schema\n cannot establish that arbitrary code is read-only.\n- Keep returned values small. Filter and project inside the Cloudflare MCP\n program, then reduce again inside Connecta's `execute_code` when several\n calls must be joined.\n- OAuth and API-token permissions remain the provider-side boundary. An\n `auth_required` failure needs authorization or a token with the required\n Cloudflare permission.\n",
4
+ "instructionsHeading": "Account instructions",
5
+ "fragments": {
6
+ "guide_0": "- This is the explicit `surface: \"api\"` complement. Hosted MCP is the default; configure each under a separate connector id with independent authorization and recovery. Never fall back to another credential after an error or repeat a write to recover its response.\n- Named tools are canonical for reads in read-only programs. `cloudflare_api_get` covers other GET endpoints, including text and byte-preserving `responseType: \"base64\"` downloads. Hosted `search` discovers API contracts; hosted `execute` owns ordinary JSON mutations. Execute remains a write even for a GET-only program.\n- `cloudflare_api_mutate` retains only a demonstrated auth/header gap: Global API Key identity, or R2 bucket endpoints (including bucket creation at the collection) requiring `cf-r2-jurisdiction`, or bucket storage-class edits with `PATCH /accounts/{accountId}/r2/buckets/{bucketName}` and `cf-r2-storage-class: Standard` or `InfrequentAccess`. The vendor request helper cannot send either header. Storage-class edits do not require a jurisdiction header for ordinary buckets. Ordinary headers such as `Accept` do not qualify. Other API-token JSON mutations are refused locally and must use hosted `execute`.\n- `cloudflare_api_upload` retains byte-safe upload bodies, explicit endpoint headers and multipart field/file encoding for Worker scripts, KV values, R2 objects, Images, Stream and Pages uploads. PUT owns Worker scripts, KV values and R2 objects; POST owns Worker versions, Images, Stream collection uploads and Pages uploads. Stream metadata edits, copy-from-URL and direct-upload URL creation use hosted `execute`. Other method/path pairs are refused, regardless of claimed content type. The vendor supports raw/multipart bodies, but its helper returns non-JSON bodies as text and exposes only content type on the request. Use API uploads when those compatibility requirements matter. Raw tools take a path below `/client/v4`; absolute URLs, traversal and embedded query strings are refused. `Authorization`, `Cookie`, `Host`, `Content-Length`, `Content-Type`, and `Transfer-Encoding` are connector-owned headers and cannot be overridden.\n- Useful paths include `/accounts/{accountId}/images/v1`, `/accounts/{accountId}/stream`, `/accounts/{accountId}/d1/database`, `/accounts/{accountId}/queues`, `/accounts/{accountId}/r2/buckets/{bucketName}/cors`, and `/accounts/{accountId}/r2/metrics`. Change CORS with hosted `execute`, except for the explicit legacy-identity/header gaps above.\n- Lists use `page`/`perPage` and return `page.hasMore`; rulesets, R2 buckets/objects and KV keys instead use opaque cursors. `list_worker_scripts` is unpaginated. Use `get_zone_setting` for one setting; Cloudflare deprecated the bulk `/zones/{zoneId}/settings` read. Reads project resource identity and state; `raw: true` returns dropped vendor fields.\n- ",
7
+ "guide_1": "- Honor vendor rate-limit waits. The documented 1,200 calls per five minutes are cumulative across a user and its tokens.\n- Read state before replacement, rollback or purge. Prefer targeted cache purges in hosted `execute`. Mutations/uploads stay write-classified; approval belongs to the host and program access to the configured pool.\n",
8
+ "guide_2": "\n\n- Hosted `execute` owns ordinary mutations. The separate `surface: \"api\"`\n complement owns read-only-program reads, binary/header-compatible uploads\n and legacy Global API Key or R2 jurisdiction/storage-class mutations. Configure distinct\n connector ids and authorize each explicitly; there is no credential fallback.\n- Resolve account and zone ids independently. Defaults do not constrain token permissions. Distinguish missing or revoked credentials from missing product permissions, and honor supplied rate-limit waits.\n- The catalog contains `search` and `execute`. Search runs code against\n Cloudflare's OpenAPI document. Execute runs code that may call any authorized\n Cloudflare API endpoint.\n- Use `search` to find the exact method, path, and fields before writing an\n execute program. Do not guess an endpoint from product naming.\n- Connecta classifies `execute` as a write because it can mix GET, POST,\n PUT, PATCH, and DELETE requests inside one program. Fetch\n `skills({ name: \"usage\" })` for guest calls and routing. The MCP schema\n cannot establish that arbitrary code is read-only.\n- Keep returned values small. Filter and project inside the Cloudflare MCP\n program, then reduce again inside Connecta's `execute_code` when several\n calls must be joined.\n- OAuth and API-token permissions remain the provider-side boundary. An\n `auth_required` failure needs authorization or a token with the required\n Cloudflare permission.\n"
9
+ }
10
+ };
@@ -0,0 +1,54 @@
1
+ import { type GoogleWorkspaceOptions } from "../_shared/google/workspace.js";
2
+ export type { GoogleServiceAccount, GoogleSubjectContext, GoogleWorkspaceOptions, GoogleWorkspaceSubject, } from "../_shared/google/workspace.js";
3
+ /**
4
+ * The Docs API root. Unlike Gmail there is no per-user path segment: the
5
+ * delegated token's subject decides which documents a request can reach.
6
+ */
7
+ export declare const DOCS_API_BASE_URL = "https://docs.googleapis.com/v1";
8
+ /**
9
+ * Exactly the scope this connection requests, and exactly what the Admin
10
+ * console's domain-wide delegation entry must list for it. `documents` reads
11
+ * and edits Docs the user can reach; it lists nothing and touches no other
12
+ * Drive file type.
13
+ */
14
+ export declare const DOCS_SCOPES: readonly ["https://www.googleapis.com/auth/documents"];
15
+ /** Options for {@link docs}: the shared Workspace delegation options. */
16
+ export type DocsOptions = GoogleWorkspaceOptions;
17
+ /**
18
+ * A maintained Google Docs connection acting as each signed-in Workspace user
19
+ * through a delegated service account.
20
+ *
21
+ * Setup, once per Workspace (shared with every Workspace provider):
22
+ *
23
+ * 1. In a Google Cloud project, enable the **Google Docs API**.
24
+ * 2. Create a service account. Grant it no IAM roles: delegation, not project
25
+ * permission, is what reaches documents.
26
+ * 3. Create a JSON key for it. If key creation is refused, the organization
27
+ * policy `iam.disableServiceAccountKeyCreation` is enforced; an org policy
28
+ * administrator can override it for this project alone.
29
+ * 4. Copy the service account's numeric **client ID** (the key's `client_id`).
30
+ * 5. As a Workspace super admin: Admin console → Security → Access and data
31
+ * control → API controls → Manage Domain Wide Delegation → Add new (or edit
32
+ * the service account's existing entry). Paste the client ID and add
33
+ * exactly this scope ({@link DOCS_SCOPES}):
34
+ * `https://www.googleapis.com/auth/documents`. One entry lists every
35
+ * Workspace provider's scopes, comma-separated. A new grant can take up to
36
+ * 24 hours to apply.
37
+ * 6. Configure inbound auth: a `subject` function is never asked about an
38
+ * open deployment's anonymous requests, which fail `auth_required`.
39
+ * Then give the deployment the key as a secret and map callers to accounts:
40
+ *
41
+ * ```ts
42
+ * docs("docs", {
43
+ * purpose: "Staff meeting notes and sermon drafts",
44
+ * serviceAccount: env.GOOGLE_SERVICE_ACCOUNT_JSON,
45
+ * subject: (identity) => accounts[identity.principal?.id ?? ""],
46
+ * });
47
+ * ```
48
+ *
49
+ * Reads run in programs. `create_document`, `append_text`, and `insert_text`
50
+ * are additive writes the host approves through call_destructive_tool or a
51
+ * trusted program; `replace_all_text` and `batch_update_document` are
52
+ * destructive.
53
+ */
54
+ export declare const docs: import("../../provider.js").ProviderFactory<GoogleWorkspaceOptions>;