@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
package/dist/types.d.ts
CHANGED
|
@@ -93,8 +93,8 @@ export interface ToolDef {
|
|
|
93
93
|
outputSchema?: JsonSchema;
|
|
94
94
|
/**
|
|
95
95
|
* Standard MCP tool behavior hints plus provider-specific extensions.
|
|
96
|
-
* The registry classifies
|
|
97
|
-
*
|
|
96
|
+
* The registry classifies tools using deployment overrides and annotations.
|
|
97
|
+
* Only a stored read verdict may use call_tool; program writes
|
|
98
98
|
* require a writable endpoint. Approval belongs to the host.
|
|
99
99
|
*/
|
|
100
100
|
annotations?: ToolAnnotations;
|
|
@@ -238,67 +238,6 @@ export interface ConnectorContext {
|
|
|
238
238
|
timeoutMs?: number;
|
|
239
239
|
}
|
|
240
240
|
type ConnectorStatusState = "ok" | "auth_required" | "credential_required" | "error";
|
|
241
|
-
/**
|
|
242
|
-
* What a reviewed downstream tool does. `"read"` is observational. `"write"`
|
|
243
|
-
* changes state without destroying any that already exists, such as a create.
|
|
244
|
-
* `"destructive"` modifies or removes existing state, including an upsert that
|
|
245
|
-
* can overwrite. Both writes leave the read-only path; `"destructive"` also
|
|
246
|
-
* asserts `destructiveHint`, which shapes the approval copy a human reads.
|
|
247
|
-
*/
|
|
248
|
-
export type ToolVerdict = "read" | "write" | "destructive";
|
|
249
|
-
/** One reviewed tool, with the evidence that justifies its verdict. */
|
|
250
|
-
export interface ReviewedTool {
|
|
251
|
-
readonly verdict: ToolVerdict;
|
|
252
|
-
/** Why the verdict holds when the name or downstream annotations do not say. */
|
|
253
|
-
readonly reason?: string;
|
|
254
|
-
/**
|
|
255
|
-
* `sha256:<hex>` digest of the input and output schemas the review read.
|
|
256
|
-
* Omit until a review has actually read them; an invented digest reports
|
|
257
|
-
* drift that never happened. When the live schema no longer matches it, or
|
|
258
|
-
* it cannot be checked, the verdict lapses and the tool is served as a write.
|
|
259
|
-
*/
|
|
260
|
-
readonly schemaDigest?: string;
|
|
261
|
-
}
|
|
262
|
-
/**
|
|
263
|
-
* A reviewed classification of a downstream MCP catalog, keyed by exact tool
|
|
264
|
-
* name. Plain data, validated at construction, so the same record classifies
|
|
265
|
-
* live tools and feeds the drift check. A connector carries it as
|
|
266
|
-
* `Connector.classification`, and the registry applies it on every read.
|
|
267
|
-
*
|
|
268
|
-
* It fails closed. A name it does not list keeps only an explicit downstream
|
|
269
|
-
* read annotation; silence and contradiction classify as writes. A listed read
|
|
270
|
-
* fills downstream silence but never overrules an explicit write annotation.
|
|
271
|
-
* A listed write or destructive tool stays a write whatever the downstream
|
|
272
|
-
* claims. A listed tool whose `schemaDigest` no longer matches is a write.
|
|
273
|
-
*/
|
|
274
|
-
export interface ToolClassification {
|
|
275
|
-
/** Hide every name absent from tools, including tools claiming to be reads. */
|
|
276
|
-
readonly unlisted?: "hide";
|
|
277
|
-
readonly tools: Readonly<Record<string, ToolVerdict | ReviewedTool>>;
|
|
278
|
-
}
|
|
279
|
-
/**
|
|
280
|
-
* How far a downstream catalog has moved away from the manifest a release
|
|
281
|
-
* reviewed. Counts and nothing else: names, schemas, and prose stay out
|
|
282
|
-
* of every surface this rides on, so a drift report can never become a payload
|
|
283
|
-
* ([#343](https://github.com/zackbart/connecta/issues/343)).
|
|
284
|
-
*/
|
|
285
|
-
export interface CatalogDriftCounts {
|
|
286
|
-
/** Downstream tools dropped because their names contain C0, DEL, or C1. */
|
|
287
|
-
droppedTools?: number;
|
|
288
|
-
/** Live tools no release classified. Each one fails closed at call time. */
|
|
289
|
-
unclassifiedTools: number;
|
|
290
|
-
/** Classified names this catalog no longer serves — plan gating included. */
|
|
291
|
-
unservedTools: number;
|
|
292
|
-
/** Explicit downstream annotations that contradict a vetted verdict. */
|
|
293
|
-
annotationConflicts: number;
|
|
294
|
-
/** Tools whose reviewed schema digest no longer matches what arrived. */
|
|
295
|
-
schemaChanges: number;
|
|
296
|
-
}
|
|
297
|
-
/** One drift observation, taken while serving a catalog refresh. */
|
|
298
|
-
export interface CatalogDriftReport extends CatalogDriftCounts {
|
|
299
|
-
/** When the observation was taken; never when a probe was scheduled. */
|
|
300
|
-
observedAt: string;
|
|
301
|
-
}
|
|
302
241
|
/** The last agent-facing catalog read this runtime served for one connector. */
|
|
303
242
|
export interface CatalogAccessObservation {
|
|
304
243
|
/** Fresh means the read used a live or unexpired catalog; stale means SWR. */
|
|
@@ -334,7 +273,6 @@ export interface ConnectorStatus {
|
|
|
334
273
|
* observation is not persisted the way the catalog is, so absence means this
|
|
335
274
|
* isolate or process has seen nothing, not that nothing drifted.
|
|
336
275
|
*/
|
|
337
|
-
catalogDrift?: CatalogDriftReport;
|
|
338
276
|
/**
|
|
339
277
|
* The last agent-facing catalog read in this runtime. This payload-free
|
|
340
278
|
* observation is not persisted and operator reads do not replace it.
|
|
@@ -364,6 +302,8 @@ export type ConnectorSkillResourceContents = {
|
|
|
364
302
|
});
|
|
365
303
|
/** The whole plugin contract — the one open seam. */
|
|
366
304
|
export interface Connector {
|
|
305
|
+
/** Serve only read-classified tools on every endpoint. Defaults to false. */
|
|
306
|
+
readOnly?: boolean;
|
|
367
307
|
id: string;
|
|
368
308
|
/**
|
|
369
309
|
* Who owns this connector's downstream authentication. `shared` keeps one
|
|
@@ -398,7 +338,7 @@ export interface Connector {
|
|
|
398
338
|
* cross-operation sequencing rule).
|
|
399
339
|
*
|
|
400
340
|
* Served as `skill://connecta/connectors/<slug>/SKILL.md`, with generated
|
|
401
|
-
* frontmatter
|
|
341
|
+
* frontmatter, a read-only policy notice when configured, and the guide body. `connector:<id>` is a
|
|
402
342
|
* one-release lookup alias. The guide remains deployment-owned configuration;
|
|
403
343
|
* no runtime registration or shared mutable copy exists.
|
|
404
344
|
*/
|
|
@@ -425,35 +365,6 @@ export interface Connector {
|
|
|
425
365
|
* fetched lazily over the network and are not known at construction time.
|
|
426
366
|
*/
|
|
427
367
|
staticTools?: ToolDef[];
|
|
428
|
-
/**
|
|
429
|
-
* Optional reviewed classification of the tools `listTools` returns: data
|
|
430
|
-
* the registry applies, never something the connector applies itself.
|
|
431
|
-
* `remoteMcp({ classify })` and maintained providers set it to a
|
|
432
|
-
* deep-frozen record; a custom connector may set one too. It is validated
|
|
433
|
-
* when a registry first reads it (INV-11), and read once per connector
|
|
434
|
-
* object. A connector that sets it lists raw downstream tools; the
|
|
435
|
-
* registry caches and persists only that listing, and classifies it on
|
|
436
|
-
* every read with this record, so no cache layer carries a verdict.
|
|
437
|
-
* Connectors with `staticTools` cannot set it: annotate those directly.
|
|
438
|
-
*
|
|
439
|
-
* A wrapper that rebuilds a connector must forward this field to keep the
|
|
440
|
-
* review. `{ ...connector }`, `Object.assign`, and `Object.create` keep it;
|
|
441
|
-
* a forwarding class that omits it serves an unreviewed connector, whose
|
|
442
|
-
* downstream annotations are its own claims and fail closed when absent.
|
|
443
|
-
* Deployment-level classifier overrides, keyed by connector id
|
|
444
|
-
* and tool ([#706](https://github.com/zackbart/connecta/issues/706)), apply
|
|
445
|
-
* regardless of wrapping.
|
|
446
|
-
*/
|
|
447
|
-
readonly classification?: ToolClassification | undefined;
|
|
448
|
-
/**
|
|
449
|
-
* Optional: the drift this connector saw the last time it listed tools,
|
|
450
|
-
* or undefined when it has not listed any yet. A getter over an
|
|
451
|
-
* observation, never a probe: calling it makes no request, touches no
|
|
452
|
-
* credential, and returns counts only. Ignored for a connector with a
|
|
453
|
-
* `classification`, whose drift the registry observes itself, against
|
|
454
|
-
* that record, while serving a refresh the deployment already asked for.
|
|
455
|
-
*/
|
|
456
|
-
catalogDrift?(): CatalogDriftReport | undefined;
|
|
457
368
|
/**
|
|
458
369
|
* Optional: what this connector is, for `Connecta.describeConfig()` and the
|
|
459
370
|
* operator surfaces built on it — where it points, how it authenticates,
|
|
@@ -582,7 +493,7 @@ export interface ConnectorToolDescription {
|
|
|
582
493
|
annotations?: ToolAnnotations;
|
|
583
494
|
inputSchema?: JsonSchema;
|
|
584
495
|
outputSchema?: JsonSchema;
|
|
585
|
-
/** Present on registry descriptions after overrides and
|
|
496
|
+
/** Present on registry descriptions after overrides and annotations (INV-1). */
|
|
586
497
|
classification?: "read" | "write";
|
|
587
498
|
}
|
|
588
499
|
/** What `Connector.describe()` reports. Every field is optional but `source`. */
|
|
@@ -605,7 +516,7 @@ export interface ConnectorDescription {
|
|
|
605
516
|
tools?: ConnectorToolDescription[];
|
|
606
517
|
}
|
|
607
518
|
export interface ConnectorUsageGuide {
|
|
608
|
-
/** Markdown
|
|
519
|
+
/** Markdown served by `skills`, with a policy notice when the connector is read-only. */
|
|
609
520
|
content: string;
|
|
610
521
|
/**
|
|
611
522
|
* Discovery hint describing the conventions the guide covers. Whitespace is
|
|
@@ -728,7 +639,7 @@ export type AuthResult = {
|
|
|
728
639
|
/** Human owner represented by a non-interactive access credential. */
|
|
729
640
|
principal?: IdentityReference;
|
|
730
641
|
/**
|
|
731
|
-
* Declared agent name. Only
|
|
642
|
+
* Declared agent name. Only built-in agent credential adapters may
|
|
732
643
|
* set it; a result from any other provider that carries it is refused.
|
|
733
644
|
*/
|
|
734
645
|
agent?: string;
|
|
@@ -754,7 +665,7 @@ export interface AuthenticatedIdentity {
|
|
|
754
665
|
principal?: IdentityReference;
|
|
755
666
|
/**
|
|
756
667
|
* Name of the code-declared agent this caller is, from `agents`. Set only
|
|
757
|
-
* when
|
|
668
|
+
* when a built-in agent adapter admitted a credential bound to
|
|
758
669
|
* a currently declared agent; an agent never has a `principal`.
|
|
759
670
|
*/
|
|
760
671
|
agent?: string;
|
|
@@ -918,8 +829,9 @@ export interface InboundAuth {
|
|
|
918
829
|
* Best-effort friendly label for a stable activity actor id. Called only
|
|
919
830
|
* while serving an authorized activity read, never during tool admission or
|
|
920
831
|
* event writes. The result is display-only and cannot grant access.
|
|
832
|
+
* Stop request-owned work when signal aborts (reader left or label budget expired).
|
|
921
833
|
*/
|
|
922
|
-
activityActorLabel?(subjectId: string): string | undefined | Promise<string | undefined>;
|
|
834
|
+
activityActorLabel?(subjectId: string, signal?: AbortSignal): string | undefined | Promise<string | undefined>;
|
|
923
835
|
/**
|
|
924
836
|
* Optional browser sign-in configuration. When present, operator pages use
|
|
925
837
|
* the provider's interactive sign-in flow.
|
package/dist/upward.js
ADDED
package/dist/usage-guide.js
CHANGED
|
@@ -19,6 +19,8 @@ Discover and call together when schemas suffice. search_tools covers catalog
|
|
|
19
19
|
inspection. On a read-only endpoint, as execute_code's description says, search
|
|
20
20
|
omits writes (guides may name them) and each fails read_only_endpoint; tell the
|
|
21
21
|
user. Unannotated tools fail closed to writes.
|
|
22
|
+
For a requested write, make the call through the write route; the host may ask
|
|
23
|
+
the user to confirm it. Connecta classifies and routes writes; the host owns approval.
|
|
22
24
|
|
|
23
25
|
## The global and the envelopes
|
|
24
26
|
|
|
@@ -113,7 +115,7 @@ async () => {
|
|
|
113
115
|
}
|
|
114
116
|
\`\`\`
|
|
115
117
|
|
|
116
|
-
Oversized returns lead with nextAction. Never rerun writes for output. write_outcome_unknown forbids retry, even if caught.
|
|
118
|
+
Oversized returns lead with nextAction. Never rerun writes for output. write_outcome_unknown or writeOutcome forbids retry, even if caught.
|
|
117
119
|
Recovery args may be partial (argsRedacted) or absent (argsOmitted). Reconcile
|
|
118
120
|
before retrying with the original args or repeating a program that sent writes.
|
|
119
121
|
Non-retryable errors need repair.
|
package/dist/validate.d.ts
CHANGED
|
@@ -29,6 +29,8 @@ export interface CompileValidatorOptions {
|
|
|
29
29
|
*/
|
|
30
30
|
address: string;
|
|
31
31
|
}
|
|
32
|
+
/** Optional in-process properties have the same absence semantics as JSON input. Never mutate the caller. */
|
|
33
|
+
export declare function normalizeToolInput<A>(value: A): A;
|
|
32
34
|
/**
|
|
33
35
|
* Validate call arguments against a tool's JSON Schema.
|
|
34
36
|
*
|
|
@@ -39,8 +41,8 @@ export interface CompileValidatorOptions {
|
|
|
39
41
|
* convention arguments (a `confirm` flag on writes, say) that individual tool
|
|
40
42
|
* schemas do not declare before deciding the call is really invalid.
|
|
41
43
|
*
|
|
42
|
-
* A schema the validator cannot compile (or
|
|
43
|
-
*
|
|
44
|
+
* A schema the validator cannot compile (or evaluate, e.g. an unresolvable
|
|
45
|
+
* `$ref`) is warned about once and the failing call is passed through — a
|
|
44
46
|
* broken schema should not break an otherwise working tool. Pass
|
|
45
47
|
* `failClosed: true` to instead reject such calls with `invalid_args`, for
|
|
46
48
|
* callers that would rather refuse a call than forward unvalidated arguments.
|
package/dist/validate.js
CHANGED
|
@@ -3,11 +3,67 @@ import { boundedEchoText, ConnectorCallError } from "./errors.js";
|
|
|
3
3
|
import { MAX_ARGUMENT_VALIDATION_ISSUES } from "./errors.js";
|
|
4
4
|
import { failureRecord, logFailure } from "./operator-record.js";
|
|
5
5
|
// Lazy validator cache keyed by the schema object itself; null marks a schema
|
|
6
|
-
// the validator
|
|
7
|
-
// breaking a working tool). A WeakMap so schemas belonging to a discarded
|
|
6
|
+
// the validator could not compile (warned once, then passed through rather
|
|
7
|
+
// than breaking a working tool). A WeakMap so schemas belonging to a discarded
|
|
8
8
|
// connector are collectable, the same pattern compactSchema uses.
|
|
9
9
|
const validators = new WeakMap();
|
|
10
|
+
const evaluationWarnings = new WeakSet();
|
|
10
11
|
const REQUIRED_PROPERTY_RE = /^Instance does not have required property "([^"]+)"\.$/;
|
|
12
|
+
function plainContainer(value) {
|
|
13
|
+
if (value === null || typeof value !== "object")
|
|
14
|
+
return false;
|
|
15
|
+
if (Array.isArray(value))
|
|
16
|
+
return true;
|
|
17
|
+
const prototype = Object.getPrototypeOf(value);
|
|
18
|
+
return prototype === Object.prototype || prototype === null;
|
|
19
|
+
}
|
|
20
|
+
/** Optional in-process properties have the same absence semantics as JSON input. Never mutate the caller. */
|
|
21
|
+
export function normalizeToolInput(value) {
|
|
22
|
+
// Keep unchanged inputs and their pass-through subtrees by identity. JSON
|
|
23
|
+
// callers have nothing to omit, so they never need a copy.
|
|
24
|
+
const seen = new WeakSet();
|
|
25
|
+
const remaining = [value];
|
|
26
|
+
let needed = false;
|
|
27
|
+
while (remaining.length > 0) {
|
|
28
|
+
const item = remaining.pop();
|
|
29
|
+
if (!plainContainer(item) || seen.has(item))
|
|
30
|
+
continue;
|
|
31
|
+
seen.add(item);
|
|
32
|
+
for (const child of Object.values(item)) {
|
|
33
|
+
if (child === undefined && !Array.isArray(item))
|
|
34
|
+
needed = true;
|
|
35
|
+
else if (child !== null && typeof child === "object")
|
|
36
|
+
remaining.push(child);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
if (!needed)
|
|
40
|
+
return value;
|
|
41
|
+
const copies = new WeakMap();
|
|
42
|
+
const pending = [];
|
|
43
|
+
const copy = (item) => {
|
|
44
|
+
if (!plainContainer(item))
|
|
45
|
+
return item;
|
|
46
|
+
const existing = copies.get(item);
|
|
47
|
+
if (existing)
|
|
48
|
+
return existing;
|
|
49
|
+
const target = Array.isArray(item) ? [] : Object.create(Object.getPrototypeOf(item));
|
|
50
|
+
if (Array.isArray(item))
|
|
51
|
+
target.length = item.length;
|
|
52
|
+
copies.set(item, target);
|
|
53
|
+
pending.push([item, target]);
|
|
54
|
+
return target;
|
|
55
|
+
};
|
|
56
|
+
const root = copy(value);
|
|
57
|
+
for (let next = pending.pop(); next; next = pending.pop()) {
|
|
58
|
+
const [source, target] = next;
|
|
59
|
+
for (const [key, item] of Object.entries(source)) {
|
|
60
|
+
if (item === undefined && !Array.isArray(source))
|
|
61
|
+
continue;
|
|
62
|
+
Object.defineProperty(target, key, { value: copy(item), enumerable: true, configurable: true, writable: true });
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return root;
|
|
66
|
+
}
|
|
11
67
|
const CONTAINER_VALIDATION_KEYWORDS = new Set([
|
|
12
68
|
"properties",
|
|
13
69
|
"items",
|
|
@@ -458,8 +514,8 @@ function disableValidation(schema, subject, logger, err) {
|
|
|
458
514
|
* convention arguments (a `confirm` flag on writes, say) that individual tool
|
|
459
515
|
* schemas do not declare before deciding the call is really invalid.
|
|
460
516
|
*
|
|
461
|
-
* A schema the validator cannot compile (or
|
|
462
|
-
*
|
|
517
|
+
* A schema the validator cannot compile (or evaluate, e.g. an unresolvable
|
|
518
|
+
* `$ref`) is warned about once and the failing call is passed through — a
|
|
463
519
|
* broken schema should not break an otherwise working tool. Pass
|
|
464
520
|
* `failClosed: true` to instead reject such calls with `invalid_args`, for
|
|
465
521
|
* callers that would rather refuse a call than forward unvalidated arguments.
|
|
@@ -494,18 +550,24 @@ export function validateCatalogToolInput(schema, args, opts, subject) {
|
|
|
494
550
|
validator = null;
|
|
495
551
|
}
|
|
496
552
|
}
|
|
497
|
-
// A schema the validator could not compile
|
|
553
|
+
// A schema the validator could not compile:
|
|
498
554
|
// pass through by default, refuse when the caller opted into fail-closed.
|
|
499
555
|
if (validator === null) {
|
|
500
556
|
return opts.failClosed ? unevaluableSchema(opts.address) : null;
|
|
501
557
|
}
|
|
502
558
|
let result;
|
|
503
559
|
try {
|
|
560
|
+
args = normalizeToolInput(args);
|
|
504
561
|
result = validator.validate(args);
|
|
505
562
|
}
|
|
506
563
|
catch (err) {
|
|
507
|
-
//
|
|
508
|
-
|
|
564
|
+
// Evaluation can fail on an instance (unsupported JS values or cycles),
|
|
565
|
+
// not just a lazy schema reference. Never disable a compiled validator
|
|
566
|
+
// because of one call's input; subsequent valid calls must still validate.
|
|
567
|
+
if (!evaluationWarnings.has(schema)) {
|
|
568
|
+
evaluationWarnings.add(schema);
|
|
569
|
+
logFailure(logger, "input schema unusable; arguments are not validated", failureRecord(subject, err));
|
|
570
|
+
}
|
|
509
571
|
return opts.failClosed ? unevaluableSchema(opts.address) : null;
|
|
510
572
|
}
|
|
511
573
|
if (result && !result.valid) {
|
|
@@ -514,9 +576,24 @@ export function validateCatalogToolInput(schema, args, opts, subject) {
|
|
|
514
576
|
// Told from the reviewed findings, never the validator's own sentences,
|
|
515
577
|
// which quote the schema's types, enums, and patterns.
|
|
516
578
|
const validation = validationDetails(schema, units);
|
|
517
|
-
const
|
|
579
|
+
const limit = schema.properties?.limit?.enum;
|
|
580
|
+
const supplied = args !== null && typeof args === "object" ? args["limit"] : undefined;
|
|
581
|
+
const discreteLimit = supplied !== undefined &&
|
|
582
|
+
Array.isArray(limit) &&
|
|
583
|
+
limit.length > 0 &&
|
|
584
|
+
limit.length <= 8 &&
|
|
585
|
+
limit.every((size) => Number.isSafeInteger(size) && Number(size) > 0) &&
|
|
586
|
+
!limit.includes(supplied);
|
|
587
|
+
const otherUnits = units.filter((unit) => unit.instanceLocation !== "#/limit");
|
|
588
|
+
const otherIssues = otherUnits.length > 0;
|
|
589
|
+
const shown = discreteLimit
|
|
590
|
+
? validationDetails(schema, otherUnits)
|
|
591
|
+
: nestedUnits.length > 0
|
|
592
|
+
? validationDetails(schema, nestedUnits)
|
|
593
|
+
: validation;
|
|
518
594
|
const detail = boundedEchoText(shown.issues.map((issue) => `${issue.path}: expected ${issue.expected} (${issue.code})`).join("; "), 256);
|
|
519
|
-
|
|
595
|
+
const ordinary = `Invalid arguments for "${opts.address}": ${detail || "input does not match the tool's inputSchema"}`;
|
|
596
|
+
return new ConnectorCallError("invalid_args", discreteLimit ? `The limit must be one of ${limit.join(", ")}.${otherIssues ? ` ${ordinary}` : ""}` : ordinary, { validation, repair: repairDetails(schema, args, units, validator) });
|
|
520
597
|
}
|
|
521
598
|
return null;
|
|
522
599
|
}
|
package/dist/version.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CONNECTA_VERSION = "0.
|
|
1
|
+
export declare const CONNECTA_VERSION = "0.35.0";
|
package/dist/version.js
CHANGED