@zackbart/connecta 0.34.1 → 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 (429) hide show
  1. package/CHANGELOG.md +363 -0
  2. package/README.md +62 -106
  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 +12 -7
  53. package/dist/connectors/api-connector.js +142 -56
  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 +228 -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 +383 -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/agents.d.ts +5 -4
  109. package/dist/operator-ui/agents.js +17 -7
  110. package/dist/operator-ui/config-summary.js +5 -4
  111. package/dist/operator-ui/connection-map.js +7 -5
  112. package/dist/operator-ui/contract.d.ts +7 -3
  113. package/dist/operator-ui/endpoints.js +4 -13
  114. package/dist/operator-ui/fix-prompts.d.ts +1 -1
  115. package/dist/operator-ui/fix-prompts.js +0 -8
  116. package/dist/operator-ui/generated.js +3 -3
  117. package/dist/operator-ui/model.d.ts +2 -3
  118. package/dist/operator-ui/overview.js +5 -2
  119. package/dist/operator-ui/setup-commands.js +0 -4
  120. package/dist/operator-ui/view.d.ts +2 -25
  121. package/dist/operator-ui/view.js +2 -76
  122. package/dist/program-writes.js +47 -26
  123. package/dist/provider-call-facts.d.ts +115 -0
  124. package/dist/provider-call-facts.js +182 -0
  125. package/dist/provider-call.d.ts +112 -0
  126. package/dist/provider-call.js +271 -0
  127. package/dist/provider.d.ts +65 -31
  128. package/dist/provider.js +116 -39
  129. package/dist/providers/_shared/google/hatch.js +91 -0
  130. package/dist/providers/_shared/google/kit.js +537 -0
  131. package/dist/providers/_shared/google/result-size.js +15 -2
  132. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  133. package/dist/providers/_shared/google/service-account.js +8 -4
  134. package/dist/providers/_shared/google/workspace.d.ts +6 -210
  135. package/dist/providers/_shared/google/workspace.js +6 -425
  136. package/dist/providers/_shared/rest/compact-index.js +86 -0
  137. package/dist/providers/_shared/rest/dispatch.js +3 -23
  138. package/dist/providers/_shared/rest/kit.js +546 -0
  139. package/dist/providers/_shared/rest/operation-index.js +230 -14
  140. package/dist/providers/_shared/rest/response-media.js +11 -0
  141. package/dist/providers/_shared/rest/tools.js +101 -78
  142. package/dist/providers/_shared/rest/value-safety.js +353 -195
  143. package/dist/providers/_shared/sensitive-fields.js +27 -0
  144. package/dist/providers/breeze/api.js +584 -0
  145. package/dist/providers/breeze/index.d.ts +1 -3
  146. package/dist/providers/breeze/index.js +67 -1420
  147. package/dist/providers/breeze/openapi.generated.js +60 -0
  148. package/dist/providers/breeze/skill.generated.js +2 -6
  149. package/dist/providers/breeze/tools.js +696 -0
  150. package/dist/providers/ccb/api.js +496 -0
  151. package/dist/providers/ccb/index.d.ts +15 -37
  152. package/dist/providers/ccb/index.js +77 -1702
  153. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  154. package/dist/providers/ccb/lib/constants.js +74 -0
  155. package/dist/providers/ccb/lib/guide.js +9 -0
  156. package/dist/providers/ccb/lib/verdicts.js +387 -0
  157. package/dist/providers/ccb/openapi.generated.js +397 -0
  158. package/dist/providers/ccb/safety.js +295 -0
  159. package/dist/providers/ccb/skill.generated.js +2 -6
  160. package/dist/providers/ccb/tools.js +853 -0
  161. package/dist/providers/cloudflare/api.js +1066 -0
  162. package/dist/providers/cloudflare/index.d.ts +5 -22
  163. package/dist/providers/cloudflare/index.js +79 -197
  164. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  165. package/dist/providers/cloudflare/lib/config.js +2 -0
  166. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  167. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  168. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  169. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  170. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  171. package/dist/providers/cloudflare/openapi.generated.js +4 -3
  172. package/dist/providers/cloudflare/{value-safety.js → safety.js} +487 -0
  173. package/dist/providers/cloudflare/skill.generated.js +2 -10
  174. package/dist/providers/cloudflare/tools.js +360 -0
  175. package/dist/providers/docs/api.js +51 -0
  176. package/dist/providers/docs/index.d.ts +1 -12
  177. package/dist/providers/docs/index.js +53 -1165
  178. package/dist/providers/docs/lib/constants.d.ts +18 -0
  179. package/dist/providers/docs/lib/constants.js +18 -0
  180. package/dist/providers/docs/lib/discovery.js +26 -0
  181. package/dist/providers/docs/lib/requests.js +48 -0
  182. package/dist/providers/docs/lib/schemas.js +168 -0
  183. package/dist/providers/docs/openapi.generated.js +16 -0
  184. package/dist/providers/docs/safety.js +54 -0
  185. package/dist/providers/docs/skill.generated.js +2 -6
  186. package/dist/providers/docs/tools.js +802 -0
  187. package/dist/providers/drive/api.js +177 -0
  188. package/dist/providers/drive/index.d.ts +1 -12
  189. package/dist/providers/drive/index.js +38 -1448
  190. package/dist/providers/drive/lib/constants.d.ts +6 -0
  191. package/dist/providers/drive/lib/constants.js +6 -0
  192. package/dist/providers/drive/lib/contracts.js +532 -0
  193. package/dist/providers/drive/lib/hatch.js +197 -0
  194. package/dist/providers/drive/openapi.generated.js +77 -0
  195. package/dist/providers/drive/safety.js +90 -0
  196. package/dist/providers/drive/skill.generated.js +2 -6
  197. package/dist/providers/drive/tools.js +1290 -0
  198. package/dist/providers/forms/api.js +71 -0
  199. package/dist/providers/forms/index.d.ts +1 -12
  200. package/dist/providers/forms/index.js +49 -1145
  201. package/dist/providers/forms/lib/constants.d.ts +14 -0
  202. package/dist/providers/forms/lib/constants.js +19 -0
  203. package/dist/providers/forms/lib/hatch.js +72 -0
  204. package/dist/providers/forms/openapi.generated.js +23 -0
  205. package/dist/providers/forms/safety.js +34 -0
  206. package/dist/providers/forms/skill.generated.js +2 -8
  207. package/dist/providers/forms/tools.js +1024 -0
  208. package/dist/providers/github/api.js +150 -0
  209. package/dist/providers/github/index.d.ts +4 -5
  210. package/dist/providers/github/index.js +30 -87
  211. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  212. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  213. package/dist/providers/github/lib/discovery.js +132 -0
  214. package/dist/providers/github/lib/operations.js +58 -0
  215. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  216. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  217. package/dist/providers/github/openapi.generated.js +1216 -0
  218. package/dist/providers/github/safety.js +216 -0
  219. package/dist/providers/github/skill.generated.js +2 -5
  220. package/dist/providers/github/tools.js +506 -0
  221. package/dist/providers/gmail/api.js +114 -0
  222. package/dist/providers/gmail/index.d.ts +1 -12
  223. package/dist/providers/gmail/index.js +73 -1621
  224. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  225. package/dist/providers/gmail/lib/constants.js +16 -0
  226. package/dist/providers/gmail/lib/index.js +173 -0
  227. package/dist/providers/gmail/lib/schemas.js +176 -0
  228. package/dist/providers/gmail/lib/threading.js +120 -0
  229. package/dist/providers/gmail/openapi.generated.js +92 -0
  230. package/dist/providers/gmail/safety.js +21 -0
  231. package/dist/providers/gmail/skill.generated.js +2 -6
  232. package/dist/providers/gmail/tools.js +1435 -0
  233. package/dist/providers/overflow/api.js +1008 -0
  234. package/dist/providers/overflow/index.d.ts +1 -17
  235. package/dist/providers/overflow/index.js +60 -1488
  236. package/dist/providers/overflow/skill.generated.js +2 -5
  237. package/dist/providers/overflow/tools.js +873 -0
  238. package/dist/providers/planning-center/api.js +467 -0
  239. package/dist/providers/planning-center/index.d.ts +4 -35
  240. package/dist/providers/planning-center/index.js +69 -2445
  241. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  242. package/dist/providers/planning-center/lib/constants.js +83 -0
  243. package/dist/providers/planning-center/lib/discovery.js +40 -0
  244. package/dist/providers/planning-center/lib/guide.js +39 -0
  245. package/dist/providers/planning-center/lib/json-api.js +83 -0
  246. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  247. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  248. package/dist/providers/planning-center/safety.js +188 -0
  249. package/dist/providers/planning-center/skill.generated.js +2 -27
  250. package/dist/providers/planning-center/tools.js +1010 -0
  251. package/dist/providers/sheets/api.js +133 -0
  252. package/dist/providers/sheets/index.d.ts +4 -16
  253. package/dist/providers/sheets/index.js +61 -1172
  254. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  255. package/dist/providers/sheets/lib/constants.js +14 -0
  256. package/dist/providers/sheets/lib/hatch.js +163 -0
  257. package/dist/providers/sheets/lib/requests.js +105 -0
  258. package/dist/providers/sheets/lib/schemas.js +138 -0
  259. package/dist/providers/sheets/openapi.generated.js +30 -0
  260. package/dist/providers/sheets/safety.js +27 -0
  261. package/dist/providers/sheets/skill.generated.js +2 -7
  262. package/dist/providers/sheets/tools.js +734 -0
  263. package/dist/providers/slides/api.js +147 -0
  264. package/dist/providers/slides/index.d.ts +2 -10
  265. package/dist/providers/slides/index.js +48 -2555
  266. package/dist/providers/slides/lib/constants.d.ts +11 -0
  267. package/dist/providers/slides/lib/constants.js +11 -0
  268. package/dist/providers/slides/lib/requests.js +60 -0
  269. package/dist/providers/slides/lib/schemas.js +565 -0
  270. package/dist/providers/slides/openapi.generated.js +18 -0
  271. package/dist/providers/slides/skill.generated.js +2 -6
  272. package/dist/providers/slides/tools.js +1968 -0
  273. package/dist/providers/stripe/api.js +401 -0
  274. package/dist/providers/stripe/index.d.ts +5 -27
  275. package/dist/providers/stripe/index.js +74 -210
  276. package/dist/providers/stripe/lib/config.d.ts +4 -0
  277. package/dist/providers/stripe/lib/config.js +2 -0
  278. package/dist/providers/stripe/openapi.generated.js +4 -3
  279. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  280. package/dist/providers/stripe/skill.generated.js +2 -11
  281. package/dist/providers/stripe/tools.js +77 -0
  282. package/dist/providers/tithely/api.js +531 -0
  283. package/dist/providers/tithely/index.d.ts +17 -0
  284. package/dist/providers/tithely/index.js +86 -965
  285. package/dist/providers/tithely/skill.generated.js +2 -5
  286. package/dist/providers/tithely/tools.js +426 -0
  287. package/dist/providers/vercel/api.js +551 -0
  288. package/dist/providers/vercel/index.d.ts +9 -25
  289. package/dist/providers/vercel/index.js +66 -260
  290. package/dist/providers/vercel/lib/config.d.ts +2 -0
  291. package/dist/providers/vercel/lib/config.js +2 -0
  292. package/dist/providers/vercel/lib/index.js +117 -0
  293. package/dist/providers/vercel/lib/logs.js +100 -0
  294. package/dist/providers/vercel/lib/pin.js +270 -0
  295. package/dist/providers/vercel/openapi.generated.js +10 -5
  296. package/dist/providers/vercel/{value-safety.js → safety.js} +247 -38
  297. package/dist/providers/vercel/skill.generated.js +2 -7
  298. package/dist/providers/vercel/tools.js +642 -0
  299. package/dist/redaction-identity.js +47 -0
  300. package/dist/redaction-marker.js +125 -0
  301. package/dist/registry.d.ts +21 -15
  302. package/dist/registry.js +409 -376
  303. package/dist/routes/access-tokens.js +1 -1
  304. package/dist/routes/actor-labels.js +1 -1
  305. package/dist/routes/connect.js +1 -1
  306. package/dist/routes/dispatch.js +103 -0
  307. package/dist/routes/mcp.js +170 -79
  308. package/dist/routes/oauth.js +3 -1
  309. package/dist/routes/operator.js +2 -2
  310. package/dist/routes/shared.d.ts +5 -4
  311. package/dist/routes/shared.js +244 -177
  312. package/dist/routes/skills.js +10 -8
  313. package/dist/routes/ui-config.js +27 -3
  314. package/dist/routes/ui-data.js +21 -20
  315. package/dist/routes/ui.js +1 -1
  316. package/dist/runtime/call-admission.js +0 -26
  317. package/dist/runtime/call-entry.js +30 -0
  318. package/dist/runtime/call.js +556 -0
  319. package/dist/runtime/connector-scope.js +7 -0
  320. package/dist/runtime/credential-probe.js +34 -0
  321. package/dist/runtime/executor.js +40 -0
  322. package/dist/runtime/native-storage.js +63 -0
  323. package/dist/runtime/registry.js +27 -0
  324. package/dist/runtime/request-scope.js +72 -0
  325. package/dist/runtime/run.js +15 -7
  326. package/dist/runtime/shared-read.js +34 -5
  327. package/dist/runtime/storage.js +34 -21
  328. package/dist/sent-secrets.d.ts +194 -37
  329. package/dist/sent-secrets.js +1743 -340
  330. package/dist/server.js +5 -56
  331. package/dist/skills.js +322 -222
  332. package/dist/sqlite.js +15 -14
  333. package/dist/storage/d1-copy.js +255 -0
  334. package/dist/storage/d1-driver.js +15 -0
  335. package/dist/storage/keys.js +28 -0
  336. package/dist/storage/sql-driver.js +88 -0
  337. package/dist/storage/sql-native.js +544 -0
  338. package/dist/storage/sql-schema.d.ts +6 -0
  339. package/dist/storage/sql-schema.js +15 -0
  340. package/dist/storage/sql.d.ts +14 -20
  341. package/dist/storage/sql.js +29 -535
  342. package/dist/timeout.js +0 -26
  343. package/dist/tool-safety.js +20 -10
  344. package/dist/types.d.ts +7 -109
  345. package/dist/upward.js +3 -0
  346. package/dist/usage-guide.js +3 -1
  347. package/dist/validate.d.ts +4 -2
  348. package/dist/validate.js +86 -9
  349. package/dist/version.d.ts +1 -1
  350. package/dist/version.js +1 -1
  351. package/dist/worker.js +312 -292
  352. package/dist/workspace-subject.js +5 -1
  353. package/dist/write-outcome.js +454 -34
  354. package/documentation/README.md +27 -7
  355. package/documentation/architecture.md +2547 -226
  356. package/documentation/auth.md +821 -98
  357. package/documentation/code-mode.md +49 -16
  358. package/documentation/deploying.md +164 -20
  359. package/documentation/hosted-mcp-migration.md +460 -0
  360. package/documentation/integrating.md +129 -144
  361. package/documentation/meta-tools.md +409 -32
  362. package/documentation/operating.md +27 -3
  363. package/documentation/operator-tests.md +3 -0
  364. package/documentation/operator-ui.md +68 -45
  365. package/documentation/provider-auth-migration.md +16 -63
  366. package/documentation/provider-migration-0.29.md +10 -5
  367. package/documentation/provider-migration-0.35.md +975 -0
  368. package/documentation/providers.md +965 -0
  369. package/examples/worker/AGENTS.md +23 -9
  370. package/examples/worker/README.md +254 -135
  371. package/examples/worker/alchemy.run.ts +116 -0
  372. package/examples/worker/gitignore +10 -0
  373. package/examples/worker/src/connecta.config.ts +23 -21
  374. package/examples/worker/wrangler.jsonc +14 -5
  375. package/guides/connecting-agents.md +157 -0
  376. package/guides/how-it-works.md +156 -0
  377. package/guides/safety-and-trust.md +153 -0
  378. package/package.json +27 -46
  379. package/templates/node/.env.example +3 -0
  380. package/templates/node/README.md +22 -2
  381. package/templates/node/docker-compose.yml +1 -0
  382. package/templates/node/package.json +3 -2
  383. package/templates/node/src/connecta.config.ts +8 -0
  384. package/dist/catalog-drift.d.ts +0 -138
  385. package/dist/catalog-drift.js +0 -578
  386. package/dist/providers/_shared/request-token.js +0 -83
  387. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  388. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  389. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  390. package/dist/providers/basecamp/index.d.ts +0 -45
  391. package/dist/providers/basecamp/index.js +0 -997
  392. package/dist/providers/basecamp/skill.generated.js +0 -9
  393. package/dist/providers/cloudflare/rest.d.ts +0 -37
  394. package/dist/providers/cloudflare/rest.js +0 -1097
  395. package/dist/providers/github/hosted.js +0 -218
  396. package/dist/providers/github/rest.js +0 -321
  397. package/dist/providers/infisical/index.d.ts +0 -7
  398. package/dist/providers/infisical/index.js +0 -713
  399. package/dist/providers/infisical/skill.generated.js +0 -8
  400. package/dist/providers/intercom/index.d.ts +0 -24
  401. package/dist/providers/intercom/index.js +0 -121
  402. package/dist/providers/intercom/skill.generated.js +0 -8
  403. package/dist/providers/linear/index.d.ts +0 -55
  404. package/dist/providers/linear/index.js +0 -537
  405. package/dist/providers/linear/skill.generated.js +0 -8
  406. package/dist/providers/mixpanel/index.d.ts +0 -59
  407. package/dist/providers/mixpanel/index.js +0 -472
  408. package/dist/providers/mixpanel/operations.js +0 -20
  409. package/dist/providers/mixpanel/rest.js +0 -603
  410. package/dist/providers/mixpanel/skill.generated.js +0 -10
  411. package/dist/providers/mixpanel/value-safety.js +0 -16
  412. package/dist/providers/notion/index.d.ts +0 -67
  413. package/dist/providers/notion/index.js +0 -368
  414. package/dist/providers/notion/openapi.generated.js +0 -75
  415. package/dist/providers/notion/rest.d.ts +0 -24
  416. package/dist/providers/notion/rest.js +0 -1226
  417. package/dist/providers/notion/skill.generated.js +0 -11
  418. package/dist/providers/notion/value-safety.js +0 -56
  419. package/dist/providers/revenuecat/index.d.ts +0 -51
  420. package/dist/providers/revenuecat/index.js +0 -697
  421. package/dist/providers/revenuecat/skill.generated.js +0 -11
  422. package/dist/providers/stripe/rest.d.ts +0 -14
  423. package/dist/providers/stripe/rest.js +0 -402
  424. package/dist/providers/vercel/rest.d.ts +0 -20
  425. package/dist/providers/vercel/rest.js +0 -1020
  426. package/dist/providers/wispr-flow/index.d.ts +0 -14
  427. package/dist/providers/wispr-flow/index.js +0 -117
  428. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  429. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -1,67 +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
