@zackbart/connecta 0.34.0 → 0.35.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 (428) hide show
  1. package/CHANGELOG.md +393 -0
  2. package/README.md +62 -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 +2051 -1160
  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 +663 -271
  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 +15 -7
  53. package/dist/connectors/api-connector.js +147 -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/option-shapes.js +1 -1
  58. package/dist/connectors/remote-mcp.d.ts +12 -30
  59. package/dist/connectors/remote-mcp.js +960 -564
  60. package/dist/d1.js +10 -243
  61. package/dist/derived-context.js +5 -0
  62. package/dist/describe-config.d.ts +5 -1
  63. package/dist/describe-config.js +3 -0
  64. package/dist/downstream-input.js +347 -260
  65. package/dist/errors.d.ts +87 -6
  66. package/dist/errors.js +114 -4
  67. package/dist/execute.js +87 -50
  68. package/dist/executor-admission.js +3 -0
  69. package/dist/executors/quickjs.js +163 -112
  70. package/dist/guarded-transport.js +50 -0
  71. package/dist/guest-runtime.js +1 -1
  72. package/dist/http/client.js +439 -0
  73. package/dist/http/errors.js +558 -0
  74. package/dist/http/fields.js +49 -0
  75. package/dist/http/hatch-paging.js +318 -0
  76. package/dist/http/hatch.js +1279 -0
  77. package/dist/http/json-schema.js +267 -0
  78. package/dist/http/node-transport.js +241 -0
  79. package/dist/http/oauth.js +162 -0
  80. package/dist/http/paging.js +228 -0
  81. package/dist/http/provider.js +221 -0
  82. package/dist/http/safety.js +82 -0
  83. package/dist/http/services.js +79 -0
  84. package/dist/http/tools.js +383 -0
  85. package/dist/http/vendor-index.js +138 -0
  86. package/dist/http/vendor.js +448 -0
  87. package/dist/http/write-request.js +66 -0
  88. package/dist/http-policy.d.ts +11 -0
  89. package/dist/http-policy.js +45 -0
  90. package/dist/inbound-credential.js +1 -1
  91. package/dist/index.d.ts +2 -2
  92. package/dist/index.js +4 -0
  93. package/dist/invocation-auth.js +30 -19
  94. package/dist/invocation.js +221 -87
  95. package/dist/mcp-result.js +0 -4
  96. package/dist/membership.d.ts +4 -0
  97. package/dist/meta-output.js +1 -1
  98. package/dist/meta-tools.js +534 -408
  99. package/dist/native-recovery.js +52 -0
  100. package/dist/native-tools.js +382 -0
  101. package/dist/node.d.ts +4 -3
  102. package/dist/node.js +45 -8
  103. package/dist/oauth-handoff.js +177 -104
  104. package/dist/oauth-partition.js +6 -20
  105. package/dist/oauth-sealing.js +6 -7
  106. package/dist/operation-vocabulary.js +101 -0
  107. package/dist/operator-record.d.ts +2 -2
  108. package/dist/operator-record.js +17 -4
  109. package/dist/operator-ui/agents.d.ts +5 -4
  110. package/dist/operator-ui/agents.js +17 -7
  111. package/dist/operator-ui/config-summary.js +8 -4
  112. package/dist/operator-ui/connection-map.js +9 -6
  113. package/dist/operator-ui/contract.d.ts +7 -3
  114. package/dist/operator-ui/endpoints.js +5 -14
  115. package/dist/operator-ui/fix-prompts.d.ts +1 -1
  116. package/dist/operator-ui/fix-prompts.js +0 -8
  117. package/dist/operator-ui/generated.js +3 -3
  118. package/dist/operator-ui/health.js +52 -0
  119. package/dist/operator-ui/model.d.ts +2 -3
  120. package/dist/operator-ui/overview.js +11 -19
  121. package/dist/operator-ui/setup-commands.js +0 -4
  122. package/dist/operator-ui/view.d.ts +5 -29
  123. package/dist/operator-ui/view.js +3 -59
  124. package/dist/program-writes.js +47 -26
  125. package/dist/provider-call-facts.d.ts +115 -0
  126. package/dist/provider-call-facts.js +182 -0
  127. package/dist/provider-call.d.ts +112 -0
  128. package/dist/provider-call.js +271 -0
  129. package/dist/provider.d.ts +71 -32
  130. package/dist/provider.js +134 -40
  131. package/dist/providers/_shared/google/hatch.js +91 -0
  132. package/dist/providers/_shared/google/kit.js +537 -0
  133. package/dist/providers/_shared/google/result-size.js +15 -2
  134. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  135. package/dist/providers/_shared/google/service-account.js +8 -4
  136. package/dist/providers/_shared/google/workspace.d.ts +8 -209
  137. package/dist/providers/_shared/google/workspace.js +7 -426
  138. package/dist/providers/_shared/rest/compact-index.js +86 -0
  139. package/dist/providers/_shared/rest/dispatch.js +3 -23
  140. package/dist/providers/_shared/rest/kit.js +546 -0
  141. package/dist/providers/_shared/rest/operation-index.js +230 -14
  142. package/dist/providers/_shared/rest/response-media.js +11 -0
  143. package/dist/providers/_shared/rest/tools.js +101 -78
  144. package/dist/providers/_shared/rest/value-safety.js +353 -195
  145. package/dist/providers/_shared/sensitive-fields.js +27 -0
  146. package/dist/providers/breeze/api.js +584 -0
  147. package/dist/providers/breeze/index.d.ts +3 -3
  148. package/dist/providers/breeze/index.js +67 -1420
  149. package/dist/providers/breeze/openapi.generated.js +60 -0
  150. package/dist/providers/breeze/skill.generated.js +2 -6
  151. package/dist/providers/breeze/tools.js +696 -0
  152. package/dist/providers/ccb/api.js +496 -0
  153. package/dist/providers/ccb/index.d.ts +17 -37
  154. package/dist/providers/ccb/index.js +77 -1702
  155. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  156. package/dist/providers/ccb/lib/constants.js +74 -0
  157. package/dist/providers/ccb/lib/guide.js +9 -0
  158. package/dist/providers/ccb/lib/verdicts.js +387 -0
  159. package/dist/providers/ccb/openapi.generated.js +397 -0
  160. package/dist/providers/ccb/safety.js +295 -0
  161. package/dist/providers/ccb/skill.generated.js +2 -6
  162. package/dist/providers/ccb/tools.js +853 -0
  163. package/dist/providers/cloudflare/api.js +1066 -0
  164. package/dist/providers/cloudflare/index.d.ts +7 -22
  165. package/dist/providers/cloudflare/index.js +80 -194
  166. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  167. package/dist/providers/cloudflare/lib/config.js +2 -0
  168. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  169. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  170. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  171. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  172. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  173. package/dist/providers/cloudflare/openapi.generated.js +3299 -3208
  174. package/dist/providers/cloudflare/{value-safety.js → safety.js} +538 -18
  175. package/dist/providers/cloudflare/skill.generated.js +2 -10
  176. package/dist/providers/cloudflare/tools.js +360 -0
  177. package/dist/providers/docs/api.js +51 -0
  178. package/dist/providers/docs/index.d.ts +1 -12
  179. package/dist/providers/docs/index.js +53 -1165
  180. package/dist/providers/docs/lib/constants.d.ts +18 -0
  181. package/dist/providers/docs/lib/constants.js +18 -0
  182. package/dist/providers/docs/lib/discovery.js +26 -0
  183. package/dist/providers/docs/lib/requests.js +48 -0
  184. package/dist/providers/docs/lib/schemas.js +168 -0
  185. package/dist/providers/docs/openapi.generated.js +16 -0
  186. package/dist/providers/docs/safety.js +54 -0
  187. package/dist/providers/docs/skill.generated.js +2 -6
  188. package/dist/providers/docs/tools.js +802 -0
  189. package/dist/providers/drive/api.js +177 -0
  190. package/dist/providers/drive/index.d.ts +1 -12
  191. package/dist/providers/drive/index.js +38 -1448
  192. package/dist/providers/drive/lib/constants.d.ts +6 -0
  193. package/dist/providers/drive/lib/constants.js +6 -0
  194. package/dist/providers/drive/lib/contracts.js +532 -0
  195. package/dist/providers/drive/lib/hatch.js +197 -0
  196. package/dist/providers/drive/openapi.generated.js +77 -0
  197. package/dist/providers/drive/safety.js +90 -0
  198. package/dist/providers/drive/skill.generated.js +2 -6
  199. package/dist/providers/drive/tools.js +1290 -0
  200. package/dist/providers/forms/api.js +71 -0
  201. package/dist/providers/forms/index.d.ts +1 -12
  202. package/dist/providers/forms/index.js +49 -1145
  203. package/dist/providers/forms/lib/constants.d.ts +14 -0
  204. package/dist/providers/forms/lib/constants.js +19 -0
  205. package/dist/providers/forms/lib/hatch.js +72 -0
  206. package/dist/providers/forms/openapi.generated.js +23 -0
  207. package/dist/providers/forms/safety.js +34 -0
  208. package/dist/providers/forms/skill.generated.js +2 -8
  209. package/dist/providers/forms/tools.js +1024 -0
  210. package/dist/providers/github/api.js +150 -0
  211. package/dist/providers/github/index.d.ts +4 -5
  212. package/dist/providers/github/index.js +30 -87
  213. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  214. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  215. package/dist/providers/github/lib/discovery.js +132 -0
  216. package/dist/providers/github/lib/operations.js +58 -0
  217. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  218. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  219. package/dist/providers/github/openapi.generated.js +1216 -0
  220. package/dist/providers/github/safety.js +216 -0
  221. package/dist/providers/github/skill.generated.js +2 -5
  222. package/dist/providers/github/tools.js +506 -0
  223. package/dist/providers/gmail/api.js +114 -0
  224. package/dist/providers/gmail/index.d.ts +1 -12
  225. package/dist/providers/gmail/index.js +73 -1621
  226. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  227. package/dist/providers/gmail/lib/constants.js +16 -0
  228. package/dist/providers/gmail/lib/index.js +173 -0
  229. package/dist/providers/gmail/lib/schemas.js +176 -0
  230. package/dist/providers/gmail/lib/threading.js +120 -0
  231. package/dist/providers/gmail/openapi.generated.js +92 -0
  232. package/dist/providers/gmail/safety.js +21 -0
  233. package/dist/providers/gmail/skill.generated.js +2 -6
  234. package/dist/providers/gmail/tools.js +1435 -0
  235. package/dist/providers/overflow/api.js +1008 -0
  236. package/dist/providers/overflow/index.d.ts +3 -17
  237. package/dist/providers/overflow/index.js +60 -1488
  238. package/dist/providers/overflow/skill.generated.js +2 -5
  239. package/dist/providers/overflow/tools.js +873 -0
  240. package/dist/providers/planning-center/api.js +467 -0
  241. package/dist/providers/planning-center/index.d.ts +6 -35
  242. package/dist/providers/planning-center/index.js +69 -2445
  243. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  244. package/dist/providers/planning-center/lib/constants.js +83 -0
  245. package/dist/providers/planning-center/lib/discovery.js +40 -0
  246. package/dist/providers/planning-center/lib/guide.js +39 -0
  247. package/dist/providers/planning-center/lib/json-api.js +83 -0
  248. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  249. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  250. package/dist/providers/planning-center/safety.js +188 -0
  251. package/dist/providers/planning-center/skill.generated.js +2 -27
  252. package/dist/providers/planning-center/tools.js +1010 -0
  253. package/dist/providers/sheets/api.js +133 -0
  254. package/dist/providers/sheets/index.d.ts +4 -16
  255. package/dist/providers/sheets/index.js +61 -1172
  256. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  257. package/dist/providers/sheets/lib/constants.js +14 -0
  258. package/dist/providers/sheets/lib/hatch.js +163 -0
  259. package/dist/providers/sheets/lib/requests.js +105 -0
  260. package/dist/providers/sheets/lib/schemas.js +138 -0
  261. package/dist/providers/sheets/openapi.generated.js +30 -0
  262. package/dist/providers/sheets/safety.js +27 -0
  263. package/dist/providers/sheets/skill.generated.js +2 -7
  264. package/dist/providers/sheets/tools.js +734 -0
  265. package/dist/providers/slides/api.js +147 -0
  266. package/dist/providers/slides/index.d.ts +2 -10
  267. package/dist/providers/slides/index.js +48 -2555
  268. package/dist/providers/slides/lib/constants.d.ts +11 -0
  269. package/dist/providers/slides/lib/constants.js +11 -0
  270. package/dist/providers/slides/lib/requests.js +60 -0
  271. package/dist/providers/slides/lib/schemas.js +565 -0
  272. package/dist/providers/slides/openapi.generated.js +18 -0
  273. package/dist/providers/slides/skill.generated.js +2 -6
  274. package/dist/providers/slides/tools.js +1968 -0
  275. package/dist/providers/stripe/api.js +401 -0
  276. package/dist/providers/stripe/index.d.ts +7 -27
  277. package/dist/providers/stripe/index.js +75 -191
  278. package/dist/providers/stripe/lib/config.d.ts +4 -0
  279. package/dist/providers/stripe/lib/config.js +2 -0
  280. package/dist/providers/stripe/openapi.generated.js +4 -3
  281. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  282. package/dist/providers/stripe/skill.generated.js +2 -10
  283. package/dist/providers/stripe/tools.js +77 -0
  284. package/dist/providers/tithely/api.js +531 -0
  285. package/dist/providers/tithely/index.d.ts +19 -0
  286. package/dist/providers/tithely/index.js +86 -965
  287. package/dist/providers/tithely/skill.generated.js +2 -5
  288. package/dist/providers/tithely/tools.js +426 -0
  289. package/dist/providers/vercel/api.js +551 -0
  290. package/dist/providers/vercel/index.d.ts +11 -25
  291. package/dist/providers/vercel/index.js +67 -261
  292. package/dist/providers/vercel/lib/config.d.ts +2 -0
  293. package/dist/providers/vercel/lib/config.js +2 -0
  294. package/dist/providers/vercel/lib/index.js +117 -0
  295. package/dist/providers/vercel/lib/logs.js +100 -0
  296. package/dist/providers/vercel/lib/pin.js +270 -0
  297. package/dist/providers/vercel/openapi.generated.js +398 -376
  298. package/dist/providers/vercel/{value-safety.js → safety.js} +261 -42
  299. package/dist/providers/vercel/skill.generated.js +2 -7
  300. package/dist/providers/vercel/tools.js +642 -0
  301. package/dist/redaction-identity.js +47 -0
  302. package/dist/redaction-marker.js +125 -0
  303. package/dist/registry.d.ts +30 -28
  304. package/dist/registry.js +446 -413
  305. package/dist/routes/access-tokens.js +1 -1
  306. package/dist/routes/actor-labels.js +1 -1
  307. package/dist/routes/connect.js +1 -1
  308. package/dist/routes/dispatch.js +103 -0
  309. package/dist/routes/mcp.js +170 -79
  310. package/dist/routes/oauth.js +3 -1
  311. package/dist/routes/operator.js +2 -2
  312. package/dist/routes/shared.d.ts +5 -4
  313. package/dist/routes/shared.js +244 -177
  314. package/dist/routes/skills.js +10 -8
  315. package/dist/routes/ui-config.js +27 -3
  316. package/dist/routes/ui-data.js +29 -22
  317. package/dist/routes/ui.js +1 -1
  318. package/dist/runtime/call-admission.js +0 -26
  319. package/dist/runtime/call-entry.js +30 -0
  320. package/dist/runtime/call.js +556 -0
  321. package/dist/runtime/connector-scope.js +7 -0
  322. package/dist/runtime/credential-probe.js +34 -0
  323. package/dist/runtime/executor.js +40 -0
  324. package/dist/runtime/native-storage.js +63 -0
  325. package/dist/runtime/registry.js +27 -0
  326. package/dist/runtime/request-scope.js +72 -0
  327. package/dist/runtime/run.js +15 -7
  328. package/dist/runtime/shared-read.js +34 -5
  329. package/dist/runtime/storage.js +34 -21
  330. package/dist/sent-secrets.d.ts +194 -37
  331. package/dist/sent-secrets.js +1743 -340
  332. package/dist/server.js +5 -56
  333. package/dist/skills.js +330 -224
  334. package/dist/sqlite.js +15 -14
  335. package/dist/storage/d1-copy.js +255 -0
  336. package/dist/storage/d1-driver.js +15 -0
  337. package/dist/storage/keys.js +28 -0
  338. package/dist/storage/sql-driver.js +88 -0
  339. package/dist/storage/sql-native.js +544 -0
  340. package/dist/storage/sql-schema.d.ts +6 -0
  341. package/dist/storage/sql-schema.js +15 -0
  342. package/dist/storage/sql.d.ts +14 -20
  343. package/dist/storage/sql.js +29 -535
  344. package/dist/timeout.js +0 -26
  345. package/dist/tool-safety.js +20 -10
  346. package/dist/types.d.ts +11 -99
  347. package/dist/upward.js +3 -0
  348. package/dist/usage-guide.js +3 -1
  349. package/dist/validate.d.ts +4 -2
  350. package/dist/validate.js +86 -9
  351. package/dist/version.d.ts +1 -1
  352. package/dist/version.js +1 -1
  353. package/dist/worker.js +312 -292
  354. package/dist/workspace-subject.js +5 -1
  355. package/dist/write-outcome.js +454 -34
  356. package/documentation/README.md +27 -7
  357. package/documentation/architecture.md +2550 -186
  358. package/documentation/auth.md +821 -98
  359. package/documentation/code-mode.md +56 -21
  360. package/documentation/deploying.md +164 -20
  361. package/documentation/hosted-mcp-migration.md +460 -0
  362. package/documentation/integrating.md +144 -105
  363. package/documentation/meta-tools.md +411 -34
  364. package/documentation/operating.md +28 -4
  365. package/documentation/operator-tests.md +11 -2
  366. package/documentation/operator-ui.md +103 -33
  367. package/documentation/provider-auth-migration.md +38 -63
  368. package/documentation/provider-migration-0.29.md +10 -5
  369. package/documentation/provider-migration-0.35.md +975 -0
  370. package/documentation/providers.md +965 -0
  371. package/examples/worker/AGENTS.md +23 -9
  372. package/examples/worker/README.md +254 -135
  373. package/examples/worker/alchemy.run.ts +116 -0
  374. package/examples/worker/gitignore +10 -0
  375. package/examples/worker/src/connecta.config.ts +23 -21
  376. package/examples/worker/wrangler.jsonc +14 -5
  377. package/guides/connecting-agents.md +157 -0
  378. package/guides/how-it-works.md +156 -0
  379. package/guides/safety-and-trust.md +153 -0
  380. package/package.json +27 -42
  381. package/templates/node/.env.example +3 -0
  382. package/templates/node/README.md +22 -2
  383. package/templates/node/docker-compose.yml +1 -0
  384. package/templates/node/package.json +3 -2
  385. package/templates/node/src/connecta.config.ts +8 -0
  386. package/dist/catalog-drift.d.ts +0 -134
  387. package/dist/catalog-drift.js +0 -493
  388. package/dist/providers/_shared/request-token.js +0 -83
  389. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  390. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  391. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  392. package/dist/providers/basecamp/index.d.ts +0 -43
  393. package/dist/providers/basecamp/index.js +0 -997
  394. package/dist/providers/basecamp/skill.generated.js +0 -9
  395. package/dist/providers/cloudflare/rest.d.ts +0 -37
  396. package/dist/providers/cloudflare/rest.js +0 -1078
  397. package/dist/providers/github/hosted.js +0 -218
  398. package/dist/providers/github/rest.js +0 -321
  399. package/dist/providers/infisical/index.d.ts +0 -7
  400. package/dist/providers/infisical/index.js +0 -713
  401. package/dist/providers/infisical/skill.generated.js +0 -8
  402. package/dist/providers/linear/index.d.ts +0 -55
  403. package/dist/providers/linear/index.js +0 -352
  404. package/dist/providers/linear/skill.generated.js +0 -8
  405. package/dist/providers/mixpanel/index.d.ts +0 -57
  406. package/dist/providers/mixpanel/index.js +0 -468
  407. package/dist/providers/mixpanel/operations.js +0 -20
  408. package/dist/providers/mixpanel/rest.js +0 -603
  409. package/dist/providers/mixpanel/skill.generated.js +0 -10
  410. package/dist/providers/mixpanel/value-safety.js +0 -16
  411. package/dist/providers/notion/index.d.ts +0 -65
  412. package/dist/providers/notion/index.js +0 -368
  413. package/dist/providers/notion/openapi.generated.js +0 -75
  414. package/dist/providers/notion/rest.d.ts +0 -24
  415. package/dist/providers/notion/rest.js +0 -1226
  416. package/dist/providers/notion/skill.generated.js +0 -11
  417. package/dist/providers/notion/value-safety.js +0 -56
  418. package/dist/providers/revenuecat/index.d.ts +0 -49
  419. package/dist/providers/revenuecat/index.js +0 -557
  420. package/dist/providers/revenuecat/skill.generated.js +0 -11
  421. package/dist/providers/stripe/rest.d.ts +0 -14
  422. package/dist/providers/stripe/rest.js +0 -402
  423. package/dist/providers/vercel/rest.d.ts +0 -20
  424. package/dist/providers/vercel/rest.js +0 -1020
  425. package/dist/providers/wispr-flow/index.d.ts +0 -14
  426. package/dist/providers/wispr-flow/index.js +0 -117
  427. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  428. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -1,65 +0,0 @@
