@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
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,67 +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:<hex>` digest of the input and output schemas the review read.
256
- * Omit until a review has actually read them; an invented digest reports
257
- * drift that never happened. When the live schema no longer matches it, or
258
- * it cannot be checked, the verdict lapses and the tool is served as a write.
259
- */
260
- readonly schemaDigest?: string;
261
- }
262
- /**
263
- * A reviewed classification of a downstream MCP catalog, keyed by exact tool
264
- * name. Plain data, validated at construction, so the same record classifies
265
- * live tools and feeds the drift check. A connector carries it as
266
- * `Connector.classification`, and the registry applies it on every read.
267
- *
268
- * It fails closed. A name it does not list keeps only an explicit downstream
269
- * read annotation; silence and contradiction classify as writes. A listed read
270
- * fills downstream silence but never overrules an explicit write annotation.
271
- * A listed write or destructive tool stays a write whatever the downstream
272
- * claims. A listed tool whose `schemaDigest` no longer matches is a write.
273
- */
274
- export interface ToolClassification {
275
- /** Hide every name absent from tools, including tools claiming to be reads. */
276
- readonly unlisted?: "hide";
277
- readonly tools: Readonly<Record<string, ToolVerdict | ReviewedTool>>;
278
- }
279
- /**
280
- * How far a downstream catalog has moved away from the manifest a release
281
- * reviewed. Counts and nothing else: names, schemas, and prose stay out
282
- * of every surface this rides on, so a drift report can never become a payload
283
- * ([#343](https://github.com/zackbart/connecta/issues/343)).
284
- */
285
- export interface CatalogDriftCounts {
286
- /** Downstream tools dropped because their names contain C0, DEL, or C1. */
287
- droppedTools?: number;
288
- /** Live tools no release classified. Each one fails closed at call time. */
289
- unclassifiedTools: number;
290
- /** Classified names this catalog no longer serves — plan gating included. */
291
- unservedTools: number;
292
- /** Explicit downstream annotations that contradict a vetted verdict. */
293
- annotationConflicts: number;
294
- /** Tools whose reviewed schema digest no longer matches what arrived. */
295
- schemaChanges: number;
296
- }
297
- /** One drift observation, taken while serving a catalog refresh. */
298
- export interface CatalogDriftReport extends CatalogDriftCounts {
299
- /** When the observation was taken; never when a probe was scheduled. */
300
- observedAt: string;
301
- }
302
241
  /** The last agent-facing catalog read this runtime served for one connector. */
303
242
  export interface CatalogAccessObservation {
304
243
  /** Fresh means the read used a live or unexpired catalog; stale means SWR. */
@@ -334,7 +273,6 @@ export interface ConnectorStatus {
334
273
  * observation is not persisted the way the catalog is, so absence means this
335
274
  * isolate or process has seen nothing, not that nothing drifted.
336
275
  */
337
- catalogDrift?: CatalogDriftReport;
338
276
  /**
339
277
  * The last agent-facing catalog read in this runtime. This payload-free
340
278
  * observation is not persisted and operator reads do not replace it.
@@ -364,6 +302,8 @@ export type ConnectorSkillResourceContents = {
364
302
  });
365
303
  /** The whole plugin contract — the one open seam. */
366
304
  export interface Connector {
305
+ /** Serve only read-classified tools on every endpoint. Defaults to false. */
306
+ readOnly?: boolean;
367
307
  id: string;
368
308
  /**
369
309
  * Who owns this connector's downstream authentication. `shared` keeps one
@@ -398,7 +338,7 @@ export interface Connector {
398
338
  * cross-operation sequencing rule).
399
339
  *
400
340
  * Served as `skill://connecta/connectors/<slug>/SKILL.md`, with generated
401
- * frontmatter followed by the unchanged guide body. `connector:<id>` is a
341
+ * frontmatter, a read-only policy notice when configured, and the guide body. `connector:<id>` is a
402
342
  * one-release lookup alias. The guide remains deployment-owned configuration;
403
343
  * no runtime registration or shared mutable copy exists.
404
344
  */
