@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,14 +1,10 @@
1
- import { skill } from "./skill.generated.js";
2
- import { apiConnector } from "../../connectors/api-connector.js";
3
- import { reviewedCatalog } from "../../catalog-drift.js";
4
1
  import { keys, optionsOf, variants } from "../../config-schema.js";
5
- import { defineProvider } from "../../provider.js";
6
- import { byAuth, hostedOAuth } from "../_shared/rest/dispatch.js";
7
- import { restTools } from "../_shared/rest/tools.js";
8
- import { stripeRest } from "./rest.js";
9
- export { STRIPE_API_BASE_URL } from "./rest.js";
10
- /** Stripe publishes one hosted MCP endpoint for every account and mode. */
11
- export const STRIPE_MCP_ENDPOINT = "https://mcp.stripe.com/";
2
+ import { defineApiProvider } from "../../http/provider.js";
3
+ import { authenticate, connectedAccount, MAX_RESPONSE_BYTES, READ_CAP_MS, MODE_COPY, probe, safety, stripeErrors, StripeApi, stripeIndex, stripeBinding, STRIPE_PAGES, STRIPE_VERDICTS, } from "./api.js";
4
+ import { stripeTools } from "./tools.js";
5
+ import { skill } from "./skill.generated.js";
6
+ import { STRIPE_API_BASE_URL } from "./lib/config.js";
7
+ export { STRIPE_API_BASE_URL } from "./lib/config.js";
12
8
  /**
13
9
  * Stripe documents no MCP-specific limit, so these transcribe the account limit
14
10
  * every request spends: 100 requests per second live, 25 in a sandbox. OAuth
@@ -39,201 +35,89 @@ const STRIPE_ADMISSION = {
39
35
  ],
40
36
  },
41
37
  };
42
- /**
43
- * Reviewed in #705's provider audit against https://docs.stripe.com/mcp.
44
- * Retains the release-reviewed inventory, including names absent from today's
45
- * public reference. Live annotations were not reverified without credentials.
46
- * No schema digest is asserted without a captured schema to review. This
47
- * classifies the hosted OAuth catalog only; the REST connector annotates each
48
- * tool it authors.
49
- */
50
- const STRIPE_CLASSIFICATION = {
51
- tools: {
52
- "stripe_api_search": {
53
- "verdict": "read",
54
- "reason": "Searches API method contracts and object records; it does not invoke mutating methods.",
55
- },
56
- "stripe_api_details": {
57
- "verdict": "read",
58
- "reason": "Reads the parameter contract for an API method; it does not execute that method.",
59
- },
60
- "stripe_api_read": {
61
- "verdict": "read",
62
- "reason": "The vendor restricts this generic tool to HTTP GET; all mutating methods use stripe_api_write.",
63
- },
64
- "get_stripe_account_info": { "verdict": "read", "reason": "Reads metadata for the selected Stripe account." },
65
- "get_balance_summary": {
66
- "verdict": "read",
67
- "reason": "Retrieves Stripe balance summary information without changing vendor state.",
68
- },
69
- "list_metrics": {
70
- "verdict": "read",
71
- "reason": "Retrieves Stripe metrics information without changing vendor state.",
72
- },
73
- "explain_metric": {
74
- "verdict": "read",
75
- "reason": "Explains an existing metric definition without creating an analytics run.",
76
- },
77
- "metric_drilldown": { "verdict": "read", "reason": "Reads the breakdown of an existing metric." },
78
- "show_metric_app": { "verdict": "read", "reason": "Displays an existing metric app without changing its data." },
79
- "list_available_accounts_or_orgs": {
80
- "verdict": "read",
81
- "reason": "Retrieves Stripe available accounts or orgs information without changing vendor state.",
82
- },
83
- "manage_stripe_accounts": {
84
- "verdict": "read",
85
- "reason": "Selects account context for the session; the reviewed contract does not mutate payment or account records.",
86
- },
87
- "search_stripe_documentation": {
88
- "verdict": "read",
89
- "reason": "Searches Stripe reference documentation without accessing payment mutations.",
90
- },
91
- "stripe_api_write": {
92
- "verdict": "destructive",
93
- "reason": "Can dispatch POST, PATCH, PUT, or DELETE across the Stripe API, including edits and cancellations.",
94
- },
95
- "create_refund": {
96
- "verdict": "destructive",
97
- "reason": "Moves money and changes an existing payment; a refund cannot be undone.",
98
- },
99
- "stripe_implementation_planner": {
100
- "verdict": "write",
101
- "reason": "Creates or continues provider-side planning state.",
102
- },
103
- "stripe_analytics": {
104
- "verdict": "write",
105
- "reason": "Mixes retrieval with durable query-run creation, so the whole tool is a write.",
106
- },
107
- "stripe_report": {
108
- "verdict": "write",
109
- "reason": "May create durable report-run state, so retrieval paths cannot make the whole tool read-only.",
110
- },
111
- "send_stripe_mcp_feedback": {
112
- "verdict": "write",
113
- "reason": "Submits feedback to Stripe, creating provider-side state.",
114
- },
115
- },
116
- };
117
- function instructionsSection(instructions) {
118
- const text = instructions?.trim();
119
- return text ? `\n## ${skill.instructionsHeading}\n\n${text}\n` : "";
120
- }
121
- function oauthUsageGuide(purpose, instructions) {
122
- const { oauth, shared, oauth_limits } = skill.fragments;
123
- return `# Stripe usage
124
-
125
- Scope: live and sandbox accounts. Connector purpose: ${purpose}${oauth}${shared}${oauth_limits}
126
- ${instructionsSection(instructions)}`;
127
- }
128
- const MODE_COPY = {
129
- production: {
130
- title: "Stripe (production)",
131
- blurb: "production — live money and real customers",
132
- warning: "This is a PRODUCTION Stripe connection. Every write moves real money against real customers, and a refund cannot be undone. If a request could plausibly be a rehearsal, route it to a sandbox connector instead.",
133
- rate: "100 requests per second",
134
- },
135
- sandbox: {
136
- title: "Stripe (sandbox)",
137
- blurb: "sandbox — test data, no real money",
138
- warning: "This is a SANDBOX Stripe connection. Nothing here is real money and none of these objects exist in production, so never answer a question about live revenue, payouts, or a named customer from this connector.",
139
- rate: "25 requests per second",
140
- },
141
- };
142
- function keyUsageGuide(mode, purpose, connectedAccount, instructions) {
143
- const copy = MODE_COPY[mode];
144
- const { key, shared, key_limits, key_tail } = skill.fragments;
145
- const connect = connectedAccount
146
- ? `\n\nConnected account: \`${connectedAccount}\`. Every call acts as this Connect account; the platform account's own objects are out of reach here.`
147
- : "";
148
- return `# Stripe usage
149
-
150
- Mode: ${mode}. Connector purpose: ${purpose}
151
-
152
- ${copy.warning}${connect}${key}${shared}${key_limits}${copy.rate}${key_tail}
153
- ${instructionsSection(instructions)}`;
154
- }
155
- const COMMON = keys("title", "authScope", "purpose", "instructions", "maxResultBytes");
38
+ const COMMON = keys("title", "authScope", "purpose", "instructions", "maxResultBytes", "readOnly");
156
39
  /** The closed options stripe() accepts, selected by `auth.type`; see `assertKnownOptions`. */
