@zackbart/connecta 0.34.1 → 0.36.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 (441) hide show
  1. package/CHANGELOG.md +418 -0
  2. package/README.md +65 -105
  3. package/SECURITY.md +3 -2
  4. package/bin/connecta.mjs +41 -16
  5. package/bin/version.mjs +1 -1
  6. package/dist/access-tokens.d.ts +2 -1
  7. package/dist/access-tokens.js +66 -30
  8. package/dist/activity.d.ts +1 -1
  9. package/dist/activity.js +2 -0
  10. package/dist/agent-config.d.ts +23 -0
  11. package/dist/agent-config.js +59 -0
  12. package/dist/agent-description.js +16 -0
  13. package/dist/agent-identity.js +4 -4
  14. package/dist/agent-observation.js +39 -0
  15. package/dist/auth/clerk-sdk/client.d.ts +2 -0
  16. package/dist/auth/clerk-sdk/generated.js +554 -563
  17. package/dist/auth/clerk-transport.js +70 -3
  18. package/dist/auth/clerk.d.ts +13 -0
  19. package/dist/auth/clerk.js +653 -246
  20. package/dist/auth/cloudflare-access.js +46 -42
  21. package/dist/auth/downstream-client-metadata.js +2 -2
  22. package/dist/auth/downstream-oauth.js +2044 -1161
  23. package/dist/auth/downstream-revocation.js +88 -88
  24. package/dist/auth/native-call.js +20 -0
  25. package/dist/auth/native.js +184 -0
  26. package/dist/auth/oauth-start-reset.js +11 -5
  27. package/dist/auth/oauth-token-response.js +121 -102
  28. package/dist/auth/oauth-v2-migration.js +97 -78
  29. package/dist/auth/renewable-grant.js +10 -0
  30. package/dist/auth/static-oauth.js +751 -281
  31. package/dist/auth/vercel-agent.js +266 -0
  32. package/dist/auth-admission.js +204 -0
  33. package/dist/auth-elicitation.js +350 -241
  34. package/dist/authorization-handoff.js +164 -90
  35. package/dist/call-admission-context.js +3 -10
  36. package/dist/call-admission.js +2 -0
  37. package/dist/call-classification.js +9 -0
  38. package/dist/call-recovery.js +32 -13
  39. package/dist/canonical-json.js +8 -0
  40. package/dist/catalog-cache.js +369 -213
  41. package/dist/catalog-service.js +659 -530
  42. package/dist/catalog.js +5 -1
  43. package/dist/concurrency.js +0 -25
  44. package/dist/config-defaults.d.ts +1 -0
  45. package/dist/config-defaults.js +1 -0
  46. package/dist/config-schema.d.ts +3 -1
  47. package/dist/config-schema.js +13 -3
  48. package/dist/config.d.ts +40 -6
  49. package/dist/config.js +40 -26
  50. package/dist/connector-caller.d.ts +4 -0
  51. package/dist/connector-caller.js +17 -4
  52. package/dist/connectors/api-connector.d.ts +29 -7
  53. package/dist/connectors/api-connector.js +145 -57
  54. package/dist/connectors/guarded-fetch.d.ts +51 -17
  55. package/dist/connectors/guarded-fetch.js +215 -121
  56. package/dist/connectors/negotiation-cache.js +20 -10
  57. package/dist/connectors/remote-mcp.d.ts +10 -30
  58. package/dist/connectors/remote-mcp.js +955 -563
  59. package/dist/d1.js +10 -243
  60. package/dist/derived-context.js +5 -0
  61. package/dist/describe-config.d.ts +3 -1
  62. package/dist/describe-config.js +2 -0
  63. package/dist/downstream-input.js +347 -260
  64. package/dist/errors.d.ts +87 -6
  65. package/dist/errors.js +114 -4
  66. package/dist/execute.js +87 -50
  67. package/dist/executor-admission.js +3 -0
  68. package/dist/executors/quickjs.js +163 -112
  69. package/dist/guarded-transport.js +50 -0
  70. package/dist/guest-runtime.js +1 -1
  71. package/dist/http/client.js +439 -0
  72. package/dist/http/errors.js +558 -0
  73. package/dist/http/fields.js +49 -0
  74. package/dist/http/hatch-paging.js +318 -0
  75. package/dist/http/hatch.js +1279 -0
  76. package/dist/http/json-schema.js +267 -0
  77. package/dist/http/node-transport.js +241 -0
  78. package/dist/http/oauth.js +162 -0
  79. package/dist/http/paging.js +227 -0
  80. package/dist/http/provider.js +221 -0
  81. package/dist/http/safety.js +82 -0
  82. package/dist/http/services.js +79 -0
  83. package/dist/http/tools.js +379 -0
  84. package/dist/http/vendor-index.js +138 -0
  85. package/dist/http/vendor.js +448 -0
  86. package/dist/http/write-request.js +66 -0
  87. package/dist/http-policy.d.ts +11 -0
  88. package/dist/http-policy.js +45 -0
  89. package/dist/inbound-credential.js +1 -1
  90. package/dist/index.d.ts +2 -2
  91. package/dist/index.js +4 -0
  92. package/dist/invocation-auth.js +30 -19
  93. package/dist/invocation.js +218 -85
  94. package/dist/mcp-result.js +0 -4
  95. package/dist/membership.d.ts +4 -0
  96. package/dist/meta-output.js +1 -1
  97. package/dist/meta-tools.js +531 -406
  98. package/dist/native-recovery.js +52 -0
  99. package/dist/native-tools.js +382 -0
  100. package/dist/node.d.ts +4 -3
  101. package/dist/node.js +45 -8
  102. package/dist/oauth-handoff.js +177 -104
  103. package/dist/oauth-partition.js +6 -20
  104. package/dist/oauth-sealing.js +6 -7
  105. package/dist/operation-vocabulary.js +101 -0
  106. package/dist/operator-record.d.ts +2 -2
  107. package/dist/operator-record.js +17 -4
  108. package/dist/operator-ui/contract.d.ts +8 -3
  109. package/dist/operator-ui/generated.js +4 -4
  110. package/dist/operator-ui/model.d.ts +2 -3
  111. package/dist/program-writes.js +47 -26
  112. package/dist/provider-call-facts.d.ts +115 -0
  113. package/dist/provider-call-facts.js +182 -0
  114. package/dist/provider-call.d.ts +112 -0
  115. package/dist/provider-call.js +271 -0
  116. package/dist/provider.d.ts +65 -31
  117. package/dist/provider.js +116 -39
  118. package/dist/providers/_shared/google/hatch.js +91 -0
  119. package/dist/providers/_shared/google/kit.js +427 -0
  120. package/dist/providers/_shared/google/result-size.js +15 -2
  121. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  122. package/dist/providers/_shared/google/service-account.js +8 -4
  123. package/dist/providers/_shared/google/workspace.d.ts +6 -210
  124. package/dist/providers/_shared/google/workspace.js +6 -425
  125. package/dist/providers/_shared/rest/compact-index.js +86 -0
  126. package/dist/providers/_shared/rest/kit.js +146 -0
  127. package/dist/providers/_shared/rest/operation-index.js +230 -14
  128. package/dist/providers/_shared/rest/response-media.js +11 -0
  129. package/dist/providers/_shared/rest/value-safety.js +353 -195
  130. package/dist/providers/_shared/sensitive-fields.js +27 -0
  131. package/dist/providers/breeze/api.js +584 -0
  132. package/dist/providers/breeze/index.d.ts +1 -3
  133. package/dist/providers/breeze/index.js +67 -1420
  134. package/dist/providers/breeze/openapi.generated.js +60 -0
  135. package/dist/providers/breeze/skill.generated.js +2 -6
  136. package/dist/providers/breeze/tools.js +696 -0
  137. package/dist/providers/ccb/api.js +496 -0
  138. package/dist/providers/ccb/index.d.ts +15 -37
  139. package/dist/providers/ccb/index.js +77 -1702
  140. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  141. package/dist/providers/ccb/lib/constants.js +74 -0
  142. package/dist/providers/ccb/lib/guide.js +9 -0
  143. package/dist/providers/ccb/lib/verdicts.js +387 -0
  144. package/dist/providers/ccb/openapi.generated.js +397 -0
  145. package/dist/providers/ccb/safety.js +295 -0
  146. package/dist/providers/ccb/skill.generated.js +2 -6
  147. package/dist/providers/ccb/tools.js +853 -0
  148. package/dist/providers/cloudflare/api.js +1066 -0
  149. package/dist/providers/cloudflare/index.d.ts +5 -22
  150. package/dist/providers/cloudflare/index.js +79 -197
  151. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  152. package/dist/providers/cloudflare/lib/config.js +2 -0
  153. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  154. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  155. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  156. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  157. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  158. package/dist/providers/cloudflare/openapi.generated.js +4 -3
  159. package/dist/providers/cloudflare/{value-safety.js → safety.js} +487 -0
  160. package/dist/providers/cloudflare/skill.generated.js +2 -10
  161. package/dist/providers/cloudflare/tools.js +360 -0
  162. package/dist/providers/docs/api.js +51 -0
  163. package/dist/providers/docs/index.d.ts +1 -12
  164. package/dist/providers/docs/index.js +53 -1165
  165. package/dist/providers/docs/lib/constants.d.ts +18 -0
  166. package/dist/providers/docs/lib/constants.js +18 -0
  167. package/dist/providers/docs/lib/discovery.js +26 -0
  168. package/dist/providers/docs/lib/requests.js +48 -0
  169. package/dist/providers/docs/lib/schemas.js +168 -0
  170. package/dist/providers/docs/openapi.generated.js +16 -0
  171. package/dist/providers/docs/safety.js +54 -0
  172. package/dist/providers/docs/skill.generated.js +2 -6
  173. package/dist/providers/docs/tools.js +801 -0
  174. package/dist/providers/drive/api.js +177 -0
  175. package/dist/providers/drive/index.d.ts +1 -12
  176. package/dist/providers/drive/index.js +38 -1448
  177. package/dist/providers/drive/lib/constants.d.ts +6 -0
  178. package/dist/providers/drive/lib/constants.js +6 -0
  179. package/dist/providers/drive/lib/contracts.js +532 -0
  180. package/dist/providers/drive/lib/hatch.js +197 -0
  181. package/dist/providers/drive/openapi.generated.js +77 -0
  182. package/dist/providers/drive/safety.js +90 -0
  183. package/dist/providers/drive/skill.generated.js +2 -6
  184. package/dist/providers/drive/tools.js +1290 -0
  185. package/dist/providers/forms/api.js +71 -0
  186. package/dist/providers/forms/index.d.ts +1 -12
  187. package/dist/providers/forms/index.js +49 -1145
  188. package/dist/providers/forms/lib/constants.d.ts +14 -0
  189. package/dist/providers/forms/lib/constants.js +19 -0
  190. package/dist/providers/forms/lib/hatch.js +72 -0
  191. package/dist/providers/forms/openapi.generated.js +23 -0
  192. package/dist/providers/forms/safety.js +34 -0
  193. package/dist/providers/forms/skill.generated.js +2 -8
  194. package/dist/providers/forms/tools.js +1023 -0
  195. package/dist/providers/github/api.js +150 -0
  196. package/dist/providers/github/index.d.ts +4 -5
  197. package/dist/providers/github/index.js +30 -87
  198. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  199. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  200. package/dist/providers/github/lib/discovery.js +132 -0
  201. package/dist/providers/github/lib/operations.js +58 -0
  202. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  203. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  204. package/dist/providers/github/openapi.generated.js +1216 -0
  205. package/dist/providers/github/safety.js +216 -0
  206. package/dist/providers/github/skill.generated.js +2 -5
  207. package/dist/providers/github/tools.js +506 -0
  208. package/dist/providers/gmail/api.js +114 -0
  209. package/dist/providers/gmail/index.d.ts +1 -12
  210. package/dist/providers/gmail/index.js +73 -1621
  211. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  212. package/dist/providers/gmail/lib/constants.js +16 -0
  213. package/dist/providers/gmail/lib/index.js +173 -0
  214. package/dist/providers/gmail/lib/schemas.js +176 -0
  215. package/dist/providers/gmail/lib/threading.js +120 -0
  216. package/dist/providers/gmail/openapi.generated.js +92 -0
  217. package/dist/providers/gmail/safety.js +21 -0
  218. package/dist/providers/gmail/skill.generated.js +2 -6
  219. package/dist/providers/gmail/tools.js +1435 -0
  220. package/dist/providers/overflow/api.js +1008 -0
  221. package/dist/providers/overflow/index.d.ts +1 -17
  222. package/dist/providers/overflow/index.js +60 -1488
  223. package/dist/providers/overflow/skill.generated.js +2 -5
  224. package/dist/providers/overflow/tools.js +873 -0
  225. package/dist/providers/planning-center/api.js +467 -0
  226. package/dist/providers/planning-center/index.d.ts +4 -35
  227. package/dist/providers/planning-center/index.js +69 -2445
  228. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  229. package/dist/providers/planning-center/lib/constants.js +83 -0
  230. package/dist/providers/planning-center/lib/discovery.js +40 -0
  231. package/dist/providers/planning-center/lib/guide.js +39 -0
  232. package/dist/providers/planning-center/lib/json-api.js +83 -0
  233. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  234. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  235. package/dist/providers/planning-center/safety.js +188 -0
  236. package/dist/providers/planning-center/skill.generated.js +2 -27
  237. package/dist/providers/planning-center/tools.js +1010 -0
  238. package/dist/providers/quickbooks/api.js +299 -0
  239. package/dist/providers/quickbooks/index.d.ts +13 -0
  240. package/dist/providers/quickbooks/index.js +93 -0
  241. package/dist/providers/quickbooks/lib/query.js +118 -0
  242. package/dist/providers/quickbooks/lib/writes.js +168 -0
  243. package/dist/providers/quickbooks/safety.js +222 -0
  244. package/dist/providers/quickbooks/skill.generated.js +5 -0
  245. package/dist/providers/quickbooks/tools.js +117 -0
  246. package/dist/providers/sheets/api.js +133 -0
  247. package/dist/providers/sheets/index.d.ts +4 -16
  248. package/dist/providers/sheets/index.js +61 -1172
  249. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  250. package/dist/providers/sheets/lib/constants.js +14 -0
  251. package/dist/providers/sheets/lib/hatch.js +163 -0
  252. package/dist/providers/sheets/lib/requests.js +105 -0
  253. package/dist/providers/sheets/lib/schemas.js +138 -0
  254. package/dist/providers/sheets/openapi.generated.js +30 -0
  255. package/dist/providers/sheets/safety.js +27 -0
  256. package/dist/providers/sheets/skill.generated.js +2 -7
  257. package/dist/providers/sheets/tools.js +733 -0
  258. package/dist/providers/slides/api.js +147 -0
  259. package/dist/providers/slides/index.d.ts +2 -10
  260. package/dist/providers/slides/index.js +48 -2555
  261. package/dist/providers/slides/lib/constants.d.ts +11 -0
  262. package/dist/providers/slides/lib/constants.js +11 -0
  263. package/dist/providers/slides/lib/requests.js +60 -0
  264. package/dist/providers/slides/lib/schemas.js +565 -0
  265. package/dist/providers/slides/openapi.generated.js +18 -0
  266. package/dist/providers/slides/skill.generated.js +2 -6
  267. package/dist/providers/slides/tools.js +1968 -0
  268. package/dist/providers/stripe/api.js +401 -0
  269. package/dist/providers/stripe/index.d.ts +5 -27
  270. package/dist/providers/stripe/index.js +74 -210
  271. package/dist/providers/stripe/lib/config.d.ts +4 -0
  272. package/dist/providers/stripe/lib/config.js +2 -0
  273. package/dist/providers/stripe/openapi.generated.js +4 -3
  274. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  275. package/dist/providers/stripe/skill.generated.js +2 -11
  276. package/dist/providers/stripe/tools.js +77 -0
  277. package/dist/providers/tithely/api.js +531 -0
  278. package/dist/providers/tithely/index.d.ts +17 -0
  279. package/dist/providers/tithely/index.js +86 -965
  280. package/dist/providers/tithely/skill.generated.js +2 -5
  281. package/dist/providers/tithely/tools.js +426 -0
  282. package/dist/providers/vercel/api.js +551 -0
  283. package/dist/providers/vercel/index.d.ts +9 -25
  284. package/dist/providers/vercel/index.js +65 -260
  285. package/dist/providers/vercel/lib/config.d.ts +2 -0
  286. package/dist/providers/vercel/lib/config.js +2 -0
  287. package/dist/providers/vercel/lib/index.js +117 -0
  288. package/dist/providers/vercel/lib/logs.js +100 -0
  289. package/dist/providers/vercel/lib/pin.js +270 -0
  290. package/dist/providers/vercel/openapi.generated.js +10 -5
  291. package/dist/providers/vercel/{value-safety.js → safety.js} +247 -38
  292. package/dist/providers/vercel/skill.generated.js +2 -7
  293. package/dist/providers/vercel/tools.js +642 -0
  294. package/dist/redaction-identity.js +47 -0
  295. package/dist/redaction-marker.js +125 -0
  296. package/dist/registry.d.ts +21 -15
  297. package/dist/registry.js +409 -376
  298. package/dist/routes/access-tokens.js +1 -1
  299. package/dist/routes/actor-labels.js +1 -1
  300. package/dist/routes/connect.js +1 -1
  301. package/dist/routes/dispatch.js +103 -0
  302. package/dist/routes/mcp.js +170 -79
  303. package/dist/routes/oauth.js +6 -1
  304. package/dist/routes/operator.js +2 -2
  305. package/dist/routes/shared.d.ts +5 -4
  306. package/dist/routes/shared.js +244 -177
  307. package/dist/routes/skills.js +10 -8
  308. package/dist/routes/ui-config.js +27 -3
  309. package/dist/routes/ui-data.js +21 -20
  310. package/dist/routes/ui.js +1 -1
  311. package/dist/runtime/call-admission.js +0 -26
  312. package/dist/runtime/call-entry.js +30 -0
  313. package/dist/runtime/call.js +552 -0
  314. package/dist/runtime/connector-scope.js +7 -0
  315. package/dist/runtime/credential-probe.js +34 -0
  316. package/dist/runtime/executor.js +40 -0
  317. package/dist/runtime/native-storage.js +63 -0
  318. package/dist/runtime/registry.js +27 -0
  319. package/dist/runtime/request-scope.js +72 -0
  320. package/dist/runtime/run.js +15 -7
  321. package/dist/runtime/shared-read.js +34 -5
  322. package/dist/runtime/storage.js +34 -21
  323. package/dist/sent-secrets.d.ts +194 -37
  324. package/dist/sent-secrets.js +1743 -340
  325. package/dist/server.js +5 -56
  326. package/dist/skills.js +322 -223
  327. package/dist/sqlite.js +15 -14
  328. package/dist/storage/d1-copy.js +255 -0
  329. package/dist/storage/d1-driver.js +15 -0
  330. package/dist/storage/keys.js +28 -0
  331. package/dist/storage/sql-driver.js +88 -0
  332. package/dist/storage/sql-native.js +544 -0
  333. package/dist/storage/sql-schema.d.ts +6 -0
  334. package/dist/storage/sql-schema.js +15 -0
  335. package/dist/storage/sql.d.ts +14 -20
  336. package/dist/storage/sql.js +29 -535
  337. package/dist/timeout.js +0 -26
  338. package/dist/tool-safety.js +20 -10
  339. package/dist/types.d.ts +9 -109
  340. package/dist/ui.d.ts +1 -1
  341. package/dist/ui.js +0 -1
  342. package/dist/upward.js +3 -0
  343. package/dist/usage-guide.js +3 -1
  344. package/dist/validate.d.ts +4 -2
  345. package/dist/validate.js +86 -9
  346. package/dist/version.d.ts +1 -1
  347. package/dist/version.js +1 -1
  348. package/dist/worker.js +312 -292
  349. package/dist/workspace-subject.js +5 -1
  350. package/dist/write-outcome.js +454 -34
  351. package/documentation/README.md +28 -7
  352. package/documentation/architecture.md +2409 -255
  353. package/documentation/auth.md +867 -114
  354. package/documentation/code-mode.md +49 -16
  355. package/documentation/deploying.md +164 -20
  356. package/documentation/hosted-mcp-migration.md +460 -0
  357. package/documentation/integrating.md +129 -144
  358. package/documentation/meta-tools.md +409 -32
  359. package/documentation/operating.md +27 -3
  360. package/documentation/operator-tests.md +3 -0
  361. package/documentation/operator-ui.md +84 -48
  362. package/documentation/provider-auth-migration.md +16 -63
  363. package/documentation/provider-migration-0.29.md +10 -5
  364. package/documentation/provider-migration-0.35.md +975 -0
  365. package/documentation/providers.md +1347 -0
  366. package/examples/worker/AGENTS.md +23 -9
  367. package/examples/worker/README.md +254 -135
  368. package/examples/worker/alchemy.run.ts +116 -0
  369. package/examples/worker/gitignore +10 -0
  370. package/examples/worker/src/connecta.config.ts +23 -21
  371. package/examples/worker/wrangler.jsonc +14 -5
  372. package/guides/connecting-agents.md +157 -0
  373. package/guides/how-it-works.md +156 -0
  374. package/guides/safety-and-trust.md +153 -0
  375. package/package.json +30 -50
  376. package/templates/node/.env.example +3 -0
  377. package/templates/node/README.md +22 -2
  378. package/templates/node/docker-compose.yml +1 -0
  379. package/templates/node/package.json +3 -2
  380. package/templates/node/src/connecta.config.ts +8 -0
  381. package/dist/catalog-drift.d.ts +0 -138
  382. package/dist/catalog-drift.js +0 -578
  383. package/dist/operator-ui/agents.d.ts +0 -74
  384. package/dist/operator-ui/agents.js +0 -104
  385. package/dist/operator-ui/config-summary.js +0 -565
  386. package/dist/operator-ui/connection-map.js +0 -376
  387. package/dist/operator-ui/endpoints.js +0 -221
  388. package/dist/operator-ui/fix-prompts.d.ts +0 -18
  389. package/dist/operator-ui/fix-prompts.js +0 -87
  390. package/dist/operator-ui/health.js +0 -52
  391. package/dist/operator-ui/member-page.js +0 -97
  392. package/dist/operator-ui/overview.js +0 -123
  393. package/dist/operator-ui/setup-commands.js +0 -51
  394. package/dist/operator-ui/view.d.ts +0 -401
  395. package/dist/operator-ui/view.js +0 -705
  396. package/dist/providers/_shared/request-token.js +0 -83
  397. package/dist/providers/_shared/rest/dispatch.js +0 -41
  398. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  399. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  400. package/dist/providers/_shared/rest/tools.js +0 -569
  401. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  402. package/dist/providers/basecamp/index.d.ts +0 -45
  403. package/dist/providers/basecamp/index.js +0 -997
  404. package/dist/providers/basecamp/skill.generated.js +0 -9
  405. package/dist/providers/cloudflare/rest.d.ts +0 -37
  406. package/dist/providers/cloudflare/rest.js +0 -1097
  407. package/dist/providers/github/hosted.js +0 -218
  408. package/dist/providers/github/rest.js +0 -321
  409. package/dist/providers/infisical/index.d.ts +0 -7
  410. package/dist/providers/infisical/index.js +0 -713
  411. package/dist/providers/infisical/skill.generated.js +0 -8
  412. package/dist/providers/intercom/index.d.ts +0 -24
  413. package/dist/providers/intercom/index.js +0 -121
  414. package/dist/providers/intercom/skill.generated.js +0 -8
  415. package/dist/providers/linear/index.d.ts +0 -55
  416. package/dist/providers/linear/index.js +0 -537
  417. package/dist/providers/linear/skill.generated.js +0 -8
  418. package/dist/providers/mixpanel/index.d.ts +0 -59
  419. package/dist/providers/mixpanel/index.js +0 -472
  420. package/dist/providers/mixpanel/operations.js +0 -20
  421. package/dist/providers/mixpanel/rest.js +0 -603
  422. package/dist/providers/mixpanel/skill.generated.js +0 -10
  423. package/dist/providers/mixpanel/value-safety.js +0 -16
  424. package/dist/providers/notion/index.d.ts +0 -67
  425. package/dist/providers/notion/index.js +0 -368
  426. package/dist/providers/notion/openapi.generated.js +0 -75
  427. package/dist/providers/notion/rest.d.ts +0 -24
  428. package/dist/providers/notion/rest.js +0 -1226
  429. package/dist/providers/notion/skill.generated.js +0 -11
  430. package/dist/providers/notion/value-safety.js +0 -56
  431. package/dist/providers/revenuecat/index.d.ts +0 -51
  432. package/dist/providers/revenuecat/index.js +0 -697
  433. package/dist/providers/revenuecat/skill.generated.js +0 -11
  434. package/dist/providers/stripe/rest.d.ts +0 -14
  435. package/dist/providers/stripe/rest.js +0 -402
  436. package/dist/providers/vercel/rest.d.ts +0 -20
  437. package/dist/providers/vercel/rest.js +0 -1020
  438. package/dist/providers/wispr-flow/index.d.ts +0 -14
  439. package/dist/providers/wispr-flow/index.js +0 -117
  440. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  441. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -93,22 +93,9 @@ the deployment constructs its registry.
