@zackbart/connecta 0.34.1 → 0.36.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (441) hide show
  1. package/CHANGELOG.md +418 -0
  2. package/README.md +65 -105
  3. package/SECURITY.md +3 -2
  4. package/bin/connecta.mjs +41 -16
  5. package/bin/version.mjs +1 -1
  6. package/dist/access-tokens.d.ts +2 -1
  7. package/dist/access-tokens.js +66 -30
  8. package/dist/activity.d.ts +1 -1
  9. package/dist/activity.js +2 -0
  10. package/dist/agent-config.d.ts +23 -0
  11. package/dist/agent-config.js +59 -0
  12. package/dist/agent-description.js +16 -0
  13. package/dist/agent-identity.js +4 -4
  14. package/dist/agent-observation.js +39 -0
  15. package/dist/auth/clerk-sdk/client.d.ts +2 -0
  16. package/dist/auth/clerk-sdk/generated.js +554 -563
  17. package/dist/auth/clerk-transport.js +70 -3
  18. package/dist/auth/clerk.d.ts +13 -0
  19. package/dist/auth/clerk.js +653 -246
  20. package/dist/auth/cloudflare-access.js +46 -42
  21. package/dist/auth/downstream-client-metadata.js +2 -2
  22. package/dist/auth/downstream-oauth.js +2044 -1161
  23. package/dist/auth/downstream-revocation.js +88 -88
  24. package/dist/auth/native-call.js +20 -0
  25. package/dist/auth/native.js +184 -0
  26. package/dist/auth/oauth-start-reset.js +11 -5
  27. package/dist/auth/oauth-token-response.js +121 -102
  28. package/dist/auth/oauth-v2-migration.js +97 -78
  29. package/dist/auth/renewable-grant.js +10 -0
  30. package/dist/auth/static-oauth.js +751 -281
  31. package/dist/auth/vercel-agent.js +266 -0
  32. package/dist/auth-admission.js +204 -0
  33. package/dist/auth-elicitation.js +350 -241
  34. package/dist/authorization-handoff.js +164 -90
  35. package/dist/call-admission-context.js +3 -10
  36. package/dist/call-admission.js +2 -0
  37. package/dist/call-classification.js +9 -0
  38. package/dist/call-recovery.js +32 -13
  39. package/dist/canonical-json.js +8 -0
  40. package/dist/catalog-cache.js +369 -213
  41. package/dist/catalog-service.js +659 -530
  42. package/dist/catalog.js +5 -1
  43. package/dist/concurrency.js +0 -25
  44. package/dist/config-defaults.d.ts +1 -0
  45. package/dist/config-defaults.js +1 -0
  46. package/dist/config-schema.d.ts +3 -1
  47. package/dist/config-schema.js +13 -3
  48. package/dist/config.d.ts +40 -6
  49. package/dist/config.js +40 -26
  50. package/dist/connector-caller.d.ts +4 -0
  51. package/dist/connector-caller.js +17 -4
  52. package/dist/connectors/api-connector.d.ts +29 -7
  53. package/dist/connectors/api-connector.js +145 -57
  54. package/dist/connectors/guarded-fetch.d.ts +51 -17
  55. package/dist/connectors/guarded-fetch.js +215 -121
  56. package/dist/connectors/negotiation-cache.js +20 -10
  57. package/dist/connectors/remote-mcp.d.ts +10 -30
  58. package/dist/connectors/remote-mcp.js +955 -563
  59. package/dist/d1.js +10 -243
  60. package/dist/derived-context.js +5 -0
  61. package/dist/describe-config.d.ts +3 -1
  62. package/dist/describe-config.js +2 -0
  63. package/dist/downstream-input.js +347 -260
  64. package/dist/errors.d.ts +87 -6
  65. package/dist/errors.js +114 -4
  66. package/dist/execute.js +87 -50
  67. package/dist/executor-admission.js +3 -0
  68. package/dist/executors/quickjs.js +163 -112
  69. package/dist/guarded-transport.js +50 -0
  70. package/dist/guest-runtime.js +1 -1
  71. package/dist/http/client.js +439 -0
  72. package/dist/http/errors.js +558 -0
  73. package/dist/http/fields.js +49 -0
  74. package/dist/http/hatch-paging.js +318 -0
  75. package/dist/http/hatch.js +1279 -0
  76. package/dist/http/json-schema.js +267 -0
  77. package/dist/http/node-transport.js +241 -0
  78. package/dist/http/oauth.js +162 -0
  79. package/dist/http/paging.js +227 -0
  80. package/dist/http/provider.js +221 -0
  81. package/dist/http/safety.js +82 -0
  82. package/dist/http/services.js +79 -0
  83. package/dist/http/tools.js +379 -0
  84. package/dist/http/vendor-index.js +138 -0
  85. package/dist/http/vendor.js +448 -0
  86. package/dist/http/write-request.js +66 -0
  87. package/dist/http-policy.d.ts +11 -0
  88. package/dist/http-policy.js +45 -0
  89. package/dist/inbound-credential.js +1 -1
  90. package/dist/index.d.ts +2 -2
  91. package/dist/index.js +4 -0
  92. package/dist/invocation-auth.js +30 -19
  93. package/dist/invocation.js +218 -85
  94. package/dist/mcp-result.js +0 -4
  95. package/dist/membership.d.ts +4 -0
  96. package/dist/meta-output.js +1 -1
  97. package/dist/meta-tools.js +531 -406
  98. package/dist/native-recovery.js +52 -0
  99. package/dist/native-tools.js +382 -0
  100. package/dist/node.d.ts +4 -3
  101. package/dist/node.js +45 -8
  102. package/dist/oauth-handoff.js +177 -104
  103. package/dist/oauth-partition.js +6 -20
  104. package/dist/oauth-sealing.js +6 -7
  105. package/dist/operation-vocabulary.js +101 -0
  106. package/dist/operator-record.d.ts +2 -2
  107. package/dist/operator-record.js +17 -4
  108. package/dist/operator-ui/contract.d.ts +8 -3
  109. package/dist/operator-ui/generated.js +4 -4
  110. package/dist/operator-ui/model.d.ts +2 -3
  111. package/dist/program-writes.js +47 -26
  112. package/dist/provider-call-facts.d.ts +115 -0
  113. package/dist/provider-call-facts.js +182 -0
  114. package/dist/provider-call.d.ts +112 -0
  115. package/dist/provider-call.js +271 -0
  116. package/dist/provider.d.ts +65 -31
  117. package/dist/provider.js +116 -39
  118. package/dist/providers/_shared/google/hatch.js +91 -0
  119. package/dist/providers/_shared/google/kit.js +427 -0
  120. package/dist/providers/_shared/google/result-size.js +15 -2
  121. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  122. package/dist/providers/_shared/google/service-account.js +8 -4
  123. package/dist/providers/_shared/google/workspace.d.ts +6 -210
  124. package/dist/providers/_shared/google/workspace.js +6 -425
  125. package/dist/providers/_shared/rest/compact-index.js +86 -0
  126. package/dist/providers/_shared/rest/kit.js +146 -0
  127. package/dist/providers/_shared/rest/operation-index.js +230 -14
  128. package/dist/providers/_shared/rest/response-media.js +11 -0
  129. package/dist/providers/_shared/rest/value-safety.js +353 -195
  130. package/dist/providers/_shared/sensitive-fields.js +27 -0
  131. package/dist/providers/breeze/api.js +584 -0
  132. package/dist/providers/breeze/index.d.ts +1 -3
  133. package/dist/providers/breeze/index.js +67 -1420
  134. package/dist/providers/breeze/openapi.generated.js +60 -0
  135. package/dist/providers/breeze/skill.generated.js +2 -6
  136. package/dist/providers/breeze/tools.js +696 -0
  137. package/dist/providers/ccb/api.js +496 -0
  138. package/dist/providers/ccb/index.d.ts +15 -37
  139. package/dist/providers/ccb/index.js +77 -1702
  140. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  141. package/dist/providers/ccb/lib/constants.js +74 -0
  142. package/dist/providers/ccb/lib/guide.js +9 -0
  143. package/dist/providers/ccb/lib/verdicts.js +387 -0
  144. package/dist/providers/ccb/openapi.generated.js +397 -0
  145. package/dist/providers/ccb/safety.js +295 -0
  146. package/dist/providers/ccb/skill.generated.js +2 -6
  147. package/dist/providers/ccb/tools.js +853 -0
  148. package/dist/providers/cloudflare/api.js +1066 -0
  149. package/dist/providers/cloudflare/index.d.ts +5 -22
  150. package/dist/providers/cloudflare/index.js +79 -197
  151. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  152. package/dist/providers/cloudflare/lib/config.js +2 -0
  153. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  154. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  155. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  156. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  157. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  158. package/dist/providers/cloudflare/openapi.generated.js +4 -3
  159. package/dist/providers/cloudflare/{value-safety.js → safety.js} +487 -0
  160. package/dist/providers/cloudflare/skill.generated.js +2 -10
  161. package/dist/providers/cloudflare/tools.js +360 -0
  162. package/dist/providers/docs/api.js +51 -0
  163. package/dist/providers/docs/index.d.ts +1 -12
  164. package/dist/providers/docs/index.js +53 -1165
  165. package/dist/providers/docs/lib/constants.d.ts +18 -0
  166. package/dist/providers/docs/lib/constants.js +18 -0
  167. package/dist/providers/docs/lib/discovery.js +26 -0
  168. package/dist/providers/docs/lib/requests.js +48 -0
  169. package/dist/providers/docs/lib/schemas.js +168 -0
  170. package/dist/providers/docs/openapi.generated.js +16 -0
  171. package/dist/providers/docs/safety.js +54 -0
  172. package/dist/providers/docs/skill.generated.js +2 -6
  173. package/dist/providers/docs/tools.js +801 -0
  174. package/dist/providers/drive/api.js +177 -0
  175. package/dist/providers/drive/index.d.ts +1 -12
  176. package/dist/providers/drive/index.js +38 -1448
  177. package/dist/providers/drive/lib/constants.d.ts +6 -0
  178. package/dist/providers/drive/lib/constants.js +6 -0
  179. package/dist/providers/drive/lib/contracts.js +532 -0
  180. package/dist/providers/drive/lib/hatch.js +197 -0
  181. package/dist/providers/drive/openapi.generated.js +77 -0
  182. package/dist/providers/drive/safety.js +90 -0
  183. package/dist/providers/drive/skill.generated.js +2 -6
  184. package/dist/providers/drive/tools.js +1290 -0
  185. package/dist/providers/forms/api.js +71 -0
  186. package/dist/providers/forms/index.d.ts +1 -12
  187. package/dist/providers/forms/index.js +49 -1145
  188. package/dist/providers/forms/lib/constants.d.ts +14 -0
  189. package/dist/providers/forms/lib/constants.js +19 -0
  190. package/dist/providers/forms/lib/hatch.js +72 -0
  191. package/dist/providers/forms/openapi.generated.js +23 -0
  192. package/dist/providers/forms/safety.js +34 -0
  193. package/dist/providers/forms/skill.generated.js +2 -8
  194. package/dist/providers/forms/tools.js +1023 -0
  195. package/dist/providers/github/api.js +150 -0
  196. package/dist/providers/github/index.d.ts +4 -5
  197. package/dist/providers/github/index.js +30 -87
  198. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  199. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  200. package/dist/providers/github/lib/discovery.js +132 -0
  201. package/dist/providers/github/lib/operations.js +58 -0
  202. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  203. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  204. package/dist/providers/github/openapi.generated.js +1216 -0
  205. package/dist/providers/github/safety.js +216 -0
  206. package/dist/providers/github/skill.generated.js +2 -5
  207. package/dist/providers/github/tools.js +506 -0
  208. package/dist/providers/gmail/api.js +114 -0
  209. package/dist/providers/gmail/index.d.ts +1 -12
  210. package/dist/providers/gmail/index.js +73 -1621
  211. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  212. package/dist/providers/gmail/lib/constants.js +16 -0
  213. package/dist/providers/gmail/lib/index.js +173 -0
  214. package/dist/providers/gmail/lib/schemas.js +176 -0
  215. package/dist/providers/gmail/lib/threading.js +120 -0
  216. package/dist/providers/gmail/openapi.generated.js +92 -0
  217. package/dist/providers/gmail/safety.js +21 -0
  218. package/dist/providers/gmail/skill.generated.js +2 -6
  219. package/dist/providers/gmail/tools.js +1435 -0
  220. package/dist/providers/overflow/api.js +1008 -0
  221. package/dist/providers/overflow/index.d.ts +1 -17
  222. package/dist/providers/overflow/index.js +60 -1488
  223. package/dist/providers/overflow/skill.generated.js +2 -5
  224. package/dist/providers/overflow/tools.js +873 -0
  225. package/dist/providers/planning-center/api.js +467 -0
  226. package/dist/providers/planning-center/index.d.ts +4 -35
  227. package/dist/providers/planning-center/index.js +69 -2445
  228. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  229. package/dist/providers/planning-center/lib/constants.js +83 -0
  230. package/dist/providers/planning-center/lib/discovery.js +40 -0
  231. package/dist/providers/planning-center/lib/guide.js +39 -0
  232. package/dist/providers/planning-center/lib/json-api.js +83 -0
  233. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  234. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  235. package/dist/providers/planning-center/safety.js +188 -0
  236. package/dist/providers/planning-center/skill.generated.js +2 -27
  237. package/dist/providers/planning-center/tools.js +1010 -0
  238. package/dist/providers/quickbooks/api.js +299 -0
  239. package/dist/providers/quickbooks/index.d.ts +13 -0
  240. package/dist/providers/quickbooks/index.js +93 -0
  241. package/dist/providers/quickbooks/lib/query.js +118 -0
  242. package/dist/providers/quickbooks/lib/writes.js +168 -0
  243. package/dist/providers/quickbooks/safety.js +222 -0
  244. package/dist/providers/quickbooks/skill.generated.js +5 -0
  245. package/dist/providers/quickbooks/tools.js +117 -0
  246. package/dist/providers/sheets/api.js +133 -0
  247. package/dist/providers/sheets/index.d.ts +4 -16
  248. package/dist/providers/sheets/index.js +61 -1172
  249. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  250. package/dist/providers/sheets/lib/constants.js +14 -0
  251. package/dist/providers/sheets/lib/hatch.js +163 -0
  252. package/dist/providers/sheets/lib/requests.js +105 -0
  253. package/dist/providers/sheets/lib/schemas.js +138 -0
  254. package/dist/providers/sheets/openapi.generated.js +30 -0
  255. package/dist/providers/sheets/safety.js +27 -0
  256. package/dist/providers/sheets/skill.generated.js +2 -7
  257. package/dist/providers/sheets/tools.js +733 -0
  258. package/dist/providers/slides/api.js +147 -0
  259. package/dist/providers/slides/index.d.ts +2 -10
  260. package/dist/providers/slides/index.js +48 -2555
  261. package/dist/providers/slides/lib/constants.d.ts +11 -0
  262. package/dist/providers/slides/lib/constants.js +11 -0
  263. package/dist/providers/slides/lib/requests.js +60 -0
  264. package/dist/providers/slides/lib/schemas.js +565 -0
  265. package/dist/providers/slides/openapi.generated.js +18 -0
  266. package/dist/providers/slides/skill.generated.js +2 -6
  267. package/dist/providers/slides/tools.js +1968 -0
  268. package/dist/providers/stripe/api.js +401 -0
  269. package/dist/providers/stripe/index.d.ts +5 -27
  270. package/dist/providers/stripe/index.js +74 -210
  271. package/dist/providers/stripe/lib/config.d.ts +4 -0
  272. package/dist/providers/stripe/lib/config.js +2 -0
  273. package/dist/providers/stripe/openapi.generated.js +4 -3
  274. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  275. package/dist/providers/stripe/skill.generated.js +2 -11
  276. package/dist/providers/stripe/tools.js +77 -0
  277. package/dist/providers/tithely/api.js +531 -0
  278. package/dist/providers/tithely/index.d.ts +17 -0
  279. package/dist/providers/tithely/index.js +86 -965
  280. package/dist/providers/tithely/skill.generated.js +2 -5
  281. package/dist/providers/tithely/tools.js +426 -0
  282. package/dist/providers/vercel/api.js +551 -0
  283. package/dist/providers/vercel/index.d.ts +9 -25
  284. package/dist/providers/vercel/index.js +65 -260
  285. package/dist/providers/vercel/lib/config.d.ts +2 -0
  286. package/dist/providers/vercel/lib/config.js +2 -0
  287. package/dist/providers/vercel/lib/index.js +117 -0
  288. package/dist/providers/vercel/lib/logs.js +100 -0
  289. package/dist/providers/vercel/lib/pin.js +270 -0
  290. package/dist/providers/vercel/openapi.generated.js +10 -5
  291. package/dist/providers/vercel/{value-safety.js → safety.js} +247 -38
  292. package/dist/providers/vercel/skill.generated.js +2 -7
  293. package/dist/providers/vercel/tools.js +642 -0
  294. package/dist/redaction-identity.js +47 -0
  295. package/dist/redaction-marker.js +125 -0
  296. package/dist/registry.d.ts +21 -15
  297. package/dist/registry.js +409 -376
  298. package/dist/routes/access-tokens.js +1 -1
  299. package/dist/routes/actor-labels.js +1 -1
  300. package/dist/routes/connect.js +1 -1
  301. package/dist/routes/dispatch.js +103 -0
  302. package/dist/routes/mcp.js +170 -79
  303. package/dist/routes/oauth.js +6 -1
  304. package/dist/routes/operator.js +2 -2
  305. package/dist/routes/shared.d.ts +5 -4
  306. package/dist/routes/shared.js +244 -177
  307. package/dist/routes/skills.js +10 -8
  308. package/dist/routes/ui-config.js +27 -3
  309. package/dist/routes/ui-data.js +21 -20
  310. package/dist/routes/ui.js +1 -1
  311. package/dist/runtime/call-admission.js +0 -26
  312. package/dist/runtime/call-entry.js +30 -0
  313. package/dist/runtime/call.js +552 -0
  314. package/dist/runtime/connector-scope.js +7 -0
  315. package/dist/runtime/credential-probe.js +34 -0
  316. package/dist/runtime/executor.js +40 -0
  317. package/dist/runtime/native-storage.js +63 -0
  318. package/dist/runtime/registry.js +27 -0
  319. package/dist/runtime/request-scope.js +72 -0
  320. package/dist/runtime/run.js +15 -7
  321. package/dist/runtime/shared-read.js +34 -5
  322. package/dist/runtime/storage.js +34 -21
  323. package/dist/sent-secrets.d.ts +194 -37
  324. package/dist/sent-secrets.js +1743 -340
  325. package/dist/server.js +5 -56
  326. package/dist/skills.js +322 -223
  327. package/dist/sqlite.js +15 -14
  328. package/dist/storage/d1-copy.js +255 -0
  329. package/dist/storage/d1-driver.js +15 -0
  330. package/dist/storage/keys.js +28 -0
  331. package/dist/storage/sql-driver.js +88 -0
  332. package/dist/storage/sql-native.js +544 -0
  333. package/dist/storage/sql-schema.d.ts +6 -0
  334. package/dist/storage/sql-schema.js +15 -0
  335. package/dist/storage/sql.d.ts +14 -20
  336. package/dist/storage/sql.js +29 -535
  337. package/dist/timeout.js +0 -26
  338. package/dist/tool-safety.js +20 -10
  339. package/dist/types.d.ts +9 -109
  340. package/dist/ui.d.ts +1 -1
  341. package/dist/ui.js +0 -1
  342. package/dist/upward.js +3 -0
  343. package/dist/usage-guide.js +3 -1
  344. package/dist/validate.d.ts +4 -2
  345. package/dist/validate.js +86 -9
  346. package/dist/version.d.ts +1 -1
  347. package/dist/version.js +1 -1
  348. package/dist/worker.js +312 -292
  349. package/dist/workspace-subject.js +5 -1
  350. package/dist/write-outcome.js +454 -34
  351. package/documentation/README.md +28 -7
  352. package/documentation/architecture.md +2409 -255
  353. package/documentation/auth.md +867 -114
  354. package/documentation/code-mode.md +49 -16
  355. package/documentation/deploying.md +164 -20
  356. package/documentation/hosted-mcp-migration.md +460 -0
  357. package/documentation/integrating.md +129 -144
  358. package/documentation/meta-tools.md +409 -32
  359. package/documentation/operating.md +27 -3
  360. package/documentation/operator-tests.md +3 -0
  361. package/documentation/operator-ui.md +84 -48
  362. package/documentation/provider-auth-migration.md +16 -63
  363. package/documentation/provider-migration-0.29.md +10 -5
  364. package/documentation/provider-migration-0.35.md +975 -0
  365. package/documentation/providers.md +1347 -0
  366. package/examples/worker/AGENTS.md +23 -9
  367. package/examples/worker/README.md +254 -135
  368. package/examples/worker/alchemy.run.ts +116 -0
  369. package/examples/worker/gitignore +10 -0
  370. package/examples/worker/src/connecta.config.ts +23 -21
  371. package/examples/worker/wrangler.jsonc +14 -5
  372. package/guides/connecting-agents.md +157 -0
  373. package/guides/how-it-works.md +156 -0
  374. package/guides/safety-and-trust.md +153 -0
  375. package/package.json +30 -50
  376. package/templates/node/.env.example +3 -0
  377. package/templates/node/README.md +22 -2
  378. package/templates/node/docker-compose.yml +1 -0
  379. package/templates/node/package.json +3 -2
  380. package/templates/node/src/connecta.config.ts +8 -0
  381. package/dist/catalog-drift.d.ts +0 -138
  382. package/dist/catalog-drift.js +0 -578
  383. package/dist/operator-ui/agents.d.ts +0 -74
  384. package/dist/operator-ui/agents.js +0 -104
  385. package/dist/operator-ui/config-summary.js +0 -565
  386. package/dist/operator-ui/connection-map.js +0 -376
  387. package/dist/operator-ui/endpoints.js +0 -221
  388. package/dist/operator-ui/fix-prompts.d.ts +0 -18
  389. package/dist/operator-ui/fix-prompts.js +0 -87
  390. package/dist/operator-ui/health.js +0 -52
  391. package/dist/operator-ui/member-page.js +0 -97
  392. package/dist/operator-ui/overview.js +0 -123
  393. package/dist/operator-ui/setup-commands.js +0 -51
  394. package/dist/operator-ui/view.d.ts +0 -401
  395. package/dist/operator-ui/view.js +0 -705
  396. package/dist/providers/_shared/request-token.js +0 -83
  397. package/dist/providers/_shared/rest/dispatch.js +0 -41
  398. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  399. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  400. package/dist/providers/_shared/rest/tools.js +0 -569
  401. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  402. package/dist/providers/basecamp/index.d.ts +0 -45
  403. package/dist/providers/basecamp/index.js +0 -997
  404. package/dist/providers/basecamp/skill.generated.js +0 -9
  405. package/dist/providers/cloudflare/rest.d.ts +0 -37
  406. package/dist/providers/cloudflare/rest.js +0 -1097
  407. package/dist/providers/github/hosted.js +0 -218
  408. package/dist/providers/github/rest.js +0 -321
  409. package/dist/providers/infisical/index.d.ts +0 -7
  410. package/dist/providers/infisical/index.js +0 -713
  411. package/dist/providers/infisical/skill.generated.js +0 -8
  412. package/dist/providers/intercom/index.d.ts +0 -24
  413. package/dist/providers/intercom/index.js +0 -121
  414. package/dist/providers/intercom/skill.generated.js +0 -8
  415. package/dist/providers/linear/index.d.ts +0 -55
  416. package/dist/providers/linear/index.js +0 -537
  417. package/dist/providers/linear/skill.generated.js +0 -8
  418. package/dist/providers/mixpanel/index.d.ts +0 -59
  419. package/dist/providers/mixpanel/index.js +0 -472
  420. package/dist/providers/mixpanel/operations.js +0 -20
  421. package/dist/providers/mixpanel/rest.js +0 -603
  422. package/dist/providers/mixpanel/skill.generated.js +0 -10
  423. package/dist/providers/mixpanel/value-safety.js +0 -16
  424. package/dist/providers/notion/index.d.ts +0 -67
  425. package/dist/providers/notion/index.js +0 -368
  426. package/dist/providers/notion/openapi.generated.js +0 -75
  427. package/dist/providers/notion/rest.d.ts +0 -24
  428. package/dist/providers/notion/rest.js +0 -1226
  429. package/dist/providers/notion/skill.generated.js +0 -11
  430. package/dist/providers/notion/value-safety.js +0 -56
  431. package/dist/providers/revenuecat/index.d.ts +0 -51
  432. package/dist/providers/revenuecat/index.js +0 -697
  433. package/dist/providers/revenuecat/skill.generated.js +0 -11
  434. package/dist/providers/stripe/rest.d.ts +0 -14
  435. package/dist/providers/stripe/rest.js +0 -402
  436. package/dist/providers/vercel/rest.d.ts +0 -20
  437. package/dist/providers/vercel/rest.js +0 -1020
  438. package/dist/providers/wispr-flow/index.d.ts +0 -14
  439. package/dist/providers/wispr-flow/index.js +0 -117
  440. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  441. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -3,6 +3,7 @@ import { ConnectorCallError } from "../errors.js";