- /** Serve only read-classified tools on every endpoint. Defaults to false. */
17
- readOnly?: boolean;
18
- }
19
- /**
20
- * Notion's official hosted MCP server, acting as the OAuth-authorized user.
21
- * OAuth only: no integration token reaches the hosted endpoint.
22
- */
23
- export interface NotionOAuthOptions extends NotionCommonOptions {
24
- auth: {
25
- type: "oauth";
26
- };
27
- /** Optional per-runtime downstream call-admission policy. */
28
- callAdmission?: ConnectorCallAdmissionPolicy;
29
- /** Refused: the hosted server holds no operator credential. */
30
- credentialLabel?: never;
31
- /** Refused: hosted tools own their own paging. */
32
- defaultPageSize?: never;
33
- }
34
- /**
35
- * Connecta's REST connector to `api.notion.com`, acting as one internal
36
- * integration with an operator-managed token pasted into the connection in
37
- * the operator UI.
38
- */
39
- export interface NotionTokenOptions extends NotionCommonOptions {
40
- auth: {
41
- type: "token";
42
- };
43
- /**
44
- * Per-runtime downstream call-admission policy, replacing the default of
45
- * 180 calls/minute and 3 concurrent. Business and Enterprise allow 600
46
- * requests/minute per connection; all connections share a workspace-wide
47
- * limit. One admitted call can make several HTTP requests.
48
- */
49
- callAdmission?: ConnectorCallAdmissionPolicy;
50
- /** Operator-facing label for the integration token. */
51
- credentialLabel?: string;
52
- /**
53
- * Default `page_size` for the named list tools when the caller omits one.
54
- * Defaults to 25; Notion's maximum is 100.
55
- */
56
- defaultPageSize?: number;
57
- }
58
- /** `auth` selects the implementation: hosted MCP over OAuth, or REST with a token. */
59
- export type NotionOptions = NotionOAuthOptions | NotionTokenOptions;
60
- /**
61
- * A maintained Notion connection. `auth` selects the implementation: OAuth
62
- * reaches Notion's hosted MCP server as the authorizing user; an integration
63
- * token reaches Connecta's REST connector to `api.notion.com` as that bot.
64
- */
65
- export declare const notion: import("../../provider.js").ProviderFactory<NotionOptions>;
66
- /** @deprecated Read `notion.definition.classify` instead. Kept for existing imports. */
67
- 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", "readOnly");
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")');