@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
@@ -0,0 +1,270 @@
1
+ // Deployment confinement, separate from Vercel's optional routing default.
2
+ import { Effect } from "effect";
3
+ import { ConnectorCallError } from "../../../errors.js";
4
+ import { Refusal } from "../../../http/errors.js";
5
+ import { Budget } from "../../../http/services.js";
6
+ import { checked } from "../../_shared/rest/kit.js";
7
+ export const MAX_PIN_LOOKUPS = 8;
8
+ export const PIN_WRITE_STEPS = Object.freeze({
9
+ write: "once",
10
+ lookup1: "once",
11
+ lookup2: "once",
12
+ lookup3: "once",
13
+ lookup4: "once",
14
+ lookup5: "once",
15
+ lookup6: "once",
16
+ lookup7: "once",
17
+ lookup8: "once",
18
+ });
19
+ const settings = new WeakMap();
20
+ /** Snapshot deployment configuration once; no caller can mutate the guard or its MAC scope. */
21
+ export function pinOptions(options) {
22
+ const saved = settings.get(options);
23
+ if (saved)
24
+ return saved;
25
+ validatePin(options);
26
+ const snapshot = Object.freeze({
27
+ ...options,
28
+ ...(options.pin ? { pin: Object.freeze({ teamId: options.pin.teamId }) } : {}),
29
+ });
30
+ settings.set(options, snapshot);
31
+ return snapshot;
32
+ }
33
+ const object = (value) => value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
34
+ const fail = (reason) => {
35
+ throw new ConnectorCallError("provider_permission_denied", `Vercel team pin: ${reason} Not sent to the requested resource.`, { retryable: false });
36
+ };
37
+ export function validatePin(options) {
38
+ if (options.pin === undefined)
39
+ return;
40
+ const id = options.pin?.teamId;
41
+ if (typeof id !== "string" || !/^team_[A-Za-z0-9_-]+$/.test(id))
42
+ throw new Error("pin.teamId must be a canonical Vercel team id (team_…).");
43
+ if (options.teamId !== undefined && options.teamId.trim() !== id)
44
+ throw new Error("teamId routing default must match pin.teamId when pinned.");
45
+ }
46
+ /** No unscoped/account read exceptions. Transfers and cross-team grants remain unprovable. */
47
+ export function pinRoute(index, op) {
48
+ if (op.server ||
49
+ /\/transfer-request(?:\/|$)|\/organizations(?:\/|$)/.test(op.path) ||
50
+ (/\/vcr\/repository\/\{idOrName\}\/permissions(?:\/|$)/.test(op.path) && op.method !== "GET"))
51
+ return "denied";
52
+ if (op.path.includes("{teamId}"))
53
+ return "path-team";
54
+ return index.contract(op).parameters.some((p) => p.in === "query" && p.name === "teamId") ? "query-team" : "denied";
55
+ }
56
+ const SELECTORS = new Set(["teamid", "slug", "ownerid", "newdefaultteamid"]);
57
+ function selectorName(key) {
58
+ let decoded = key;
59
+ try {
60
+ for (let i = 0; i < 3 && decoded.includes("%"); i++)
61
+ decoded = decodeURIComponent(decoded);
62
+ }
63
+ catch {
64
+ fail("Malformed selector spelling.");
65
+ }
66
+ return decoded.toLowerCase().replace(/[[\]_.-]/g, "");
67
+ }
68
+ /** Reviewed Vercel references only; data.projectId is a Photon id, gitSource.projectId a git-provider id. */
69
+ const BODY_PROJECTS = {
70
+ "POST /v1/access-groups/{idOrName}": ["projects[].projectId"],
71
+ "POST /v1/access-groups": ["projects[].projectId"],
72
+ "POST /v1/access-groups/{accessGroupIdOrName}/projects": ["projectId"],
73
+ "PUT /ai-gateway/budgets": ["projectId"],
74
+ "PUT /v1/bulk-redirects": ["projectId"],
75
+ "POST /v1/networking/privatelink/endpoints": ["projectId"],
76
+ "POST /v1/connect/connectors": ["projectId", "triggerDestination.projectId"],
77
+ "PATCH /v1/connect/connectors/{connector}/trigger-destinations": ["destinations[].projectId"],
78
+ "POST /v13/deployments": ["project"],
79
+ "POST /v1/log-drains": ["projectIds[]"],
80
+ "POST /v1/drains": ["projectIds[]"],
81
+ "PATCH /v1/drains/{id}": ["projectIds[]"],
82
+ "POST /v1/env": ["projectId[]"],
83
+ "POST /v1/integrations/installations/{integrationConfigurationId}/resources/{resourceId}/connections": ["projectId"],
84
+ "POST /v2/integrations/log-drains": ["projectIds[]"],
85
+ "POST /v1/kms/issuers": ["policy.projectId"],
86
+ "POST /v1/kms/issuers/{issuerId}/policies": ["projectId"],
87
+ "POST /v1/microfrontends/group": ["defaultApp.projectId", "otherApplications[].projectId"],
88
+ "POST /v1/projects/traces/session": ["projectId"],
89
+ "POST /v1/projects/{idOrName}/domains/{domain}/move": ["projectId"],
90
+ "POST /v2/sandboxes": ["projectId"],
91
+ "POST /v3/sandboxes": ["projectId"],
92
+ "POST /v4/sandboxes": ["projectId"],
93
+ "POST /v2/sandboxes/drives/{name}": ["projectId"],
94
+ "POST /v1/security/attack-mode": ["projectId"],
95
+ "POST /v2/teams/{teamId}/members": ["[].projects[].projectId"],
96
+ "PATCH /v1/teams/{teamId}/members/{uid}": ["projects[].projectId"],
97
+ "POST /v1/vcr/repository": ["projectId"],
98
+ "POST /v1/webhooks": ["projectIds[]"],
99
+ };
100
+ function at(value, path) {
101
+ if (!path)
102
+ return [value];
103
+ const [head = "", ...tail] = path.split(".");
104
+ const array = head.endsWith("[]"), key = array ? head.slice(0, -2) : head;
105
+ const next = key ? object(value)[key] : value;
106
+ if (next === undefined)
107
+ return [];
108
+ if (array) {
109
+ if (!Array.isArray(next))
110
+ fail("A resource reference list is malformed.");
111
+ return next.flatMap((item) => at(item, tail.join(".")));
112
+ }
113
+ return at(next, tail.join("."));
114
+ }
115
+ function scalar(value) {
116
+ if (typeof value !== "string" || !value || value.trim() !== value || /[%/\\?#\s,]/.test(value))
117
+ fail("A resource or team selector is not a canonical scalar.");
118
+ return value;
119
+ }
120
+ /** Synchronous selectors run before any ownership IO and before routing drops teamId:null. */
121
+ export function pinQuery(index, call, pin) {
122
+ const route = pinRoute(index, call.op);
123
+ if (route === "denied")
124
+ fail("This operation has no reviewed team confinement.");
125
+ if (call.path.includes("%"))
126
+ fail("Encoded path spellings are unavailable on pinned connections.");
127
+ for (const [key, value] of Object.entries(call.query)) {
128
+ if (key.includes("%"))
129
+ fail("Encoded query parameter names are unavailable on pinned connections.");
130
+ const canonical = selectorName(key);
131
+ if (!SELECTORS.has(canonical))
132
+ continue;
133
+ if (!["teamId", "slug", "ownerId", "newDefaultTeamId"].includes(key))
134
+ fail("Ambiguous or duplicate team selector.");
135
+ if (value === undefined)
136
+ continue;
137
+ if (key === "newDefaultTeamId")
138
+ fail("Secondary-team operations are unavailable.");
139
+ if (key === "slug")
140
+ scalar(value);
141
+ else if (scalar(value) !== pin.teamId)
142
+ fail("The selected team is outside the deployment pin.");
143
+ }
144
+ const pathTeam = call.params["teamId"];
145
+ if (pathTeam !== undefined && scalar(pathTeam) !== pin.teamId)
146
+ fail("The path team is outside the deployment pin.");
147
+ // The two documented body team selectors affect Vercel scope/grants. Ordinary
148
+ // resource .slug and third-party connector metadata are not team selectors.
149
+ const bodySelectors = call.op.path === "/v1/bulk-redirects" ? ["teamId"] : call.op.path === "/v1/kms/issuers" ? ["policy.teamId"] : [];
150
+ for (const path of bodySelectors)
151
+ for (const value of at(call.body, path))
152
+ if (scalar(value) !== pin.teamId)
153
+ fail("A body team selector is outside the deployment pin.");
154
+ for (const key of Object.keys(object(call.body)))
155
+ if (selectorName(key) === "teamid" && key !== "teamId")
156
+ fail("Ambiguous body team selector.");
157
+ return route === "query-team" ? { ...call.query, teamId: pin.teamId } : call.query;
158
+ }
159
+ export function pinAdmission(connection, index, call, pin) {
160
+ if (!pin)
161
+ return Effect.void;
162
+ return Effect.gen(function* () {
163
+ const refs = yield* checked(() => {
164
+ pinQuery(index, call, pin);
165
+ const projects = new Set(), deployments = new Set();
166
+ const add = (set, value) => {
167
+ set.add(scalar(value));
168
+ };
169
+ const template = call.op.path.split("/");
170
+ template.forEach((part, i) => {
171
+ if (!part.startsWith("{"))
172
+ return;
173
+ const name = part.slice(1, -1), value = call.params[name];
174
+ if (value === undefined)
175
+ return;
176
+ if (template[i - 1] === "projects" || /^projectId(?:OrName)?$/.test(name))
177
+ add(projects, value);
178
+ if (template[i - 1] === "deployments" || name === "deploymentId")
179
+ add(deployments, value);
180
+ });
181
+ const declared = new Set(index
182
+ .contract(call.op)
183
+ .parameters.filter((p) => p.in === "query")
184
+ .map((p) => p.name));
185
+ for (const [key, value] of Object.entries(call.query)) {
186
+ if (!declared.has(key) || value === undefined)
187
+ continue;
188
+ const target = [
189
+ "projectId",
190
+ "projectIdOrName",
191
+ "projectIds",
192
+ "project",
193
+ "excludeProject",
194
+ "eligibleMembersForProjectId",
195
+ ].includes(key)
196
+ ? projects
197
+ : key === "rollbackDeploymentId"
198
+ ? deployments
199
+ : undefined;
200
+ if (target)
201
+ for (const entry of Array.isArray(value) ? value : [value])
202
+ for (const id of typeof entry === "string" && key === "projectIds" ? entry.split(",") : [entry])
203
+ add(target, id);
204
+ }
205
+ for (const path of BODY_PROJECTS[`${call.method} ${call.op.path}`] ?? [])
206
+ for (const value of at(call.body, path))
207
+ add(projects, value);
208
+ const deploymentPath = call.op.path === "/v13/deployments"
209
+ ? "deploymentId"
210
+ : /\/rolling-release\/(?:start|approve-stage|complete)$/.test(call.op.path)
211
+ ? "canaryDeploymentId"
212
+ : undefined;
213
+ if (deploymentPath)
214
+ for (const value of at(call.body, deploymentPath))
215
+ add(deployments, value);
216
+ if (projects.size + deployments.size + (call.query["slug"] === undefined ? 0 : 1) > MAX_PIN_LOOKUPS)
217
+ fail(`At most ${MAX_PIN_LOOKUPS} ownership reads are allowed per call.`);
218
+ return { projects, deployments };
219
+ });
220
+ let lookups = 0;
221
+ const lookup = (path, template) => Effect.gen(function* () {
222
+ const step = `lookup${++lookups}`;
223
+ yield* (yield* Budget).charge.pipe(Effect.catch((error) => error instanceof ConnectorCallError ? Effect.fail(new Refusal({ error })) : Effect.die(error)));
224
+ return yield* connection.sendPath({
225
+ method: "GET",
226
+ path,
227
+ template,
228
+ ...(template.includes("projects") || template.includes("deployments")
229
+ ? { query: [["teamId", pin.teamId]] }
230
+ : {}),
231
+ }, { effect: "read", step, flags: { ownership: true } });
232
+ });
233
+ if (call.query["slug"] !== undefined) {
234
+ const answer = yield* lookup(`/v2/teams/${pin.teamId}`, "/v2/teams/{teamId}");
235
+ yield* checked(() => {
236
+ const data = object(answer.data);
237
+ if (data["id"] !== pin.teamId || data["slug"] !== call.query["slug"])
238
+ fail("The team slug does not belong to the pinned team.");
239
+ });
240
+ }
241
+ for (const project of refs.projects) {
242
+ const answer = yield* lookup(`/v9/projects/${encodeURIComponent(project)}`, "/v9/projects/{idOrName}");
243
+ yield* checked(() => {
244
+ const data = object(answer.data);
245
+ if (typeof data["id"] !== "string" || !data["id"] || data["accountId"] !== pin.teamId)
246
+ fail("Project ownership is foreign, missing, or malformed.");
247
+ });
248
+ }
249
+ for (const deployment of refs.deployments) {
250
+ const answer = yield* lookup(`/v13/deployments/${encodeURIComponent(deployment)}`, "/v13/deployments/{idOrUrl}");
251
+ yield* checked(() => {
252
+ const data = object(answer.data);
253
+ if (typeof data["id"] !== "string" ||
254
+ !data["id"] ||
255
+ data["ownerId"] !== pin.teamId ||
256
+ (data["teamId"] !== undefined && data["teamId"] !== pin.teamId) ||
257
+ (object(data["team"])["id"] !== undefined && object(data["team"])["id"] !== pin.teamId))
258
+ fail("Deployment ownership is foreign, missing, or malformed.");
259
+ });
260
+ }
261
+ });
262
+ }
263
+ export function readPinnedTeam(connection, pin) {
264
+ return connection.sendPath({ method: "GET", path: `/v2/teams/${pin.teamId}`, template: "/v2/teams/{teamId}" }).pipe(Effect.flatMap((answer) => checked(() => {
265
+ const data = object(answer.data);
266
+ if (data["id"] !== pin.teamId || typeof data["slug"] !== "string" || !data["slug"])
267
+ fail("The pinned team's identity is missing or malformed.");
268
+ return data;
269
+ })));
270
+ }