@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
@@ -175,6 +175,9 @@ updates run only through `workflow_dispatch`.
175
175
  On a matching Linux runner, `pnpm install --frozen-lockfile`, install Chromium with the command above,
176
176
  then run `pnpm run test:browser:snapshots`. The normal command is
177
177
  `pnpm run test:browser`. Missing baselines fail CI; retries cannot bless them.
178
+ Visual comparisons run in their own Playwright project without retries, so a
179
+ mismatch fails on its first attempt. When any attempt fails, CI uploads
180
+ the HTML report, actual/expected/diff images and traces as `playwright-report`.
178
181
  Set `OPERATOR_VISUAL_INSPECT=1` to retain local screenshots under ignored
179
182
  `test-results/` for inspection, without updating committed baselines.
180
183
 
@@ -42,15 +42,15 @@ No select menu displays configuration. Copy is short labels; a failure names
42
42
  what to do next in one or two sentences and never quotes a route's or
43
43
  downstream's text.
44
44
 
45
- | Path | Page | Who |
46
- | ------------------ | ------------------------------------------------------ | ---------- |
47
- | `/` | Overview (a member gets the member page) | Maintainer |
48
- | `/endpoints` | Endpoints; `#mcp/<pool>` opens that row | Maintainer |
49
- | `/connectors` | Connectors list; `?view=matrix` for the matrix | Maintainer |
50
- | `/connectors/<id>` | Connector detail; `#tools`, `#connection`, `#activity` | Maintainer |
51
- | `/activity` | Activity | Maintainer |
52
- | `/tokens` | Tokens, when token management is open to the viewer | Maintainer |
53
- | `/settings` | Settings | Maintainer |
45
+ | Path | Page | Who |
46
+ | ------------------ | ------------------------------------------------------------ | ---------- |
47
+ | `/` | Overview (a member gets the member page) | Maintainer |
48
+ | `/endpoints` | Endpoints; `#mcp/<pool>` opens that row | Maintainer |
49
+ | `/connectors` | Connectors list; `?view=matrix` for the matrix | Maintainer |
50
+ | `/connectors/<id>` | Connector detail; `#tools`, `#connection`, `#activity` | Maintainer |
51
+ | `/activity` | Activity | Maintainer |
52
+ | `/tokens` | Tokens, when agents are declared or token management is open | Maintainer |
53
+ | `/settings` | Settings | Maintainer |
54
54
 
55
55
  `/access` redirects to `/endpoints`, `/tools` to `/connectors`, and `/config`
56
56
  to `/settings`, replacing the history entry. Connector hashes `#config`,
@@ -109,6 +109,10 @@ instead of "0 tools".
109
109
 
110
110
  ### Endpoints
111
111
 
112
+ Pool endpoint rows show the effective surface (`meta` or `native`) and whether
113
+ code is on. These are read-only facts from deployment configuration; change
114
+ `surface` and `executeCode` in deployment code.
115
+
112
116
  One row each for `/mcp` and every pool: the path, a read-only pill on a
113
117
  read-only endpoint, a copyable URL, who can use it, its connectors as colored
114
118
  monograms (four, then "+N"), its tool count over a read and write bar, and a
@@ -192,7 +196,7 @@ tabs:
192
196
  - **Connection.** An Authentication card (mode, OAuth client mechanism, who
193
197
  manages it, OAuth actions, and the credential card with masked last four,
194
198
  field states, and Replace, Test and Remove); a Diagnostics card of tiles
195
- (catalog age, last call, drift counts) with a fix prompt beside each
199
+ (catalog age and last call) with a fix prompt beside each
196
200
  problem; and a Configuration card. Its badges name the kind (Remote MCP,
197
201
  HTTP API or Custom), provider, auth scope, endpoint host and usage guide.
198
202
  The auth row names the mode and draws each auth fact as a mono badge