157
40
  const STRIPE_OPTIONS = variants(["auth", "type"], {
158
41
  // The never-typed keys stay out of the shape, so the walk refuses them by name.
159
- oauth: optionsOf()({
160
- ...COMMON,
161
- auth: optionsOf()(keys("type")),
162
- }).shape,
42
+ oauth: { ...COMMON, auth: optionsOf()(keys("type")) },
163
43
  apiKey: optionsOf()({
164
44
  ...COMMON,
165
45
  ...keys("mode", "connectedAccount"),
166
46
  auth: optionsOf()(keys("type")),
167
47
  }).shape,
168
- });
169
- function stripeOAuth(id, options, provider) {
170
- return hostedOAuth(id, provider, {
171
- url: STRIPE_MCP_ENDPOINT,
172
- title: options.title ?? "Stripe",
173
- description: `Stripe payments (live and sandbox accounts) — ${options.purpose}`,
174
- callAdmission: STRIPE_ADMISSION.sandbox,
175
- usageGuide: {
176
- content: oauthUsageGuide(options.purpose, options.instructions),
177
- // Explicit rather than derived: OAuth must lead with its account-scoped selector pair.
178
- summary: "Live and sandbox Stripe accounts. List accounts; carry the returned stripe_context and livemode before acting.",
179
- },
180
- });
181
- }
182
- function stripeApiKey(id, options, provider) {
183
- const mode = options.mode;
184
- if (mode !== "production" && mode !== "sandbox") {
185
- throw new Error(`stripe("${id}") requires mode "production" or "sandbox" with apiKey auth.`);
186
- }
187
- let connectedAccount;
188
- if (options.connectedAccount !== undefined) {
189
- connectedAccount = typeof options.connectedAccount === "string" ? options.connectedAccount.trim() : "";
190
- if (!/^acct_[A-Za-z0-9]+$/.test(connectedAccount)) {
191
- throw new Error(`stripe("${id}") connectedAccount must be a Stripe account id ("acct_...").`);
192
- }
193
- }
194
- const copy = MODE_COPY[mode];
195
- const live = mode === "production" ? "live" : "test";
196
- const rest = stripeRest(mode, connectedAccount);
197
- return apiConnector(id, {
198
- ...provider.connectorOptions,
199
- title: options.title ?? copy.title,
200
- description: `Stripe payments (${copy.blurb}) — ${options.purpose}`,
201
- credential: {
202
- label: `Stripe ${live}-mode secret or restricted key`,
203
- description: `A ${live}-mode secret (sk_${live}_…) or restricted (rk_${live}_…) key; prefer a restricted key with only the permissions this connector needs. It is sent only to api.stripe.com and files.stripe.com, stored encrypted, and never displayed.`,
204
- placeholder: `rk_${live}_…`,
205
- },
206
- testCredential: rest.testCredential,
207
- callAdmission: STRIPE_ADMISSION[mode],
208
- usageGuide: {
209
- content: keyUsageGuide(mode, options.purpose, connectedAccount, options.instructions),
210
- // Explicit rather than derived: a key connector must lead with its one mode.
211
- summary: mode === "production"
212
- ? "PRODUCTION: real money. One live-mode key over REST; search operations, read details, then read or write."
213
- : "Sandbox: test data only. One test-mode key over REST; search operations, read details, then read or write.",
214
- },
215
- tools: [...restTools(rest.vendor), ...rest.tools],
216
- });
48
+ }, undefined, ["oauth"]);
49
+ function usageGuide(options) {
50
+ const copy = MODE_COPY[options.mode];
51
+ const account = connectedAccount(options);
52
+ return {
53
+ heading: "Stripe usage",
54
+ summary: options.mode === "production"
55
+ ? "PRODUCTION: real money. One configured live-mode key over REST; resolve ids before acting."
56
+ : "Sandbox: test data only. One configured test-mode key over REST; resolve ids before acting.",
57
+ context: [
58
+ `Mode: ${options.mode}. Connector purpose: ${options.purpose}`,
59
+ copy.warning,
60
+ "This connection's key is already configured and reaches exactly one Stripe account in this mode; there is no account selection or sign-in step.",
61
+ ...(account
62
+ ? [
63
+ `Connected account: ${account}. Every call acts as this Connect account; the platform account's own objects are out of reach here.`,
64
+ ]
65
+ : []),
66
+ ...(options.readOnly === true ? ["This connection is read-only: every write is refused."] : []),
67
+ ],
68
+ required: true,
69
+ };
217
70
  }
