@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.
- package/CHANGELOG.md +393 -0
- package/README.md +62 -105
- package/SECURITY.md +3 -2
- package/bin/connecta.mjs +41 -16
- package/bin/version.mjs +1 -1
- package/dist/access-tokens.d.ts +2 -1
- package/dist/access-tokens.js +66 -30
- package/dist/activity.d.ts +1 -1
- package/dist/activity.js +2 -0
- package/dist/agent-config.d.ts +23 -0
- package/dist/agent-config.js +59 -0
- package/dist/agent-description.js +16 -0
- package/dist/agent-identity.js +4 -4
- package/dist/agent-observation.js +39 -0
- package/dist/auth/clerk-sdk/client.d.ts +2 -0
- package/dist/auth/clerk-sdk/generated.js +554 -563
- package/dist/auth/clerk-transport.js +70 -3
- package/dist/auth/clerk.d.ts +13 -0
- package/dist/auth/clerk.js +653 -246
- package/dist/auth/cloudflare-access.js +46 -42
- package/dist/auth/downstream-client-metadata.js +2 -2
- package/dist/auth/downstream-oauth.js +2051 -1160
- package/dist/auth/downstream-revocation.js +88 -88
- package/dist/auth/native-call.js +20 -0
- package/dist/auth/native.js +184 -0
- package/dist/auth/oauth-start-reset.js +11 -5
- package/dist/auth/oauth-token-response.js +121 -102
- package/dist/auth/oauth-v2-migration.js +97 -78
- package/dist/auth/renewable-grant.js +10 -0
- package/dist/auth/static-oauth.js +663 -271
- package/dist/auth/vercel-agent.js +266 -0
- package/dist/auth-admission.js +204 -0
- package/dist/auth-elicitation.js +350 -241
- package/dist/authorization-handoff.js +164 -90
- package/dist/call-admission-context.js +3 -10
- package/dist/call-admission.js +2 -0
- package/dist/call-classification.js +9 -0
- package/dist/call-recovery.js +32 -13
- package/dist/canonical-json.js +8 -0
- package/dist/catalog-cache.js +369 -213
- package/dist/catalog-service.js +659 -530
- package/dist/catalog.js +5 -1
- package/dist/concurrency.js +0 -25
- package/dist/config-defaults.d.ts +1 -0
- package/dist/config-defaults.js +1 -0
- package/dist/config-schema.d.ts +3 -1
- package/dist/config-schema.js +13 -3
- package/dist/config.d.ts +40 -6
- package/dist/config.js +40 -26
- package/dist/connector-caller.d.ts +4 -0
- package/dist/connector-caller.js +17 -4
- package/dist/connectors/api-connector.d.ts +15 -7
- package/dist/connectors/api-connector.js +147 -57
- package/dist/connectors/guarded-fetch.d.ts +51 -17
- package/dist/connectors/guarded-fetch.js +215 -121
- package/dist/connectors/negotiation-cache.js +20 -10
- package/dist/connectors/option-shapes.js +1 -1
- package/dist/connectors/remote-mcp.d.ts +12 -30
- package/dist/connectors/remote-mcp.js +960 -564
- package/dist/d1.js +10 -243
- package/dist/derived-context.js +5 -0
- package/dist/describe-config.d.ts +5 -1
- package/dist/describe-config.js +3 -0
- package/dist/downstream-input.js +347 -260
- package/dist/errors.d.ts +87 -6
- package/dist/errors.js +114 -4
- package/dist/execute.js +87 -50
- package/dist/executor-admission.js +3 -0
- package/dist/executors/quickjs.js +163 -112
- package/dist/guarded-transport.js +50 -0
- package/dist/guest-runtime.js +1 -1
- package/dist/http/client.js +439 -0
- package/dist/http/errors.js +558 -0
- package/dist/http/fields.js +49 -0
- package/dist/http/hatch-paging.js +318 -0
- package/dist/http/hatch.js +1279 -0
- package/dist/http/json-schema.js +267 -0
- package/dist/http/node-transport.js +241 -0
- package/dist/http/oauth.js +162 -0
- package/dist/http/paging.js +228 -0
- package/dist/http/provider.js +221 -0
- package/dist/http/safety.js +82 -0
- package/dist/http/services.js +79 -0
- package/dist/http/tools.js +383 -0
- package/dist/http/vendor-index.js +138 -0
- package/dist/http/vendor.js +448 -0
- package/dist/http/write-request.js +66 -0
- package/dist/http-policy.d.ts +11 -0
- package/dist/http-policy.js +45 -0
- package/dist/inbound-credential.js +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +4 -0
- package/dist/invocation-auth.js +30 -19
- package/dist/invocation.js +221 -87
- package/dist/mcp-result.js +0 -4
- package/dist/membership.d.ts +4 -0
- package/dist/meta-output.js +1 -1
- package/dist/meta-tools.js +534 -408
- package/dist/native-recovery.js +52 -0
- package/dist/native-tools.js +382 -0
- package/dist/node.d.ts +4 -3
- package/dist/node.js +45 -8
- package/dist/oauth-handoff.js +177 -104
- package/dist/oauth-partition.js +6 -20
- package/dist/oauth-sealing.js +6 -7
- package/dist/operation-vocabulary.js +101 -0
- package/dist/operator-record.d.ts +2 -2
- package/dist/operator-record.js +17 -4
- package/dist/operator-ui/agents.d.ts +5 -4
- package/dist/operator-ui/agents.js +17 -7
- package/dist/operator-ui/config-summary.js +8 -4
- package/dist/operator-ui/connection-map.js +9 -6
- package/dist/operator-ui/contract.d.ts +7 -3
- package/dist/operator-ui/endpoints.js +5 -14
- package/dist/operator-ui/fix-prompts.d.ts +1 -1
- package/dist/operator-ui/fix-prompts.js +0 -8
- package/dist/operator-ui/generated.js +3 -3
- package/dist/operator-ui/health.js +52 -0
- package/dist/operator-ui/model.d.ts +2 -3
- package/dist/operator-ui/overview.js +11 -19
- package/dist/operator-ui/setup-commands.js +0 -4
- package/dist/operator-ui/view.d.ts +5 -29
- package/dist/operator-ui/view.js +3 -59
- package/dist/program-writes.js +47 -26
- package/dist/provider-call-facts.d.ts +115 -0
- package/dist/provider-call-facts.js +182 -0
- package/dist/provider-call.d.ts +112 -0
- package/dist/provider-call.js +271 -0
- package/dist/provider.d.ts +71 -32
- package/dist/provider.js +134 -40
- package/dist/providers/_shared/google/hatch.js +91 -0
- package/dist/providers/_shared/google/kit.js +537 -0
- package/dist/providers/_shared/google/result-size.js +15 -2
- package/dist/providers/_shared/google/service-account.d.ts +2 -1
- package/dist/providers/_shared/google/service-account.js +8 -4
- package/dist/providers/_shared/google/workspace.d.ts +8 -209
- package/dist/providers/_shared/google/workspace.js +7 -426
- package/dist/providers/_shared/rest/compact-index.js +86 -0
- package/dist/providers/_shared/rest/dispatch.js +3 -23
- package/dist/providers/_shared/rest/kit.js +546 -0
- package/dist/providers/_shared/rest/operation-index.js +230 -14
- package/dist/providers/_shared/rest/response-media.js +11 -0
- package/dist/providers/_shared/rest/tools.js +101 -78
- package/dist/providers/_shared/rest/value-safety.js +353 -195
- package/dist/providers/_shared/sensitive-fields.js +27 -0
- package/dist/providers/breeze/api.js +584 -0
- package/dist/providers/breeze/index.d.ts +3 -3
- package/dist/providers/breeze/index.js +67 -1420
- package/dist/providers/breeze/openapi.generated.js +60 -0
- package/dist/providers/breeze/skill.generated.js +2 -6
- package/dist/providers/breeze/tools.js +696 -0
- package/dist/providers/ccb/api.js +496 -0
- package/dist/providers/ccb/index.d.ts +17 -37
- package/dist/providers/ccb/index.js +77 -1702
- package/dist/providers/ccb/lib/constants.d.ts +34 -0
- package/dist/providers/ccb/lib/constants.js +74 -0
- package/dist/providers/ccb/lib/guide.js +9 -0
- package/dist/providers/ccb/lib/verdicts.js +387 -0
- package/dist/providers/ccb/openapi.generated.js +397 -0
- package/dist/providers/ccb/safety.js +295 -0
- package/dist/providers/ccb/skill.generated.js +2 -6
- package/dist/providers/ccb/tools.js +853 -0
- package/dist/providers/cloudflare/api.js +1066 -0
- package/dist/providers/cloudflare/index.d.ts +7 -22
- package/dist/providers/cloudflare/index.js +80 -194
- package/dist/providers/cloudflare/lib/config.d.ts +16 -0
- package/dist/providers/cloudflare/lib/config.js +2 -0
- package/dist/providers/cloudflare/lib/discovery.js +29 -0
- package/dist/providers/cloudflare/{graphql.js → lib/graphql.js} +1 -1
- package/dist/providers/cloudflare/lib/hatch.js +103 -0
- package/dist/providers/cloudflare/lib/path-bounds.js +28 -0
- package/dist/providers/cloudflare/lib/response-media.js +75 -0
- package/dist/providers/cloudflare/openapi.generated.js +3299 -3208
- package/dist/providers/cloudflare/{value-safety.js → safety.js} +538 -18
- package/dist/providers/cloudflare/skill.generated.js +2 -10
- package/dist/providers/cloudflare/tools.js +360 -0
- package/dist/providers/docs/api.js +51 -0
- package/dist/providers/docs/index.d.ts +1 -12
- package/dist/providers/docs/index.js +53 -1165
- package/dist/providers/docs/lib/constants.d.ts +18 -0
- package/dist/providers/docs/lib/constants.js +18 -0
- package/dist/providers/docs/lib/discovery.js +26 -0
- package/dist/providers/docs/lib/requests.js +48 -0
- package/dist/providers/docs/lib/schemas.js +168 -0
- package/dist/providers/docs/openapi.generated.js +16 -0
- package/dist/providers/docs/safety.js +54 -0
- package/dist/providers/docs/skill.generated.js +2 -6
- package/dist/providers/docs/tools.js +802 -0
- package/dist/providers/drive/api.js +177 -0
- package/dist/providers/drive/index.d.ts +1 -12
- package/dist/providers/drive/index.js +38 -1448
- package/dist/providers/drive/lib/constants.d.ts +6 -0
- package/dist/providers/drive/lib/constants.js +6 -0
- package/dist/providers/drive/lib/contracts.js +532 -0
- package/dist/providers/drive/lib/hatch.js +197 -0
- package/dist/providers/drive/openapi.generated.js +77 -0
- package/dist/providers/drive/safety.js +90 -0
- package/dist/providers/drive/skill.generated.js +2 -6
- package/dist/providers/drive/tools.js +1290 -0
- package/dist/providers/forms/api.js +71 -0
- package/dist/providers/forms/index.d.ts +1 -12
- package/dist/providers/forms/index.js +49 -1145
- package/dist/providers/forms/lib/constants.d.ts +14 -0
- package/dist/providers/forms/lib/constants.js +19 -0
- package/dist/providers/forms/lib/hatch.js +72 -0
- package/dist/providers/forms/openapi.generated.js +23 -0
- package/dist/providers/forms/safety.js +34 -0
- package/dist/providers/forms/skill.generated.js +2 -8
- package/dist/providers/forms/tools.js +1024 -0
- package/dist/providers/github/api.js +150 -0
- package/dist/providers/github/index.d.ts +4 -5
- package/dist/providers/github/index.js +30 -87
- package/dist/providers/github/{auth.d.ts → lib/auth.d.ts} +5 -3
- package/dist/providers/github/{auth.js → lib/auth.js} +40 -43
- package/dist/providers/github/lib/discovery.js +132 -0
- package/dist/providers/github/lib/operations.js +58 -0
- package/dist/providers/github/{scope.d.ts → lib/scope.d.ts} +2 -0
- package/dist/providers/github/{scope.js → lib/scope.js} +25 -1
- package/dist/providers/github/openapi.generated.js +1216 -0
- package/dist/providers/github/safety.js +216 -0
- package/dist/providers/github/skill.generated.js +2 -5
- package/dist/providers/github/tools.js +506 -0
- package/dist/providers/gmail/api.js +114 -0
- package/dist/providers/gmail/index.d.ts +1 -12
- package/dist/providers/gmail/index.js +73 -1621
- package/dist/providers/gmail/lib/constants.d.ts +13 -0
- package/dist/providers/gmail/lib/constants.js +16 -0
- package/dist/providers/gmail/lib/index.js +173 -0
- package/dist/providers/gmail/lib/schemas.js +176 -0
- package/dist/providers/gmail/lib/threading.js +120 -0
- package/dist/providers/gmail/openapi.generated.js +92 -0
- package/dist/providers/gmail/safety.js +21 -0
- package/dist/providers/gmail/skill.generated.js +2 -6
- package/dist/providers/gmail/tools.js +1435 -0
- package/dist/providers/overflow/api.js +1008 -0
- package/dist/providers/overflow/index.d.ts +3 -17
- package/dist/providers/overflow/index.js +60 -1488
- package/dist/providers/overflow/skill.generated.js +2 -5
- package/dist/providers/overflow/tools.js +873 -0
- package/dist/providers/planning-center/api.js +467 -0
- package/dist/providers/planning-center/index.d.ts +6 -35
- package/dist/providers/planning-center/index.js +69 -2445
- package/dist/providers/planning-center/lib/constants.d.ts +58 -0
- package/dist/providers/planning-center/lib/constants.js +83 -0
- package/dist/providers/planning-center/lib/discovery.js +40 -0
- package/dist/providers/planning-center/lib/guide.js +39 -0
- package/dist/providers/planning-center/lib/json-api.js +83 -0
- package/dist/providers/planning-center/lib/verdicts.js +1758 -0
- package/dist/providers/planning-center/openapi.generated.js +1764 -0
- package/dist/providers/planning-center/safety.js +188 -0
- package/dist/providers/planning-center/skill.generated.js +2 -27
- package/dist/providers/planning-center/tools.js +1010 -0
- package/dist/providers/sheets/api.js +133 -0
- package/dist/providers/sheets/index.d.ts +4 -16
- package/dist/providers/sheets/index.js +61 -1172
- package/dist/providers/sheets/lib/constants.d.ts +14 -0
- package/dist/providers/sheets/lib/constants.js +14 -0
- package/dist/providers/sheets/lib/hatch.js +163 -0
- package/dist/providers/sheets/lib/requests.js +105 -0
- package/dist/providers/sheets/lib/schemas.js +138 -0
- package/dist/providers/sheets/openapi.generated.js +30 -0
- package/dist/providers/sheets/safety.js +27 -0
- package/dist/providers/sheets/skill.generated.js +2 -7
- package/dist/providers/sheets/tools.js +734 -0
- package/dist/providers/slides/api.js +147 -0
- package/dist/providers/slides/index.d.ts +2 -10
- package/dist/providers/slides/index.js +48 -2555
- package/dist/providers/slides/lib/constants.d.ts +11 -0
- package/dist/providers/slides/lib/constants.js +11 -0
- package/dist/providers/slides/lib/requests.js +60 -0
- package/dist/providers/slides/lib/schemas.js +565 -0
- package/dist/providers/slides/openapi.generated.js +18 -0
- package/dist/providers/slides/skill.generated.js +2 -6
- package/dist/providers/slides/tools.js +1968 -0
- package/dist/providers/stripe/api.js +401 -0
- package/dist/providers/stripe/index.d.ts +7 -27
- package/dist/providers/stripe/index.js +75 -191
- package/dist/providers/stripe/lib/config.d.ts +4 -0
- package/dist/providers/stripe/lib/config.js +2 -0
- package/dist/providers/stripe/openapi.generated.js +4 -3
- package/dist/providers/stripe/{value-safety.js → safety.js} +5 -5
- package/dist/providers/stripe/skill.generated.js +2 -10
- package/dist/providers/stripe/tools.js +77 -0
- package/dist/providers/tithely/api.js +531 -0
- package/dist/providers/tithely/index.d.ts +19 -0
- package/dist/providers/tithely/index.js +86 -965
- package/dist/providers/tithely/skill.generated.js +2 -5
- package/dist/providers/tithely/tools.js +426 -0
- package/dist/providers/vercel/api.js +551 -0
- package/dist/providers/vercel/index.d.ts +11 -25
- package/dist/providers/vercel/index.js +67 -261
- package/dist/providers/vercel/lib/config.d.ts +2 -0
- package/dist/providers/vercel/lib/config.js +2 -0
- package/dist/providers/vercel/lib/index.js +117 -0
- package/dist/providers/vercel/lib/logs.js +100 -0
- package/dist/providers/vercel/lib/pin.js +270 -0
- package/dist/providers/vercel/openapi.generated.js +398 -376
- package/dist/providers/vercel/{value-safety.js → safety.js} +261 -42
- package/dist/providers/vercel/skill.generated.js +2 -7
- package/dist/providers/vercel/tools.js +642 -0
- package/dist/redaction-identity.js +47 -0
- package/dist/redaction-marker.js +125 -0
- package/dist/registry.d.ts +30 -28
- package/dist/registry.js +446 -413
- package/dist/routes/access-tokens.js +1 -1
- package/dist/routes/actor-labels.js +1 -1
- package/dist/routes/connect.js +1 -1
- package/dist/routes/dispatch.js +103 -0
- package/dist/routes/mcp.js +170 -79
- package/dist/routes/oauth.js +3 -1
- package/dist/routes/operator.js +2 -2
- package/dist/routes/shared.d.ts +5 -4
- package/dist/routes/shared.js +244 -177
- package/dist/routes/skills.js +10 -8
- package/dist/routes/ui-config.js +27 -3
- package/dist/routes/ui-data.js +29 -22
- package/dist/routes/ui.js +1 -1
- package/dist/runtime/call-admission.js +0 -26
- package/dist/runtime/call-entry.js +30 -0
- package/dist/runtime/call.js +556 -0
- package/dist/runtime/connector-scope.js +7 -0
- package/dist/runtime/credential-probe.js +34 -0
- package/dist/runtime/executor.js +40 -0
- package/dist/runtime/native-storage.js +63 -0
- package/dist/runtime/registry.js +27 -0
- package/dist/runtime/request-scope.js +72 -0
- package/dist/runtime/run.js +15 -7
- package/dist/runtime/shared-read.js +34 -5
- package/dist/runtime/storage.js +34 -21
- package/dist/sent-secrets.d.ts +194 -37
- package/dist/sent-secrets.js +1743 -340
- package/dist/server.js +5 -56
- package/dist/skills.js +330 -224
- package/dist/sqlite.js +15 -14
- package/dist/storage/d1-copy.js +255 -0
- package/dist/storage/d1-driver.js +15 -0
- package/dist/storage/keys.js +28 -0
- package/dist/storage/sql-driver.js +88 -0
- package/dist/storage/sql-native.js +544 -0
- package/dist/storage/sql-schema.d.ts +6 -0
- package/dist/storage/sql-schema.js +15 -0
- package/dist/storage/sql.d.ts +14 -20
- package/dist/storage/sql.js +29 -535
- package/dist/timeout.js +0 -26
- package/dist/tool-safety.js +20 -10
- package/dist/types.d.ts +11 -99
- package/dist/upward.js +3 -0
- package/dist/usage-guide.js +3 -1
- package/dist/validate.d.ts +4 -2
- package/dist/validate.js +86 -9
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/dist/worker.js +312 -292
- package/dist/workspace-subject.js +5 -1
- package/dist/write-outcome.js +454 -34
- package/documentation/README.md +27 -7
- package/documentation/architecture.md +2550 -186
- package/documentation/auth.md +821 -98
- package/documentation/code-mode.md +56 -21
- package/documentation/deploying.md +164 -20
- package/documentation/hosted-mcp-migration.md +460 -0
- package/documentation/integrating.md +144 -105
- package/documentation/meta-tools.md +411 -34
- package/documentation/operating.md +28 -4
- package/documentation/operator-tests.md +11 -2
- package/documentation/operator-ui.md +103 -33
- package/documentation/provider-auth-migration.md +38 -63
- package/documentation/provider-migration-0.29.md +10 -5
- package/documentation/provider-migration-0.35.md +975 -0
- package/documentation/providers.md +965 -0
- package/examples/worker/AGENTS.md +23 -9
- package/examples/worker/README.md +254 -135
- package/examples/worker/alchemy.run.ts +116 -0
- package/examples/worker/gitignore +10 -0
- package/examples/worker/src/connecta.config.ts +23 -21
- package/examples/worker/wrangler.jsonc +14 -5
- package/guides/connecting-agents.md +157 -0
- package/guides/how-it-works.md +156 -0
- package/guides/safety-and-trust.md +153 -0
- package/package.json +27 -42
- package/templates/node/.env.example +3 -0
- package/templates/node/README.md +22 -2
- package/templates/node/docker-compose.yml +1 -0
- package/templates/node/package.json +3 -2
- package/templates/node/src/connecta.config.ts +8 -0
- package/dist/catalog-drift.d.ts +0 -134
- package/dist/catalog-drift.js +0 -493
- package/dist/providers/_shared/request-token.js +0 -83
- package/dist/providers/_shared/rest/operation-index.d.ts +0 -133
- package/dist/providers/_shared/rest/tools.d.ts +0 -141
- package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
- package/dist/providers/basecamp/index.d.ts +0 -43
- package/dist/providers/basecamp/index.js +0 -997
- package/dist/providers/basecamp/skill.generated.js +0 -9
- package/dist/providers/cloudflare/rest.d.ts +0 -37
- package/dist/providers/cloudflare/rest.js +0 -1078
- package/dist/providers/github/hosted.js +0 -218
- package/dist/providers/github/rest.js +0 -321
- package/dist/providers/infisical/index.d.ts +0 -7
- package/dist/providers/infisical/index.js +0 -713
- package/dist/providers/infisical/skill.generated.js +0 -8
- package/dist/providers/linear/index.d.ts +0 -55
- package/dist/providers/linear/index.js +0 -352
- package/dist/providers/linear/skill.generated.js +0 -8
- package/dist/providers/mixpanel/index.d.ts +0 -57
- package/dist/providers/mixpanel/index.js +0 -468
- package/dist/providers/mixpanel/operations.js +0 -20
- package/dist/providers/mixpanel/rest.js +0 -603
- package/dist/providers/mixpanel/skill.generated.js +0 -10
- package/dist/providers/mixpanel/value-safety.js +0 -16
- package/dist/providers/notion/index.d.ts +0 -65
- package/dist/providers/notion/index.js +0 -368
- package/dist/providers/notion/openapi.generated.js +0 -75
- package/dist/providers/notion/rest.d.ts +0 -24
- package/dist/providers/notion/rest.js +0 -1226
- package/dist/providers/notion/skill.generated.js +0 -11
- package/dist/providers/notion/value-safety.js +0 -56
- package/dist/providers/revenuecat/index.d.ts +0 -49
- package/dist/providers/revenuecat/index.js +0 -557
- package/dist/providers/revenuecat/skill.generated.js +0 -11
- package/dist/providers/stripe/rest.d.ts +0 -14
- package/dist/providers/stripe/rest.js +0 -402
- package/dist/providers/vercel/rest.d.ts +0 -20
- package/dist/providers/vercel/rest.js +0 -1020
- package/dist/providers/wispr-flow/index.d.ts +0 -14
- package/dist/providers/wispr-flow/index.js +0 -117
- package/dist/providers/wispr-flow/skill.generated.js +0 -8
- /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;
|