@zackbart/connecta 0.34.0 → 0.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/CHANGELOG.md +393 -0
  2. package/README.md +62 -105
  3. package/SECURITY.md +3 -2
  4. package/bin/connecta.mjs +41 -16
  5. package/bin/version.mjs +1 -1
  6. package/dist/access-tokens.d.ts +2 -1
  7. package/dist/access-tokens.js +66 -30
  8. package/dist/activity.d.ts +1 -1
  9. package/dist/activity.js +2 -0
  10. package/dist/agent-config.d.ts +23 -0
  11. package/dist/agent-config.js +59 -0
  12. package/dist/agent-description.js +16 -0
  13. package/dist/agent-identity.js +4 -4
  14. package/dist/agent-observation.js +39 -0
  15. package/dist/auth/clerk-sdk/client.d.ts +2 -0
  16. package/dist/auth/clerk-sdk/generated.js +554 -563
  17. package/dist/auth/clerk-transport.js +70 -3
  18. package/dist/auth/clerk.d.ts +13 -0
  19. package/dist/auth/clerk.js +653 -246
  20. package/dist/auth/cloudflare-access.js +46 -42
  21. package/dist/auth/downstream-client-metadata.js +2 -2
  22. package/dist/auth/downstream-oauth.js +2051 -1160
  23. package/dist/auth/downstream-revocation.js +88 -88
  24. package/dist/auth/native-call.js +20 -0
  25. package/dist/auth/native.js +184 -0
  26. package/dist/auth/oauth-start-reset.js +11 -5
  27. package/dist/auth/oauth-token-response.js +121 -102
  28. package/dist/auth/oauth-v2-migration.js +97 -78
  29. package/dist/auth/renewable-grant.js +10 -0
  30. package/dist/auth/static-oauth.js +663 -271
  31. package/dist/auth/vercel-agent.js +266 -0
  32. package/dist/auth-admission.js +204 -0
  33. package/dist/auth-elicitation.js +350 -241
  34. package/dist/authorization-handoff.js +164 -90
  35. package/dist/call-admission-context.js +3 -10
  36. package/dist/call-admission.js +2 -0
  37. package/dist/call-classification.js +9 -0
  38. package/dist/call-recovery.js +32 -13
  39. package/dist/canonical-json.js +8 -0
  40. package/dist/catalog-cache.js +369 -213
  41. package/dist/catalog-service.js +659 -530
  42. package/dist/catalog.js +5 -1
  43. package/dist/concurrency.js +0 -25
  44. package/dist/config-defaults.d.ts +1 -0
  45. package/dist/config-defaults.js +1 -0
  46. package/dist/config-schema.d.ts +3 -1
  47. package/dist/config-schema.js +13 -3
  48. package/dist/config.d.ts +40 -6
  49. package/dist/config.js +40 -26
  50. package/dist/connector-caller.d.ts +4 -0
  51. package/dist/connector-caller.js +17 -4
  52. package/dist/connectors/api-connector.d.ts +15 -7
  53. package/dist/connectors/api-connector.js +147 -57
  54. package/dist/connectors/guarded-fetch.d.ts +51 -17
  55. package/dist/connectors/guarded-fetch.js +215 -121
  56. package/dist/connectors/negotiation-cache.js +20 -10
  57. package/dist/connectors/option-shapes.js +1 -1
  58. package/dist/connectors/remote-mcp.d.ts +12 -30
  59. package/dist/connectors/remote-mcp.js +960 -564
  60. package/dist/d1.js +10 -243
  61. package/dist/derived-context.js +5 -0
  62. package/dist/describe-config.d.ts +5 -1
  63. package/dist/describe-config.js +3 -0
  64. package/dist/downstream-input.js +347 -260
  65. package/dist/errors.d.ts +87 -6
  66. package/dist/errors.js +114 -4
  67. package/dist/execute.js +87 -50
  68. package/dist/executor-admission.js +3 -0
  69. package/dist/executors/quickjs.js +163 -112
  70. package/dist/guarded-transport.js +50 -0
  71. package/dist/guest-runtime.js +1 -1
  72. package/dist/http/client.js +439 -0
  73. package/dist/http/errors.js +558 -0
  74. package/dist/http/fields.js +49 -0
  75. package/dist/http/hatch-paging.js +318 -0
  76. package/dist/http/hatch.js +1279 -0
  77. package/dist/http/json-schema.js +267 -0
  78. package/dist/http/node-transport.js +241 -0
  79. package/dist/http/oauth.js +162 -0
  80. package/dist/http/paging.js +228 -0
  81. package/dist/http/provider.js +221 -0
  82. package/dist/http/safety.js +82 -0
  83. package/dist/http/services.js +79 -0
  84. package/dist/http/tools.js +383 -0
  85. package/dist/http/vendor-index.js +138 -0
  86. package/dist/http/vendor.js +448 -0
  87. package/dist/http/write-request.js +66 -0
  88. package/dist/http-policy.d.ts +11 -0
  89. package/dist/http-policy.js +45 -0
  90. package/dist/inbound-credential.js +1 -1
  91. package/dist/index.d.ts +2 -2
  92. package/dist/index.js +4 -0
  93. package/dist/invocation-auth.js +30 -19
  94. package/dist/invocation.js +221 -87
  95. package/dist/mcp-result.js +0 -4
  96. package/dist/membership.d.ts +4 -0
  97. package/dist/meta-output.js +1 -1
  98. package/dist/meta-tools.js +534 -408
  99. package/dist/native-recovery.js +52 -0
  100. package/dist/native-tools.js +382 -0
  101. package/dist/node.d.ts +4 -3
  102. package/dist/node.js +45 -8
  103. package/dist/oauth-handoff.js +177 -104
  104. package/dist/oauth-partition.js +6 -20
  105. package/dist/oauth-sealing.js +6 -7
  106. package/dist/operation-vocabulary.js +101 -0
  107. package/dist/operator-record.d.ts +2 -2
  108. package/dist/operator-record.js +17 -4
  109. package/dist/operator-ui/agents.d.ts +5 -4
  110. package/dist/operator-ui/agents.js +17 -7
  111. package/dist/operator-ui/config-summary.js +8 -4
  112. package/dist/operator-ui/connection-map.js +9 -6
  113. package/dist/operator-ui/contract.d.ts +7 -3
  114. package/dist/operator-ui/endpoints.js +5 -14
  115. package/dist/operator-ui/fix-prompts.d.ts +1 -1
  116. package/dist/operator-ui/fix-prompts.js +0 -8
  117. package/dist/operator-ui/generated.js +3 -3
  118. package/dist/operator-ui/health.js +52 -0
  119. package/dist/operator-ui/model.d.ts +2 -3
  120. package/dist/operator-ui/overview.js +11 -19
  121. package/dist/operator-ui/setup-commands.js +0 -4
  122. package/dist/operator-ui/view.d.ts +5 -29
  123. package/dist/operator-ui/view.js +3 -59
  124. package/dist/program-writes.js +47 -26
  125. package/dist/provider-call-facts.d.ts +115 -0
  126. package/dist/provider-call-facts.js +182 -0
  127. package/dist/provider-call.d.ts +112 -0
  128. package/dist/provider-call.js +271 -0
  129. package/dist/provider.d.ts +71 -32
  130. package/dist/provider.js +134 -40
  131. package/dist/providers/_shared/google/hatch.js +91 -0
  132. package/dist/providers/_shared/google/kit.js +537 -0
  133. package/dist/providers/_shared/google/result-size.js +15 -2
  134. package/dist/providers/_shared/google/service-account.d.ts +2 -1
  135. package/dist/providers/_shared/google/service-account.js +8 -4
  136. package/dist/providers/_shared/google/workspace.d.ts +8 -209
  137. package/dist/providers/_shared/google/workspace.js +7 -426
  138. package/dist/providers/_shared/rest/compact-index.js +86 -0
  139. package/dist/providers/_shared/rest/dispatch.js +3 -23
  140. package/dist/providers/_shared/rest/kit.js +546 -0
  141. package/dist/providers/_shared/rest/operation-index.js +230 -14
  142. package/dist/providers/_shared/rest/response-media.js +11 -0
  143. package/dist/providers/_shared/rest/tools.js +101 -78
  144. package/dist/providers/_shared/rest/value-safety.js +353 -195
  145. package/dist/providers/_shared/sensitive-fields.js +27 -0
  146. package/dist/providers/breeze/api.js +584 -0
  147. package/dist/providers/breeze/index.d.ts +3 -3
  148. package/dist/providers/breeze/index.js +67 -1420
  149. package/dist/providers/breeze/openapi.generated.js +60 -0
  150. package/dist/providers/breeze/skill.generated.js +2 -6
  151. package/dist/providers/breeze/tools.js +696 -0
  152. package/dist/providers/ccb/api.js +496 -0
  153. package/dist/providers/ccb/index.d.ts +17 -37
  154. package/dist/providers/ccb/index.js +77 -1702
  155. package/dist/providers/ccb/lib/constants.d.ts +34 -0
  156. package/dist/providers/ccb/lib/constants.js +74 -0
  157. package/dist/providers/ccb/lib/guide.js +9 -0
  158. package/dist/providers/ccb/lib/verdicts.js +387 -0
  159. package/dist/providers/ccb/openapi.generated.js +397 -0
  160. package/dist/providers/ccb/safety.js +295 -0
  161. package/dist/providers/ccb/skill.generated.js +2 -6
  162. package/dist/providers/ccb/tools.js +853 -0
  163. package/dist/providers/cloudflare/api.js +1066 -0
  164. package/dist/providers/cloudflare/index.d.ts +7 -22
  165. package/dist/providers/cloudflare/index.js +80 -194
  166. package/dist/providers/cloudflare/lib/config.d.ts +16 -0
  167. package/dist/providers/cloudflare/lib/config.js +2 -0
  168. package/dist/providers/cloudflare/lib/discovery.js +29 -0
  169. package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
  170. package/dist/providers/cloudflare/lib/hatch.js +103 -0
  171. package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
  172. package/dist/providers/cloudflare/lib/response-media.js +75 -0
  173. package/dist/providers/cloudflare/openapi.generated.js +3299 -3208
  174. package/dist/providers/cloudflare/{value-safety.js → safety.js} +538 -18
  175. package/dist/providers/cloudflare/skill.generated.js +2 -10
  176. package/dist/providers/cloudflare/tools.js +360 -0
  177. package/dist/providers/docs/api.js +51 -0
  178. package/dist/providers/docs/index.d.ts +1 -12
  179. package/dist/providers/docs/index.js +53 -1165
  180. package/dist/providers/docs/lib/constants.d.ts +18 -0
  181. package/dist/providers/docs/lib/constants.js +18 -0
  182. package/dist/providers/docs/lib/discovery.js +26 -0
  183. package/dist/providers/docs/lib/requests.js +48 -0
  184. package/dist/providers/docs/lib/schemas.js +168 -0
  185. package/dist/providers/docs/openapi.generated.js +16 -0
  186. package/dist/providers/docs/safety.js +54 -0
  187. package/dist/providers/docs/skill.generated.js +2 -6
  188. package/dist/providers/docs/tools.js +802 -0
  189. package/dist/providers/drive/api.js +177 -0
  190. package/dist/providers/drive/index.d.ts +1 -12
  191. package/dist/providers/drive/index.js +38 -1448
  192. package/dist/providers/drive/lib/constants.d.ts +6 -0
  193. package/dist/providers/drive/lib/constants.js +6 -0
  194. package/dist/providers/drive/lib/contracts.js +532 -0
  195. package/dist/providers/drive/lib/hatch.js +197 -0
  196. package/dist/providers/drive/openapi.generated.js +77 -0
  197. package/dist/providers/drive/safety.js +90 -0
  198. package/dist/providers/drive/skill.generated.js +2 -6
  199. package/dist/providers/drive/tools.js +1290 -0
  200. package/dist/providers/forms/api.js +71 -0
  201. package/dist/providers/forms/index.d.ts +1 -12
  202. package/dist/providers/forms/index.js +49 -1145
  203. package/dist/providers/forms/lib/constants.d.ts +14 -0
  204. package/dist/providers/forms/lib/constants.js +19 -0
  205. package/dist/providers/forms/lib/hatch.js +72 -0
  206. package/dist/providers/forms/openapi.generated.js +23 -0
  207. package/dist/providers/forms/safety.js +34 -0
  208. package/dist/providers/forms/skill.generated.js +2 -8
  209. package/dist/providers/forms/tools.js +1024 -0
  210. package/dist/providers/github/api.js +150 -0
  211. package/dist/providers/github/index.d.ts +4 -5
  212. package/dist/providers/github/index.js +30 -87
  213. package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
  214. package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
  215. package/dist/providers/github/lib/discovery.js +132 -0
  216. package/dist/providers/github/lib/operations.js +58 -0
  217. package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
  218. package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
  219. package/dist/providers/github/openapi.generated.js +1216 -0
  220. package/dist/providers/github/safety.js +216 -0
  221. package/dist/providers/github/skill.generated.js +2 -5
  222. package/dist/providers/github/tools.js +506 -0
  223. package/dist/providers/gmail/api.js +114 -0
  224. package/dist/providers/gmail/index.d.ts +1 -12
  225. package/dist/providers/gmail/index.js +73 -1621
  226. package/dist/providers/gmail/lib/constants.d.ts +13 -0
  227. package/dist/providers/gmail/lib/constants.js +16 -0
  228. package/dist/providers/gmail/lib/index.js +173 -0
  229. package/dist/providers/gmail/lib/schemas.js +176 -0
  230. package/dist/providers/gmail/lib/threading.js +120 -0
  231. package/dist/providers/gmail/openapi.generated.js +92 -0
  232. package/dist/providers/gmail/safety.js +21 -0
  233. package/dist/providers/gmail/skill.generated.js +2 -6
  234. package/dist/providers/gmail/tools.js +1435 -0
  235. package/dist/providers/overflow/api.js +1008 -0
  236. package/dist/providers/overflow/index.d.ts +3 -17
  237. package/dist/providers/overflow/index.js +60 -1488
  238. package/dist/providers/overflow/skill.generated.js +2 -5
  239. package/dist/providers/overflow/tools.js +873 -0
  240. package/dist/providers/planning-center/api.js +467 -0
  241. package/dist/providers/planning-center/index.d.ts +6 -35
  242. package/dist/providers/planning-center/index.js +69 -2445
  243. package/dist/providers/planning-center/lib/constants.d.ts +58 -0
  244. package/dist/providers/planning-center/lib/constants.js +83 -0
  245. package/dist/providers/planning-center/lib/discovery.js +40 -0
  246. package/dist/providers/planning-center/lib/guide.js +39 -0
  247. package/dist/providers/planning-center/lib/json-api.js +83 -0
  248. package/dist/providers/planning-center/lib/verdicts.js +1758 -0
  249. package/dist/providers/planning-center/openapi.generated.js +1764 -0
  250. package/dist/providers/planning-center/safety.js +188 -0
  251. package/dist/providers/planning-center/skill.generated.js +2 -27
  252. package/dist/providers/planning-center/tools.js +1010 -0
  253. package/dist/providers/sheets/api.js +133 -0
  254. package/dist/providers/sheets/index.d.ts +4 -16
  255. package/dist/providers/sheets/index.js +61 -1172
  256. package/dist/providers/sheets/lib/constants.d.ts +14 -0
  257. package/dist/providers/sheets/lib/constants.js +14 -0
  258. package/dist/providers/sheets/lib/hatch.js +163 -0
  259. package/dist/providers/sheets/lib/requests.js +105 -0
  260. package/dist/providers/sheets/lib/schemas.js +138 -0
  261. package/dist/providers/sheets/openapi.generated.js +30 -0
  262. package/dist/providers/sheets/safety.js +27 -0
  263. package/dist/providers/sheets/skill.generated.js +2 -7
  264. package/dist/providers/sheets/tools.js +734 -0
  265. package/dist/providers/slides/api.js +147 -0
  266. package/dist/providers/slides/index.d.ts +2 -10
  267. package/dist/providers/slides/index.js +48 -2555
  268. package/dist/providers/slides/lib/constants.d.ts +11 -0
  269. package/dist/providers/slides/lib/constants.js +11 -0
  270. package/dist/providers/slides/lib/requests.js +60 -0
  271. package/dist/providers/slides/lib/schemas.js +565 -0
  272. package/dist/providers/slides/openapi.generated.js +18 -0
  273. package/dist/providers/slides/skill.generated.js +2 -6
  274. package/dist/providers/slides/tools.js +1968 -0
  275. package/dist/providers/stripe/api.js +401 -0
  276. package/dist/providers/stripe/index.d.ts +7 -27
  277. package/dist/providers/stripe/index.js +75 -191
  278. package/dist/providers/stripe/lib/config.d.ts +4 -0
  279. package/dist/providers/stripe/lib/config.js +2 -0
  280. package/dist/providers/stripe/openapi.generated.js +4 -3
  281. package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
  282. package/dist/providers/stripe/skill.generated.js +2 -10
  283. package/dist/providers/stripe/tools.js +77 -0
  284. package/dist/providers/tithely/api.js +531 -0
  285. package/dist/providers/tithely/index.d.ts +19 -0
  286. package/dist/providers/tithely/index.js +86 -965
  287. package/dist/providers/tithely/skill.generated.js +2 -5
  288. package/dist/providers/tithely/tools.js +426 -0
  289. package/dist/providers/vercel/api.js +551 -0
  290. package/dist/providers/vercel/index.d.ts +11 -25
  291. package/dist/providers/vercel/index.js +67 -261
  292. package/dist/providers/vercel/lib/config.d.ts +2 -0
  293. package/dist/providers/vercel/lib/config.js +2 -0
  294. package/dist/providers/vercel/lib/index.js +117 -0
  295. package/dist/providers/vercel/lib/logs.js +100 -0
  296. package/dist/providers/vercel/lib/pin.js +270 -0
  297. package/dist/providers/vercel/openapi.generated.js +398 -376
  298. package/dist/providers/vercel/{value-safety.js → safety.js} +261 -42
  299. package/dist/providers/vercel/skill.generated.js +2 -7
  300. package/dist/providers/vercel/tools.js +642 -0
  301. package/dist/redaction-identity.js +47 -0
  302. package/dist/redaction-marker.js +125 -0
  303. package/dist/registry.d.ts +30 -28
  304. package/dist/registry.js +446 -413
  305. package/dist/routes/access-tokens.js +1 -1
  306. package/dist/routes/actor-labels.js +1 -1
  307. package/dist/routes/connect.js +1 -1
  308. package/dist/routes/dispatch.js +103 -0
  309. package/dist/routes/mcp.js +170 -79
  310. package/dist/routes/oauth.js +3 -1
  311. package/dist/routes/operator.js +2 -2
  312. package/dist/routes/shared.d.ts +5 -4
  313. package/dist/routes/shared.js +244 -177
  314. package/dist/routes/skills.js +10 -8
  315. package/dist/routes/ui-config.js +27 -3
  316. package/dist/routes/ui-data.js +29 -22
  317. package/dist/routes/ui.js +1 -1
  318. package/dist/runtime/call-admission.js +0 -26
  319. package/dist/runtime/call-entry.js +30 -0
  320. package/dist/runtime/call.js +556 -0
  321. package/dist/runtime/connector-scope.js +7 -0
  322. package/dist/runtime/credential-probe.js +34 -0
  323. package/dist/runtime/executor.js +40 -0
  324. package/dist/runtime/native-storage.js +63 -0
  325. package/dist/runtime/registry.js +27 -0
  326. package/dist/runtime/request-scope.js +72 -0
  327. package/dist/runtime/run.js +15 -7
  328. package/dist/runtime/shared-read.js +34 -5
  329. package/dist/runtime/storage.js +34 -21
  330. package/dist/sent-secrets.d.ts +194 -37
  331. package/dist/sent-secrets.js +1743 -340
  332. package/dist/server.js +5 -56
  333. package/dist/skills.js +330 -224
  334. package/dist/sqlite.js +15 -14
  335. package/dist/storage/d1-copy.js +255 -0
  336. package/dist/storage/d1-driver.js +15 -0
  337. package/dist/storage/keys.js +28 -0
  338. package/dist/storage/sql-driver.js +88 -0
  339. package/dist/storage/sql-native.js +544 -0
  340. package/dist/storage/sql-schema.d.ts +6 -0
  341. package/dist/storage/sql-schema.js +15 -0
  342. package/dist/storage/sql.d.ts +14 -20
  343. package/dist/storage/sql.js +29 -535
  344. package/dist/timeout.js +0 -26
  345. package/dist/tool-safety.js +20 -10
  346. package/dist/types.d.ts +11 -99
  347. package/dist/upward.js +3 -0
  348. package/dist/usage-guide.js +3 -1
  349. package/dist/validate.d.ts +4 -2
  350. package/dist/validate.js +86 -9
  351. package/dist/version.d.ts +1 -1
  352. package/dist/version.js +1 -1
  353. package/dist/worker.js +312 -292
  354. package/dist/workspace-subject.js +5 -1
  355. package/dist/write-outcome.js +454 -34
  356. package/documentation/README.md +27 -7
  357. package/documentation/architecture.md +2550 -186
  358. package/documentation/auth.md +821 -98
  359. package/documentation/code-mode.md +56 -21
  360. package/documentation/deploying.md +164 -20
  361. package/documentation/hosted-mcp-migration.md +460 -0
  362. package/documentation/integrating.md +144 -105
  363. package/documentation/meta-tools.md +411 -34
  364. package/documentation/operating.md +28 -4
  365. package/documentation/operator-tests.md +11 -2
  366. package/documentation/operator-ui.md +103 -33
  367. package/documentation/provider-auth-migration.md +38 -63
  368. package/documentation/provider-migration-0.29.md +10 -5
  369. package/documentation/provider-migration-0.35.md +975 -0
  370. package/documentation/providers.md +965 -0
  371. package/examples/worker/AGENTS.md +23 -9
  372. package/examples/worker/README.md +254 -135
  373. package/examples/worker/alchemy.run.ts +116 -0
  374. package/examples/worker/gitignore +10 -0
  375. package/examples/worker/src/connecta.config.ts +23 -21
  376. package/examples/worker/wrangler.jsonc +14 -5
  377. package/guides/connecting-agents.md +157 -0
  378. package/guides/how-it-works.md +156 -0
  379. package/guides/safety-and-trust.md +153 -0
  380. package/package.json +27 -42
  381. package/templates/node/.env.example +3 -0
  382. package/templates/node/README.md +22 -2
  383. package/templates/node/docker-compose.yml +1 -0
  384. package/templates/node/package.json +3 -2
  385. package/templates/node/src/connecta.config.ts +8 -0
  386. package/dist/catalog-drift.d.ts +0 -134
  387. package/dist/catalog-drift.js +0 -493
  388. package/dist/providers/_shared/request-token.js +0 -83
  389. package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
  390. package/dist/providers/_shared/rest/tools.d.ts +0 -141
  391. package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
  392. package/dist/providers/basecamp/index.d.ts +0 -43
  393. package/dist/providers/basecamp/index.js +0 -997
  394. package/dist/providers/basecamp/skill.generated.js +0 -9
  395. package/dist/providers/cloudflare/rest.d.ts +0 -37
  396. package/dist/providers/cloudflare/rest.js +0 -1078
  397. package/dist/providers/github/hosted.js +0 -218
  398. package/dist/providers/github/rest.js +0 -321
  399. package/dist/providers/infisical/index.d.ts +0 -7
  400. package/dist/providers/infisical/index.js +0 -713
  401. package/dist/providers/infisical/skill.generated.js +0 -8
  402. package/dist/providers/linear/index.d.ts +0 -55
  403. package/dist/providers/linear/index.js +0 -352
  404. package/dist/providers/linear/skill.generated.js +0 -8
  405. package/dist/providers/mixpanel/index.d.ts +0 -57
  406. package/dist/providers/mixpanel/index.js +0 -468
  407. package/dist/providers/mixpanel/operations.js +0 -20
  408. package/dist/providers/mixpanel/rest.js +0 -603
  409. package/dist/providers/mixpanel/skill.generated.js +0 -10
  410. package/dist/providers/mixpanel/value-safety.js +0 -16
  411. package/dist/providers/notion/index.d.ts +0 -65
  412. package/dist/providers/notion/index.js +0 -368
  413. package/dist/providers/notion/openapi.generated.js +0 -75
  414. package/dist/providers/notion/rest.d.ts +0 -24
  415. package/dist/providers/notion/rest.js +0 -1226
  416. package/dist/providers/notion/skill.generated.js +0 -11
  417. package/dist/providers/notion/value-safety.js +0 -56
  418. package/dist/providers/revenuecat/index.d.ts +0 -49
  419. package/dist/providers/revenuecat/index.js +0 -557
  420. package/dist/providers/revenuecat/skill.generated.js +0 -11
  421. package/dist/providers/stripe/rest.d.ts +0 -14
  422. package/dist/providers/stripe/rest.js +0 -402
  423. package/dist/providers/vercel/rest.d.ts +0 -20
  424. package/dist/providers/vercel/rest.js +0 -1020
  425. package/dist/providers/wispr-flow/index.d.ts +0 -14
  426. package/dist/providers/wispr-flow/index.js +0 -117
  427. package/dist/providers/wispr-flow/skill.generated.js +0 -8
  428. /package/dist/providers/github/{key.js → lib/key.js} +0 -0
@@ -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
+ }