1
- import type { ConnectorCallAdmissionPolicy } from "../../types.js";
2
- export { NOTION_API_BASE_URL, NOTION_API_VERSION } from "./rest.js";
3
- /** Notion's official hosted MCP endpoint. */
4
- export declare const NOTION_MCP_ENDPOINT = "https://mcp.notion.com/mcp";
5
- interface NotionCommonOptions {
6
- /** Human-readable display name; defaults identify the selected implementation. */
7
- title?: string;
8
- /** Downstream auth ownership. Defaults to one shared deployment grant. */
9
- authScope?: "shared" | "personal";
10
- /** Which workspace this is and what it should be used for. Required. */
11
- purpose: string;
12
- /** Workspace-specific conventions appended to the maintained provider guide. */
13
- instructions?: string;
14
- /** Connector-specific inline result limit; omit to inherit the deployment. */
15
- maxResultBytes?: number;
16
- }
17
- /**
18
- * Notion's official hosted MCP server, acting as the OAuth-authorized user.
19
- * OAuth only: no integration token reaches the hosted endpoint.
20
- */
21
- export interface NotionOAuthOptions extends NotionCommonOptions {
22
- auth: {
23
- type: "oauth";
24
- };
25
- /** Optional per-runtime downstream call-admission policy. */
26
- callAdmission?: ConnectorCallAdmissionPolicy;
27
- /** Refused: the hosted server holds no operator credential. */
28
- credentialLabel?: never;
29
- /** Refused: hosted tools own their own paging. */
30
- defaultPageSize?: never;
31
- }
32
- /**
33
- * Connecta's REST connector to `api.notion.com`, acting as one internal
34
- * integration with an operator-managed token pasted into the connection in
35
- * the operator UI.
36
- */
37
- export interface NotionTokenOptions extends NotionCommonOptions {
38
- auth: {
39
- type: "token";
40
- };
41
- /**
42
- * Per-runtime downstream call-admission policy, replacing the default of
43
- * 180 calls/minute and 3 concurrent. Business and Enterprise allow 600
44
- * requests/minute per connection; all connections share a workspace-wide
45
- * limit. One admitted call can make several HTTP requests.
46
- */
47
- callAdmission?: ConnectorCallAdmissionPolicy;
48
- /** Operator-facing label for the integration token. */
49
- credentialLabel?: string;
50
- /**
51
- * Default `page_size` for the named list tools when the caller omits one.
52
- * Defaults to 25; Notion's maximum is 100.
53
- */
54
- defaultPageSize?: number;
55
- }
56
- /** `auth` selects the implementation: hosted MCP over OAuth, or REST with a token. */
57
- export type NotionOptions = NotionOAuthOptions | NotionTokenOptions;
58
- /**
59
- * A maintained Notion connection. `auth` selects the implementation: OAuth
60
- * reaches Notion's hosted MCP server as the authorizing user; an integration
61
- * token reaches Connecta's REST connector to `api.notion.com` as that bot.
62
- */
63
- export declare const notion: import("../../provider.js").ProviderFactory<NotionOptions>;
64
- /** @deprecated Read `notion.definition.classify` instead. Kept for existing imports. */
65
- export declare const NOTION_MCP_VETTED_CATALOG: import("../../catalog-drift.js").VettedCatalog;
@@ -1,368 +0,0 @@
1
- import { skill } from "./skill.generated.js";
2
- import { apiConnector } from "../../connectors/api-connector.js";
3
- import { reviewedCatalog } from "../../catalog-drift.js";
4
- import { keys, optionsOf, variants } from "../../config-schema.js";
5
- import { CALL_ADMISSION, defineProvider } from "../../provider.js";
6
- import { byAuth, hostedOAuth } from "../_shared/rest/dispatch.js";
7
- import { MAX_PAGE_SIZE, notionRest } from "./rest.js";
8
- export { NOTION_API_BASE_URL, NOTION_API_VERSION } from "./rest.js";
9
- /** Notion's official hosted MCP endpoint. */
10
- export const NOTION_MCP_ENDPOINT = "https://mcp.notion.com/mcp";
11
- /** Lean by default: smaller than Notion's 100 so a first read stays cheap. */
12
- const DEFAULT_PAGE_SIZE = 25;
13
- /**
14
- * Conservative default for every Notion plan: 180 calls per minute, with
15
- * Connecta's concurrency cap of three to bound bursts. Business and Enterprise
16
- * allow 600 requests per minute per connection; all connections also share a
17
- * workspace-wide limit. This policy is per runtime and counts calls rather
18
- * than HTTP requests, since one admitted call can spend many fetches.
19
- */
20
- const NOTION_ADMISSION = {
21
- rules: [
22
- {
23
- maxConcurrency: 3,
24
- budget: { kind: "rolling-window", maxCalls: 180, windowMs: 60_000 },
25
- maxQueueSize: 32,
26
- queueTimeoutMs: 5_000,
27
- retryAfterMs: 1_000,
28
- },
29
- ],
30
- };
31
- function instructionsSection(instructions) {
32
- const text = instructions?.trim();
33
- return text ? `\n## ${skill.instructionsHeading}\n\n${text}\n` : "";
34
- }
35
- /**
36
- * Both guides are marked `required` for one reason: a Notion database is a
37
- * container, and the rows and schema live in a data source inside it. The id
38
- * in a database URL is a database id, and passing it to a query or a row
39
- * create fails — a trap no input schema can teach, so the guide has to.
40
- */
41
- function tokenUsageGuide(purpose, instructions) {
42
- const { key, shared } = skill.fragments;
43
- return `# Notion usage
44
-
45
- Workspace purpose: ${purpose}${key}${shared}${instructionsSection(instructions)}`;
46
- }
47
- function oauthUsageGuide(purpose, instructions) {
48
- const { oauth_head, oauth, shared } = skill.fragments;
49
- return `${oauth_head}${purpose}${oauth}${shared}${instructionsSection(instructions)}`;
50
- }
51
- /**
52
- * Reviewed in #705's provider audit against https://developers.notion.com/guides/mcp/mcp-supported-tools.
53
- * Extended in #814 from the operator's 2026-10-15 hosted catalog capture,
54
- * recorded in mcp-catalog-2026-10-15.md. Includes names absent from the public
55
- * reference and retains reviewed names absent from this client's catalog.
56
- * Annotations were not visible; captured input summaries are not schema
57
- * documents, so no schema digests are asserted.
58
- */
59
- const NOTION_MCP_CLASSIFICATION = {
60
- tools: {
61
- "notion-search": { "verdict": "read", "reason": "Retrieves Notion information without changing vendor state." },
62
- "notion-ai-search": {
63
- "verdict": "read",
64
- "reason": "Legacy AI search, still callable by name; retrieves matching content without changing vendor state.",
65
- },
66
- "notion-get-self": {
67
- "verdict": "read",
68
- "reason": "Returns the connected workspace and user without changing vendor state.",
69
- },
70
- "notion-get-tool-access": {
71
- "verdict": "read",
72
- "reason": "Reads which tools the workspace plan allows; it grants nothing and changes nothing.",
73
- },
74
- "notion-download-skill": {
75
- "verdict": "read",
76
- "reason": "Returns an existing Skill as a signed, expiring archive URL; it changes no workspace state.",
77
- },
78
- "notion-search-skills": {
79
- "verdict": "read",
80
- "reason": "Retrieves Notion skills information without changing vendor state.",
81
- },
82
- "notion-fetch": {
83
- "verdict": "read",
84
- "reason": "Retrieves Notion fetch information without changing vendor state.",
85
- },
86
- "notion-download-attachment": {
87
- "verdict": "read",
88
- "reason": "Reads attachment content; creating uploads and attachments uses separate writes.",
89
- },
90
- "notion-query-data-sources": {
91
- "verdict": "read",
92
- "reason": "Retrieves Notion query data sources information without changing vendor state.",
93
- },
94
- "notion-query-meeting-notes": {
95
- "verdict": "read",
96
- "reason": "Retrieves Notion query meeting notes information without changing vendor state.",
97
- },
98
- "notion-search-agents": {
99
- "verdict": "read",
100
- "reason": "Retrieves Notion agents information without changing vendor state.",
101
- },
102
- "notion-list-agents": {
103
- "verdict": "read",
104
- "reason": "Retrieves Notion agents information without changing vendor state.",
105
- },
106
- "notion-query-sessions": {
107
- "verdict": "read",
108
- "reason": "Retrieves Notion query sessions information without changing vendor state.",
109
- },
110
- "notion-search-sessions": {
111
- "verdict": "read",
112
- "reason": "Retrieves Notion sessions information without changing vendor state.",
113
- },
114
- "notion-get-session-status": {
115
- "verdict": "read",
116
- "reason": "Retrieves Notion session status information without changing vendor state.",
117
- },
118
- "notion-wait-session": {
119
- "verdict": "read",
120
- "reason": "Waits for existing session state; it does not start or message a session.",
121
- },
122
- "notion-list-session-events": {
123
- "verdict": "read",
124
- "reason": "Retrieves Notion session events information without changing vendor state.",
125
- },
126
- "notion-read-session-event": {
127
- "verdict": "read",
128
- "reason": "Retrieves Notion read session event information without changing vendor state.",
129
- },
130
- "notion-get-comments": {
131
- "verdict": "read",
132
- "reason": "Retrieves Notion comments information without changing vendor state.",
133
- },
134
- "notion-get-teams": {
135
- "verdict": "read",
136
- "reason": "Retrieves Notion teams information without changing vendor state.",
137
- },
138
- "notion-get-users": {
139
- "verdict": "read",
140
- "reason": "Retrieves Notion users information without changing vendor state.",
141
- },
142
- "notion-get-async-task": {
143
- "verdict": "read",
144
- "reason": "Retrieves Notion async task information without changing vendor state.",
145
- },
146
- "notion-create-file-upload": { "verdict": "write", "reason": "Allocates upload state for a workspace file." },
147
- "notion-create-attachment": {
148
- "verdict": "write",
149
- "reason": "create attachment creates or appends Notion state; it has side effects.",
150
- },
151
- "notion-create-pages": {
152
- "verdict": "write",
153
- "reason": "create pages creates or appends Notion state; it has side effects.",
154
- },
155
- "notion-duplicate-page": {
156
- "verdict": "write",
157
- "reason": "duplicate page creates or appends Notion state; it has side effects.",
158
- },
159
- "notion-create-database": {
160
- "verdict": "write",
161
- "reason": "create database creates or appends Notion state; it has side effects.",
162
- },
163
- "notion-create-folder": {
164
- "verdict": "write",
165
- "reason": "create folder creates or appends Notion state; it has side effects.",
166
- },
167
- "notion-create-view": {
168
- "verdict": "write",
169
- "reason": "create view creates or appends Notion state; it has side effects.",
170
- },
171
- "notion-spawn-session": {
172
- "verdict": "write",
173
- "reason": "Starts asynchronous agent work and creates session state.",
174
- },
175
- "notion-send-message-to-session": {
176
- "verdict": "write",
177
- "reason": "Appends a message to a running session and may trigger further work.",
178
- },
179
- "notion-create-comment": {
180
- "verdict": "write",
181
- "reason": "create comment creates or appends Notion state; it has side effects.",
182
- },
183
- "notion-update-page": {
184
- "verdict": "destructive",
185
- "reason": "update page changes existing Notion state or removes it.",
186
- },
187
- "notion-convert-page-to-skill": {
188
- "verdict": "destructive",
189
- "reason": "Changes the role and content of an existing workspace page.",
190
- },
191
- "notion-move-pages": {
192
- "verdict": "destructive",
193
- "reason": "move pages changes existing Notion state or removes it.",
194
- },
195
- "notion-update-data-source": {
196
- "verdict": "destructive",
197
- "reason": "update data source changes existing Notion state or removes it.",
198
- },
199
- "notion-update-view": {
200
- "verdict": "destructive",
201
- "reason": "update view changes existing Notion state or removes it.",
202
- },
203
- "notion-stop-session": { "verdict": "destructive", "reason": "Stops an existing session and interrupts its work." },
204
- "notion-check-mcp-next-steps": {
205
- "verdict": "read",
206
- "reason": "Returns an upsell or next-step card without changing workspace state or enabling access.",
207
- },
208
- "notion-show-advanced-analysis-next-steps": {
209
- "verdict": "read",
210
- "reason": "Returns a message and destination link without changing workspace state or enabling access.",
211
- },
212
- "notion-get-enabled-skills": {
213
- "verdict": "read",
214
- "reason": "Lists the current user's enabled skills; enabling or disabling them is a separate write.",
215
- },
216
- "notion-get-file-download-urls": {
217
- "verdict": "read",
218
- "reason": "Returns signed, expiring download URLs for existing file references without changing workspace state; use only for downloads and do not expose the URLs.",
219
- },
220
- "notion-get-groups": {
221
- "verdict": "read",
222
- "reason": "Retrieves visible permission group IDs and names without changing membership or permissions.",
223
- },
224
- "notion-list-favorite-pages": {
225
- "verdict": "read",
226
- "reason": "Lists existing favorites in sidebar order without changing them.",
227
- },
228
- "notion-list-page-backlinks": {
229
- "verdict": "read",
230
- "reason": "Retrieves IDs, titles and URLs of existing page backlinks without changing links or pages.",
231
- },
232
- "notion-list-private-pages": {
233
- "verdict": "read",
234
- "reason": "Lists existing pages and databases in the user's Private sidebar without changing them.",
235
- },
236
- "notion-list-recent-pages": {
237
- "verdict": "read",
238
- "reason": "Lists the user's existing page-view history without changing pages or recording a new view.",
239
- },
240
- "notion-list-shared-pages": {
241
- "verdict": "read",
242
- "reason": "Lists existing pages and databases in the user's Shared sidebar without changing sharing.",
243
- },
244
- "notion-memory-search": {
245
- "verdict": "read",
246
- "reason": "Searches memories saved by connected agents in earlier sessions without saving or changing memories.",
247
- },
248
- "notion-query-multiple-data-sources": {
249
- "verdict": "read",
250
- "reason": "Runs read-only SQLite SQL across existing data sources without changing them.",
251
- },
252
- "notion-delete-comment": {
253
- "verdict": "destructive",
254
- "reason": "Deletes a comment and may remove its discussion when no comments remain.",
255
- },
256
- "notion-delete-databases": {
257
- "verdict": "destructive",
258
- "reason": "Moves existing databases to Trash; an optional confirmation flag does not make this tool read-only.",
259
- },
260
- "notion-delete-pages": {
261
- "verdict": "destructive",
262
- "reason": "Moves existing pages to Trash; an optional confirmation flag does not make this tool read-only.",
263
- },
264
- "notion-restore-pages": {
265
- "verdict": "destructive",
266
- "reason": "Restores pages or databases from Trash and changes their workspace state.",
267
- },
268
- "notion-set-comment-reaction": {
269
- "verdict": "destructive",
270
- "reason": "Adds or removes the user's emoji reaction on a comment; repeatability does not make it read-only.",
271
- },
272
- "notion-set-discussion-resolved": {
273
- "verdict": "destructive",
274
- "reason": "Resolves or reopens an existing comment discussion.",
275
- },
276
- "notion-update-comment": {
277
- "verdict": "destructive",
278
- "reason": "Replaces the text of an existing comment.",
279
- },
280
- "notion-update-enabled-skills": {
281
- "verdict": "destructive",
282
- "reason": "Changes the current user's skill enablement for external MCP clients, Notion AI, or both.",
283
- },
284
- "notion-update-folder": {
285
- "verdict": "destructive",
286
- "reason": "Changes an existing folder by adding or removing files or adding a subfolder.",
287
- },
288
- "notion-upload-skill": {
289
- "verdict": "destructive",
290
- "reason": "Preparation returns a credential-bearing upload URL and headers; completion replaces the target page title, Description, body and Files. Both actions stay writes.",
291
- },
292
- },
293
- };
294
- const COMMON = keys("title", "authScope", "purpose", "instructions", "maxResultBytes");
295
- /** The closed options notion() accepts, selected by `auth.type`; see `assertKnownOptions`. */
296
- const NOTION_OPTIONS = variants(["auth", "type"], {
297
- // The never-typed keys stay out of the shape, so the walk refuses them by name.
298
- oauth: optionsOf()({
299
- ...COMMON,
300
- callAdmission: CALL_ADMISSION,
301
- auth: optionsOf()(keys("type")),
302
- }).shape,
303
- token: optionsOf()({
304
- ...COMMON,
305
- callAdmission: CALL_ADMISSION,
306
- ...keys("credentialLabel", "defaultPageSize"),
307
- auth: optionsOf()(keys("type")),
308
- }).shape,
309
- });
310
- function notionOAuth(id, options, provider) {
311
- return hostedOAuth(id, provider, {
312
- url: NOTION_MCP_ENDPOINT,
313
- title: options.title ?? "Notion (MCP)",
314
- description: `Notion's official hosted MCP interface: ${options.purpose}`,
315
- usageGuide: {
316
- content: oauthUsageGuide(options.purpose, options.instructions),
317
- summary: "Official MCP as the OAuth user. Live Notion schemas, object discovery, sessions, agents, attachments.",
318
- required: true,
319
- },
320
- });
321
- }
322
- function notionToken(id, options, provider) {
323
- const defaultPageSize = options.defaultPageSize ?? DEFAULT_PAGE_SIZE;
324
- if (!Number.isInteger(defaultPageSize) || defaultPageSize < 1 || defaultPageSize > MAX_PAGE_SIZE) {
325
- throw new Error(`notion() defaultPageSize must be a whole number between 1 and ${MAX_PAGE_SIZE}.`);
326
- }
327
- const rest = notionRest(defaultPageSize);
328
- return apiConnector(id, {
329
- ...provider.connectorOptions,
330
- title: options.title ?? "Notion integration",
331
- description: `Notion internal integration: ${options.purpose}`,
332
- credential: {
333
- label: options.credentialLabel ?? "Notion integration token",
334
- description: "Internal integration token from notion.so/profile/integrations. Every page or database the agent should reach must also be shared with that integration, and its capabilities decide which tools succeed — comment capabilities are off by default.",
335
- placeholder: "Paste the integration token",
336
- },
337
- testCredential: rest.testCredential,
338
- callAdmission: options.callAdmission === undefined ? NOTION_ADMISSION : options.callAdmission,
339
- usageGuide: {
340
- content: tokenUsageGuide(options.purpose, options.instructions),
341
- summary: "Internal integration over REST. Flattened reads, authoring helpers, and the pinned API index for the rest.",
342
- required: true,
343
- },
344
- tools: rest.tools,
345
- });
346
- }
347
- /**
348
- * A maintained Notion connection. `auth` selects the implementation: OAuth
349
- * reaches Notion's hosted MCP server as the authorizing user; an integration
350
- * token reaches Connecta's REST connector to `api.notion.com` as that bot.
351
- */
352
- export const notion = defineProvider({
353
- name: "notion",
354
- title: "Notion",
355
- kind: "dual",
356
- readme: "Notion",
357
- bundle: {
358
- "baselineGzip": 211946,
359
- "maxGzip": 271946,
360
- "note": "./providers/notion remeasures at 211,946 B gzip (#801), against a 145,300 B baseline: auth now selects the implementation, so the entry carries the hosted MCP client and Connecta's REST connector (api(), the schema validator, guarded transport, the shared REST module) plus the pinned Notion operation index (64 operations; request details to depth 4, so block payload keys validate, with 160-character top-level descriptions; 14,240 B gzip as source). The index is already small, and removing eight one-operation named tools offset part of the shared module, so shrinking details further could not bring the entry under the old cap. The cap uses the existing baseline + 60,000 B policy.",
361
- },
362
- skill,
363
- options: NOTION_OPTIONS,
364
- classify: NOTION_MCP_CLASSIFICATION,
365
- create: byAuth({ oauth: notionOAuth, token: notionToken }),
366
- });
367
- /** @deprecated Read `notion.definition.classify` instead. Kept for existing imports. */
368
- export const NOTION_MCP_VETTED_CATALOG = reviewedCatalog(notion.definition.classify, 'defineProvider("notion")');