@zackbart/connecta 0.34.1 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. package/CHANGELOG.md +363 -0
  2. package/README.md +62 -106
  3. package/SECURITY.md +3 -2
  4. package/bin/connecta.mjs +41 -16
  5. package/bin/version.mjs +1 -1
  6. package/dist/access-tokens.d.ts +2 -1
  7. package/dist/access-tokens.js +66 -30
  8. package/dist/activity.d.ts +1 -1
  9. package/dist/activity.js +2 -0
  10. package/dist/agent-config.d.ts +23 -0
  11. package/dist/agent-config.js +59 -0
  12. package/dist/agent-description.js +16 -0
  13. package/dist/agent-identity.js +4 -4
  14. package/dist/agent-observation.js +39 -0
  15. package/dist/auth/clerk-sdk/client.d.ts +2 -0
  16. package/dist/auth/clerk-sdk/generated.js +554 -563
  17. package/dist/auth/clerk-transport.js +70 -3
  18. package/dist/auth/clerk.d.ts +13 -0
  19. package/dist/auth/clerk.js +653 -246
  20. package/dist/auth/cloudflare-access.js +46 -42
  21. package/dist/auth/downstream-client-metadata.js +2 -2
  22. package/dist/auth/downstream-oauth.js +2051 -1160
  23. package/dist/auth/downstream-revocation.js +88 -88
  24. package/dist/auth/native-call.js +20 -0
  25. package/dist/auth/native.js +184 -0
  26. package/dist/auth/oauth-start-reset.js +11 -5
  27. package/dist/auth/oauth-token-response.js +121 -102
  28. package/dist/auth/oauth-v2-migration.js +97 -78
  29. package/dist/auth/renewable-grant.js +10 -0
  30. package/dist/auth/static-oauth.js +663 -271
  31. package/dist/auth/vercel-agent.js +266 -0
  32. package/dist/auth-admission.js +204 -0
  33. package/dist/auth-elicitation.js +350 -241
  34. package/dist/authorization-handoff.js +164 -90
  35. package/dist/call-admission-context.js +3 -10
  36. package/dist/call-admission.js +2 -0
  37. package/dist/call-classification.js +9 -0
  38. package/dist/call-recovery.js +32 -13
  39. package/dist/canonical-json.js +8 -0
  40. package/dist/catalog-cache.js +369 -213
  41. package/dist/catalog-service.js +659 -530
  42. package/dist/catalog.js +5 -1
  43. package/dist/concurrency.js +0 -25
  44. package/dist/config-defaults.d.ts +1 -0
  45. package/dist/config-defaults.js +1 -0
  46. package/dist/config-schema.d.ts +3 -1
  47. package/dist/config-schema.js +13 -3
  48. package/dist/config.d.ts +40 -6
  49. package/dist/config.js +40 -26
  50. package/dist/connector-caller.d.ts +4 -0
  51. package/dist/connector-caller.js +17 -4
  52. package/dist/connectors/api-connector.d.ts +12 -7
  53. package/dist/connectors/api-connector.js +142 -56
  54. package/dist/connectors/guarded-fetch.d.ts +51 -17
  55. package/dist/connectors/guarded-fetch.js +215 -121
  56. package/dist/connectors/negotiation-cache.js +20 -10
  57. package/dist/connectors/remote-mcp.d.ts +10 -30
  58. package/dist/connectors/remote-mcp.js +955 -563
  59. package/dist/d1.js +10 -243
  60. package/dist/derived-context.js +5 -0
  61. package/dist/describe-config.d.ts +3 -1
  62. package/dist/describe-config.js +2 -0
  63. package/dist/downstream-input.js +347 -260
  64. package/dist/errors.d.ts +87 -6
  65. package/dist/errors.js +114 -4
  66. package/dist/execute.js +87 -50
  67. package/dist/executor-admission.js +3 -0
  68. package/dist/executors/quickjs.js +163 -112
  69. package/dist/guarded-transport.js +50 -0
  70. package/dist/guest-runtime.js +1 -1
  71. package/dist/http/client.js +439 -0
  72. package/dist/http/errors.js +558 -0
  73. package/dist/http/fields.js +49 -0
  74. package/dist/http/hatch-paging.js +318 -0
  75. package/dist/http/hatch.js +1279 -0
  76. package/dist/http/json-schema.js +267 -0
  77. package/dist/http/node-transport.js +241 -0
  78. package/dist/http/oauth.js +162 -0
  79. package/dist/http/paging.js +228 -0
  80. package/dist/http/provider.js +221 -0
  81. package/dist/http/safety.js +82 -0
  82. package/dist/http/services.js +79 -0
  83. package/dist/http/tools.js +383 -0
  84. package/dist/http/vendor-index.js +138 -0
  85. package/dist/http/vendor.js +448 -0
  86. package/dist/http/write-request.js +66 -0
  87. package/dist/http-policy.d.ts +11 -0
  88. package/dist/http-policy.js +45 -0
  89. package/dist/inbound-credential.js +1 -1
  90. package/dist/index.d.ts +2 -2
  91. package/dist/index.js +4 -0
  92. package/dist/invocation-auth.js +30 -19
  93. package/dist/invocation.js +218 -85
  94. package/dist/mcp-result.js +0 -4
  95. package/dist/membership.d.ts +4 -0
  96. package/dist/meta-output.js +1 -1
  97. package/dist/meta-tools.js +531 -406
  98. package/dist/native-recovery.js +52 -0
  99. package/dist/native-tools.js +382 -0
  100. package/dist/node.d.ts +4 -3
  101. package/dist/node.js +45 -8
  102. package/dist/oauth-handoff.js +177 -104
  103. package/dist/oauth-partition.js +6 -20
  104. package/dist/oauth-sealing.js +6 -7
  105. package/dist/operation-vocabulary.js +101 -0
  106. package/dist/operator-record.d.ts +2 -2
  107. package/dist/operator-record.js +17 -4
  108. package/dist/operator-ui/agents.d.ts +5 -4
  109. package/dist/operator-ui/agents.js +17 -7
  110. package/dist/operator-ui/config-summary.js +5 -4
  111. package/dist/operator-ui/connection-map.js +7 -5
  112. package/dist/operator-ui/contract.d.ts +7 -3
  113. package/dist/operator-ui/endpoints.js +4 -13
  114. package/dist/operator-ui/fix-prompts.d.ts +1 -1
  115. package/dist/operator-ui/fix-prompts.js +0 -8
  116. package/dist/operator-ui/generated.js +3 -3
  117. package/dist/operator-ui/model.d.ts +2 -3
  118. package/dist/operator-ui/overview.js +5 -2
  119. package/dist/operator-ui/setup-commands.js +0 -4
  120. package/dist/operator-ui/view.d.ts +2 -25
  121. package/dist/operator-ui/view.js +2 -76
  122. package/dist/program-writes.js +47 -26
  123. package/dist/provider-call-facts.d.ts +115 -0
  124. package/dist/provider-call-facts.js +182 -0
  125. package/dist/provider-call.d.ts +112 -0
  126. package/dist/provider-call.js +271 -0
  127. package/dist/provider.d.ts +65 -31
  128. package/dist/provider.js +116 -39
  129. package/dist/providers/_shared/google/hatch.js +91 -0
  130. package/dist/providers/_shared/google/kit.js +537 -0
  131. package/dist/providers/_shared/google/result-size.js +15 -2
  132. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  133. package/dist/providers/_shared/google/service-account.js +8 -4
  134. package/dist/providers/_shared/google/workspace.d.ts +6 -210
  135. package/dist/providers/_shared/google/workspace.js +6 -425
  136. package/dist/providers/_shared/rest/compact-index.js +86 -0
  137. package/dist/providers/_shared/rest/dispatch.js +3 -23
  138. package/dist/providers/_shared/rest/kit.js +546 -0
  139. package/dist/providers/_shared/rest/operation-index.js +230 -14
  140. package/dist/providers/_shared/rest/response-media.js +11 -0
  141. package/dist/providers/_shared/rest/tools.js +101 -78
  142. package/dist/providers/_shared/rest/value-safety.js +353 -195
  143. package/dist/providers/_shared/sensitive-fields.js +27 -0
  144. package/dist/providers/breeze/api.js +584 -0
  145. package/dist/providers/breeze/index.d.ts +1 -3
  146. package/dist/providers/breeze/index.js +67 -1420
  147. package/dist/providers/breeze/openapi.generated.js +60 -0
  148. package/dist/providers/breeze/skill.generated.js +2 -6
  149. package/dist/providers/breeze/tools.js +696 -0
  150. package/dist/providers/ccb/api.js +496 -0
  151. package/dist/providers/ccb/index.d.ts +15 -37
  152. package/dist/providers/ccb/index.js +77 -1702
  153. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  154. package/dist/providers/ccb/lib/constants.js +74 -0
  155. package/dist/providers/ccb/lib/guide.js +9 -0
  156. package/dist/providers/ccb/lib/verdicts.js +387 -0
  157. package/dist/providers/ccb/openapi.generated.js +397 -0
  158. package/dist/providers/ccb/safety.js +295 -0
  159. package/dist/providers/ccb/skill.generated.js +2 -6
  160. package/dist/providers/ccb/tools.js +853 -0
  161. package/dist/providers/cloudflare/api.js +1066 -0
  162. package/dist/providers/cloudflare/index.d.ts +5 -22
  163. package/dist/providers/cloudflare/index.js +79 -197
  164. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  165. package/dist/providers/cloudflare/lib/config.js +2 -0
  166. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  167. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  168. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  169. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  170. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  171. package/dist/providers/cloudflare/openapi.generated.js +4 -3
  172. package/dist/providers/cloudflare/{value-safety.js → safety.js} +487 -0
  173. package/dist/providers/cloudflare/skill.generated.js +2 -10
  174. package/dist/providers/cloudflare/tools.js +360 -0
  175. package/dist/providers/docs/api.js +51 -0
  176. package/dist/providers/docs/index.d.ts +1 -12
  177. package/dist/providers/docs/index.js +53 -1165
  178. package/dist/providers/docs/lib/constants.d.ts +18 -0
  179. package/dist/providers/docs/lib/constants.js +18 -0
  180. package/dist/providers/docs/lib/discovery.js +26 -0
  181. package/dist/providers/docs/lib/requests.js +48 -0
  182. package/dist/providers/docs/lib/schemas.js +168 -0
  183. package/dist/providers/docs/openapi.generated.js +16 -0
  184. package/dist/providers/docs/safety.js +54 -0
  185. package/dist/providers/docs/skill.generated.js +2 -6
  186. package/dist/providers/docs/tools.js +802 -0
  187. package/dist/providers/drive/api.js +177 -0
  188. package/dist/providers/drive/index.d.ts +1 -12
  189. package/dist/providers/drive/index.js +38 -1448
  190. package/dist/providers/drive/lib/constants.d.ts +6 -0
  191. package/dist/providers/drive/lib/constants.js +6 -0
  192. package/dist/providers/drive/lib/contracts.js +532 -0
  193. package/dist/providers/drive/lib/hatch.js +197 -0
  194. package/dist/providers/drive/openapi.generated.js +77 -0
  195. package/dist/providers/drive/safety.js +90 -0
  196. package/dist/providers/drive/skill.generated.js +2 -6
  197. package/dist/providers/drive/tools.js +1290 -0
  198. package/dist/providers/forms/api.js +71 -0
  199. package/dist/providers/forms/index.d.ts +1 -12
  200. package/dist/providers/forms/index.js +49 -1145
  201. package/dist/providers/forms/lib/constants.d.ts +14 -0
  202. package/dist/providers/forms/lib/constants.js +19 -0
  203. package/dist/providers/forms/lib/hatch.js +72 -0
  204. package/dist/providers/forms/openapi.generated.js +23 -0
  205. package/dist/providers/forms/safety.js +34 -0
  206. package/dist/providers/forms/skill.generated.js +2 -8
  207. package/dist/providers/forms/tools.js +1024 -0
  208. package/dist/providers/github/api.js +150 -0
  209. package/dist/providers/github/index.d.ts +4 -5
  210. package/dist/providers/github/index.js +30 -87
  211. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  212. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  213. package/dist/providers/github/lib/discovery.js +132 -0
  214. package/dist/providers/github/lib/operations.js +58 -0
  215. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  216. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  217. package/dist/providers/github/openapi.generated.js +1216 -0
  218. package/dist/providers/github/safety.js +216 -0
  219. package/dist/providers/github/skill.generated.js +2 -5
  220. package/dist/providers/github/tools.js +506 -0
  221. package/dist/providers/gmail/api.js +114 -0
  222. package/dist/providers/gmail/index.d.ts +1 -12
  223. package/dist/providers/gmail/index.js +73 -1621
  224. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  225. package/dist/providers/gmail/lib/constants.js +16 -0
  226. package/dist/providers/gmail/lib/index.js +173 -0
  227. package/dist/providers/gmail/lib/schemas.js +176 -0
  228. package/dist/providers/gmail/lib/threading.js +120 -0
  229. package/dist/providers/gmail/openapi.generated.js +92 -0
  230. package/dist/providers/gmail/safety.js +21 -0
  231. package/dist/providers/gmail/skill.generated.js +2 -6
  232. package/dist/providers/gmail/tools.js +1435 -0
  233. package/dist/providers/overflow/api.js +1008 -0
  234. package/dist/providers/overflow/index.d.ts +1 -17
  235. package/dist/providers/overflow/index.js +60 -1488
  236. package/dist/providers/overflow/skill.generated.js +2 -5
  237. package/dist/providers/overflow/tools.js +873 -0
  238. package/dist/providers/planning-center/api.js +467 -0
  239. package/dist/providers/planning-center/index.d.ts +4 -35
  240. package/dist/providers/planning-center/index.js +69 -2445
  241. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  242. package/dist/providers/planning-center/lib/constants.js +83 -0
  243. package/dist/providers/planning-center/lib/discovery.js +40 -0
  244. package/dist/providers/planning-center/lib/guide.js +39 -0
  245. package/dist/providers/planning-center/lib/json-api.js +83 -0
  246. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  247. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  248. package/dist/providers/planning-center/safety.js +188 -0
  249. package/dist/providers/planning-center/skill.generated.js +2 -27
  250. package/dist/providers/planning-center/tools.js +1010 -0
  251. package/dist/providers/sheets/api.js +133 -0
  252. package/dist/providers/sheets/index.d.ts +4 -16
  253. package/dist/providers/sheets/index.js +61 -1172
  254. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  255. package/dist/providers/sheets/lib/constants.js +14 -0
  256. package/dist/providers/sheets/lib/hatch.js +163 -0
  257. package/dist/providers/sheets/lib/requests.js +105 -0
  258. package/dist/providers/sheets/lib/schemas.js +138 -0
  259. package/dist/providers/sheets/openapi.generated.js +30 -0
  260. package/dist/providers/sheets/safety.js +27 -0
  261. package/dist/providers/sheets/skill.generated.js +2 -7
  262. package/dist/providers/sheets/tools.js +734 -0
  263. package/dist/providers/slides/api.js +147 -0
  264. package/dist/providers/slides/index.d.ts +2 -10
  265. package/dist/providers/slides/index.js +48 -2555
  266. package/dist/providers/slides/lib/constants.d.ts +11 -0
  267. package/dist/providers/slides/lib/constants.js +11 -0
  268. package/dist/providers/slides/lib/requests.js +60 -0
  269. package/dist/providers/slides/lib/schemas.js +565 -0
  270. package/dist/providers/slides/openapi.generated.js +18 -0
  271. package/dist/providers/slides/skill.generated.js +2 -6
  272. package/dist/providers/slides/tools.js +1968 -0
  273. package/dist/providers/stripe/api.js +401 -0
  274. package/dist/providers/stripe/index.d.ts +5 -27
  275. package/dist/providers/stripe/index.js +74 -210
  276. package/dist/providers/stripe/lib/config.d.ts +4 -0
  277. package/dist/providers/stripe/lib/config.js +2 -0
  278. package/dist/providers/stripe/openapi.generated.js +4 -3
  279. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  280. package/dist/providers/stripe/skill.generated.js +2 -11
  281. package/dist/providers/stripe/tools.js +77 -0
  282. package/dist/providers/tithely/api.js +531 -0
  283. package/dist/providers/tithely/index.d.ts +17 -0
  284. package/dist/providers/tithely/index.js +86 -965
  285. package/dist/providers/tithely/skill.generated.js +2 -5
  286. package/dist/providers/tithely/tools.js +426 -0
  287. package/dist/providers/vercel/api.js +551 -0
  288. package/dist/providers/vercel/index.d.ts +9 -25
  289. package/dist/providers/vercel/index.js +66 -260
  290. package/dist/providers/vercel/lib/config.d.ts +2 -0
  291. package/dist/providers/vercel/lib/config.js +2 -0
  292. package/dist/providers/vercel/lib/index.js +117 -0
  293. package/dist/providers/vercel/lib/logs.js +100 -0
  294. package/dist/providers/vercel/lib/pin.js +270 -0
  295. package/dist/providers/vercel/openapi.generated.js +10 -5
  296. package/dist/providers/vercel/{value-safety.js → safety.js} +247 -38
  297. package/dist/providers/vercel/skill.generated.js +2 -7
  298. package/dist/providers/vercel/tools.js +642 -0
  299. package/dist/redaction-identity.js +47 -0
  300. package/dist/redaction-marker.js +125 -0
  301. package/dist/registry.d.ts +21 -15
  302. package/dist/registry.js +409 -376
  303. package/dist/routes/access-tokens.js +1 -1
  304. package/dist/routes/actor-labels.js +1 -1
  305. package/dist/routes/connect.js +1 -1
  306. package/dist/routes/dispatch.js +103 -0
  307. package/dist/routes/mcp.js +170 -79
  308. package/dist/routes/oauth.js +3 -1
  309. package/dist/routes/operator.js +2 -2
  310. package/dist/routes/shared.d.ts +5 -4
  311. package/dist/routes/shared.js +244 -177
  312. package/dist/routes/skills.js +10 -8
  313. package/dist/routes/ui-config.js +27 -3
  314. package/dist/routes/ui-data.js +21 -20
  315. package/dist/routes/ui.js +1 -1
  316. package/dist/runtime/call-admission.js +0 -26
  317. package/dist/runtime/call-entry.js +30 -0
  318. package/dist/runtime/call.js +556 -0
  319. package/dist/runtime/connector-scope.js +7 -0
  320. package/dist/runtime/credential-probe.js +34 -0
  321. package/dist/runtime/executor.js +40 -0
  322. package/dist/runtime/native-storage.js +63 -0
  323. package/dist/runtime/registry.js +27 -0
  324. package/dist/runtime/request-scope.js +72 -0
  325. package/dist/runtime/run.js +15 -7
  326. package/dist/runtime/shared-read.js +34 -5
  327. package/dist/runtime/storage.js +34 -21
  328. package/dist/sent-secrets.d.ts +194 -37
  329. package/dist/sent-secrets.js +1743 -340
  330. package/dist/server.js +5 -56
  331. package/dist/skills.js +322 -222
  332. package/dist/sqlite.js +15 -14
  333. package/dist/storage/d1-copy.js +255 -0
  334. package/dist/storage/d1-driver.js +15 -0
  335. package/dist/storage/keys.js +28 -0
  336. package/dist/storage/sql-driver.js +88 -0
  337. package/dist/storage/sql-native.js +544 -0
  338. package/dist/storage/sql-schema.d.ts +6 -0
  339. package/dist/storage/sql-schema.js +15 -0
  340. package/dist/storage/sql.d.ts +14 -20
  341. package/dist/storage/sql.js +29 -535
  342. package/dist/timeout.js +0 -26
  343. package/dist/tool-safety.js +20 -10
  344. package/dist/types.d.ts +7 -109
  345. package/dist/upward.js +3 -0
  346. package/dist/usage-guide.js +3 -1
  347. package/dist/validate.d.ts +4 -2
  348. package/dist/validate.js +86 -9
  349. package/dist/version.d.ts +1 -1
  350. package/dist/version.js +1 -1
  351. package/dist/worker.js +312 -292
  352. package/dist/workspace-subject.js +5 -1
  353. package/dist/write-outcome.js +454 -34
  354. package/documentation/README.md +27 -7
  355. package/documentation/architecture.md +2547 -226
  356. package/documentation/auth.md +821 -98
  357. package/documentation/code-mode.md +49 -16
  358. package/documentation/deploying.md +164 -20
  359. package/documentation/hosted-mcp-migration.md +460 -0
  360. package/documentation/integrating.md +129 -144
  361. package/documentation/meta-tools.md +409 -32
  362. package/documentation/operating.md +27 -3
  363. package/documentation/operator-tests.md +3 -0
  364. package/documentation/operator-ui.md +68 -45
  365. package/documentation/provider-auth-migration.md +16 -63
  366. package/documentation/provider-migration-0.29.md +10 -5
  367. package/documentation/provider-migration-0.35.md +975 -0
  368. package/documentation/providers.md +965 -0
  369. package/examples/worker/AGENTS.md +23 -9
  370. package/examples/worker/README.md +254 -135
  371. package/examples/worker/alchemy.run.ts +116 -0
  372. package/examples/worker/gitignore +10 -0
  373. package/examples/worker/src/connecta.config.ts +23 -21
  374. package/examples/worker/wrangler.jsonc +14 -5
  375. package/guides/connecting-agents.md +157 -0
  376. package/guides/how-it-works.md +156 -0
  377. package/guides/safety-and-trust.md +153 -0
  378. package/package.json +27 -46
  379. package/templates/node/.env.example +3 -0
  380. package/templates/node/README.md +22 -2
  381. package/templates/node/docker-compose.yml +1 -0
  382. package/templates/node/package.json +3 -2
  383. package/templates/node/src/connecta.config.ts +8 -0
  384. package/dist/catalog-drift.d.ts +0 -138
  385. package/dist/catalog-drift.js +0 -578
  386. package/dist/providers/_shared/request-token.js +0 -83
  387. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  388. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  389. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  390. package/dist/providers/basecamp/index.d.ts +0 -45
  391. package/dist/providers/basecamp/index.js +0 -997
  392. package/dist/providers/basecamp/skill.generated.js +0 -9
  393. package/dist/providers/cloudflare/rest.d.ts +0 -37
  394. package/dist/providers/cloudflare/rest.js +0 -1097
  395. package/dist/providers/github/hosted.js +0 -218
  396. package/dist/providers/github/rest.js +0 -321
  397. package/dist/providers/infisical/index.d.ts +0 -7
  398. package/dist/providers/infisical/index.js +0 -713
  399. package/dist/providers/infisical/skill.generated.js +0 -8
  400. package/dist/providers/intercom/index.d.ts +0 -24
  401. package/dist/providers/intercom/index.js +0 -121
  402. package/dist/providers/intercom/skill.generated.js +0 -8
  403. package/dist/providers/linear/index.d.ts +0 -55
  404. package/dist/providers/linear/index.js +0 -537
  405. package/dist/providers/linear/skill.generated.js +0 -8
  406. package/dist/providers/mixpanel/index.d.ts +0 -59
  407. package/dist/providers/mixpanel/index.js +0 -472
  408. package/dist/providers/mixpanel/operations.js +0 -20
  409. package/dist/providers/mixpanel/rest.js +0 -603
  410. package/dist/providers/mixpanel/skill.generated.js +0 -10
  411. package/dist/providers/mixpanel/value-safety.js +0 -16
  412. package/dist/providers/notion/index.d.ts +0 -67
  413. package/dist/providers/notion/index.js +0 -368
  414. package/dist/providers/notion/openapi.generated.js +0 -75
  415. package/dist/providers/notion/rest.d.ts +0 -24
  416. package/dist/providers/notion/rest.js +0 -1226
  417. package/dist/providers/notion/skill.generated.js +0 -11
  418. package/dist/providers/notion/value-safety.js +0 -56
  419. package/dist/providers/revenuecat/index.d.ts +0 -51
  420. package/dist/providers/revenuecat/index.js +0 -697
  421. package/dist/providers/revenuecat/skill.generated.js +0 -11
  422. package/dist/providers/stripe/rest.d.ts +0 -14
  423. package/dist/providers/stripe/rest.js +0 -402
  424. package/dist/providers/vercel/rest.d.ts +0 -20
  425. package/dist/providers/vercel/rest.js +0 -1020
  426. package/dist/providers/wispr-flow/index.d.ts +0 -14
  427. package/dist/providers/wispr-flow/index.js +0 -117
  428. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  429. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -0,0 +1,58 @@