93
93
 
94
94
  ## Maintained integrations
95
95
 
96
- Import a provider individually. For example, Linear requires an explicit
97
- choice of its downstream endpoint:
98
-
99
- ```ts
100
- import { linear } from "@zackbart/connecta/providers/linear";
101
-
102
- const tracker = linear("tracker", {
103
- purpose: "Engineering issues in our workspace",
104
- access: "read-only",
105
- });
106
- // Add tracker to the deployment's connectors array.
107
- ```
108
-
109
- Linear defaults to OAuth; its read-only endpoint requests only the downstream
110
- read scope. That is separate from Connecta endpoint or connector `readOnly`. Read the installed `dist/providers/linear/index.d.ts` for API-key framing,
111
- workspace instructions, and admission choices.
96
+ Import a provider individually from its published subpath. For removed presets
97
+ or a provider's former hosted mode, use the
98
+ [hosted MCP migration guide](./hosted-mcp-migration.md).
112
99
 
113
100
  The [human README](../README.md#what-you-can-connect) lists available
114
101
  integrations. In the installed package, `dist/providers/<name>/index.d.ts`
@@ -120,115 +107,37 @@ providers require administrator-managed domain-wide delegation and a deployment
120
107
  mapping from admitted identity to the downstream account; an agent acts as its
121
108
  pool's `owner` instead ([auth guide](auth.md#pool-owners-for-google-workspace)).
122
109
  A request must not choose its own account. Gmail never sends mail, and Drive never permanently
123
- deletes files.
124
-
125
- Intercom uses `intercom()` from `@zackbart/connecta/providers/intercom`:
126
-
127
- ```ts
128
- import { intercom } from "@zackbart/connecta/providers/intercom";
129
-
130
- const support = intercom("support", {
131
- purpose: "Customer support triage",
132
- region: "eu",
133
- });
134
- // Add support to the deployment's connectors array.
135
- ```
136
-
137
- Set `region` explicitly to `"us"` or `"eu"` to match the workspace; AU is
138
- unsupported. OAuth defaults to personal ownership because it acts as the
139
- authorizing teammate. Non-loopback OAuth callbacks require an Intercom Customer
140
- Support allowlist entry for the deployment's redirect URI before authorization
141
- can complete. Alternatively, set `auth: { type: "credential" }` and connect an
142
- API token through the [shared credential procedure](./auth.md#connect-a-shared-credential);
143
- token auth defaults to shared ownership. Fin Operator tools require OAuth,
144
- workspace availability and teammate permission. Their expected absence adds no
145
- missing-tool drift; missing core tools still do. Schema coverage reports all
146
- present reviewed tools as unpinned. Article operations, internal
147
- notes and Operator actions can write; a note can reopen a snoozed conversation.
148
- Use a read-only endpoint when writes are unwanted. Catalog review is based on
149
- [Intercom's docs](https://developers.intercom.com/docs/guides/mcp), with unpinned
150
- schemas; inspect live tools and the runtime guide before acting on sensitive
151
- customer data.
152
-
153
- Wispr Flow uses OAuth only through `wisprFlow()` from
154
- `@zackbart/connecta/providers/wispr-flow`. It reaches the authorized account's
155
- Notetaker content, with personal and work accounts holding separate data.
156
- Its runtime guide, available through `connecta.skill("connector:<id>")` in `execute_code`, describes account access,
157
- search limits, transcript permissions and paging. The
158
- reviewed classification includes task writes listed in Claude's directory even
159
- though Wispr's public help describes read-only access; discover the account's
160
- actual tools before assuming those writes exist.
161
-
162
- For minimal Stripe OAuth/API-key examples with and without connector `readOnly`, see [Stripe setup](./provider-auth-migration.md#stripe). With an API key, prefer a restricted `rk_` key with only read permissions for read-only access; Stripe enforces it too.
163
-
164
- Stripe requires `auth`: `{ type: "oauth" }` reaches Stripe's hosted MCP
165
- server, and `{ type: "apiKey" }` with `mode` reaches Connecta's REST connector
166
- with an operator-managed key. Notion requires `auth` the same way:
167
- `{ type: "oauth" }` acts as the signed-in user over Notion's hosted MCP, and
168
- `{ type: "token" }` acts as an internal integration over Connecta's REST
169
- connector. Cloudflare requires `auth` too: `{ type: "oauth" }` reaches its
170
- hosted MCP server, and `{ type: "apiToken" }` or `{ type: "globalApiKey" }`
171
- reaches Connecta's REST connector, with an optional `pin` of accounts and zones
172
- (required for a Global API Key unless `unpinned: true`). Vercel requires `auth`
173
- as well: `{ type: "oauth" }` reaches Vercel's hosted MCP server, and
174
- `{ type: "token" }` with an optional `teamId` reaches Connecta's REST connector
175
- with an operator-managed access token. Vercel admits only reviewed and approved
176
- MCP clients to its hosted server, an operational gate outside Connecta. See the
177
- [provider auth migration](./provider-auth-migration.md).
178
- To use both implementations of one provider, configure two connector ids with
179
- independent credentials.
180
-
181
- Both Notion auth variants accept optional `callAdmission`. For a token
182
- connector it replaces the whole per-runtime default of 180 calls per minute
183
- and 3 concurrent. Notion's [request limits](https://developers.notion.com/reference/request-limits)
184
- allow 600 requests per minute per connection on Business and Enterprise and
185
- 180 on other plans. A separate workspace-wide limit is shared by all
186
- connections. Size an override for other runtime traffic and tools that make
187
- multiple HTTP requests. Only an omitted or `undefined` policy selects the
188
- default; malformed policies, including `false`, `null`, `0`, and `""`, throw
189
- at construction on both auth variants.
190
-
191
- Planning Center's `excludeApps` removes whole products from a connection, for
192
- example `planningCenter("pco", { purpose, excludeApps: ["giving"] })` for a
193
- deployment that keeps agents away from donor and financial data. Excluded
194
- products lose their named tools, guide text, and version pins, and the
195
- `pco_api_get` and `pco_api_mutate` hatches refuse their paths before sending.
196
- The check reads the exact URL the transport would fetch, and while any product
197
- is excluded a hatch path must be literal: dot segments, empty segments,
198
- backslashes, whitespace, and percent-encoded `/`, `\`, `?`, `#`, or `%` are
199
- refused rather than normalized.
200
-
201
- Exclusion also closes the routes through which the excluded product's data is
202
- reachable through another product. While any product is excluded the connection removes
203
- `list_lists`, `list_list_people`, and `run_list` and refuses every People list,
204
- list result, rule, and condition, by path or `include`, because a list's
205
- conditions can draw on any product, such as a donor list built from Giving
206
- donations, and lists can depend on other lists. Planning Center publishes a
207
- list's conditions, but a reliable check would have to follow every nested list,
208
- so the connection does not attempt one. It refuses webhook event and delivery
209
- payloads, since a payload can carry any product's records, and every change to
210
- an existing webhook subscription by id, since the id does not name its product.
211
- A new subscription must name a reachable product's event. People cannot be
212
- excluded.
213
-
214
- What exclusion guarantees is that agents reach none of the excluded product's
215
- endpoints, no live cross-product query such as a People list, and no webhook
216
- payload or change to an existing subscription. It does not hide records that the church's own
217
- automations or staff have copied into a reachable product. A
218
- [Giving automation](https://help.planningcenter.com/en/144355-automations-in-giving.html)
219
- can add first-time donors to a People workflow, and those workflow cards stay
220
- readable, as do donor details recorded in notes, custom fields, or form
221
- answers. Those are People data once written, so the connection does not refuse
222
- them by guessing at their origin.
223
-
224
- For a hard boundary, give the connection a personal access token belonging to a
225
- Planning Center user with No Access in the excluded product. Planning Center
226
- sets permissions per product for each user, does not grant Giving to
227
- organization administrators automatically, and lets People workflows be shared
228
- per workflow; a token carries its user's permissions, so Planning Center itself
229
- refuses what that user cannot see. `excludeApps` is defense in depth on top of
230
- that boundary: it narrows what Connecta exposes, not what the token can do
231
- elsewhere.
110
+ deletes files. Google Docs setup and hatch limits are in
111
+ [Google Docs setup](./providers.md#google-docs). Slides setup is in
112
+ [Google Slides setup](./providers.md#google-slides).
113
+
114
+ Stripe, Vercel, and Cloudflare vendor only their APIs. Cloudflare setup is in
115
+ [Maintained provider setup](./providers.md#cloudflare).
116
+ Keep their existing API auth choices. For token setup, team routing, bounded logs
117
+ and upload limits, see [Vercel setup](./providers.md#vercel).
118
+ GitHub provides scoped App-authenticated repository reads, release writes and guarded merges; see [GitHub setup](./providers.md#github). Hosted servers use distinct
119
+ `remoteMcp()` entries, separate from maintained API providers.
120
+
121
+ For Stripe API-key setup, see [Stripe setup](./providers.md#stripe).
122
+ Prefer a restricted `rk_` key with only read permissions for read-only access;
123
+ Stripe enforces it too.
124
+
125
+ For Planning Center construction, token permissions, product exclusions,
126
+ per-product versions and rate/admission limits, see
127
+ [Planning Center setup](./providers.md#planning-center). Its `pco_api_search`
128
+ and `pco_api_details` discover reviewed operations; `pco_api_read` reads them,
129
+ and `pco_api_write` sends approved writes.
130
+
131
+ Church Community Builder's `sensitiveFields` option controls the documented
132
+ sensitive response fields. Advanced search can still filter on dropped sensitive
133
+ fields, so matching rows can reveal their values by inference. Where that
134
+ matters, omit `read:advanced_searches` from the exact configured OAuth scopes.
135
+ See [Church Community Builder](./providers.md#church-community-builder)
136
+ for OAuth setup, scope boundaries, permanent withholding, paging and limits.
137
+ Tithe.ly's option works the same way; see [Tithe.ly](./providers.md#tithely).
138
+
139
+ For delegated Google Forms setup, scopes, response privacy and refused publish/watch
140
+ operations, see [Google Forms setup](./providers.md#google-forms).
232
141
 
233
142
  ## Another remote MCP server
234
143
 
@@ -256,24 +165,69 @@ also supports OAuth, static headers, and request-local token resolution. Use
256
165
  for those cases. Secrets belong in deployment secret storage or the vault,
257
166
  not source literals.
258
167
 
259
- Remote catalogs evolve. Discovery, direct calls, and program calls all enforce
260
- classification against the current catalog. Missing or contradictory read hints
261
- fail closed as writes. `classify` can supply a reviewed per-tool verdict;
262
- schema changes can invalidate a reviewed read. Exact deployment classification
263
- overrides take precedence. See
264
- [reviewed classification](./architecture.md#providers-and-reviewed-classification)
265
- for precedence, schema digests, and `unlisted: "hide"`. Review the behavior
266
- before declaring a read, and do not use classification to bypass provider target
267
- scopes or caller grants.
268
-
269
- A reviewed name is required by default for drift comparison. Mark a tool
270
- `optional: true` only when the downstream can omit it because of plan,
271
- feature, or permission gating. For example, a remote `crm` connector can use
272
- `classify: { tools: { list_accounts: "read", list_customers: { verdict: "read",
273
- optional: true } } }`. Absence of `list_customers` then adds no unserved count;
274
- when present, its verdict, annotations, and any pinned schema are still checked.
275
- A missing schema pin means that tool's schema has not been verified against a
276
- review. Zero schema changes alone does not establish a matching schema.
168
+ Use optional top-level `headers` for non-secret resource context:
169
+ `remoteMcp("crm", { url: "https://crm.example/mcp", headers: {
170
+ "X-MCP-Toolsets": "tickets,notes" }, readOnly: true })`. These headers apply to
171
+ MCP handshake, catalog and call requests at the exact resource URL path, never OAuth
172
+ metadata, token or registration requests. Values are included in cache and
173
+ negotiation identities; values of at least eight characters are redacted if echoed. Configuration descriptions
174
+ show only names. Never put credentials here. Use `auth` for secrets. Extra
175
+ headers cannot be combined with `auth.type: "headers"`, collide with an
176
+ auth-owned name, or set HTTP transport/session headers
177
+ (`Accept`, `Cookie`, `Host`, `Content-*`, hop-by-hop headers, `Last-Event-ID`,
178
+ `Mcp-*`), OAuth client-auth headers, or credential-named headers such as
179
+ `X-Api-Key`. Names are case-insensitive.
180
+
181
+ Runtime-discovered tools default to read exactly when `readOnlyHint === true &&
182
+ destructiveHint !== true`; otherwise they are writes. Override individual tools
183
+ only in deployment code through the existing `classification` map:
184
+
185
+ ```ts
186
+ classification: {
187
+ crm: { list_tickets: "read", update_ticket: "write", internal_export: "hidden" },
188
+ },
189
+ ```
190
+
191
+ `"write"` requires the host's approval path. `"hidden"` omits a tool from search
192
+ and describe and refuses guessed-name calls, including programs. An absent
193
+ runtime tool leaves its override dormant with an operator warning once per catalog change; the override
194
+ applies if that exact name returns. Unknown static tool names fail construction.
195
+ No argument can change these rules. A write-to-read override changes exposure
196
+ and approval. Replay and failure decisions treat a call as a write when either its
197
+ effective class or its source class is write. The source class is the verified
198
+ server annotations;
199
+ deployment overrides never change it. A write gets one wire attempt across
200
+ OAuth renewal, reconnect, transport and authorization recovery, including program re-runs. After possible dispatch, its
201
+ failure also reports an unknown outcome with no retry or wait advice; a proven
202
+ unsent failure retains its own recovery advice. Connector `readOnly` remains
203
+ optional and composes with endpoint policy.
204
+
205
+ On Node, serve with `listen` from `@zackbart/connecta/node`: it installs the
206
+ owned transport that prevents native fetch or a host-configured dispatcher
207
+ from silently resending a remote MCP write. Without that transport, Node
208
+ refuses remote writes before dispatch. Downstream OAuth token, registration and
209
+ revocation POSTs also require the owned sender. Read calls and OAuth discovery
210
+ GETs keep native fetch. Workers
211
+ use their native fetch with manual redirects; transport failures after
212
+ dispatch remain unknown and non-retryable.
213
+
214
+ The owned sender connects directly by default. For HTTP(S) CONNECT proxy egress,
215
+ configure `listen(connecta, { port: 3000, proxy: "http://proxy.example.com:8080" })`.
216
+ This controls maintained-provider requests, remote MCP writes and OAuth
217
+ credential POSTs; it ignores `NODE_USE_ENV_PROXY`, `HTTP_PROXY`, `HTTPS_PROXY`
218
+ and host proxy dispatchers. Remote MCP reads and OAuth discovery GETs retain
219
+ native fetch and need their own host proxy policy. An uncertain refresh requires
220
+ fresh authorization rather than replaying the spent token. See
221
+ [Node startup](./deploying.md#start-on-node) for the proxy URL, credentials and
222
+ TLS trust rules.
223
+
224
+ Remote catalogs evolve. Discovery, direct calls, and programs enforce the
225
+ current annotations and `ConnectaConfig.classification` overrides. A leftover
226
+ `classify` option throws at construction and names that map. Provider reviews,
227
+ schema pins, `optional`, and `unlisted: "hide"` are removed. Missing or
228
+ contradictory hints make the source class write, even when an override makes
229
+ the effective class read. Review behavior before setting a read override;
230
+ classification does not replace downstream scopes or caller grants.
277
231
 
278
232
  ## A hand-written HTTP capability
279
233
 
@@ -316,6 +270,27 @@ writes use `call_destructive_tool` or a program, within the caller's grants; a
316
270
  tool definition. Use declared output
317
271
  schemas when known; runtime observations cannot replace them.
318
272
 
273
+ A write leaves once. Once a write-classified tool's handler has run, any
274
+ failure it ends with is non-retryable with `writeOutcome: "unknown"`, whatever
275
+ its code: a handler can reach the network in ways `api()` cannot observe, so
276
+ nothing it reports proves its write was not sent. A raw network error or an
277
+ `unavailable` becomes `connector_call_failed`; any other `ConnectorCallError`
278
+ keeps its code. Failures before
279
+ the handler runs stay ordinary refusals: argument validation against
280
+ `inputSchema` and missing authorization. Declare input constraints in
281
+ `inputSchema` so a malformed write is refused before the handler starts. In-process
282
+ calls treat undefined properties of plain objects as absent during validation,
283
+ including records nested in arrays. Other objects, such as dates, byte arrays
284
+ and class instances, retain their identity. For example, `{ title: "Minutes", cursor: undefined }` validates
285
+ like `{ title: "Minutes" }`. Validation leaves the caller's arguments intact;
286
+ handlers receive the normalized input. One input evaluation failure cannot
287
+ disable validation for later calls. A
288
+ read's failure keeps its own advice, so a network error stays a retryable
289
+ `unavailable`. `ctx.oauth.fetch` never resends a write the API answered with
290
+ HTTP 401 (see [Downstream OAuth on api()](./auth.md#downstream-oauth-on-api)).
291
+ When the handler settles, the call ends: a `ctx.fetch` or `ctx.oauth.fetch`
292
+ request it starts afterwards fails without being sent.
293
+
319
294
  ## Separate ownership from visibility
320
295
 
321
296
  `authScope: "shared"` uses deployment-owned downstream auth; `"personal"` uses
@@ -346,5 +321,15 @@ and [provider construction](https://github.com/zackbart/connecta/blob/main/src/p
346
321
  [Remote tests](https://github.com/zackbart/connecta/blob/main/test/remote-mcp.test.ts),
347
322
  [API tests](https://github.com/zackbart/connecta/blob/main/test/api-connector.test.ts),
348
323
  [provider contracts](https://github.com/zackbart/connecta/blob/main/test/provider-contracts.test.ts),
349
- and [classification tests](https://github.com/zackbart/connecta/blob/main/test/classified-decorators.test.ts)
324
+ and the [write-once tests](https://github.com/zackbart/connecta/blob/main/test/remote-mcp-write-once.test.ts)
350
325
  check shared behavior. Provider-specific tests remain beside each provider.
326
+
327
+ ## Connect an Eve agent
328
+
329
+ Use [`@zackbart/connecta-eve`](https://github.com/zackbart/connecta/blob/main/packages/connecta-eve/README.md)
330
+ in the Eve app for an app-owned connection and endpoint instructions refreshed
331
+ once per turn. It requires Node 24 and Eve 0.84.x, and installs separately from
332
+ Connecta. Follow its README for the two agent files, token environment variables,
333
+ optional write approval and Vercel OIDC token source. Configure the server's
334
+ [agent and pool membership](./auth.md#issue-rotate-or-revoke-an-agent-token)
335
+ before connecting.