218
- /**
219
- * A maintained Stripe connection. `auth` selects the implementation: OAuth
220
- * reaches Stripe's hosted MCP server; an API key reaches Connecta's REST
221
- * connector to `api.stripe.com`.
222
- */
223
- export const stripe = defineProvider({
71
+ export const stripe = defineApiProvider({
224
72
  name: "stripe",
225
73
  title: "Stripe",
226
- kind: "dual",
227
74
  readme: "Stripe",
228
75
  bundle: {
229
- "baselineGzip": 232089,
230
- "maxGzip": 292089,
231
- "note": "./providers/stripe remeasures at 232,089 B gzip (#801), from 170,771 B on main: 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 Stripe operation index (638 operations; request details to depth 2, without descriptions or enums over 50 values; 37,918 B gzip as source). Details were shrunk before the cap moved: the first full index measured 81 KB gzip. The cap uses the existing baseline + 60,000 B policy.",
76
+ baselineGzip: 379663,
77
+ note: "./providers/stripe measures 379,663 B gzip standalone in F3 (#703), Node 22 CI static at 9420933711af5e42bf9d134d1b73bed114a48fa0 (run 39997464724, Run pnpm run check:build). This entry includes the shared Effect provider kit, paid once per deployment; standalone provider sizes are not additive. Provider entries are reported, not capped (#899).",
232
78
  },
233
79
  skill,
234
80
  options: STRIPE_OPTIONS,
235
- classify: STRIPE_CLASSIFICATION,
236
- create: byAuth({ oauth: stripeOAuth, apiKey: stripeApiKey }),
81
+ vendor: StripeApi,
82
+ baseUrl: (options) => {
83
+ connectedAccount(options);
84
+ return STRIPE_API_BASE_URL;
85
+ },
86
+ displayTitle: (options) => MODE_COPY[options.mode].title,
87
+ description: (options) => `Stripe payments (${MODE_COPY[options.mode].blurb}) — ${options.purpose}`,
88
+ maxResponseBytes: MAX_RESPONSE_BYTES,
89
+ idempotencyKey: true,
90
+ timeoutMs: READ_CAP_MS,
91
+ headers: { "Stripe-Version": stripeIndex.version },
92
+ defaultCallAdmission: (options) => STRIPE_ADMISSION[options.mode],
93
+ credential: (options) => {
94
+ const live = options.mode === "production" ? "live" : "test";
95
+ return {
96
+ label: `Stripe ${live}-mode secret or restricted key`,
97
+ description: `A ${live}-mode secret (sk_${live}_…) or restricted (rk_${live}_…) key; prefer a restricted key with only the permissions this connector needs. It is sent only to api.stripe.com and files.stripe.com, stored encrypted, and never displayed.`,
98
+ placeholder: `rk_${live}_…`,
99
+ };
100
+ },
101
+ authenticate,
102
+ safety,
103
+ errors: stripeErrors,
104
+ probe,
105
+ guide: usageGuide,
106
+ hatch: {
107
+ name: "stripe",
108
+ title: "Stripe",
109
+ index: stripeIndex,
110
+ verdicts: STRIPE_VERDICTS,
111
+ named: { "GET /v1/account": "get_stripe_account_info", "GET /v1/balance": "get_balance_summary" },
112
+ pathExample: "/v1/customers/cus_123",
113
+ pages: STRIPE_PAGES,
114
+ pageCursor: "argument",
115
+ binding: stripeBinding,
116
+ idempotency: { header: "Idempotency-Key", methods: ["POST"] },
117
+ notes: () => ({
118
+ read: "Pass page.nextCursor as cursor; starting_after or ending_before record-id anchors are allowed only on the first request, without cursor. v1 parameters use bracketed form encoding; v2 bodies are JSON. Quote PDFs use the confined files origin.",
119
+ write: "POST sends an Idempotency-Key; DELETE sends none. v1 bodies are form-encoded, including nested fields; v2 bodies are JSON. Upload files in the Stripe Dashboard.",
120
+ }),
121
+ },
122
+ tools: stripeTools,
237
123
  });
238
- /** @deprecated Read `stripe.definition.classify` instead. Kept for existing imports. */
239
- export const STRIPE_VETTED_CATALOG = reviewedCatalog(stripe.definition.classify, 'defineProvider("stripe")');
@@ -0,0 +1,4 @@
1
+ /** Which Stripe environment a secret or restricted key reaches. */
2
+ export type StripeMode = "production" | "sandbox";
3
+ /** Stripe's main REST origin. The PDF origin is confined separately. */
4
+ export declare const STRIPE_API_BASE_URL = "https://api.stripe.com";
@@ -0,0 +1,2 @@
1
+ /** Stripe's main REST origin. The PDF origin is confined separately. */
2
+ export const STRIPE_API_BASE_URL = "https://api.stripe.com";