@@ -204,29 +208,12 @@ tabs:
204
208
  - **Activity.** The [Activity](#activity) page for that connector, without
205
209
  connector chips or monograms.
206
210
 
207
- #### Read catalog drift
208
-
209
- The connector's drift panel reports the last catalog comparison in this
210
- runtime and identity partition. It never lists tool names or schemas. A
211
- personal OAuth refresh belongs to that user; another user or endpoint subject
212
- does not inherit it. A runtime restart or bounded observation eviction resets
213
- the report until another listing is served.
214
-
215
- “No catalog refresh yet” means this partition has no observation. “No reviewed
216
- baseline” means a listing was observed without a reviewed classification.
217
- “Matches the reviewed manifest” requires a baseline, successful verification,
218
- no differences, and schema pins for every live reviewed tool. “Schemas not
219
- pinned” and “Partial schema coverage” describe missing review evidence; they
220
- are not clean schema comparisons. “Schema verification unavailable” replaces
221
- an earlier successful report if hashing fails. Known differences remain visible
222
- alongside coverage or verification limits. Each operator refresh returns the
223
- comparison from the catalog it just loaded, including hashing failures and
224
- schema changes, without another downstream status probe.
225
-
226
- The unserved count excludes reviewed names explicitly marked optional for
227
- plan, feature, or permission gating. Present optional tools still participate
228
- in annotation and schema comparisons. Dropped tool names are counted even
229
- without a baseline, and do not establish one.
211
+ #### Read catalog changes
212
+
213
+ Catalog refresh activity reports added, removed, and changed tool counts within
214
+ its identity partition. The UI no longer compares tools with a release-reviewed
215
+ manifest or shows schema-pin coverage. Check live annotations and deployment
216
+ classification in the catalog when reviewing exposure.
230
217
 
231
218
  ### Settings
232
219
 
@@ -260,9 +247,13 @@ editing controls. An empty section is not drawn.
260
247
 
261
248
  ### Tokens
262
249
 
263
- One row per agent declared in code, in `GET /ui/access-tokens` order: agent
264
- mark and name, pools as chips, a state pill (No token, Issued or Revoked), the
265
- issue or revoke date, and last seen ("never" when null). The heading note
250
+ One row per agent declared in code, including OIDC-only agents when the token
251
+ module is absent: agent mark and name, supported credentials (Agent token,
252
+ Vercel OIDC, or both), pools as chips, a token state pill (Not configured, No
253
+ token, Issued or Revoked), the issue or revoke date, and last seen ("never"
254
+ when unknown). Not configured means the managed token module is absent and
255
+ has no token controls; No token means that module has an unissued slot.
256
+ An OIDC binding works independently of the token's state. The heading note
266
257
  reads "Declared in code"; nothing creates or renames an agent. Narrow screens
267
258
  stack each row into a card.
268
259
 
@@ -412,18 +403,36 @@ The maintainer view carries:
412
403
  code or credential material.
413
404
  - `root`: plain `/mcp`, its `readOnly`, and its `maintainers`, people only.
414
405
  - `pools`: every declared pool with `humanPath` (`/mcp/<name>`), `agentPath`
415
- (`/agent/<name>`), `readOnly`, `owner` (the Workspace address its agents act
406
+ (`/agent/<name>`), `readOnly`, effective `surface` (`meta` or `native`),
407
+ `executeCode` (whether code is enabled), `owner` (the Workspace address its agents act
416
408
  as), its declared `tools` (never intersected; no `requireReadOnly` is ever
417
409
  true), and its `members`, agents as `{ kind: "agent", name }`. Every listed
418
410
  person carries a `label` from the same directory lookup activity actor
419
411
  labels use, on an interactive read only, and `null` without a directory
420
412
  (Cloudflare Access) or an entry. An open deployment's anonymous maintainer
421
413
  reads every `owner` as `null`.
422
- - `agents`: every agent declared in code, with its pools, its token slot
423
- (`state`, `issuedAt`, `revokedAt`, `revision`) exactly as
424
- `GET /ui/access-tokens` lists it, and `lastSeenAt`, the newest visible
425
- activity row recorded for that agent, or `null` when activity is off or
426
- none is visible. A slot read that fails answers 503 rather than drop agents.
414
+ - `agents`: every agent declared in code, in deployment order, with its pools
415
+ and `credentialTypes` (`access_token`, `vercel_oidc`, or both). These are
416
+ immutable deployment descriptions: the token kind requires the managed
417
+ access-token module, and OIDC requires that agent's own workload binding.
418
+ They grant nothing. `token` is `null` when the token module is absent;
419
+ otherwise its slot (`state`, `issuedAt`, `revokedAt`, `revision`) is exactly
420
+ what `GET /ui/access-tokens` lists, including an unissued `state: "none"`.
421
+ A failed or incomplete slot read answers 503 rather than drop agents.
422
+ `lastSeenAt` is the newest sampled successful agent-endpoint admission or
423
+ visible historical activity timestamp, or `null` when unknown or withheld.
424
+ Admission means credential verification and membership in that declared pool
425
+ succeeded; it does not promise a completed call. Invalid credentials,
426
+ refused/undeclared pools and human routes record nothing. The observation
427
+ stores only the declared name and timestamp, independently of activity.
428
+ Admission observations sample at most once per minute: a valid stored time
429
+ less than 60 seconds behind the candidate skips the write, and an older
430
+ candidate never moves the time backwards. This is minute-level admission
431
+ evidence, not an exact timestamp for every request. Each observation uses at
432
+ most two atomic storage attempts under the smaller of the configured probe
433
+ deadline and 500 ms, within the request lifetime. Failure, timeout or
434
+ contention can lose a sample; a later eligible admission can try again.
435
+ Observation never refuses admission or retries MCP or tool work.
427
436
  - `matrix`: a cell per connector for plain `/mcp` (`pool: null`) and for each
428
437
  pool that serves it, with that endpoint's tool names or `"all"` and
429
438
  `runsAs`. A Workspace connector with a subject mapping is
@@ -447,10 +456,12 @@ The maintainer view carries:
447
456
  mechanism when known. Static and unobserved catalogs have a null age;
448
457
  persisted catalogs retain their original fetch time.
449
458
  - `live.activity`: available, unconfigured, forbidden, or unavailable history.
450
- Last-call and last-seen lookups need the activity permission and read gate,
459
+ Historical last-call and last-seen lookups need the activity permission and read gate,
451
460
  scan up to 1,000 recent rows, filter connector/tool grants, restrict personal
452
461
  connectors to the caller's activity identity, and copy a validated timestamp
453
- and outcome only. A null means unknown or absent in that window.
462
+ and outcome only. Admission last-seen reads require a maintainer and honor
463
+ the configured activity read gate, including when history is unavailable;
464
+ they work with no activity module. A null means unknown or withheld.
454
465
  - `connectors: []`.
455
466
 
456
467
  The member view is exactly that member's projection: `config`,
@@ -508,8 +519,9 @@ says the snapshot is for maintainers. It requires the UI module and the
508
519
  existing doctor authentication environment variables; it runs no diagnostic
509
520
  program, follows no redirects, and prints no raw HTTP failure body.
510
521
 
511
- The operator shell uses React, TanStack Router/Query/Table, Radix, cmdk and
512
- Tailwind v4. Hanken Grotesk, JetBrains Mono, CSS, JavaScript and dependency notices are hashed assets
522
+ The operator shell uses React, TanStack Router, Radix and cmdk. Esbuild bundles
523
+ the authored CSS with an explicit browser reset; it generates no utility classes.
524
+ Hanken Grotesk, JetBrains Mono, CSS, JavaScript and dependency notices are hashed assets
513
525
  under `/ui/assets/*`, served identically with immutable cache headers on Node
514
526
  and Workers. HTML contains only mount points and escaped inert configuration;
515
527
  it remains uncached. Ahead of the stylesheet, every operator page (sign-in
@@ -526,7 +538,11 @@ private browsing: a read finds nothing stored and a write keeps nothing, so a
526
538
  bearer token is not remembered there. `generated.ts` is ignored and generated before build and
527
539
  test; `check:operator-ui` detects stale assets and shared page styles. The UI
528
540
  stays behind `./ui`, outside the root import graph. The identity-fenced store
529
- owns authenticated reads and existing mutations. An Access-only shell selects
541
+ owns authenticated reads and existing mutations, with explicit identity and
542
+ read-cycle AbortControllers, revision fences, and no query cache or automatic
543
+ mutation replay. Browser-only view models ship inside the hashed bundle, with
544
+ no duplicate standalone server modules. The shared contract owns the unchanged
545
+ `OperatorPage` union exported from `@zackbart/connecta/ui`. An Access-only shell selects
530
546
  Access even when the HTML request has no trusted context; only authenticated
531
547
  API responses establish the session. A gated Access session offers Retry.
532
548
  Focus, visibility, and timer-driven recovery share one admission-read schedule
@@ -544,7 +560,14 @@ duplicate summary, token, config, detail or body reads. The passive retry schedu
544
560
  stays bounded and does not reset its budget on a deadline. Retry remains available
545
561
  during recovery configuration loading and supersedes and aborts the old cycle;
546
562
  identity changes, navigation and connector-page unmount also cancel it. Navigation
547
- that cancels pending data schedules a bounded reread for the destination. Failed reads retry after
563
+ that cancels pending data schedules a bounded reread for the destination. A scoped OAuth poll publishes only its connector's detail and live row. It does
564
+ not supersede a pending full admission or catalog/auth cycle, release its
565
+ recovery guard, or clear its deadline. That full cycle still publishes other
566
+ connectors as they settle and decides recovery, retaining the newer polled row
567
+ even when its summary was pending or its deadline exposed Retry. Only a newer
568
+ full cycle, mutation, identity change, or sign-out fences older work. Owed
569
+ publication neither spends nor resets the failed-read retry budget and adds no
570
+ timer. Failed reads retry after
548
571
  2, 2, 4, and 8 seconds. Refusals preserve the throttle and retry budget. After
549
572
  those four automatic retries, a focus return can request one more read after
550
573
  the eight-second backoff, without replenishing the automatic budget. Retry
@@ -601,6 +624,11 @@ names, descriptions or schemas enter the event. Private catalog changes require
601
624
  a matching principal owner even when the connector uses shared auth. Empty credential declarations
602
625
  report `credential_required` before running a connector status or catalog probe.
603
626
 
627
+ Activity label resolvers receive an optional `AbortSignal`. Pass it to user-directory
628
+ fetches and stop work when it aborts: the reader has left or the label lookup
629
+ budget has expired. Clerk label lookups follow the same lifetime and discard
630
+ late answers after cancellation.
631
+
604
632
  ## Contributor reference
605
633
 
606
634
  ### Source and tests
@@ -638,3 +666,11 @@ serve the authenticated shell and data. The browser lives in
638
666
  and [browser flows](https://github.com/zackbart/connecta/blob/main/test/browser/operator-ui.spec.ts)
639
667
  defend filtering and behavior. Use [Operator UI tests](./operator-tests.md)
640
668
  for the browser state matrix and Linux snapshot procedure.
669
+
670
+ The browser flows also hold configuration and connector reads open across a
671
+ bearer identity switch, observe cancellation of the old HTTP response, and
672
+ require only the replacement viewer's data after navigation. A held OAuth poll
673
+ must abort on navigation without sending its start again; the Access recovery
674
+ flow checks explicit Retry and browser-history navigation without a document
675
+ reload. The packed deployment journey compiles every `OperatorPage` through
676
+ the public `@zackbart/connecta/ui` alias after declaration pruning.
@@ -1,6 +1,11 @@
1
1
  # Provider auth migration
2
2
 
3
- Use this upgrade guide when moving a Stripe, Notion, Vercel, or Cloudflare
3
+ Hosted selections described in this historical migration are now removed.
4
+ For Stripe, Vercel, Cloudflare, Notion, Mixpanel, and GitHub hosted connections,
5
+ use the [current hosted MCP migration guide](./hosted-mcp-migration.md).
6
+ The API migrations below remain applicable.
7
+
8
+ Use this upgrade guide when moving a Stripe, Vercel, or Cloudflare
4
9
  deployment from 0.30 to 0.31, where `auth` selects each provider's
5
10
  implementation.
6
11
  [Deployment upgrades](./deploying.md#upgrade-an-existing-deployment) cover other
@@ -13,6 +18,9 @@ uses one implementation: configure two ids for both.
13
18
 
14
19
  ## Stripe
15
20
 
21
+ For current API-key setup, use [Maintained provider setup](./providers.md#stripe).
22
+ For the 0.35 argument and paging changes, use [Stripe surface migration](./provider-migration-0.35.md#stripe).
23
+
16
24
  ## Choose OAuth or an API key
17
25
 
18
26
  Import `stripe` from `@zackbart/connecta/providers/stripe`. Choose one of two setup paths:
@@ -84,7 +92,8 @@ or a generated one as `Idempotency-Key` and return it (DELETE sends none).
84
92
  Caller-supplied keys may contain up to 255 characters. An ambiguous POST write
85
93
  also returns the key in `uncertainCall.recovery.idempotencyKey`, including when
86
94
  the call deadline interrupts it. See [argument recovery](./meta-tools.md#argument-recovery)
87
- before retrying.
95
+ before retrying: a custom connector that wraps or composes Stripe calls gets
96
+ the key as a diagnostic only, never advice to reuse it.
88
97
  Every request, v1 and v2, sends `Stripe-Version: 2026-09-30.endive`, the
89
98
  version of the pinned index, whatever the account's default API version, so
90
99
  response shapes and accepted parameters follow that version. Check fields
@@ -100,56 +109,9 @@ connector need an OAuth connector beside it. Read the connector runtime guide wi
100
109
 
101
110
  ## Notion
102
111
 
103
- Every `notion()` call must now name `auth`. 0.30 defaulted to hosted MCP and
104
- selected the REST interface with `surface: "api"`; `surface` is gone:
105
-
106
- ```ts
107
- connectors: [
108
- notion("notion", { purpose: "Workspace content as the signed-in user", auth: { type: "oauth" } }),
109
- notion("notion_bot", { purpose: "Internal integration content", auth: { type: "token" } }),
110
- ]
111
- ```
112
-
113
- | 0.30 configuration | Now |
114
- | ----------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
115
- | No `surface`, or `surface: "mcp"` | `auth: { type: "oauth" }`. Same endpoint, reviewed catalog, grant, and optional `callAdmission`. |
116
- | `surface: "api"` | `auth: { type: "token" }`. The integration token stored for the same connector id carries over; run its Test action. |
117
- | `credentialLabel` or `defaultPageSize` | Token only, as before. Under OAuth they are refused by name at construction. |
118
- | `integration_search`, `_get_page`, `_get_page_content`, `_get_data_source_schema`, `_query_data_source`, `_create_page`, `_append_blocks` | Unchanged names and contracts. `integration_append_blocks` also takes `checklist`. |
119
- | `integration_get_database` | `notion_api_read` `GET /v1/databases/{database_id}`. |
120
- | `integration_get_page_property` | `notion_api_read` `GET /v1/pages/{page_id}/properties/{property_id}`; `truncated_properties` names it. |
121
- | `integration_list_users`, `integration_get_self` | `notion_api_read` `GET /v1/users` or `GET /v1/users/me`. |
122
- | `integration_list_comments`, `integration_add_comment` | `notion_api_read` `GET /v1/comments`; `notion_api_write` `POST /v1/comments`. |
123
- | `integration_update_page_properties`, `integration_trash_page` | `notion_api_write` `PATCH /v1/pages/{page_id}` with `properties`, or `in_trash` to trash or restore. |
124
-
125
- Both auth variants accept optional `callAdmission`. On a token connector it
126
- replaces the whole default policy of 180 calls per minute and 3 concurrent
127
- per runtime. Malformed policies throw at construction. Notion's
128
- [request limits](https://developers.notion.com/reference/request-limits) allow
129
- 600 requests per minute per connection on Business and Enterprise and 180 on
130
- other plans, with a separate workspace-wide limit shared by all connections.
131
- Account for other runtimes and tools that make multiple HTTP requests when
132
- choosing an override.
133
-
134
- The token connector gains Connecta's generic REST tools over Notion's pinned
135
- API index (`notion_api_search`, `notion_api_details`, `notion_api_read`,
136
- `notion_api_write`), so every public operation is reachable with the bot's
137
- token: views, page moves and Markdown, meeting notes, custom agents and
138
- sessions, file uploads by `external_url`, and data source changes. Every call
139
- is checked against the index before it is sent, and results arrive as
140
- `{ status, data, page? }`. The read-only POST queries (search, data source,
141
- meeting notes, agents, sessions, and session events) use `notion_api_read`;
142
- `page.in: "body"` says their cursor goes back in the body. Notion's OAuth token
143
- endpoints and multipart file sends are refused. The 0.29 reconciliation table
144
- and the `surface: "api"` complement rules no longer apply to Notion.
145
-
146
- Lost per mode. A token connector acts as the integration bot, never as a
147
- person, and has none of the hosted MCP's search across connected apps, page
148
- duplication, team and skill search, attachment downloads, or page-to-skill
149
- conversion. An OAuth connector acts as the user, and has none of the generic
150
- REST tools or the `integration_*` projections and authoring helpers. Configure
151
- both ids when a deployment needs both; a failed call is never retried on the
152
- other. Read the connector runtime guide with `connecta.skill("connector:<id>")` in `execute_code` for its usage conventions.
112
+ The maintained Notion API provider is removed in 0.35. See the
113
+ [provider removal migration](./provider-migration-0.35.md#remove-infisical-notion-and-mixpanel)
114
+ and use generic `remoteMcp()` for the hosted server.
153
115
 
154
116
  ## Vercel
155
117
 
@@ -314,16 +276,7 @@ one; read or rotate withheld secrets in the vendor's dashboard.
314
276
  Failures of credential-bearing operations keep Stripe's type, code, and
315
277
  param but not its message. Create client-side sessions and links from your
316
278
  own server code.
317
- - **Notion** REST results and error text withhold the whole query and
318
- fragment of canonical Notion file links, including links embedded in
319
- Markdown and async task results. External proxy URLs keep their bytes;
320
- AWS and Google signing-parameter values are withheld at any host. Writes
321
- carrying the plain or encoded `[redacted]` placeholder in a Notion file
322
- link's own query or fragment are refused before dispatch. See the
323
- connector runtime guide through `connecta.skill("connector:<id>")` in `execute_code` for recognized hosts and scanning limits. Credential-named fields,
324
- including database properties named like credentials, read as
325
- `"[redacted]"`. Failures of the OAuth, file upload, bot user, and agent
326
- operations keep Notion's code but not its message.
279
+
327
280
  - **Vercel** replaces environment values with `"[redacted]"` instead of
328
281
  dropping the field, and withholds Vercel's error text for every reviewed
329
282
  operation and every operation whose request takes a credential-named
@@ -341,4 +294,4 @@ one; read or rotate withheld secrets in the vendor's dashboard.
341
294
  [Decision 0005](https://github.com/zackbart/connecta/blob/main/decisions/0005-auth-selects-implementation.md)
342
295
  explains why auth selects the implementation. Maintained provider source
343
296
  skills and review tables live under `src/providers/` in the repository;
344
- `src/providers/vercel/value-safety.ts` owns Vercel's reviewed table.
297
+ `src/providers/vercel/safety.ts` owns Vercel's reviewed table.
@@ -1,12 +1,17 @@
1
1
  # Notion, Vercel and Cloudflare migration for 0.29
2
2
 
3
+ Hosted selections described in this historical migration are now removed.
4
+ For Stripe, Vercel, Cloudflare, Notion, Mixpanel, and GitHub hosted connections,
5
+ use the [current hosted MCP migration guide](./hosted-mcp-migration.md).
6
+ The API migrations below remain applicable.
7
+
3
8
  Use this upgrade guide for an existing deployment.
4
9
  [Deployment upgrades](./deploying.md#upgrade-an-existing-deployment) cover other
5
10
  version changes; [integrating services](./integrating.md) covers new connectors.
6
11
  [The agent index](./README.md) routes package maintenance separately.
7
12
 
8
- This is the Phase 1 item 5d migration input for [Phase 5 release #709](https://github.com/zackbart/connecta/issues/709).
9
- Deploy it with the consolidated 0.29 release, not while the rework is in progress.
13
+ This was the Phase 1 item 5d migration input for [Phase 5 release #709](https://github.com/zackbart/connecta/issues/709),
14
+ which shipped as 0.29.0.
10
15
  Deployments that use Notion or Cloudflare must check their actual grants and
11
16
  connector ids in deployment configuration before that release.
12
17
  The provider audit establishes available auth modes, not production OAuth grants.
@@ -14,7 +19,7 @@ The provider audit establishes available auth modes, not production OAuth grants
14
19
  Cloudflare's part of this guide is superseded: `cloudflare()` now selects its
15
20
  implementation by `auth` and its key connector is complete on its own. Follow
16
21
  the [provider auth migration](./provider-auth-migration.md#cloudflare) for
17
- Cloudflare; the Cloudflare lines below record the 0.29 transition only.
22
+ Cloudflare; the Cloudflare lines below record the transition shipped in 0.29.0 only.
18
23
 
19
24
  All three providers now default to hosted MCP. `surface: "api"` explicitly
20
25
  selects a REST complement and accepts only its API-specific options. The old
@@ -36,7 +41,7 @@ Notion has since moved to auth-selected implementations: `surface` is gone,
36
41
  and `auth: { type: "oauth" }` or `{ type: "token" }` selects hosted MCP or the
37
42
  REST connector. Upgrade with the
38
43
  [provider auth migration](./provider-auth-migration.md#notion); the rest of
39
- this paragraph records the 0.29 rules.
44
+ this paragraph records the rules shipped in 0.29.0.
40
45
  Notion preserves headless/internal-integration capabilities. Add explicit
41
46
  `surface: "api"` to retain that identity and migrate old REST names to
42
47
  `integration_*`, for example `search` to `integration_search`, `create_page`
@@ -62,7 +67,7 @@ Writable endpoints may run `execute`; `readOnly` endpoints refuse it.
62
67
 
63
68
  Vercel's `surface` and ownership rules were later replaced: `auth` now selects
64
69
  the implementation. See the [provider auth migration](./provider-auth-migration.md#vercel).
65
- The 0.29 Vercel guidance follows for history. For Vercel, authorize the owning teams in hosted OAuth, migrate discovery/logs,
70
+ The Vercel guidance shipped in 0.29.0 follows for history. For Vercel, authorize the owning teams in hosted OAuth, migrate discovery/logs,
66
71
  domain listing/adding, deployment cancellation and file uploads to live MCP
67
72
  schemas, and keep the independently authorized REST complement for value-safe
68
73
  project environment variables (including `upsert: false` create-only writes), domain verification/removal and deployment