@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
package/dist/types.d.ts CHANGED
@@ -93,8 +93,8 @@ export interface ToolDef {
93
93
  outputSchema?: JsonSchema;
94
94
  /**
95
95
  * Standard MCP tool behavior hints plus provider-specific extensions.
96
- * The registry classifies these after deployment overrides and provider
97
- * review. Only a stored read verdict may use call_tool; program writes
96
+ * The registry classifies tools using deployment overrides and annotations.
97
+ * Only a stored read verdict may use call_tool; program writes
98
98
  * require a writable endpoint. Approval belongs to the host.
99
99
  */
100
100
  annotations?: ToolAnnotations;
@@ -238,79 +238,6 @@ export interface ConnectorContext {
238
238
  timeoutMs?: number;
239
239
  }
240
240
  type ConnectorStatusState = "ok" | "auth_required" | "credential_required" | "error";
241
- /**
242
- * What a reviewed downstream tool does. `"read"` is observational. `"write"`
243
- * changes state without destroying any that already exists, such as a create.
244
- * `"destructive"` modifies or removes existing state, including an upsert that
245
- * can overwrite. Both writes leave the read-only path; `"destructive"` also
246
- * asserts `destructiveHint`, which shapes the approval copy a human reads.
247
- */
248
- export type ToolVerdict = "read" | "write" | "destructive";
249
- /** One reviewed tool, with the evidence that justifies its verdict. */
250
- export interface ReviewedTool {
251
- readonly verdict: ToolVerdict;
252
- /** Why the verdict holds when the name or downstream annotations do not say. */
253
- readonly reason?: string;
254
- /**
255
- * `sha256-sets-v1:<hex>` digest of the reviewed input/output schemas.
256
- * Legacy `sha256:<hex>` pins retain literal array ordering.
257
- * Omit until a review has actually read them; an invented digest reports
258
- * drift that never happened. When the live schema no longer matches it, or
259
- * it cannot be checked, the verdict lapses and the tool is served as a write.
260
- */
261
- readonly schemaDigest?: string;
262
- /** Absence is expected under plan, feature, or permission gating. */
263
- readonly optional?: boolean;
264
- }
265
- /**
266
- * A reviewed classification of a downstream MCP catalog, keyed by exact tool
267
- * name. Plain data, validated at construction, so the same record classifies
268
- * live tools and feeds the drift check. A connector carries it as
269
- * `Connector.classification`, and the registry applies it on every read.
270
- *
271
- * It fails closed. A name it does not list keeps only an explicit downstream
272
- * read annotation; silence and contradiction classify as writes. A listed read
273
- * fills downstream silence but never overrules an explicit write annotation.
274
- * A listed write or destructive tool stays a write whatever the downstream
275
- * claims. A listed tool whose `schemaDigest` no longer matches is a write.
276
- */
277
- export interface ToolClassification {
278
- /** Hide every name absent from tools, including tools claiming to be reads. */
279
- readonly unlisted?: "hide";
280
- readonly tools: Readonly<Record<string, ToolVerdict | ReviewedTool>>;
281
- }
282
- /**
283
- * How far a downstream catalog has moved away from the manifest a release
284
- * reviewed. Counts and nothing else: names, schemas, and prose stay out
285
- * of every surface this rides on, so a drift report can never become a payload
286
- * ([#343](https://github.com/zackbart/connecta/issues/343)).
287
- */
288
- export interface CatalogDriftCounts {
289
- /** Downstream tools dropped because their names contain C0, DEL, or C1. */
290
- droppedTools?: number;
291
- /** Live tools no release classified. Each one fails closed at call time. */
292
- unclassifiedTools: number;
293
- /** Required reviewed names this catalog no longer serves. */
294
- unservedTools: number;
295
- /** Explicit downstream annotations that contradict a vetted verdict. */
296
- annotationConflicts: number;
297
- /** Tools whose reviewed schema digest no longer matches what arrived. */
298
- schemaChanges: number;
299
- }
300
- /** One drift observation, taken while serving a catalog refresh. */
301
- export interface CatalogDriftReport extends CatalogDriftCounts {
302
- /** False when this listing has no reviewed classification to compare. */
303
- reviewedBaseline?: boolean;
304
- /** Whether all pinned schemas could be checked on this observation. */
305
- verification?: "complete" | "unavailable";
306
- /** Live reviewed tools with and without recorded schema digests. */
307
- schemaCoverage?: {
308
- pinned: number;
309
- unpinned: number;
310
- };
311
- /** When the observation was taken; never when a probe was scheduled. */
312
- observedAt: string;
313
- }
314
241
  /** The last agent-facing catalog read this runtime served for one connector. */
315
242
  export interface CatalogAccessObservation {
316
243
  /** Fresh means the read used a live or unexpired catalog; stale means SWR. */
@@ -346,7 +273,6 @@ export interface ConnectorStatus {
346
273
  * observation is not persisted the way the catalog is, so absence means this
347
274
  * isolate or process has seen nothing, not that nothing drifted.
348
275
  */
349
- catalogDrift?: CatalogDriftReport;
350
276
  /**
351
277
  * The last agent-facing catalog read in this runtime. This payload-free
352
278
  * observation is not persisted and operator reads do not replace it.
@@ -439,35 +365,6 @@ export interface Connector {
439
365
  * fetched lazily over the network and are not known at construction time.
440
366
  */
441
367
  staticTools?: ToolDef[];
442
- /**
443
- * Optional reviewed classification of the tools `listTools` returns: data
444
- * the registry applies, never something the connector applies itself.
445
- * `remoteMcp({ classify })` and maintained providers set it to a
446
- * deep-frozen record; a custom connector may set one too. It is validated
447
- * when a registry first reads it (INV-11), and read once per connector
448
- * object. A connector that sets it lists raw downstream tools; the
449
- * registry caches and persists only that listing, and classifies it on
450
- * every read with this record, so no cache layer carries a verdict.
451
- * Connectors with `staticTools` cannot set it: annotate those directly.
452
- *
453
- * A wrapper that rebuilds a connector must forward this field to keep the
454
- * review. `{ ...connector }`, `Object.assign`, and `Object.create` keep it;
455
- * a forwarding class that omits it serves an unreviewed connector, whose
456
- * downstream annotations are its own claims and fail closed when absent.
457
- * Deployment-level classifier overrides, keyed by connector id
458
- * and tool ([#706](https://github.com/zackbart/connecta/issues/706)), apply
459
- * regardless of wrapping.
460
- */
461
- readonly classification?: ToolClassification | undefined;
462
- /**
463
- * Optional: the drift this connector saw the last time it listed tools,
464
- * or undefined when it has not listed any yet. A getter over an
465
- * observation, never a probe: calling it makes no request, touches no
466
- * credential, and returns counts only. Ignored for a connector with a
467
- * `classification`, whose drift the registry observes itself, against
468
- * that record, while serving a refresh the deployment already asked for.
469
- */
470
- catalogDrift?(): CatalogDriftReport | undefined;
471
368
  /**
472
369
  * Optional: what this connector is, for `Connecta.describeConfig()` and the
473
370
  * operator surfaces built on it — where it points, how it authenticates,
@@ -535,6 +432,8 @@ export interface Connector {
535
432
  * pending URL could complete consent with their own account.
536
433
  */
537
434
  verifyState?(state: string | null, ctx: ConnectorContext): Promise<boolean>;
435
+ /** Validate provider callback parameters after state verification and before issuer validation, including errors. */
436
+ verifyCallbackParameters?(params: URLSearchParams, ctx: ConnectorContext): Promise<boolean>;
538
437
  /** Validate a callback issuer against its verified consent, including error responses. */
539
438
  verifyCallbackIssuer?(issuer: string | null, ctx: ConnectorContext): Promise<boolean>;
540
439
  /**
@@ -596,7 +495,7 @@ export interface ConnectorToolDescription {
596
495
  annotations?: ToolAnnotations;
597
496
  inputSchema?: JsonSchema;
598
497
  outputSchema?: JsonSchema;
599
- /** Present on registry descriptions after overrides and provider review (INV-1). */
498
+ /** Present on registry descriptions after overrides and annotations (INV-1). */
600
499
  classification?: "read" | "write";
601
500
  }
602
501
  /** What `Connector.describe()` reports. Every field is optional but `source`. */
@@ -742,7 +641,7 @@ export type AuthResult = {
742
641
  /** Human owner represented by a non-interactive access credential. */
743
642
  principal?: IdentityReference;
744
643
  /**
745
- * Declared agent name. Only the built-in `accessTokens()` adapter may
644
+ * Declared agent name. Only built-in agent credential adapters may
746
645
  * set it; a result from any other provider that carries it is refused.
747
646
  */
748
647
  agent?: string;
@@ -768,7 +667,7 @@ export interface AuthenticatedIdentity {
768
667
  principal?: IdentityReference;
769
668
  /**
770
669
  * Name of the code-declared agent this caller is, from `agents`. Set only
771
- * when the built-in access-token adapter admitted a `cta_` token bound to
670
+ * when a built-in agent adapter admitted a credential bound to
772
671
  * a currently declared agent; an agent never has a `principal`.
773
672
  */
774
673
  agent?: string;
@@ -932,8 +831,9 @@ export interface InboundAuth {
932
831
  * Best-effort friendly label for a stable activity actor id. Called only
933
832
  * while serving an authorized activity read, never during tool admission or
934
833
  * event writes. The result is display-only and cannot grant access.
834
+ * Stop request-owned work when signal aborts (reader left or label budget expired).
935
835
  */
936
- activityActorLabel?(subjectId: string): string | undefined | Promise<string | undefined>;
836
+ activityActorLabel?(subjectId: string, signal?: AbortSignal): string | undefined | Promise<string | undefined>;
937
837
  /**
938
838
  * Optional browser sign-in configuration. When present, operator pages use
939
839
  * the provider's interactive sign-in flow.
package/dist/ui.d.ts CHANGED
@@ -6,7 +6,7 @@ import type { RegistryView } from "./registry.js";
6
6
  import type { ConnectaBranding, Connector, ConnectorStatus, ToolDef, UiAuthConfig } from "./types.js";
7
7
  export { filterUiConnectors, type CredentialManagementCapability, type UiConnector, type UiData, } from "./operator-ui/model.js";
8
8
  export { CONNECTA_FAVICON_SVG, resolveBranding, isSafeHttpUrl, isSafeHttpsUrl, isSafeIconHref } from "./branding.js";
9
- export type OperatorPage = import("./operator-ui/view.js").OperatorPage;
9
+ export type OperatorPage = import("./operator-ui/contract.js").OperatorPage;
10
10
  export declare function operatorPageForPath(path: string): OperatorPage | undefined;
11
11
  export declare function operatorPageTitle(page: OperatorPage, configuredTitle: string): string;
12
12
  /** Report the verdict the registry stored, independent of whether an endpoint is read-only. */
package/dist/ui.js CHANGED
@@ -164,7 +164,6 @@ _nonce, page = "endpoints") {
164
164
  productName: brand.productName,
165
165
  brandMark: brandMark(branding, true),
166
166
  productDescription: brand.description,
167
- productOperatorLabel: brand.productName + " operator",
168
167
  })}</script><script defer src="${OPERATOR_UI_SCRIPT_PATH}"></script>`,
169
168
  });
170
169
  }
package/dist/upward.js ADDED
@@ -0,0 +1,3 @@
1
+ export function* upwardStep(effect) {
2
+ return yield effect;
3
+ }
@@ -19,6 +19,8 @@ Discover and call together when schemas suffice. search_tools covers catalog
19
19
  inspection. On a read-only endpoint, as execute_code's description says, search
20
20
  omits writes (guides may name them) and each fails read_only_endpoint; tell the
21
21
  user. Unannotated tools fail closed to writes.
22
+ For a requested write, make the call through the write route; the host may ask
23
+ the user to confirm it. Connecta classifies and routes writes; the host owns approval.
22
24
 
23
25
  ## The global and the envelopes
24
26
 
@@ -113,7 +115,7 @@ async () => {
113
115
  }
114
116
  \`\`\`
115
117
 
116
- Oversized returns lead with nextAction. Never rerun writes for output. write_outcome_unknown forbids retry, even if caught.
118
+ Oversized returns lead with nextAction. Never rerun writes for output. write_outcome_unknown or writeOutcome forbids retry, even if caught.
117
119
  Recovery args may be partial (argsRedacted) or absent (argsOmitted). Reconcile
118
120
  before retrying with the original args or repeating a program that sent writes.
119
121
  Non-retryable errors need repair.
@@ -29,6 +29,8 @@ export interface CompileValidatorOptions {
29
29
  */
30
30
  address: string;
31
31
  }
32
+ /** Optional in-process properties have the same absence semantics as JSON input. Never mutate the caller. */
33
+ export declare function normalizeToolInput<A>(value: A): A;
32
34
  /**
33
35
  * Validate call arguments against a tool's JSON Schema.
34
36
  *
@@ -39,8 +41,8 @@ export interface CompileValidatorOptions {
39
41
  * convention arguments (a `confirm` flag on writes, say) that individual tool
40
42
  * schemas do not declare before deciding the call is really invalid.
41
43
  *
42
- * A schema the validator cannot compile (or that only fails on first use, e.g.
43
- * an unresolvable `$ref`) is warned about once and then passed through — a
44
+ * A schema the validator cannot compile (or evaluate, e.g. an unresolvable
45
+ * `$ref`) is warned about once and the failing call is passed through — a
44
46
  * broken schema should not break an otherwise working tool. Pass
45
47
  * `failClosed: true` to instead reject such calls with `invalid_args`, for
46
48
  * callers that would rather refuse a call than forward unvalidated arguments.
package/dist/validate.js CHANGED
@@ -3,11 +3,67 @@ import { boundedEchoText, ConnectorCallError } from "./errors.js";
3
3
  import { MAX_ARGUMENT_VALIDATION_ISSUES } from "./errors.js";
4
4
  import { failureRecord, logFailure } from "./operator-record.js";
5
5
  // Lazy validator cache keyed by the schema object itself; null marks a schema
6
- // the validator rejected (warned once, then passed through rather than
7
- // breaking a working tool). A WeakMap so schemas belonging to a discarded
6
+ // the validator could not compile (warned once, then passed through rather
7
+ // than breaking a working tool). A WeakMap so schemas belonging to a discarded
8
8
  // connector are collectable, the same pattern compactSchema uses.
9
9
  const validators = new WeakMap();
10
+ const evaluationWarnings = new WeakSet();
10
11
  const REQUIRED_PROPERTY_RE = /^Instance does not have required property "([^"]+)"\.$/;
12
+ function plainContainer(value) {
13
+ if (value === null || typeof value !== "object")
14
+ return false;
15
+ if (Array.isArray(value))
16
+ return true;
17
+ const prototype = Object.getPrototypeOf(value);
18
+ return prototype === Object.prototype || prototype === null;
19
+ }
20
+ /** Optional in-process properties have the same absence semantics as JSON input. Never mutate the caller. */
21
+ export function normalizeToolInput(value) {
22
+ // Keep unchanged inputs and their pass-through subtrees by identity. JSON
23
+ // callers have nothing to omit, so they never need a copy.
24
+ const seen = new WeakSet();
25
+ const remaining = [value];
26
+ let needed = false;
27
+ while (remaining.length > 0) {
28
+ const item = remaining.pop();
29
+ if (!plainContainer(item) || seen.has(item))
30
+ continue;
31
+ seen.add(item);
32
+ for (const child of Object.values(item)) {
33
+ if (child === undefined && !Array.isArray(item))
34
+ needed = true;
35
+ else if (child !== null && typeof child === "object")
36
+ remaining.push(child);
37
+ }
38
+ }
39
+ if (!needed)
40
+ return value;
41
+ const copies = new WeakMap();
42
+ const pending = [];
43
+ const copy = (item) => {
44
+ if (!plainContainer(item))
45
+ return item;
46
+ const existing = copies.get(item);
47
+ if (existing)
48
+ return existing;
49
+ const target = Array.isArray(item) ? [] : Object.create(Object.getPrototypeOf(item));
50
+ if (Array.isArray(item))
51
+ target.length = item.length;
52
+ copies.set(item, target);
53
+ pending.push([item, target]);
54
+ return target;
55
+ };
56
+ const root = copy(value);
57
+ for (let next = pending.pop(); next; next = pending.pop()) {
58
+ const [source, target] = next;
59
+ for (const [key, item] of Object.entries(source)) {
60
+ if (item === undefined && !Array.isArray(source))
61
+ continue;
62
+ Object.defineProperty(target, key, { value: copy(item), enumerable: true, configurable: true, writable: true });
63
+ }
64
+ }
65
+ return root;
66
+ }
11
67
  const CONTAINER_VALIDATION_KEYWORDS = new Set([
12
68
  "properties",
13
69
  "items",
@@ -458,8 +514,8 @@ function disableValidation(schema, subject, logger, err) {
458
514
  * convention arguments (a `confirm` flag on writes, say) that individual tool
459
515
  * schemas do not declare before deciding the call is really invalid.
460
516
  *
461
- * A schema the validator cannot compile (or that only fails on first use, e.g.
462
- * an unresolvable `$ref`) is warned about once and then passed through — a
517
+ * A schema the validator cannot compile (or evaluate, e.g. an unresolvable
518
+ * `$ref`) is warned about once and the failing call is passed through — a
463
519
  * broken schema should not break an otherwise working tool. Pass
464
520
  * `failClosed: true` to instead reject such calls with `invalid_args`, for
465
521
  * callers that would rather refuse a call than forward unvalidated arguments.
@@ -494,18 +550,24 @@ export function validateCatalogToolInput(schema, args, opts, subject) {
494
550
  validator = null;
495
551
  }
496
552
  }
497
- // A schema the validator could not compile (or that a prior call disabled):
553
+ // A schema the validator could not compile:
498
554
  // pass through by default, refuse when the caller opted into fail-closed.
499
555
  if (validator === null) {
500
556
  return opts.failClosed ? unevaluableSchema(opts.address) : null;
501
557
  }
502
558
  let result;
503
559
  try {
560
+ args = normalizeToolInput(args);
504
561
  result = validator.validate(args);
505
562
  }
506
563
  catch (err) {
507
- // e.g. an unresolvable $ref — surfaces on first validate, not compile.
508
- disableValidation(schema, subject, logger, err);
564
+ // Evaluation can fail on an instance (unsupported JS values or cycles),
565
+ // not just a lazy schema reference. Never disable a compiled validator
566
+ // because of one call's input; subsequent valid calls must still validate.
567
+ if (!evaluationWarnings.has(schema)) {
568
+ evaluationWarnings.add(schema);
569
+ logFailure(logger, "input schema unusable; arguments are not validated", failureRecord(subject, err));
570
+ }
509
571
  return opts.failClosed ? unevaluableSchema(opts.address) : null;
510
572
  }
511
573
  if (result && !result.valid) {
@@ -514,9 +576,24 @@ export function validateCatalogToolInput(schema, args, opts, subject) {
514
576
  // Told from the reviewed findings, never the validator's own sentences,
515
577
  // which quote the schema's types, enums, and patterns.
516
578
  const validation = validationDetails(schema, units);
517
- const shown = nestedUnits.length > 0 ? validationDetails(schema, nestedUnits) : validation;
579
+ const limit = schema.properties?.limit?.enum;
580
+ const supplied = args !== null && typeof args === "object" ? args["limit"] : undefined;
581
+ const discreteLimit = supplied !== undefined &&
582
+ Array.isArray(limit) &&
583
+ limit.length > 0 &&
584
+ limit.length <= 8 &&
585
+ limit.every((size) => Number.isSafeInteger(size) && Number(size) > 0) &&
586
+ !limit.includes(supplied);
587
+ const otherUnits = units.filter((unit) => unit.instanceLocation !== "#/limit");
588
+ const otherIssues = otherUnits.length > 0;
589
+ const shown = discreteLimit
590
+ ? validationDetails(schema, otherUnits)
591
+ : nestedUnits.length > 0
592
+ ? validationDetails(schema, nestedUnits)
593
+ : validation;
518
594
  const detail = boundedEchoText(shown.issues.map((issue) => `${issue.path}: expected ${issue.expected} (${issue.code})`).join("; "), 256);
519
- return new ConnectorCallError("invalid_args", `Invalid arguments for "${opts.address}": ${detail || "input does not match the tool's inputSchema"}`, { validation, repair: repairDetails(schema, args, units, validator) });
595
+ const ordinary = `Invalid arguments for "${opts.address}": ${detail || "input does not match the tool's inputSchema"}`;
596
+ return new ConnectorCallError("invalid_args", discreteLimit ? `The limit must be one of ${limit.join(", ")}.${otherIssues ? ` ${ordinary}` : ""}` : ordinary, { validation, repair: repairDetails(schema, args, units, validator) });
520
597
  }
521
598
  return null;
522
599
  }
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const CONNECTA_VERSION = "0.34.1";
1
+ export declare const CONNECTA_VERSION = "0.36.0";
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  // Generated from package.json by scripts/generate-version.mjs.
2
2
  // Workers-safe: no runtime filesystem read or deployment override.
3
- export const CONNECTA_VERSION = "0.34.1";
3
+ export const CONNECTA_VERSION = "0.36.0";