@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
@@ -1,133 +0,0 @@
1
- import type { JsonSchema } from "../../../types.js";
2
- export type RestMethod = "GET" | "HEAD" | "POST" | "PUT" | "PATCH" | "DELETE";
3
- /**
4
- * One request-side schema, compacted: `t` type, `e` enum, `f` format (only
5
- * `binary`), `n` nullable, `d` description, `a` anyOf/oneOf, `p` properties,
6
- * `r` required, `i` items, `m` additionalProperties, `x` truncated at the
7
- * generation depth (unvalidated below), `$` a shared subtree.
8
- */
9
- export interface SchemaNode {
10
- readonly t?: string | readonly string[];
11
- readonly e?: readonly unknown[];
12
- readonly f?: string;
13
- readonly n?: 1;
14
- readonly d?: string;
15
- readonly a?: readonly SchemaNode[];
16
- readonly p?: Readonly<Record<string, SchemaNode>>;
17
- readonly r?: readonly string[];
18
- readonly i?: SchemaNode;
19
- readonly m?: SchemaNode;
20
- readonly x?: 1;
21
- readonly $?: number;
22
- }
23
- /** `[method, path template, operationId, summary, tag index, server index?]` */
24
- type OperationRow = readonly [string, string, string, string, number, number?];
25
- /** What `scripts/generate-openapi.mjs` writes to `openapi.generated.ts`. */
26
- export interface OpenApiData {
27
- /** The pinned document's URL. */
28
- readonly source: string;
29
- /** The pin: a tag, commit, or content hash. */
30
- readonly revision: string;
31
- /** `sha256:` digest of the pinned document's bytes. */
32
- readonly digest: string;
33
- /** The document's `info.version`; Stripe sends it as `Stripe-Version`. */
34
- readonly version: string;
35
- /** `[0]` is the default origin; later entries are per-operation servers. */
36
- readonly servers: readonly string[];
37
- readonly tags: readonly string[];
38
- readonly ops: readonly OperationRow[];
39
- /** JSON: `{ d: SchemaNode[], o: (0 | [params, body])[] }`, aligned with `ops`. */
40
- readonly details: string;
41
- }
42
- export interface Operation {
43
- readonly method: RestMethod;
44
- /** The path template, e.g. `/v1/customers/{customer}`. */
45
- readonly path: string;
46
- readonly operationId: string;
47
- readonly summary: string;
48
- readonly tag: string;
49
- /** A non-default origin this operation is served from, if any. */
50
- readonly server: string | undefined;
51
- /** Position in `OpenApiData.ops`. */
52
- readonly row: number;
53
- }
54
- /** A concrete call matched to its operation. */
55
- export interface OperationMatch {
56
- readonly op: Operation;
57
- /** Path parameter values, exactly as the caller sent them. */
58
- readonly params: Readonly<Record<string, string>>;
59
- }
60
- /** One operation's request contract, expanded to JSON Schema for an agent. */
61
- export interface OperationContract {
62
- method: RestMethod;
63
- path: string;
64
- operationId: string;
65
- summary: string;
66
- server?: string;
67
- parameters: {
68
- name: string;
69
- in: "path" | "query";
70
- required: boolean;
71
- description?: string;
72
- schema: JsonSchema;
73
- }[];
74
- body?: {
75
- contentType: string;
76
- required?: true;
77
- schema: JsonSchema;
78
- };
79
- }
80
- /** The read side of one vendor's pinned index. */
81
- export declare class OperationIndex {
82
- #private;
83
- readonly version: string;
84
- readonly revision: string;
85
- readonly ops: readonly Operation[];
86
- /** The methods any operation uses, in a stable order. */
87
- readonly methods: readonly RestMethod[];
88
- /**
89
- * `vendor` is the tool-name prefix; `title` the display name in refusals.
90
- * `slashParams` names path parameters whose values may carry an encoded
91
- * "/" (`%2F`), such as an object key, and only as the path's last segment.
92
- */
93
- constructor(data: OpenApiData, names: {
94
- vendor: string;
95
- title: string;
96
- slashParams?: readonly string[];
97
- });
98
- /** The operation with this exact method and path template, if any. */
99
- operation(method: string, template: string): Operation | undefined;
100
- /**
101
- * Match a concrete call to its operation. Literal segments outrank
102
- * parameters, as OpenAPI requires (`/v1/customers/search` before
103
- * `/v1/customers/{customer}`); the most specific template that fits decides,
104
- * and a method it does not define is refused rather than retried against a
105
- * looser template.
106
- */
107
- resolve(method: string, path: string): OperationMatch;
108
- /** Up to five operations whose paths most resemble a missed one. */
109
- nearest(method: string, segments: readonly string[]): string[];
110
- /**
111
- * Rank operations for a free-text query: every query word must appear in
112
- * the path, summary, operationId, or tag (plural-insensitive, prefixes of
113
- * three letters count), and path matches weigh most. A query that starts
114
- * with "/" also matches the templates that fit it.
115
- */
116
- search(query: string, options: {
117
- method?: RestMethod;
118
- limit: number;
119
- }): Operation[];
120
- /** Whether the operation takes a body, and in which framing. */
121
- bodyType(op: Operation): string | undefined;
122
- /** The operation's request contract as JSON Schema, optionally one parameter only. */
123
- contract(op: Operation, only?: string): OperationContract;
124
- /**
125
- * Check query and body names, required members, enums, and object/array
126
- * shapes against the operation, to the depth the index carries. Scalars are
127
- * not type-policed beyond that: vendors coerce form strings, and a wrong
128
- * number is the vendor's to explain. `null` and `""` pass anywhere, since
129
- * they are how form APIs unset a field.
130
- */
131
- check(op: Operation, query: Readonly<Record<string, unknown>>, body: unknown): void;
132
- }
133
- export {};
@@ -1,141 +0,0 @@
1
- import type { ApiTool } from "../../../connectors/api-connector.js";
2
- import { type GuardedFetchOptions, type GuardedRequest, type GuardedTransport } from "../../../connectors/guarded-fetch.js";
3
- import { ConnectorCallError } from "../../../errors.js";
4
- import type { ConnectorContext } from "../../../types.js";
5
- import type { Operation, OperationIndex, RestMethod } from "./operation-index.js";
6
- import type { ValueSafety } from "./value-safety.js";
7
- /** One call matched to its operation, after the vendor's defaults and pins. */
8
- export interface RestCall {
9
- readonly method: RestMethod;
10
- /** The concrete path the caller named. */
11
- readonly path: string;
12
- readonly op: Operation;
13
- /** Path parameter values by template name. */
14
- readonly params: Readonly<Record<string, string>>;
15
- readonly query: Readonly<Record<string, unknown>>;
16
- readonly body: unknown;
17
- /** Request headers from the vendor's reviewed `headers` allowlist. */
18
- readonly headers?: Readonly<Record<string, string>>;
19
- }
20
- /** How the vendor frames one call on the wire. */
21
- export interface RestFraming {
22
- query?: GuardedRequest["query"];
23
- /** A JSON body; exclusive with `rawBody`. */
24
- body?: unknown;
25
- /** A pre-framed body, such as a form-encoded string, with its own `Content-Type` header. */
26
- rawBody?: BodyInit;
27
- headers?: Record<string, string | undefined>;
28
- }
29
- /**
30
- * The cursor for the next page: pass `next` back as `param`, a query
31
- * parameter unless `in` says the operation takes it in its body (Notion's
32
- * read-only POST queries do). `path` names a different GET that continues
33
- * the list, when the first page came from a call that created it (Notion's
34
- * view queries). `hasMore` without `next` means the operation has no cursor.
35
- */
36
- export interface RestPage {
37
- hasMore: boolean;
38
- next?: string;
39
- param?: string;
40
- in?: "query" | "body";
41
- path?: string;
42
- }
43
- export interface RestResult {
44
- status: number;
45
- data: unknown;
46
- page?: RestPage;
47
- }
48
- /** A reviewed POST that only reads: `[method, path template, reason]`. */
49
- export type RestReadPost = readonly [method: RestMethod, path: string, reason: string];
50
- export interface RestVendor {
51
- /** Lowercase tool-name prefix: `${vendor}_api_search` and so on. */
52
- readonly vendor: string;
53
- /** Display name in descriptions and refusals. */
54
- readonly title: string;
55
- readonly index: OperationIndex;
56
- /**
57
- * The transport for an operation's server (`undefined` is the default
58
- * origin), or a refusal that says where to go instead.
59
- */
60
- transport(server: string | undefined): GuardedTransport | string;
61
- /** Map a failed response to what the caller does next (H11); `call` lets a vendor withhold text for secret families. */
62
- failure(status: number, headers: Headers, body: unknown, call?: RestCall): ConnectorCallError;
63
- /** Reviewed POSTs that only read; `_api_read` admits exactly these. */
64
- readonly readPosts?: readonly RestReadPost[];
65
- /**
66
- * The vendor's reviewed value-safety table: `refuse` verdicts are refused
67
- * by the generic tools before any request, and every successful body is
68
- * redacted (decision 0005, "Value safety"). Failure mappers ask it which
69
- * operations withhold vendor error text.
70
- */
71
- readonly valueSafety: ValueSafety;
72
- /** Reviewed refusals that depend on arguments: return the reason to refuse, before any request. */
73
- refuse?(call: RestCall): string | undefined;
74
- /** Rewrite a caller's path before it is matched, such as filling configured default ids. */
75
- path?(path: string): string;
76
- /** Apply configured defaults and enforce pins; throw to refuse. */
77
- scope?(call: RestCall): RestCall;
78
- /**
79
- * Admit one prepared call before it is sent; throw to refuse. Runs in
80
- * `callRest`, so generic and named tools alike pass through it, and may
81
- * await, as a pin check that resolves which account owns a zone does.
82
- */
83
- admit?(call: RestCall, ctx: ConnectorContext): void | Promise<void>;
84
- /**
85
- * Map a successful body into the envelope's `data`, such as unwrapping a
86
- * vendor envelope; throw to fail a success-status body that reports an
87
- * error. `page` still reads the body as it arrived.
88
- */
89
- result?(body: unknown, call: RestCall, response: {
90
- status: number;
91
- headers: Headers;
92
- }): unknown;
93
- /** Request headers the generic tools accept, by name, with what each does; the vendor validates values. */
94
- readonly headers?: Readonly<Record<string, string>>;
95
- /** Whether the generic tools accept a string body, for operations framed as text. */
96
- readonly textBodies?: boolean;
97
- /** A concrete path in this vendor's API, for the path argument's description. */
98
- readonly pathExample?: string;
99
- /** Frame the request. Defaults to scalar query values and a JSON body. */
100
- encode?(call: RestCall): RestFraming;
101
- /** Read the next-page cursor from a successful body. */
102
- page?(data: unknown, call: RestCall): RestPage | undefined;
103
- /** A header write tools fill with a caller key or a generated one, and return. */
104
- readonly idempotencyHeader?: string;
105
- /** Where multipart or binary uploads go instead of `_api_write`. */
106
- readonly upload?: string;
107
- /** One clause on how `_api_write` frames bodies, for its schema. */
108
- readonly bodyHint?: string;
109
- }
110
- /**
111
- * A guarded transport whose requests, response bodies included, end after
112
- * `timeoutMs`: a stream the vendor never closes cannot hold a call open past
113
- * it. The request's own signal still cancels first.
114
- */
115
- export declare function restTransport(options: Omit<GuardedFetchOptions, "fetch"> & {
116
- timeoutMs: number;
117
- }): GuardedTransport;
118
- /** Match a call to its operation and apply the vendor's defaults and pins. */
119
- export declare function restCall(vendor: RestVendor, method: RestMethod, path: string, input?: {
120
- query?: Readonly<Record<string, unknown>>;
121
- body?: unknown;
122
- headers?: Readonly<Record<string, string>>;
123
- }): RestCall;
124
- /**
125
- * A request that is not safe to repeat (a write without an idempotency key)
126
- * must never be advertised as retryable after it may have reached the vendor
127
- * (INV-9). Definite answers pass through: refusals and 4xx verdicts, a failure
128
- * proven to precede any connection, and timeouts, which the invocation layer
129
- * already reports as `write_outcome_unknown`. Exported so a named write tool
130
- * with its own transport (an upload) applies the same rule.
131
- */
132
- export declare function unknownOutcome(vendor: RestVendor, error: unknown, responded: boolean): unknown;
133
- /**
134
- * Send one prepared call and read it into the envelope. No validation and no
135
- * refusal tables run here: the generic tools do both first, and named tools
136
- * build their calls from fixed operations. `visibleHeaders` carry values the
137
- * result returns to the caller, such as an idempotency key.
138
- */
139
- export declare function callRest(vendor: RestVendor, call: RestCall, ctx: ConnectorContext, visibleHeaders?: Record<string, string>): Promise<RestResult>;
140
- /** The four generic tools over one vendor's index. */
141
- export declare function restTools(vendor: RestVendor): ApiTool[];
@@ -1,201 +0,0 @@
1
- import type { Operation, OperationIndex } from "./operation-index.js";
2
- /** What a removed secret reads as. */
3
- export declare const REDACTED = "[redacted]";
4
- /** Credential vocabulary over normalized names, matched anywhere; mirrors `scripts/value-safety.mjs`. */
5
- export declare const CREDENTIAL_WORDS: string[];
6
- /** Credential vocabulary matched at the end of a normalized name; mirrors the script. */
7
- export declare const CREDENTIAL_SUFFIX: RegExp;
8
- /** Suffixes of metadata about a credential (ids, prefixes, last four, counts, expiry, scopes); mirrors the script. */
9
- export declare const METADATA_SUFFIXES: string[];
10
- /** Exact metadata names that contain a credential word; mirrors the script. */
11
- export declare const METADATA_NAMES: string[];
12
- export type ValueSafetyVerdict = {
13
- readonly verdict: "refuse";
14
- readonly reason: string;
15
- } | {
16
- readonly verdict: "redact";
17
- readonly reason: string;
18
- /**
19
- * Reviewed field paths into the data a tool returns: `a.b` (a list on
20
- * the way is traversed item by item), `[]` for list items, `{}` or `*`
21
- * for every value of a map, `@keys` for a map keyed by secrets (keys
22
- * become placeholders), `[?env]` for list items whose `type` names an
23
- * environment variable, `[?credential]` for list items labelled with a
24
- * credential name, `[?header]` for header, cookie, or query rules. A
25
- * `url:` prefix sanitizes a URL; an `origin:` prefix (or `#url` suffix)
26
- * keeps only its scheme and host. Every other value at a path becomes
27
- * `[redacted]`.
28
- */
29
- readonly paths: readonly string[];
30
- /** Reviewed metadata paths the key-name heuristic leaves (children are still checked). */
31
- readonly keep?: readonly string[];
32
- /** See the `safe` verdict. */
33
- readonly errors?: "vendor";
34
- } | {
35
- readonly verdict: "safe";
36
- readonly reason: string;
37
- /** Reviewed metadata paths the key-name heuristic leaves (children are still checked). */
38
- readonly keep?: readonly string[];
39
- /**
40
- * The error policy. By default a reviewed operation's failures carry the
41
- * vendor's codes and statuses but never its text, which may echo a
42
- * stored secret. `vendor` is a reviewed exception for operations whose
43
- * errors cannot: the vendor's text passes (and still meets the
44
- * sent-secrets matcher).
45
- */
46
- readonly errors?: "vendor";
47
- };
48
- /** One field name reviewed for a whole vendor whose objects repeat across operations (Stripe's). */
49
- interface FieldReview {
50
- readonly verdict: "redact" | "keep";
51
- readonly reason: string;
52
- }
53
- /**
54
- * A reviewed rule for one resource type, applied to every object whose
55
- * discriminator names it wherever a response embeds it: the top level, a list,
56
- * a search result, an expansion, an event's `data.object`. Operation verdicts
57
- * review what an operation returns by shape; resource rules are the backstop
58
- * for what expansions can put anywhere.
59
- */
60
- /**
61
- * When an object is provably unbound (a guest Checkout Session), stated as
62
- * data so `providers:spec` can hold it to the pinned schema: every binding
63
- * field the schema has must be listed, in `bindings` or, with a reason, in
64
- * `unbound`.
65
- */
66
- interface GuestCondition {
67
- /**
68
- * Fields that bind the object to an identity or its saved methods. Each
69
- * must be absent, null, empty, or one of the listed values that bind
70
- * nothing (`customer_creation: "if_required"`).
71
- */
72
- readonly bindings: Readonly<Record<string, readonly string[]>>;
73
- /** Identity-named fields that bind nothing (guest prefill or collected details), with the reason. */
74
- readonly unbound: Readonly<Record<string, string>>;
75
- /** Fields whose value must be one of these (a Checkout Session's `mode: "payment"`). */
76
- readonly requires?: Readonly<Record<string, readonly string[]>>;
77
- }
78
- interface ResourceRule {
79
- readonly reason: string;
80
- /** Reviewed paths relative to the object, in the operation path language. */
81
- readonly paths?: readonly string[];
82
- /**
83
- * Fields whose string is a payer-facing URL the resource exists to hand out
84
- * (a guest Checkout page), returned without URL sanitizing: its fragment is
85
- * opaque state the page needs. With `guest`, only while the object is
86
- * provably a guest's; otherwise its `withheld` paths go.
87
- */
88
- readonly verbatim?: readonly string[];
89
- readonly guest?: GuestCondition;
90
- readonly withheld?: readonly string[];
91
- }
92
- interface ResourceRules {
93
- /** The field that names an object's type (Stripe's `object`). */
94
- readonly key: string;
95
- /** Sibling fields holding a partial copy of a discriminated object (an event's `previous_attributes`). */
96
- readonly partials?: readonly string[];
97
- readonly rules: Readonly<Record<string, ResourceRule>>;
98
- }
99
- export interface ValueSafetyTable {
100
- /** Display name in refusals. */
101
- readonly title: string;
102
- /** Global signing names plus generic credential names only on these reviewed response paths. */
103
- readonly embeddedUrls?: {
104
- readonly operations?: Readonly<Record<string, readonly string[]>>;
105
- /** Discriminated resources, wherever lists, expansions, or events embed them. */
106
- readonly resources?: {
107
- readonly key: string;
108
- readonly partials?: readonly string[];
109
- readonly paths: Readonly<Record<string, readonly string[]>>;
110
- };
111
- };
112
- /** The reviewed verdict for every flagged operation, keyed `METHOD /path template`. */
113
- readonly operations: Readonly<Record<string, ValueSafetyVerdict>>;
114
- /**
115
- * Field names reviewed once for the vendor: `redact` wherever the name
116
- * appears, `keep` as metadata the heuristic leaves wherever it appears
117
- * (children are still checked). Keyed by the exact field name.
118
- */
119
- readonly fields?: Readonly<Record<string, FieldReview>>;
120
- /** Operations whose whole body is environment variables: every value field goes, `key` or not. */
121
- readonly envBodies?: RegExp;
122
- /** Keys whose string-list values are permission scopes (action names under a resource), never secrets. */
123
- readonly scopeMaps?: readonly string[];
124
- /** Rules for resource types wherever they appear, for vendors whose objects carry a type discriminator. */
125
- readonly resources?: ResourceRules;
126
- }
127
- export declare const refuse: (reason: string) => ValueSafetyVerdict;
128
- export declare const redact: (reason: string, paths: readonly string[], keep?: readonly string[]) => ValueSafetyVerdict;
129
- export declare const safe: (reason: string, keep?: readonly string[]) => ValueSafetyVerdict;
130
- /** A verdict whose failures keep the vendor's text: reviewed, for operations whose errors echo no stored secret. */
131
- export declare const vendorErrors: (verdict: ValueSafetyVerdict) => ValueSafetyVerdict;
132
- /** Paths under each prefix; a `url:` or `origin:` directive stays in front. */
133
- export declare function under(prefixes: readonly string[], paths: readonly string[]): string[];
134
- /**
135
- * Whether a key names a credential: a credential word anywhere in a name
136
- * that is not metadata (Vercel's former rule), or a credential suffix
137
- * (Cloudflare's).
138
- */
139
- export declare function credentialName(name: string): boolean;
140
- /** Where a vendor stores the files it signs. */
141
- export interface FileHosts {
142
- /** Hosts matched whole or as a parent domain: `file.notion.so` covers `img.file.notion.so`. */
143
- readonly domains: readonly string[];
144
- /** S3 buckets, virtual-hosted or as the first path segment on an S3 endpoint. Never all of S3. */
145
- readonly buckets: readonly string[];
146
- }
147
- /**
148
- * `text` with every pre-signed link withheld: at one of `hosts` (Notion's
149
- * file storage, say), its whole query and fragment; anywhere, a signing
150
- * parameter's value. Everything else comes back byte for byte.
151
- */
152
- export declare function withholdSignedLinks(text: string, hosts: FileHosts): string;
153
- /**
154
- * Reviewed REST text policy: only credential-bearing URL queries/fragments
155
- * change. Ordinary links, including external proxies, retain their bytes.
156
- * Literal AWS/Google signing names are withheld anywhere, as in #818.
157
- */
158
- export declare function withholdEmbeddedUrls(text: string): string;
159
- /** Every string inside a JSON value through `withholdSignedLinks`; unchanged values keep their identity. */
160
- export declare function withholdSignedLinksIn(value: unknown, hosts: FileHosts, depth?: number): unknown;
161
- /** Apply the reviewed text policy to a selected value or vendor error body. */
162
- export declare function withholdEmbeddedUrlsIn(value: unknown): unknown;
163
- /**
164
- * Whether a request value carries a link whose query or
165
- * fragment holds the exact `[redacted]` placeholder, plain or encoded: a
166
- * withheld read copied into a write, which would store the placeholder.
167
- * Only the link's own destination is read: a Markdown link ends at its
168
- * closing `)`, so `[f](…?a=1)[redacted]` is ordinary text after it.
169
- * The word alone (`unredacted`) or the placeholder away from a file link is
170
- * a person's text. When `hosts` is supplied, require its actual authority
171
- * to match that policy, preserving Notion's external-proxy boundary.
172
- */
173
- export declare function carriesWithheldLink(value: unknown, hosts?: FileHosts): boolean;
174
- /** Refuse a withheld destination copied into customer data, before any dispatch. */
175
- export declare function refuseWithheldLinks(value: unknown, title: string): void;
176
- /** Upload admission inspects actual bytes, including base64-decoded files and multipart blobs. */
177
- export declare function refuseWithheldUpload(body: BodyInit, title: string): Promise<void>;
178
- /** Only for documented JSON fields the vendor decodes as base64, never arbitrary strings. */
179
- export declare function refuseWithheldBase64(value: unknown, title: string, maxDecodedBytes?: number): Promise<void>;
180
- /** Whether every segment of a reviewed path is in the path language; the harness checks each table. */
181
- export declare function validPath(raw: string): boolean;
182
- /** What a vendor's tools ask of its reviewed table. */
183
- export interface ValueSafety {
184
- readonly table: ValueSafetyTable;
185
- /** The reviewed verdict for an operation, if it was flagged. */
186
- verdict(method: string, template: string): ValueSafetyVerdict | undefined;
187
- /** The refusal for a `refuse` verdict, before anything is sent. */
188
- refusal(method: string, template: string): string | undefined;
189
- /** One success body made value-safe: reviewed paths, environment bodies, resource rules, then the heuristic. */
190
- redact(data: unknown, method: string, template: string): unknown;
191
- /**
192
- * Whether a failure's vendor text is withheld: any reviewed operation
193
- * unless its verdict says `errors: "vendor"`, or an unreviewed one whose
194
- * request accepts a credential-named field (an error may echo what was
195
- * submitted). Codes and statuses still route.
196
- */
197
- withholdsErrors(op: Operation): boolean;
198
- }
199
- /** A vendor's value-safety mechanism over its reviewed table and pinned index. */
200
- export declare function valueSafety(table: ValueSafetyTable, index: () => OperationIndex): ValueSafety;
201
- export {};
@@ -1,43 +0,0 @@
1
- import type { ConnectorCallAdmissionPolicy } from "../../types.js";
2
- /**
3
- * Basecamp's one hosted MCP endpoint, streamable HTTP.
4
- *
5
- * Live but undocumented: as of 2026-10-05 37signals has announced no MCP
6
- * server, and basecamp.com/agents (where the endpoint's own 401 body points)
7
- * describes the CLI and SDKs without naming it. What the server does publish is
8
- * its OAuth discovery — protected-resource metadata naming
9
- * `https://app.basecamp.com` as the authorization server — and that is what
10
- * this provider is written against, beside a captured live `tools/list`.
11
- */
12
- export declare const BASECAMP_MCP_ENDPOINT = "https://mcp.basecamp.com/mcp";
13
- export interface BasecampOptions {
14
- /** Human-readable display name; defaults to "Basecamp". */
15
- title?: string;
16
- /**
17
- * Downstream auth ownership. Defaults to one shared deployment grant. With
18
- * `"personal"` each principal authorizes separately and may pick a
19
- * different Basecamp account at consent, which the guide says.
20
- */
21
- authScope?: "shared" | "personal";
22
- /** Which Basecamp account this is and what decisions it answers. */
23
- purpose: string;
24
- /** Optional external CIMD URL. Defaults to this deployment's public HTTPS document. */
25
- clientMetadataUrl?: string;
26
- /** Account-specific conventions appended to the maintained provider guide. */
27
- instructions?: string;
28
- /** Connector-specific inline result limit; omit to inherit the deployment. */
29
- maxResultBytes?: number;
30
- /**
31
- * Optional per-runtime policy. There is no default: Basecamp's API documents
32
- * several dynamically adjusted limits (GET versus POST, per second, hour,
33
- * and day) and quotes only "currently 50 requests per 10 second period per
34
- * IP address" for scale — metered at the IP that calls the API, which is
35
- * Basecamp's own MCP server rather than this runtime. A per-runtime counter
36
- * approximates none of that, so the operator picks (P12).
37
- */
38
- callAdmission?: ConnectorCallAdmissionPolicy;
39
- }
40
- /** A maintained Basecamp hosted-MCP connection. */
41
- export declare const basecamp: import("../../provider.js").ProviderFactory<BasecampOptions>;
42
- /** @deprecated Read `basecamp.definition.classify` instead. Kept for existing imports. */
43
- export declare const BASECAMP_VETTED_CATALOG: import("../../catalog-drift.js").VettedCatalog;