1
+ import type { ConnectorCallAdmissionPolicy } from "../../../types.js";
2
+ /** Planning Center's REST origin. Override only for a proxy or test double. */
3
+ export declare const PLANNING_CENTER_API_BASE_URL = "https://api.planningcenteronline.com";
4
+ /** The products behind `/<app>/v2`, in the order their guides list them. */
5
+ export declare const PLANNING_CENTER_APPS: readonly ["people", "services", "groups", "check-ins", "calendar", "registrations", "giving", "publishing", "webhooks", "api"];
6
+ export type PlanningCenterApp = (typeof PLANNING_CENTER_APPS)[number];
7
+ /**
8
+ * A product a deployment may remove from this connection. People is the one
9
+ * it may not: every product joins through its person ids, and the credential
10
+ * test reads `/people/v2/me`.
11
+ */
12
+ export type PlanningCenterExcludableApp = Exclude<PlanningCenterApp, "people">;
13
+ /**
14
+ * One reviewed `X-PCO-API-Version` per product, sent on every request.
15
+ *
16
+ * The header is optional, and omitting it is the trap: Planning Center then
17
+ * applies a per-application default chosen in a web dashboard, so behavior
18
+ * would follow whoever last clicked there rather than this file. Each date is
19
+ * the newest non-beta version in the product's documentation graph on
20
+ * 2026-10-05, and every projection below is written against it. A breaking
21
+ * change arrives as a new dated version, never inside this one, so moving a
22
+ * pin is a reviewed change to this table, its drift manifest, and whatever
23
+ * projection the version's change list touches. Notes worth keeping:
24
+ *
25
+ * - groups `2023-07-10` removed every person attribute from `Membership`, so a
26
+ * membership is nameless without `include=person`.
27
+ * - calendar `2026-06-22` may return `BookedEvent*` stubs in place of events on
28
+ * booking and conflict traversals for users without access to the event.
29
+ * - webhooks `2022-10-20` renamed `Subscription` to `WebhookSubscription`.
30
+ * - services `2018-11-01` and giving `2019-10-18` are simply the newest there is.
31
+ *
32
+ * Every request uses the pin for its product; another version requires a
33
+ * reviewed pin and regenerated operation index.
34
+ */
35
+ export declare const PLANNING_CENTER_API_VERSIONS: Readonly<Record<PlanningCenterApp, string>>;
36
+ /** Planning Center's own cap on `per_page`; its default is 25. */
37
+ export declare const MAX_PAGE_SIZE = 100;
38
+ export declare const DEFAULT_PAGE_SIZE = 25;
39
+ /**
40
+ * A ceiling on absurdity, not a budget. `per_page` tops out at 100, and the
41
+ * heaviest projection here — 100 people with emails and phone numbers
42
+ * included — is a few hundred kilobytes.
43
+ */
44
+ export declare const PLANNING_CENTER_MAX_RESPONSE_BYTES: number;
45
+ /**
46
+ * Planning Center documents 100 requests per 20 seconds per authenticated user
47
+ * (429 with `Retry-After` in seconds past it, and `X-PCO-API-Request-Rate-*`
48
+ * headers on every response). The rolling window transcribes that number, as
49
+ * Cloudflare's per-user limit is transcribed: a per-runtime approximation, not
50
+ * an enforcement, because N isolates each keep their own counter and every
51
+ * other integration the token's user runs draws on the same bucket.
52
+ * `maxConcurrency: 5` is connecta's choice, not Planning Center's — the bound
53
+ * that stops one `execute_code` fan-out from spending the window in a tick.
54
+ * Admission meters tool calls, not requests: `get_plan` spends three.
55
+ */
56
+ export declare const PLANNING_CENTER_ADMISSION: ConnectorCallAdmissionPolicy;
57
+ /** Planning Center refuses a request without a descriptive one (HTTP 403). */
58
+ export declare const DEFAULT_USER_AGENT = "connecta/0.35.0 (+https://github.com/zackbart/connecta)";
@@ -0,0 +1,83 @@
1
+ import { CONNECTA_VERSION } from "../../../version.js";
2
+ /** Planning Center's REST origin. Override only for a proxy or test double. */
3
+ export const PLANNING_CENTER_API_BASE_URL = "https://api.planningcenteronline.com";
4
+ /** The products behind `/<app>/v2`, in the order their guides list them. */
5
+ export const PLANNING_CENTER_APPS = [
6
+ "people",
7
+ "services",
8
+ "groups",
9
+ "check-ins",
10
+ "calendar",
11
+ "registrations",
12
+ "giving",
13
+ "publishing",
14
+ "webhooks",
15
+ "api",
16
+ ];
17
+ /**
18
+ * One reviewed `X-PCO-API-Version` per product, sent on every request.
19
+ *
20
+ * The header is optional, and omitting it is the trap: Planning Center then
21
+ * applies a per-application default chosen in a web dashboard, so behavior
22
+ * would follow whoever last clicked there rather than this file. Each date is
23
+ * the newest non-beta version in the product's documentation graph on
24
+ * 2026-10-05, and every projection below is written against it. A breaking
25
+ * change arrives as a new dated version, never inside this one, so moving a
26
+ * pin is a reviewed change to this table, its drift manifest, and whatever
27
+ * projection the version's change list touches. Notes worth keeping:
28
+ *
29
+ * - groups `2023-07-10` removed every person attribute from `Membership`, so a
30
+ * membership is nameless without `include=person`.
31
+ * - calendar `2026-06-22` may return `BookedEvent*` stubs in place of events on
32
+ * booking and conflict traversals for users without access to the event.
33
+ * - webhooks `2022-10-20` renamed `Subscription` to `WebhookSubscription`.
34
+ * - services `2018-11-01` and giving `2019-10-18` are simply the newest there is.
35
+ *
36
+ * Every request uses the pin for its product; another version requires a
37
+ * reviewed pin and regenerated operation index.
38
+ */
39
+ export const PLANNING_CENTER_API_VERSIONS = {
40
+ people: "2026-06-04",
41
+ services: "2018-11-01",
42
+ groups: "2023-07-10",
43
+ "check-ins": "2025-05-28",
44
+ calendar: "2026-06-22",
45
+ registrations: "2025-05-01",
46
+ giving: "2019-10-18",
47
+ publishing: "2024-03-25",
48
+ webhooks: "2022-10-20",
49
+ api: "2026-09-24",
50
+ };
51
+ /** Planning Center's own cap on `per_page`; its default is 25. */
52
+ export const MAX_PAGE_SIZE = 100;
53
+ export const DEFAULT_PAGE_SIZE = 25;
54
+ /**
55
+ * A ceiling on absurdity, not a budget. `per_page` tops out at 100, and the
56
+ * heaviest projection here — 100 people with emails and phone numbers
57
+ * included — is a few hundred kilobytes.
58
+ */
59
+ export const PLANNING_CENTER_MAX_RESPONSE_BYTES = 8 * 1024 * 1024;
60
+ /**
61
+ * Planning Center documents 100 requests per 20 seconds per authenticated user
62
+ * (429 with `Retry-After` in seconds past it, and `X-PCO-API-Request-Rate-*`
63
+ * headers on every response). The rolling window transcribes that number, as
64
+ * Cloudflare's per-user limit is transcribed: a per-runtime approximation, not
65
+ * an enforcement, because N isolates each keep their own counter and every
66
+ * other integration the token's user runs draws on the same bucket.
67
+ * `maxConcurrency: 5` is connecta's choice, not Planning Center's — the bound
68
+ * that stops one `execute_code` fan-out from spending the window in a tick.
69
+ * Admission meters tool calls, not requests: `get_plan` spends three.
70
+ */
71
+ export const PLANNING_CENTER_ADMISSION = {
72
+ rules: [
73
+ {
74
+ maxConcurrency: 5,
75
+ budget: { kind: "rolling-window", maxCalls: 100, windowMs: 20_000 },
76
+ maxQueueSize: 32,
77
+ queueTimeoutMs: 5_000,
78
+ retryAfterMs: 1_000,
79
+ },
80
+ ],
81
+ };
82
+ /** Planning Center refuses a request without a descriptive one (HTTP 403). */
83
+ export const DEFAULT_USER_AGENT = `connecta/${CONNECTA_VERSION} (+https://github.com/zackbart/connecta)`;
@@ -0,0 +1,40 @@
1
+ import { OperationIndex } from "../../_shared/rest/operation-index.js";
2
+ /** Reviewed workflow vocabulary over the unchanged vendor paths and contracts. */
3
+ const summaries = {
4
+ "GET /people/v2/people": "Find and search People profiles: a person, contact details, active or inactive members, name, email or phone.",
5
+ "GET /people/v2/people/{person_id}": "Get one person's People profile and contact details; include emails, phone numbers, addresses and household.",
6
+ "PATCH /people/v2/people/{person_id}": "Update or archive a person: inactive archives the People profile; active restores it without deleting history.",
7
+ "GET /people/v2/person_mergers": "Find merged person history and the surviving People id for a removed duplicate profile.",
8
+ "POST /people/v2/people/{person_id}/emails": "Add an email address to a person as a separate People Email record.",
9
+ "POST /people/v2/people/{person_id}/phone_numbers": "Add a phone number to a person as a separate People PhoneNumber record.",
10
+ "GET /people/v2/field_definitions": "List custom field definitions, names and data types for People profiles.",
11
+ "GET /people/v2/people/{person_id}/field_data": "List a person's custom field values; join field definitions for their names and data types.",
12
+ "GET /people/v2/people/{person_id}/notes": "List a person's profile note records and their categories.",
13
+ "GET /services/v2/people": "List Services volunteers and person identities for a volunteer roster; use plans for who is serving on a date.",
14
+ "GET /services/v2/teams": "List volunteer teams and roster roles across Services service types.",
15
+ "GET /services/v2/service_types": "List service types to resolve the worship service before finding its dated plan and order of service.",
16
+ "GET /services/v2/service_types/{service_type_id}/plans": "List dated Services plans for an order of service; choose the plan before reading items or the volunteer roster.",
17
+ "GET /services/v2/service_types/{service_type_id}/plans/{plan_id}/items": "Read the order of service: ordered plan items, songs, durations and worship-service positions.",
18
+ "GET /services/v2/service_types/{service_type_id}/plans/{plan_id}/team_members": "List a plan's volunteer roster and serving team members, with person, team and position identities.",
19
+ "POST /services/v2/service_types/{service_type_id}/plans/{plan_id}/team_members": "Schedule a volunteer into one plan's serving roster with the person's team and position.",
20
+ "GET /groups/v2/groups": "Find church groups, then resolve group leaders and members through their memberships.",
21
+ "GET /groups/v2/groups/{group_id}/memberships": "List church group leaders and members; each group membership joins a person and their leader role.",
22
+ "GET /giving/v2/donations": "List donations by person, date or fund; include designations for fund identities.",
23
+ };
24
+ /** Reviewed vocabulary; shared hatch ranking keeps the full index reachable. */
25
+ export class PlanningCenterIndex extends OperationIndex {
26
+ constructor(data) {
27
+ super({
28
+ ...data,
29
+ ops: data.ops.map(([method, path, id, summary, tag, server]) => {
30
+ const reviewed = summaries[`${method} ${path}`];
31
+ // PCO omits operation ids: preserve the generated CRUD/resource words
32
+ // alongside workflow synonyms so verb-led queries remain discoverable.
33
+ const combined = reviewed ? `${reviewed} (${summary.replace(/ — Planning Center \w[\w-]*$/, "")})` : summary;
34
+ return server === undefined
35
+ ? [method, path, id, combined, tag]
36
+ : [method, path, id, combined, tag, server];
37
+ }),
38
+ }, { vendor: "pco", title: "Planning Center" });
39
+ }
40
+ }
@@ -0,0 +1,39 @@
1
+ import { PLANNING_CENTER_APPS, isApp } from "../api.js";
2
+ /** `a, b, and c`, the way the guide and description list products. */
3
+ export function series(items) {
4
+ return items.length < 3 ? items.join(" and ") : `${items.slice(0, -1).join(", ")}, and ${items.at(-1)}`;
5
+ }
6
+ /** The products the description names: those with named tools for staff work. */
7
+ export const DESCRIBED_APPS = [
8
+ "people",
9
+ "services",
10
+ "groups",
11
+ "check-ins",
12
+ "calendar",
13
+ "registrations",
14
+ "giving",
15
+ ];
16
+ /**
17
+ * `excludeApps` as a set, refusing at construction what cannot be meant
18
+ * (INV-11): a product Planning Center does not have, a misspelling, or People.
19
+ */
20
+ export function excludedApps(value) {
21
+ const excluded = new Set();
22
+ if (value === undefined)
23
+ return excluded;
24
+ const excludable = PLANNING_CENTER_APPS.filter((app) => app !== "people").join(", ");
25
+ if (!Array.isArray(value)) {
26
+ throw new Error(`planningCenter() excludeApps must be an array of app names from: ${excludable}.`);
27
+ }
28
+ for (const entry of value) {
29
+ if (entry === "people") {
30
+ throw new Error('planningCenter() excludeApps cannot exclude "people": every product joins through People person ids, and the credential test reads /people/v2/me.');
31
+ }
32
+ if (typeof entry !== "string" || !isApp(entry)) {
33
+ const lower = typeof entry === "string" ? entry.trim().toLowerCase() : "";
34
+ throw new Error(`planningCenter() excludeApps has unknown app ${JSON.stringify(entry)}; expected any of ${excludable}.${isApp(lower) && lower !== "people" ? ` App names are lowercase path segments: "${lower}".` : ""}`);
35
+ }
36
+ excluded.add(entry);
37
+ }
38
+ return excluded;
39
+ }
@@ -0,0 +1,83 @@
1
+ import { ConnectorCallError } from "../../../errors.js";
2
+ export function asRecord(value) {
3
+ return value && typeof value === "object" && !Array.isArray(value) ? value : {};
4
+ }
5
+ export function asArray(value) {
6
+ return Array.isArray(value) ? value : [];
7
+ }
8
+ export function compact(value) {
9
+ return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
10
+ }
11
+ export function isResource(value) {
12
+ const record = asRecord(value);
13
+ return typeof record["id"] === "string" && typeof record["type"] === "string";
14
+ }
15
+ export function resources(value) {
16
+ return (Array.isArray(value) ? value : value ? [value] : []).filter(isResource);
17
+ }
18
+ export function indexIncluded(document) {
19
+ const index = new Map();
20
+ for (const resource of resources(document["included"])) {
21
+ index.set(`${resource.type}:${resource.id}`, resource);
22
+ }
23
+ return index;
24
+ }
25
+ export function relationshipData(resource, name) {
26
+ return resource.relationships?.[name]?.data;
27
+ }
28
+ /** The related id, `null` when Planning Center says there is none. */
29
+ export function relId(resource, name) {
30
+ const data = relationshipData(resource, name);
31
+ if (data === null)
32
+ return null;
33
+ const id = asRecord(data)["id"];
34
+ return typeof id === "string" ? id : undefined;
35
+ }
36
+ export function related(resource, name, index) {
37
+ const data = asRecord(relationshipData(resource, name));
38
+ return typeof data["type"] === "string" && typeof data["id"] === "string"
39
+ ? index.get(`${data["type"]}:${data["id"]}`)
40
+ : undefined;
41
+ }
42
+ export function relatedMany(resource, name, index) {
43
+ return asArray(relationshipData(resource, name))
44
+ .map((entry) => {
45
+ const ref = asRecord(entry);
46
+ return index.get(`${String(ref["type"])}:${String(ref["id"])}`);
47
+ })
48
+ .filter((item) => item !== undefined);
49
+ }
50
+ /** `{ id, ...the named attributes }`, keeping Planning Center's own names. */
51
+ export function pick(resource, names) {
52
+ const attributes = resource.attributes ?? {};
53
+ const out = { id: resource.id };
54
+ for (const name of names) {
55
+ if (attributes[name] !== undefined)
56
+ out[name] = attributes[name];
57
+ }
58
+ return out;
59
+ }
60
+ export function attribute(resource, name) {
61
+ return resource?.attributes?.[name];
62
+ }
63
+ /** A JSON:API write document. `undefined` drops a key; `null` clears a field. */
64
+ export function writeDocument(type, attributes) {
65
+ return { data: { type, attributes: compact(attributes) } };
66
+ }
67
+ /** One branchable signal: `meta.next.offset`, Planning Center's own cursor. */
68
+ export function pageOf(document, offset = 0) {
69
+ const meta = asRecord(document["meta"]);
70
+ const next = asRecord(meta["next"])["offset"];
71
+ const total = meta["total_count"];
72
+ if (meta["next"] != null && (next === undefined || !Number.isSafeInteger(next) || next <= offset)) {
73
+ throw new ConnectorCallError("connector_call_failed", "Planning Center returned invalid paging metadata.", {
74
+ retryable: false,
75
+ });
76
+ }
77
+ const nextOffset = next === undefined ? null : next;
78
+ return {
79
+ hasMore: nextOffset !== null,
80
+ nextOffset,
81
+ totalCount: typeof total === "number" && Number.isSafeInteger(total) && total >= 0 ? total : null,
82
+ };
83
+ }