@@ -425,35 +365,6 @@ export interface Connector {
425
365
  * fetched lazily over the network and are not known at construction time.
426
366
  */
427
367
  staticTools?: ToolDef[];
428
- /**
429
- * Optional reviewed classification of the tools `listTools` returns: data
430
- * the registry applies, never something the connector applies itself.
431
- * `remoteMcp({ classify })` and maintained providers set it to a
432
- * deep-frozen record; a custom connector may set one too. It is validated
433
- * when a registry first reads it (INV-11), and read once per connector
434
- * object. A connector that sets it lists raw downstream tools; the
435
- * registry caches and persists only that listing, and classifies it on
436
- * every read with this record, so no cache layer carries a verdict.
437
- * Connectors with `staticTools` cannot set it: annotate those directly.
438
- *
439
- * A wrapper that rebuilds a connector must forward this field to keep the
440
- * review. `{ ...connector }`, `Object.assign`, and `Object.create` keep it;
441
- * a forwarding class that omits it serves an unreviewed connector, whose
442
- * downstream annotations are its own claims and fail closed when absent.
443
- * Deployment-level classifier overrides, keyed by connector id
444
- * and tool ([#706](https://github.com/zackbart/connecta/issues/706)), apply
445
- * regardless of wrapping.
446
- */
447
- readonly classification?: ToolClassification | undefined;
448
- /**
449
- * Optional: the drift this connector saw the last time it listed tools,
450
- * or undefined when it has not listed any yet. A getter over an
451
- * observation, never a probe: calling it makes no request, touches no
452
- * credential, and returns counts only. Ignored for a connector with a
453
- * `classification`, whose drift the registry observes itself, against
454
- * that record, while serving a refresh the deployment already asked for.
455
- */
456
- catalogDrift?(): CatalogDriftReport | undefined;
457
368
  /**
458
369
  * Optional: what this connector is, for `Connecta.describeConfig()` and the
459
370
  * operator surfaces built on it — where it points, how it authenticates,
@@ -582,7 +493,7 @@ export interface ConnectorToolDescription {
582
493
  annotations?: ToolAnnotations;
583
494
  inputSchema?: JsonSchema;
584
495
  outputSchema?: JsonSchema;
585
- /** Present on registry descriptions after overrides and provider review (INV-1). */
496
+ /** Present on registry descriptions after overrides and annotations (INV-1). */
586
497
  classification?: "read" | "write";
587
498
  }
588
499
  /** What `Connector.describe()` reports. Every field is optional but `source`. */
@@ -605,7 +516,7 @@ export interface ConnectorDescription {
605
516
  tools?: ConnectorToolDescription[];
606
517
  }
607
518
  export interface ConnectorUsageGuide {
608
- /** Markdown returned verbatim by `skills({ name: "connector:<id>" })`. */
519
+ /** Markdown served by `skills`, with a policy notice when the connector is read-only. */
609
520
  content: string;
610
521
  /**
611
522
  * Discovery hint describing the conventions the guide covers. Whitespace is
@@ -728,7 +639,7 @@ export type AuthResult = {
728
639
  /** Human owner represented by a non-interactive access credential. */
729
640
  principal?: IdentityReference;
730
641
  /**
731
- * Declared agent name. Only the built-in `accessTokens()` adapter may
642
+ * Declared agent name. Only built-in agent credential adapters may
732
643
  * set it; a result from any other provider that carries it is refused.
733
644
  */
734
645
  agent?: string;
@@ -754,7 +665,7 @@ export interface AuthenticatedIdentity {
754
665
  principal?: IdentityReference;
755
666
  /**
756
667
  * Name of the code-declared agent this caller is, from `agents`. Set only
757
- * when the built-in access-token adapter admitted a `cta_` token bound to
668
+ * when a built-in agent adapter admitted a credential bound to
758
669
  * a currently declared agent; an agent never has a `principal`.
759
670
  */
760
671
  agent?: string;
@@ -918,8 +829,9 @@ export interface InboundAuth {
918
829
  * Best-effort friendly label for a stable activity actor id. Called only
919
830
  * while serving an authorized activity read, never during tool admission or
920
831
  * event writes. The result is display-only and cannot grant access.
832
+ * Stop request-owned work when signal aborts (reader left or label budget expired).
921
833
  */
922
- activityActorLabel?(subjectId: string): string | undefined | Promise<string | undefined>;
834
+ activityActorLabel?(subjectId: string, signal?: AbortSignal): string | undefined | Promise<string | undefined>;
923
835
  /**
924
836
  * Optional browser sign-in configuration. When present, operator pages use
925
837
  * the provider's interactive sign-in flow.
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.0";
1
+ export declare const CONNECTA_VERSION = "0.35.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.0";
3
+ export const CONNECTA_VERSION = "0.35.0";