@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,14 +1,10 @@
|
|
|
1
|
-
import { skill } from "./skill.generated.js";
|
|
2
|
-
import { apiConnector } from "../../connectors/api-connector.js";
|
|
3
|
-
import { reviewedCatalog } from "../../catalog-drift.js";
|
|
4
1
|
import { keys, optionsOf, variants } from "../../config-schema.js";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
export const STRIPE_MCP_ENDPOINT = "https://mcp.stripe.com/";
|
|
2
|
+
import { defineApiProvider } from "../../http/provider.js";
|
|
3
|
+
import { authenticate, connectedAccount, MAX_RESPONSE_BYTES, READ_CAP_MS, MODE_COPY, probe, safety, stripeErrors, StripeApi, stripeIndex, stripeBinding, STRIPE_PAGES, STRIPE_VERDICTS, } from "./api.js";
|
|
4
|
+
import { stripeTools } from "./tools.js";
|
|
5
|
+
import { skill } from "./skill.generated.js";
|
|
6
|
+
import { STRIPE_API_BASE_URL } from "./lib/config.js";
|
|
7
|
+
export { STRIPE_API_BASE_URL } from "./lib/config.js";
|
|
12
8
|
/**
|
|
13
9
|
* Stripe documents no MCP-specific limit, so these transcribe the account limit
|
|
14
10
|
* every request spends: 100 requests per second live, 25 in a sandbox. OAuth
|
|
@@ -39,201 +35,89 @@ const STRIPE_ADMISSION = {
|
|
|
39
35
|
],
|
|
40
36
|
},
|
|
41
37
|
};
|
|
42
|
-
|
|
43
|
-
* Reviewed in #705's provider audit against https://docs.stripe.com/mcp.
|
|
44
|
-
* Retains the release-reviewed inventory, including names absent from today's
|
|
45
|
-
* public reference. Live annotations were not reverified without credentials.
|
|
46
|
-
* No schema digest is asserted without a captured schema to review. This
|
|
47
|
-
* classifies the hosted OAuth catalog only; the REST connector annotates each
|
|
48
|
-
* tool it authors.
|
|
49
|
-
*/
|
|
50
|
-
const STRIPE_CLASSIFICATION = {
|
|
51
|
-
tools: {
|
|
52
|
-
"stripe_api_search": {
|
|
53
|
-
"verdict": "read",
|
|
54
|
-
"reason": "Searches API method contracts and object records; it does not invoke mutating methods.",
|
|
55
|
-
},
|
|
56
|
-
"stripe_api_details": {
|
|
57
|
-
"verdict": "read",
|
|
58
|
-
"reason": "Reads the parameter contract for an API method; it does not execute that method.",
|
|
59
|
-
},
|
|
60
|
-
"stripe_api_read": {
|
|
61
|
-
"verdict": "read",
|
|
62
|
-
"reason": "The vendor restricts this generic tool to HTTP GET; all mutating methods use stripe_api_write.",
|
|
63
|
-
},
|
|
64
|
-
"get_stripe_account_info": { "verdict": "read", "reason": "Reads metadata for the selected Stripe account." },
|
|
65
|
-
"get_balance_summary": {
|
|
66
|
-
"verdict": "read",
|
|
67
|
-
"reason": "Retrieves Stripe balance summary information without changing vendor state.",
|
|
68
|
-
},
|
|
69
|
-
"list_metrics": {
|
|
70
|
-
"verdict": "read",
|
|
71
|
-
"reason": "Retrieves Stripe metrics information without changing vendor state.",
|
|
72
|
-
},
|
|
73
|
-
"explain_metric": {
|
|
74
|
-
"verdict": "read",
|
|
75
|
-
"reason": "Explains an existing metric definition without creating an analytics run.",
|
|
76
|
-
},
|
|
77
|
-
"metric_drilldown": { "verdict": "read", "reason": "Reads the breakdown of an existing metric." },
|
|
78
|
-
"show_metric_app": { "verdict": "read", "reason": "Displays an existing metric app without changing its data." },
|
|
79
|
-
"list_available_accounts_or_orgs": {
|
|
80
|
-
"verdict": "read",
|
|
81
|
-
"reason": "Retrieves Stripe available accounts or orgs information without changing vendor state.",
|
|
82
|
-
},
|
|
83
|
-
"manage_stripe_accounts": {
|
|
84
|
-
"verdict": "read",
|
|
85
|
-
"reason": "Selects account context for the session; the reviewed contract does not mutate payment or account records.",
|
|
86
|
-
},
|
|
87
|
-
"search_stripe_documentation": {
|
|
88
|
-
"verdict": "read",
|
|
89
|
-
"reason": "Searches Stripe reference documentation without accessing payment mutations.",
|
|
90
|
-
},
|
|
91
|
-
"stripe_api_write": {
|
|
92
|
-
"verdict": "destructive",
|
|
93
|
-
"reason": "Can dispatch POST, PATCH, PUT, or DELETE across the Stripe API, including edits and cancellations.",
|
|
94
|
-
},
|
|
95
|
-
"create_refund": {
|
|
96
|
-
"verdict": "destructive",
|
|
97
|
-
"reason": "Moves money and changes an existing payment; a refund cannot be undone.",
|
|
98
|
-
},
|
|
99
|
-
"stripe_implementation_planner": {
|
|
100
|
-
"verdict": "write",
|
|
101
|
-
"reason": "Creates or continues provider-side planning state.",
|
|
102
|
-
},
|
|
103
|
-
"stripe_analytics": {
|
|
104
|
-
"verdict": "write",
|
|
105
|
-
"reason": "Mixes retrieval with durable query-run creation, so the whole tool is a write.",
|
|
106
|
-
},
|
|
107
|
-
"stripe_report": {
|
|
108
|
-
"verdict": "write",
|
|
109
|
-
"reason": "May create durable report-run state, so retrieval paths cannot make the whole tool read-only.",
|
|
110
|
-
},
|
|
111
|
-
"send_stripe_mcp_feedback": {
|
|
112
|
-
"verdict": "write",
|
|
113
|
-
"reason": "Submits feedback to Stripe, creating provider-side state.",
|
|
114
|
-
},
|
|
115
|
-
},
|
|
116
|
-
};
|
|
117
|
-
function instructionsSection(instructions) {
|
|
118
|
-
const text = instructions?.trim();
|
|
119
|
-
return text ? `\n## ${skill.instructionsHeading}\n\n${text}\n` : "";
|
|
120
|
-
}
|
|
121
|
-
function oauthUsageGuide(purpose, instructions) {
|
|
122
|
-
const { oauth, shared, oauth_limits } = skill.fragments;
|
|
123
|
-
return `# Stripe usage
|
|
124
|
-
|
|
125
|
-
Scope: live and sandbox accounts. Connector purpose: ${purpose}${oauth}${shared}${oauth_limits}
|
|
126
|
-
${instructionsSection(instructions)}`;
|
|
127
|
-
}
|
|
128
|
-
const MODE_COPY = {
|
|
129
|
-
production: {
|
|
130
|
-
title: "Stripe (production)",
|
|
131
|
-
blurb: "production — live money and real customers",
|
|
132
|
-
warning: "This is a PRODUCTION Stripe connection. Every write moves real money against real customers, and a refund cannot be undone. If a request could plausibly be a rehearsal, route it to a sandbox connector instead.",
|
|
133
|
-
rate: "100 requests per second",
|
|
134
|
-
},
|
|
135
|
-
sandbox: {
|
|
136
|
-
title: "Stripe (sandbox)",
|
|
137
|
-
blurb: "sandbox — test data, no real money",
|
|
138
|
-
warning: "This is a SANDBOX Stripe connection. Nothing here is real money and none of these objects exist in production, so never answer a question about live revenue, payouts, or a named customer from this connector.",
|
|
139
|
-
rate: "25 requests per second",
|
|
140
|
-
},
|
|
141
|
-
};
|
|
142
|
-
function keyUsageGuide(mode, purpose, connectedAccount, instructions) {
|
|
143
|
-
const copy = MODE_COPY[mode];
|
|
144
|
-
const { key, shared, key_limits, key_tail } = skill.fragments;
|
|
145
|
-
const connect = connectedAccount
|
|
146
|
-
? `\n\nConnected account: \`${connectedAccount}\`. Every call acts as this Connect account; the platform account's own objects are out of reach here.`
|
|
147
|
-
: "";
|
|
148
|
-
return `# Stripe usage
|
|
149
|
-
|
|
150
|
-
Mode: ${mode}. Connector purpose: ${purpose}
|
|
151
|
-
|
|
152
|
-
${copy.warning}${connect}${key}${shared}${key_limits}${copy.rate}${key_tail}
|
|
153
|
-
${instructionsSection(instructions)}`;
|
|
154
|
-
}
|
|
155
|
-
const COMMON = keys("title", "authScope", "purpose", "instructions", "maxResultBytes");
|
|
38
|
+
const COMMON = keys("title", "authScope", "purpose", "instructions", "maxResultBytes", "readOnly");
|
|
156
39
|
/** The closed options stripe() accepts, selected by `auth.type`; see `assertKnownOptions`. */
|
|
157
40
|
const STRIPE_OPTIONS = variants(["auth", "type"], {
|
|
158
41
|
// The never-typed keys stay out of the shape, so the walk refuses them by name.
|
|
159
|
-
oauth: optionsOf()(
|
|
160
|
-
...COMMON,
|
|
161
|
-
auth: optionsOf()(keys("type")),
|
|
162
|
-
}).shape,
|
|
42
|
+
oauth: { ...COMMON, auth: optionsOf()(keys("type")) },
|
|
163
43
|
apiKey: optionsOf()({
|
|
164
44
|
...COMMON,
|
|
165
45
|
...keys("mode", "connectedAccount"),
|
|
166
46
|
auth: optionsOf()(keys("type")),
|
|
167
47
|
}).shape,
|
|
168
|
-
});
|
|
169
|
-
function
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
if (!/^acct_[A-Za-z0-9]+$/.test(connectedAccount)) {
|
|
191
|
-
throw new Error(`stripe("${id}") connectedAccount must be a Stripe account id ("acct_...").`);
|
|
192
|
-
}
|
|
193
|
-
}
|
|
194
|
-
const copy = MODE_COPY[mode];
|
|
195
|
-
const live = mode === "production" ? "live" : "test";
|
|
196
|
-
const rest = stripeRest(mode, connectedAccount);
|
|
197
|
-
return apiConnector(id, {
|
|
198
|
-
...provider.connectorOptions,
|
|
199
|
-
title: options.title ?? copy.title,
|
|
200
|
-
description: `Stripe payments (${copy.blurb}) — ${options.purpose}`,
|
|
201
|
-
credential: {
|
|
202
|
-
label: `Stripe ${live}-mode secret or restricted key`,
|
|
203
|
-
description: `A ${live}-mode secret (sk_${live}_…) or restricted (rk_${live}_…) key; prefer a restricted key with only the permissions this connector needs. It is sent only to api.stripe.com and files.stripe.com, stored encrypted, and never displayed.`,
|
|
204
|
-
placeholder: `rk_${live}_…`,
|
|
205
|
-
},
|
|
206
|
-
testCredential: rest.testCredential,
|
|
207
|
-
callAdmission: STRIPE_ADMISSION[mode],
|
|
208
|
-
usageGuide: {
|
|
209
|
-
content: keyUsageGuide(mode, options.purpose, connectedAccount, options.instructions),
|
|
210
|
-
// Explicit rather than derived: a key connector must lead with its one mode.
|
|
211
|
-
summary: mode === "production"
|
|
212
|
-
? "PRODUCTION: real money. One live-mode key over REST; search operations, read details, then read or write."
|
|
213
|
-
: "Sandbox: test data only. One test-mode key over REST; search operations, read details, then read or write.",
|
|
214
|
-
},
|
|
215
|
-
tools: [...restTools(rest.vendor), ...rest.tools],
|
|
216
|
-
});
|
|
48
|
+
}, undefined, ["oauth"]);
|
|
49
|
+
function usageGuide(options) {
|
|
50
|
+
const copy = MODE_COPY[options.mode];
|
|
51
|
+
const account = connectedAccount(options);
|
|
52
|
+
return {
|
|
53
|
+
heading: "Stripe usage",
|
|
54
|
+
summary: options.mode === "production"
|
|
55
|
+
? "PRODUCTION: real money. One configured live-mode key over REST; resolve ids before acting."
|
|
56
|
+
: "Sandbox: test data only. One configured test-mode key over REST; resolve ids before acting.",
|
|
57
|
+
context: [
|
|
58
|
+
`Mode: ${options.mode}. Connector purpose: ${options.purpose}`,
|
|
59
|
+
copy.warning,
|
|
60
|
+
"This connection's key is already configured and reaches exactly one Stripe account in this mode; there is no account selection or sign-in step.",
|
|
61
|
+
...(account
|
|
62
|
+
? [
|
|
63
|
+
`Connected account: ${account}. Every call acts as this Connect account; the platform account's own objects are out of reach here.`,
|
|
64
|
+
]
|
|
65
|
+
: []),
|
|
66
|
+
...(options.readOnly === true ? ["This connection is read-only: every write is refused."] : []),
|
|
67
|
+
],
|
|
68
|
+
required: true,
|
|
69
|
+
};
|
|
217
70
|
}
|
|
218
|
-
|
|
219
|
-
* A maintained Stripe connection. `auth` selects the implementation: OAuth
|
|
220
|
-
* reaches Stripe's hosted MCP server; an API key reaches Connecta's REST
|
|
221
|
-
* connector to `api.stripe.com`.
|
|
222
|
-
*/
|
|
223
|
-
export const stripe = defineProvider({
|
|
71
|
+
export const stripe = defineApiProvider({
|
|
224
72
|
name: "stripe",
|
|
225
73
|
title: "Stripe",
|
|
226
|
-
kind: "dual",
|
|
227
74
|
readme: "Stripe",
|
|
228
75
|
bundle: {
|
|
229
|
-
|
|
230
|
-
"
|
|
231
|
-
"note": "./providers/stripe remeasures at 232,089 B gzip (#801), from 170,771 B on main: auth now selects the implementation, so the entry carries the hosted MCP client and Connecta's REST connector (api(), the schema validator, guarded transport, the shared REST module) plus the pinned Stripe operation index (638 operations; request details to depth 2, without descriptions or enums over 50 values; 37,918 B gzip as source). Details were shrunk before the cap moved: the first full index measured 81 KB gzip. The cap uses the existing baseline + 60,000 B policy.",
|
|
76
|
+
baselineGzip: 379663,
|
|
77
|
+
note: "./providers/stripe measures 379,663 B gzip standalone in F3 (#703), Node 22 CI static at 9420933711af5e42bf9d134d1b73bed114a48fa0 (run 39997464724, Run pnpm run check:build). This entry includes the shared Effect provider kit, paid once per deployment; standalone provider sizes are not additive. Provider entries are reported, not capped (#899).",
|
|
232
78
|
},
|
|
233
79
|
skill,
|
|
234
80
|
options: STRIPE_OPTIONS,
|
|
235
|
-
|
|
236
|
-
|
|
81
|
+
vendor: StripeApi,
|
|
82
|
+
baseUrl: (options) => {
|
|
83
|
+
connectedAccount(options);
|
|
84
|
+
return STRIPE_API_BASE_URL;
|
|
85
|
+
},
|
|
86
|
+
displayTitle: (options) => MODE_COPY[options.mode].title,
|
|
87
|
+
description: (options) => `Stripe payments (${MODE_COPY[options.mode].blurb}) — ${options.purpose}`,
|
|
88
|
+
maxResponseBytes: MAX_RESPONSE_BYTES,
|
|
89
|
+
idempotencyKey: true,
|
|
90
|
+
timeoutMs: READ_CAP_MS,
|
|
91
|
+
headers: { "Stripe-Version": stripeIndex.version },
|
|
92
|
+
defaultCallAdmission: (options) => STRIPE_ADMISSION[options.mode],
|
|
93
|
+
credential: (options) => {
|
|
94
|
+
const live = options.mode === "production" ? "live" : "test";
|
|
95
|
+
return {
|
|
96
|
+
label: `Stripe ${live}-mode secret or restricted key`,
|
|
97
|
+
description: `A ${live}-mode secret (sk_${live}_…) or restricted (rk_${live}_…) key; prefer a restricted key with only the permissions this connector needs. It is sent only to api.stripe.com and files.stripe.com, stored encrypted, and never displayed.`,
|
|
98
|
+
placeholder: `rk_${live}_…`,
|
|
99
|
+
};
|
|
100
|
+
},
|
|
101
|
+
authenticate,
|
|
102
|
+
safety,
|
|
103
|
+
errors: stripeErrors,
|
|
104
|
+
probe,
|
|
105
|
+
guide: usageGuide,
|
|
106
|
+
hatch: {
|
|
107
|
+
name: "stripe",
|
|
108
|
+
title: "Stripe",
|
|
109
|
+
index: stripeIndex,
|
|
110
|
+
verdicts: STRIPE_VERDICTS,
|
|
111
|
+
named: { "GET /v1/account": "get_stripe_account_info", "GET /v1/balance": "get_balance_summary" },
|
|
112
|
+
pathExample: "/v1/customers/cus_123",
|
|
113
|
+
pages: STRIPE_PAGES,
|
|
114
|
+
pageCursor: "argument",
|
|
115
|
+
binding: stripeBinding,
|
|
116
|
+
idempotency: { header: "Idempotency-Key", methods: ["POST"] },
|
|
117
|
+
notes: () => ({
|
|
118
|
+
read: "Pass page.nextCursor as cursor; starting_after or ending_before record-id anchors are allowed only on the first request, without cursor. v1 parameters use bracketed form encoding; v2 bodies are JSON. Quote PDFs use the confined files origin.",
|
|
119
|
+
write: "POST sends an Idempotency-Key; DELETE sends none. v1 bodies are form-encoded, including nested fields; v2 bodies are JSON. Upload files in the Stripe Dashboard.",
|
|
120
|
+
}),
|
|
121
|
+
},
|
|
122
|
+
tools: stripeTools,
|
|
237
123
|
});
|
|
238
|
-
/** @deprecated Read `stripe.definition.classify` instead. Kept for existing imports. */
|
|
239
|
-
export const STRIPE_VETTED_CATALOG = reviewedCatalog(stripe.definition.classify, 'defineProvider("stripe")');
|