3
3
  import { fromSignal, runEdge } from "../runtime/run.js";
4
4
  import { classifyHost } from "../url-safety.js";
5
5
  import { authenticateRemoteClient, remoteClientAuthMethod, } from "./downstream-client-metadata.js";
6
+ import { authCall, authFlow, authProgram, registerAuth } from "./native.js";
6
7
  import { discoveryIssuer } from "./oauth-v2-migration.js";
7
8
  /** Local removal succeeded; provider-side removal needs the operator's attention. */
8
9
  export class OAuthRevocationError extends ConnectorCallError {
@@ -12,95 +13,94 @@ export class OAuthRevocationError extends ConnectorCallError {
12
13
  }
13
14
  const REVOCATION_DEADLINE_MS = 20_000;
14
15
  /** Revoke only the issuer-bound snapshot removed by a successful reset CAS, once. */
15
- export async function revokeDownstreamGrant(body, send, configuredClient) {
16
- const metadata = body.discovery?.authorizationServerMetadata;
17
- const revocation = metadata;
18
- const endpoint = revocation?.revocation_endpoint;
19
- if (endpoint === undefined || !body.tokens)
20
- return;
21
- const deadline = new AbortController();
22
- const timer = setTimeout(() => deadline.abort(), REVOCATION_DEADLINE_MS);
23
- try {
24
- if (typeof endpoint !== "string" ||
25
- !body.issuer ||
26
- discoveryIssuer(body.discovery) !== body.issuer ||
27
- !body.client ||
28
- (body.client.value.issuer !== undefined && body.client.value.issuer !== body.issuer))
29
- throw new OAuthRevocationError();
30
- const target = new URL(endpoint);
31
- // An operator-trusted HTTP MCP origin does not authorize plaintext
32
- // credential endpoints. Only the existing loopback development exception
33
- // is eligible; the connector's destination guard still checks that scope.
34
- if ((target.protocol !== "https:" &&
35
- !(target.protocol === "http:" && classifyHost(target.hostname) === "loopback")) ||
36
- target.username ||
37
- target.password ||
38
- target.hash)
39
- throw new OAuthRevocationError();
40
- const information = body.client.value;
41
- const secret = configuredClient ? configuredClient.clientSecret : information.client_secret;
42
- if (configuredClient &&
43
- (body.issuer !== configuredClient.issuer || information.client_id !== configuredClient.clientId))
44
- throw new OAuthRevocationError();
45
- const advertisedMethods = revocation?.revocation_endpoint_auth_methods_supported;
46
- if (advertisedMethods !== undefined &&
47
- (!Array.isArray(advertisedMethods) || !advertisedMethods.every((method) => typeof method === "string")))
48
- throw new OAuthRevocationError();
49
- const methods = advertisedMethods;
50
- const declared = configuredClient
51
- ? remoteClientAuthMethod(configuredClient)
52
- : "token_endpoint_auth_method" in information
53
- ? information.token_endpoint_auth_method
54
- : undefined;
55
- const method = declared ??
56
- (secret === undefined
57
- ? "none"
58
- : methods?.includes("client_secret_basic") || !methods
59
- ? "client_secret_basic"
60
- : "client_secret_post");
61
- if ((method !== "none" && method !== "client_secret_basic" && method !== "client_secret_post") ||
62
- (method === "none") !== (secret === undefined) ||
63
- (methods && !methods.includes(method)))
64
- throw new OAuthRevocationError();
65
- const token = body.tokens.refresh_token ?? body.tokens.access_token;
66
- if (typeof token !== "string" || !token)
67
- throw new OAuthRevocationError();
68
- const params = new URLSearchParams({
69
- token,
70
- token_type_hint: body.tokens.refresh_token ? "refresh_token" : "access_token",
71
- });
72
- const headers = new Headers({ "Content-Type": "application/x-www-form-urlencoded" });
73
- authenticateRemoteClient({
74
- issuer: body.issuer,
75
- clientId: information.client_id,
76
- ...(secret !== undefined ? { clientSecret: secret } : {}),
77
- tokenEndpointAuthMethod: method,
78
- }, headers, params);
79
- await runEdge(Effect.raceAllFirst([
80
- fromSignal(deadline.signal),
81
- Effect.tryPromise({
82
- try: async () => {
83
- const response = await send(target, {
84
- method: "POST",
85
- headers,
86
- body: params,
87
- redirect: "manual",
88
- signal: deadline.signal,
89
- });
16
+ export function revokeDownstreamGrant(body, send, configuredClient) {
17
+ return runEdge(authProgram(revokeDownstreamGrantNative, [body, send, configuredClient]));
18
+ }
19
+ const revokeDownstreamGrantNative = /* @__PURE__ */ registerAuth(revokeDownstreamGrant, function (body, send, configuredClient) {
20
+ return authFlow(function* () {
21
+ const metadata = body.discovery?.authorizationServerMetadata;
22
+ const revocation = metadata;
23
+ const endpoint = revocation?.revocation_endpoint;
24
+ if (endpoint === undefined || !body.tokens)
25
+ return;
26
+ const deadline = new AbortController();
27
+ const timer = setTimeout(() => deadline.abort(), REVOCATION_DEADLINE_MS);
28
+ try {
29
+ if (typeof endpoint !== "string" ||
30
+ !body.issuer ||
31
+ discoveryIssuer(body.discovery) !== body.issuer ||
32
+ !body.client ||
33
+ (body.client.value.issuer !== undefined && body.client.value.issuer !== body.issuer))
34
+ throw new OAuthRevocationError();
35
+ const target = new URL(endpoint);
36
+ // An operator-trusted HTTP MCP origin does not authorize plaintext
37
+ // credential endpoints. Only the existing loopback development exception
38
+ // is eligible; the connector's destination guard still checks that scope.
39
+ if ((target.protocol !== "https:" &&
40
+ !(target.protocol === "http:" && classifyHost(target.hostname) === "loopback")) ||
41
+ target.username ||
42
+ target.password ||
43
+ target.hash)
44
+ throw new OAuthRevocationError();
45
+ const information = body.client.value;
46
+ const secret = configuredClient ? configuredClient.clientSecret : information.client_secret;
47
+ if (configuredClient &&
48
+ (body.issuer !== configuredClient.issuer || information.client_id !== configuredClient.clientId))
49
+ throw new OAuthRevocationError();
50
+ const advertisedMethods = revocation?.revocation_endpoint_auth_methods_supported;
51
+ if (advertisedMethods !== undefined &&
52
+ (!Array.isArray(advertisedMethods) || !advertisedMethods.every((method) => typeof method === "string")))
53
+ throw new OAuthRevocationError();
54
+ const methods = advertisedMethods;
55
+ const declared = configuredClient
56
+ ? remoteClientAuthMethod(configuredClient)
57
+ : "token_endpoint_auth_method" in information
58
+ ? information.token_endpoint_auth_method
59
+ : undefined;
60
+ const method = declared ??
61
+ (secret === undefined
62
+ ? "none"
63
+ : methods?.includes("client_secret_basic") || !methods
64
+ ? "client_secret_basic"
65
+ : "client_secret_post");
66
+ if ((method !== "none" && method !== "client_secret_basic" && method !== "client_secret_post") ||
67
+ (method === "none") !== (secret === undefined) ||
68
+ (methods && !methods.includes(method)))
69
+ throw new OAuthRevocationError();
70
+ const token = body.tokens.refresh_token ?? body.tokens.access_token;
71
+ if (typeof token !== "string" || !token)
72
+ throw new OAuthRevocationError();
73
+ const params = new URLSearchParams({
74
+ token,
75
+ token_type_hint: body.tokens.refresh_token ? "refresh_token" : "access_token",
76
+ });
77
+ const headers = new Headers({ "Content-Type": "application/x-www-form-urlencoded" });
78
+ authenticateRemoteClient({
79
+ issuer: body.issuer,
80
+ clientId: information.client_id,
81
+ ...(secret !== undefined ? { clientSecret: secret } : {}),
82
+ tokenEndpointAuthMethod: method,
83
+ }, headers, params);
84
+ (yield Effect.raceAllFirst([
85
+ fromSignal(deadline.signal),
86
+ authFlow(function* () {
87
+ const response = (yield authCall(send, [
88
+ target,
89
+ { method: "POST", headers, body: params, redirect: "manual", signal: deadline.signal },
90
+ ]));
90
91
  // RFC 7009's success is HTTP 200. Bodies and headers never explain a failure.
91
92
  void response.body?.cancel().catch(() => { });
92
93
  if (response.status !== 200)
93
94
  throw new OAuthRevocationError();
94
- },
95
- catch: () => new OAuthRevocationError(),
96
- }),
97
- ]));
98
- }
99
- catch {
100
- // No provider text, credential-bearing URL, original exception, or cause survives.
101
- throw new OAuthRevocationError();
102
- }
103
- finally {
104
- clearTimeout(timer);
105
- }
106
- }
95
+ }),
96
+ ]));
97
+ }
98
+ catch {
99
+ // No provider text, credential-bearing URL, original exception, or cause survives.
100
+ throw new OAuthRevocationError();
101
+ }
102
+ finally {
103
+ clearTimeout(timer);
104
+ }
105
+ });
106
+ });
@@ -0,0 +1,20 @@
1
+ // Request/call Context belongs only to downstream auth, outside metadata/UI.
2
+ import { Effect } from "effect";
3
+ import { viewServices, viewSignal } from "../runtime/call.js";
4
+ import { RequestScope } from "../runtime/request-scope.js";
5
+ import { fromSignal } from "../runtime/run.js";
6
+ import { authCall } from "./native.js";
7
+ export function authView(ctx, work, requestOwned = false) {
8
+ return RequestScope.use((owner) => {
9
+ const signal = viewSignal(ctx, requestOwned);
10
+ if (!owner.open || signal.aborted)
11
+ return Effect.fail(signal.reason);
12
+ // Settlement facts from all synchronous abort observers precede cleanup,
13
+ // as they did at the Promise boundary. This grants no live authority.
14
+ const abort = Effect.catch(fromSignal(signal), (error) => Effect.andThen(Effect.yieldNow, Effect.fail(error)));
15
+ return Effect.raceFirst(authCall(work, [signal]), abort).pipe(Effect.flatMap((value) => {
16
+ const current = viewSignal(ctx, requestOwned);
17
+ return current.aborted ? Effect.fail(current.reason) : Effect.succeed(value);
18
+ }));
19
+ }).pipe(Effect.provideContext(viewServices(ctx)));
20
+ }
@@ -0,0 +1,184 @@
1
+ // Private auth programs. Promise methods are SDK/custom edges; owned programs
2
+ // compose directly by function identity, including inherited implementations.
3
+ import { Cause, Context, Effect, Exit, Scheduler } from "effect";
4
+ import { getNativeStorage } from "../runtime/native-storage.js";
5
+ import { causeError, detach, fromSignal, runEdge } from "../runtime/run.js";
6
+ const programs = new WeakMap();
7
+ const methods = new WeakMap();
8
+ export class AuthenticationWork extends Context.Service()("connecta/auth/Work") {
9
+ }
10
+ export function hasAuthProgram(edge) {
11
+ return programs.has(edge);
12
+ }
13
+ /** A bounded coordinator/submitted platform operation has its own settlement. */
14
+ export function authDetached(effect, waitUntil) {
15
+ return Effect.flatMap(Effect.serviceOption(AuthenticationWork), (work) => Effect.callback((resume) => {
16
+ const settlement = detach(effect.pipe(Effect.onExit((exit) => Effect.sync(() => {
17
+ resume(Exit.isSuccess(exit) ? Effect.succeed(exit.value) : Effect.failCause(exit.cause));
18
+ }))));
19
+ if (work._tag === "Some")
20
+ work.value.track(settlement);
21
+ try {
22
+ waitUntil?.(settlement);
23
+ }
24
+ catch {
25
+ /* The bounded coordinator is already running. */
26
+ }
27
+ }));
28
+ }
29
+ export function registerAuth(edge, program) {
30
+ programs.set(edge, program);
31
+ return program;
32
+ }
33
+ export function authProgram(program, args) {
34
+ return Effect.suspend(() => program(...args)).pipe(Effect.catchDefect(Effect.fail));
35
+ }
36
+ export function registerAuthMethod(prototype, key, program, own) {
37
+ let entries = methods.get(prototype);
38
+ if (!entries)
39
+ methods.set(prototype, (entries = new Map()));
40
+ entries.set(key, program);
41
+ registerAuth(own, program);
42
+ }
43
+ export function authOwnMethod(prototype, receiver, key, args) {
44
+ return Effect.suspend(() => methods.get(prototype).get(key).apply(receiver, args)).pipe(Effect.catchDefect(Effect.fail));
45
+ }
46
+ function authOwn(edge, receiver, args) {
47
+ return Effect.suspend(() => programs.get(edge).apply(receiver, args)).pipe(Effect.catchDefect(Effect.fail));
48
+ }
49
+ export function authMethod(program) {
50
+ function edge(...args) {
51
+ return runEdge(authOwn(edge, this, args));
52
+ }
53
+ registerAuth(edge, program);
54
+ return edge;
55
+ }
56
+ export function authValue(work) {
57
+ return Effect.suspend(() => {
58
+ const value = work();
59
+ if (Effect.isEffect(value))
60
+ return value;
61
+ if (!value || typeof value.then !== "function")
62
+ return Effect.succeed(value);
63
+ const pending = Promise.resolve(value);
64
+ return Effect.flatMap(Effect.serviceOption(AuthenticationWork), (lifetime) => {
65
+ if (lifetime._tag === "Some")
66
+ lifetime.value.track(pending);
67
+ return awaitAuthPromise(pending);
68
+ });
69
+ }).pipe(Effect.catchDefect(Effect.fail));
70
+ }
71
+ // Keep the platform wait separate from the synchronous service lookup.
72
+ // Accounting remains attached to the actual platform promise's settlement.
73
+ function awaitAuthPromise(pending) {
74
+ return Effect.tryPromise({ try: () => pending, catch: (error) => error });
75
+ }
76
+ export function authCall(fn, args, receiver) {
77
+ return fn === undefined
78
+ ? Effect.succeed(undefined)
79
+ : Effect.suspend(() => programs.has(fn) ? authOwn(fn, receiver, args) : authValue(() => fn.apply(receiver, args)));
80
+ }
81
+ export function authInvoke(receiver, key, args) {
82
+ return Effect.suspend(() => {
83
+ const method = receiver[key];
84
+ return typeof method === "function"
85
+ ? authCall(method, args, receiver)
86
+ : authValue(() => Reflect.apply(method, receiver, args));
87
+ }).pipe(Effect.catchDefect(Effect.fail));
88
+ }
89
+ export function authStorage(storage, key, args, beforeSubmit) {
90
+ return Effect.suspend(() => {
91
+ const native = getNativeStorage(storage);
92
+ const operation = native
93
+ ? authValue(() => Reflect.get(native, key).apply(native, args))
94
+ : authInvoke(storage, key, args);
95
+ // Ownership transfer and native/custom storage submission are one JS
96
+ // reaction, including D2's lazy typed wrapper. Actual I/O can still wait.
97
+ const submitted = beforeSubmit ? authSubmission(operation, beforeSubmit) : operation;
98
+ if (!native)
99
+ return submitted;
100
+ return Effect.flatMap(Effect.serviceOption(AuthenticationWork), (work) => work._tag === "Some" ? authDetached(submitted) : submitted);
101
+ });
102
+ }
103
+ function authSubmission(operation, beforeSubmit) {
104
+ return Effect.flatMap(Scheduler.Scheduler, (parent) => {
105
+ let submitting = false;
106
+ const scheduler = {
107
+ executionMode: parent.executionMode,
108
+ shouldYield: (fiber) => !submitting && parent.shouldYield(fiber),
109
+ makeDispatcher: () => parent.makeDispatcher(),
110
+ };
111
+ return Effect.suspend(() => {
112
+ submitting = true;
113
+ // Resume ordinary scheduling before any pending I/O can continue. This
114
+ // gate covers only submission's current JS reaction, including throws.
115
+ queueMicrotask(() => {
116
+ submitting = false;
117
+ });
118
+ beforeSubmit();
119
+ return operation;
120
+ }).pipe(Effect.provideService(Scheduler.Scheduler, scheduler));
121
+ });
122
+ }
123
+ export function authThen(effect, success, failure) {
124
+ return Effect.matchEffect(effect, {
125
+ onSuccess: (value) => (success ? authCall(success, [value]) : Effect.succeed(value)),
126
+ onFailure: (error) => (failure ? authCall(failure, [error]) : Effect.fail(error)),
127
+ });
128
+ }
129
+ export function authCatch(effect, failure) {
130
+ return Effect.catch(effect, (error) => authCall(failure, [error]));
131
+ }
132
+ export function authAll(values, settled = false) {
133
+ return Effect.all(Array.from(values, (value) => {
134
+ const effect = authValue(() => value);
135
+ return settled
136
+ ? Effect.match(effect, {
137
+ onSuccess: (value) => ({ status: "fulfilled", value }),
138
+ onFailure: (reason) => ({ status: "rejected", reason }),
139
+ })
140
+ : effect;
141
+ }), { concurrency: "unbounded" });
142
+ }
143
+ export function authAwait(effect, signal) {
144
+ return signal ? Effect.raceFirst(effect, fromSignal(signal)) : effect;
145
+ }
146
+ /**
147
+ * Drive native auth control flow, delivering typed failures to its local
148
+ * catch clauses. Interruption remains interruption and closes the generator;
149
+ * its yielded finally blocks still run, including asynchronous body cleanup.
150
+ * Every yielded operation is an Effect, never an async orchestration thunk.
151
+ */
152
+ export function authFlow(make) {
153
+ return Effect.suspend(() => {
154
+ const iterator = make();
155
+ let done = false;
156
+ const drive = (step) => Effect.gen(function* () {
157
+ while (!step.done) {
158
+ const result = yield* Effect.exit(step.value.pipe(Effect.catchDefect(Effect.fail)));
159
+ if (Exit.isSuccess(result))
160
+ step = iterator.next(result.value);
161
+ else {
162
+ if (result.cause.reasons.some(Cause.isInterruptReason))
163
+ return yield* Effect.failCause(result.cause);
164
+ step = iterator.throw(causeError(result.cause));
165
+ }
166
+ }
167
+ done = true;
168
+ return step.value;
169
+ }).pipe(Effect.catchDefect(Effect.fail));
170
+ return Effect.suspend(() => drive(iterator.next())).pipe(Effect.ensuring(Effect.suspend(() => done ? Effect.void : drive(iterator.return(undefined)).pipe(Effect.orDie, Effect.asVoid))));
171
+ });
172
+ }
173
+ /** Parallel native mapping without eagerly starting Promise shells. */
174
+ export function authMap(values, program, settled = false) {
175
+ return authAll(values.map((value) => program(value)), settled);
176
+ }
177
+ /** The physical fetch leaf also owns cancellation of a late response body. */
178
+ export function authFetch(input, init) {
179
+ return authValue(() => fetch(input, init).then((response) => {
180
+ if (init?.signal?.aborted)
181
+ void response.body?.cancel().catch(() => { });
182
+ return response;
183
+ }));
184
+ }
@@ -1,3 +1,5 @@
1
+ import { runEdge } from "../runtime/run.js";
2
+ import { authAll, authFlow, authProgram, registerAuth } from "./native.js";
1
3
  // The operator route must not answer while a storage reset it started can
2
4
  // still publish an older generation. Storage has no cancellation contract.
3
5
  const startResets = new WeakMap();
@@ -12,9 +14,13 @@ export function trackOAuthStartReset(scope, reset) {
12
14
  // unhandled rejection merely because its caller timed out first.
13
15
  void reset.then(() => pending.delete(reset), () => pending.delete(reset));
14
16
  }
15
- export async function drainOAuthStartResets(scope) {
16
- const pending = startResets.get(scope);
17
- while (pending && pending.size > 0) {
18
- await Promise.allSettled(pending);
19
- }
17
+ export function drainOAuthStartResets(scope) {
18
+ return runEdge(authProgram(drainOAuthStartResetsNative, [scope]));
20
19
  }
20
+ const drainOAuthStartResetsNative = /* @__PURE__ */ registerAuth(drainOAuthStartResets, function (scope) {
21
+ return authFlow(function* () {
22
+ const pending = startResets.get(scope);
23
+ while (pending && pending.size > 0)
24
+ yield authAll(pending, true);
25
+ });
26
+ });