@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,47 @@
1
+ const stores = [];
2
+ /** Keep `store`'s entry for a value on every redacted copy of that value. */
3
+ export function followRedactedCopies(store) {
4
+ stores.push(store);
5
+ return store;
6
+ }
7
+ /** `to`, a redacted copy of `from`, takes every registered fact about `from`. */
8
+ export function redactedCopyOf(from, to) {
9
+ for (const store of stores) {
10
+ if (!store.has(from))
11
+ continue;
12
+ if (store instanceof WeakMap)
13
+ store.set(to, store.get(from));
14
+ else
15
+ store.add(to);
16
+ }
17
+ return to;
18
+ }
19
+ // Error classes whose instances' `name` redaction keeps whatever was sent, by identity: the
20
+ // built-in errors, DOMException, and connecta's and the pinned MCP SDK's own classes, each
21
+ // registered with literals beside its class. Any other name an error carries, including one a
22
+ // custom class gives itself, is checked like other text.
23
+ const errorNames = new Map();
24
+ /** Keep `names` as the `name` of `ctor`'s instances and its subclasses'. */
25
+ export function keepErrorName(ctor, ...names) {
26
+ errorNames.set(ctor.prototype, new Set(names));
27
+ }
28
+ /** Whether a registered class on `prototype`'s chain gives its instances `name`. */
29
+ export function keptErrorName(prototype, name) {
30
+ for (let at = prototype; at; at = Object.getPrototypeOf(at))
31
+ if (errorNames.get(at)?.has(name))
32
+ return true;
33
+ return false;
34
+ }
35
+ for (const [ctor, name] of [
36
+ [Error, "Error"],
37
+ [TypeError, "TypeError"],
38
+ [RangeError, "RangeError"],
39
+ [SyntaxError, "SyntaxError"],
40
+ [ReferenceError, "ReferenceError"],
41
+ [EvalError, "EvalError"],
42
+ [URIError, "URIError"],
43
+ [AggregateError, "AggregateError"],
44
+ ])
45
+ keepErrorName(ctor, name);
46
+ if (typeof DOMException === "function")
47
+ keepErrorName(DOMException, "DOMException", "AbortError", "TimeoutError");
@@ -0,0 +1,125 @@
1
+ // The placeholder redaction leaves where it removed a value. Sent-secret redaction (sent-secrets.ts)
2
+ // and REST value safety (providers/_shared/rest/value-safety.ts) write the same text.
3
+ /** What a removed value reads as. */
4
+ export const REDACTED = "[redacted]";
5
+ /**
6
+ * Whether redaction altered a value: it carries the placeholder. The provider kit redacts sent
7
+ * secrets from every value of a vendor body before result safety reads it, so a rule that decides
8
+ * on a value (a type discriminator, a record's label or type, a URL's scheme or parameter names,
9
+ * a Content-Type) can find the placeholder where the vendor wrote what the rule matches.
10
+ * Such a decision takes its most protective outcome (#703).
11
+ */
12
+ export function redactionAltered(value) {
13
+ return typeof value === "string" && value.includes(REDACTED);
14
+ }
15
+ // Numeric references may omit `;`; named HTML references have at most 31 characters. Require
16
+ // their `;` so a real query separator such as `&amp=value` remains a separator. Legacy `amp`
17
+ // may omit its semicolon only before the `#` of a nested numeric reference.
18
+ const CHARACTER_REFERENCE = /(?:#([0-9]+);?|#x([0-9a-f]+);?|([a-z][a-z0-9]{1,30});|(amp)(?=#))/iy;
19
+ // Named references whose decoded characters all belong to a credential's alphabet (`fjlig` is `fj`).
20
+ const CREDENTIAL_REFERENCE = /^(?:plus|sol|equals|percnt|lowbar|underbar|fjlig)$/;
21
+ /**
22
+ * The end of a character reference at `at`, or `at` itself. A reference is value data, including
23
+ * one spelling a delimiter. Decode only to find nested-reference boundaries and, when
24
+ * `credentialOnly`, to require credential data or an ampersand. No decoded text is returned.
25
+ * Known signing values read possible named references fail-closed without a browser entity table.
26
+ * Each successful read advances over disjoint source characters.
27
+ */
28
+ export function characterReferenceEnd(text, at, credentialOnly = false) {
29
+ if (text.charCodeAt(at) !== 0x26)
30
+ return at;
31
+ return referenceBodyEnd(text, at + 1, at, credentialOnly);
32
+ }
33
+ /** A numeric reference body whose leading characters redaction may have taken, including its `&`. */
34
+ export function bareReferenceEnd(text, at, credentialOnly = false) {
35
+ if (text.charCodeAt(at) !== 0x23 || !/[0-9x]/i.test(text[at + 1] ?? ""))
36
+ return at;
37
+ return referenceBodyEnd(text, at, at, credentialOnly);
38
+ }
39
+ function referenceBodyEnd(text, from, at, credentialOnly) {
40
+ let end = at;
41
+ let readable = false;
42
+ while (from < text.length) {
43
+ CHARACTER_REFERENCE.lastIndex = from;
44
+ const reference = CHARACTER_REFERENCE.exec(text);
45
+ if (!reference)
46
+ break;
47
+ end = CHARACTER_REFERENCE.lastIndex;
48
+ const name = (reference[3] ?? reference[4])?.toLowerCase();
49
+ const code = reference[1] !== undefined
50
+ ? Number(reference[1])
51
+ : reference[2] !== undefined
52
+ ? Number.parseInt(reference[2], 16)
53
+ : name === "amp"
54
+ ? 0x26
55
+ : -1;
56
+ const ampersand = code === 0x26;
57
+ readable = ampersand || credentialUnit(code) || (name !== undefined && CREDENTIAL_REFERENCE.test(name));
58
+ if (!readable && name === undefined && text.charCodeAt(end - 1) !== 0x3b)
59
+ readable = prefixSpellsCredential(reference[1] ?? reference[2], reference[1] === undefined ? 16 : 10);
60
+ if (!ampersand)
61
+ break;
62
+ from = end;
63
+ }
64
+ return credentialOnly && !readable ? at : end;
65
+ }
66
+ // Without its `;`, a numeric reference's digits may run into the value's next characters (`&#47`
67
+ // then `9` reads as `&#479`), so a short digit prefix spelling credential data counts.
68
+ function prefixSpellsCredential(digits, radix) {
69
+ let at = 0;
70
+ while (digits.charCodeAt(at) === 0x30)
71
+ at++;
72
+ const limit = radix === 16 ? 2 : 3;
73
+ for (let length = 1; length <= limit && at + length <= digits.length; length++)
74
+ if (credentialUnit(Number.parseInt(digits.slice(at, at + length), radix)))
75
+ return true;
76
+ return false;
77
+ }
78
+ /**
79
+ * A credential's data: the base64 and base64url alphabets (letters, digits, `+`, `/`, `=`, `-`,
80
+ * `_`) and `%` escapes. A remainder of `+/` alone is still the end of a base64 value.
81
+ */
82
+ function credentialUnit(code) {
83
+ return ((code >= 0x30 && code <= 0x39) ||
84
+ (code >= 0x41 && code <= 0x5a) ||
85
+ (code >= 0x61 && code <= 0x7a) ||
86
+ code === 0x2b ||
87
+ code === 0x2f ||
88
+ code === 0x3d ||
89
+ code === 0x2d ||
90
+ code === 0x5f ||
91
+ code === 0x25);
92
+ }
93
+ /**
94
+ * The text right after the placeholder at `at` that may be the rest of a credential whose public
95
+ * prefix redaction took (#703): up to the first unit `ends` accepts, reading later placeholders
96
+ * whole so none is split. Redaction can take `sk_live_`, `whsec_`, `Bearer `, or a signing
97
+ * parameter's name and `=`, leaving what follows; with that prefix known, any remainder rebuilds
98
+ * the credential, however short or encoded, so `readable` holds whenever it carries any base64 or
99
+ * base64url character, a `%` escape or a reference spelling credential data or an ampersand.
100
+ * Other references end the inferred remainder. Other punctuation alone (`.`, `,`, `;`, `!`) is no
101
+ * credential's data. References, including bare numeric bodies, are read before consulting `ends`.
102
+ * The run still ends where `ends` says a value does. One forward pass.
103
+ */
104
+ export function splitRemainder(text, at, ends) {
105
+ if (!redactionAltered(text.slice(at, at + REDACTED.length)))
106
+ return { end: at, readable: false };
107
+ let end = at + REDACTED.length;
108
+ let readable = false;
109
+ while (end < text.length) {
110
+ const reference = Math.max(characterReferenceEnd(text, end, true), bareReferenceEnd(text, end, true));
111
+ if (text.startsWith(REDACTED, end))
112
+ end += REDACTED.length;
113
+ else if (reference > end) {
114
+ readable = true;
115
+ end = reference;
116
+ }
117
+ else if (ends(text, end))
118
+ break;
119
+ else {
120
+ readable ||= credentialUnit(text.charCodeAt(end));
121
+ end++;
122
+ }
123
+ }
124
+ return { end, readable };
125
+ }
@@ -1,8 +1,8 @@
1
1
  import type { CatalogDriftActivityContext } from "./activity.js";
2
- import type { CredentialVault } from "./credential-contract.js";
3
- import type { Connector, ConnectorContext, ConnectorStatus, KVStorage, Logger, ToolDef } from "./types.js";
4
2
  import { type CallAdmissionPermit, type ConnectorCallAdmissionSnapshot } from "./call-admission.js";
5
3
  import { type ConnectorCaller } from "./connector-caller.js";
4
+ import type { CredentialVault } from "./credential-contract.js";
5
+ import type { Connector, ConnectorContext, ConnectorStatus, KVStorage, Logger, ToolDef } from "./types.js";
6
6
  /**
7
7
  * Split `"<connectorId>.<toolName>"` on the first dot. Connector ids contain
8
8
  * no dots, so a downstream tool name may. Exported because an address that
@@ -45,8 +45,10 @@ export declare function resolveMaxResultBytes(value: number | undefined, inherit
45
45
  export interface RegistryOptions {
46
46
  publicUrl?: string | undefined;
47
47
  oauthClientName?: string | undefined;
48
- classification?: Readonly<Record<string, Readonly<Record<string, "read" | "write">>>> | undefined;
48
+ classification?: Readonly<Record<string, Readonly<Record<string, "read" | "write" | "hidden">>>> | undefined;
49
49
  storage: KVStorage;
50
+ /** Internal deployment root, preserved when a personal registry partitions storage. */
51
+ rootStorage?: KVStorage;
50
52
  catalogStorage?: KVStorage;
51
53
  logger: Logger;
52
54
  credentialVault?: CredentialVault | undefined;
@@ -87,6 +89,13 @@ export interface ResultIdentity {
87
89
  endpoint: string;
88
90
  origin: string | null;
89
91
  }
92
+ export interface ProgramResultDependency {
93
+ /** Catalog metadata needs visibility, not permission to invoke a write. */
94
+ access?: "catalog";
95
+ connector: string;
96
+ tool?: string;
97
+ classification: "read" | "write";
98
+ }
90
99
  export interface RegistryView {
91
100
  credentialUiAvailable(): boolean;
92
101
  /** Deployment-wide result-size cap threaded to the meta-tools. */
@@ -111,8 +120,8 @@ export interface RegistryView {
111
120
  }): Promise<CallAdmissionPermit>;
112
121
  resultsStorage(): KVStorage;
113
122
  resultIdentity(): ResultIdentity;
114
- /** Recheck live auth/grants and pool admission before exposing stored data. */
115
- recheckResultAccess(address: string | undefined, classification: "read" | "write", signal?: AbortSignal, access?: "catalog"): Promise<boolean>;
123
+ /** One validation pass: admit once, then check every dependency under that scope. */
124
+ recheckResultAccess(dependencies: readonly ProgramResultDependency[], classification: "read" | "write", signal?: AbortSignal): Promise<boolean>;
116
125
  /** Reserve deployment-wide capacity before writing a paging envelope's chunks. */
117
126
  stashResult(id: string, chunks: readonly string[], ttlSeconds: number): Promise<boolean>;
118
127
  /** Local declared-vs-stored credential mismatch, with no downstream I/O. */
@@ -124,6 +133,8 @@ export interface RegistryView {
124
133
  /** Age of the complete cached catalog; null for static or unobserved catalogs. */
125
134
  catalogAgeMs(id: string): number | null;
126
135
  statusFor(id: string, baseUrl: string, requestScope?: object, callOptions?: ConnectorOperationOptions): Promise<ConnectorStatus>;
136
+ /** Rebuild a status with this partition's latest bounded observations, without probing. */
137
+ withCatalogObservations(id: string, baseUrl: string, status: ConnectorStatus): ConnectorStatus;
127
138
  invalidateStored(id: string): Promise<void>;
128
139
  /** Bind returned OAuth state to its initiating user for either owner scope. */
129
140
  bindOAuthHandoff(id: string, authorizationUrl: string, principalKey?: string): Promise<void>;
@@ -141,7 +152,7 @@ export interface RegistryScope {
141
152
  principalKey?: string;
142
153
  endpoint?: string;
143
154
  origin?: string | null;
144
- currentResultAccess?: (address: string | undefined, classification: "read" | "write", signal?: AbortSignal, access?: "catalog") => Promise<boolean>;
155
+ currentResultAccess?: RegistryView["recheckResultAccess"];
145
156
  /** The admitted caller, readable only by built-in connectors; see connector-caller.ts. */
146
157
  caller?: ConnectorCaller;
147
158
  }
@@ -159,13 +170,9 @@ export declare class Registry implements RegistryView {
159
170
  private readonly catalogObservedAt;
160
171
  /** Last payload-free agent catalog access in this runtime. */
161
172
  private readonly catalogAccess;
162
- /** Count-only intake findings, including catalogs loaded from storage. */
163
- private droppedToolNames;
164
- /**
165
- * Schema digest verification per reviewed facts array. Only the registry's
166
- * own deep-frozen arrays are keys, so an entry stays true while they live.
167
- */
168
- private readonly verifiedFacts;
173
+ /** Bounded tokens isolating count-only observations by catalog identity. */
174
+ private readonly catalogObservationPartitions;
175
+ private readonly overrideWarningCatalogs;
169
176
  private readonly observedOutputSchemas;
170
177
  /** Result-size guard cap threaded to the meta-tools. */
171
178
  readonly maxResultBytes: number;
@@ -220,12 +227,10 @@ export declare class Registry implements RegistryView {
220
227
  }): Promise<CallAdmissionPermit>;
221
228
  /** Connector totals across root and personal controllers; health removes ids. */
222
229
  callAdmissionSnapshot(): Record<string, ConnectorCallAdmissionSnapshot>;
223
- /**
224
- * The drift a connector last showed in this runtime: the registry's own
225
- * observation against a connector's `classification`, otherwise whatever
226
- * the connector's `catalogDrift()` seam reports, bounded either way.
227
- */
228
- private catalogDriftOf;
230
+ /** The admitted identity fields used by both catalog caching and reporting. */
231
+ private catalogPartition;
232
+ /** Bounded, in-memory tokens; no principal or catalog data is persisted. */
233
+ private catalogObservationPartition;
229
234
  /** Reject queued/future downstream admission; active permits release safely. */
230
235
  closeCallAdmission(): void;
231
236
  /**
@@ -252,7 +257,7 @@ export declare class Registry implements RegistryView {
252
257
  * connector's namespace. Backs connecta.result.
253
258
  */
254
259
  resultIdentity(): ResultIdentity;
255
- recheckResultAccess(_address: string | undefined, _classification: "read" | "write", _signal?: AbortSignal, _access?: "catalog"): Promise<boolean>;
260
+ recheckResultAccess(_dependencies: readonly ProgramResultDependency[], _classification: "read" | "write", _signal?: AbortSignal): Promise<boolean>;
256
261
  resultsStorage(): KVStorage;
257
262
  credentialUiAvailable(): boolean;
258
263
  bindOAuthHandoff(id: string, authorizationUrl: string, principalKey?: string): Promise<void>;
@@ -268,18 +273,13 @@ export declare class Registry implements RegistryView {
268
273
  private loadDownstreamTools;
269
274
  /** The served catalog excludes control-character names; raw caches stay complete. */
270
275
  private acceptToolNames;
271
- /** Observe intake once, never while serving an older cached listing. */
272
- private observeDroppedToolNames;
273
276
  /**
274
277
  * One connector's catalog as served: the cached downstream facts, classified
275
- * on every read by the connector's `classification`, into fresh objects.
276
- * Safety is derived here and nowhere else, so no cache layer can carry a
277
- * stale verdict — from an older review, an older release, or a stale
278
- * fallback — and nothing a caller or decorator does to a served tool reaches
279
- * the next read.
278
+ * on every read by annotations and deployment overrides, into fresh objects.
279
+ * No cache or caller mutation can carry a stale verdict into the next read.
280
280
  */
281
281
  private loadTools;
282
- private publishUnreviewedTool;
282
+ private publishTool;
283
283
  /** Construction-only view for the secret-free static config description. */
284
284
  describeStaticTools(id: string): ToolDef[] | undefined;
285
285
  private validateClassification;
@@ -287,6 +287,8 @@ export declare class Registry implements RegistryView {
287
287
  credentialDriftFor(id: string): Promise<string | undefined>;
288
288
  /** Age of a complete cache entry; reads never refresh it. */
289
289
  catalogAgeMs(id: string): number | null;
290
+ /** Pure lookup shared by status probes and operator catalog refreshes. */
291
+ withCatalogObservations(id: string, _baseUrl: string, status: ConnectorStatus, _scope?: RegistryScope): ConnectorStatus;
290
292
  /** Best-effort connector status for the operator UI. */
291
293
  statusFor(id: string, baseUrl: string, requestScope?: object, callOptions?: ConnectorOperationOptions, scope?: RegistryScope): Promise<ConnectorStatus>;
292
294
  /** Rotate the storage generation; in-flight old readers cannot republish it. */