@zackbart/connecta 0.34.1 → 0.36.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 +418 -0
- package/README.md +65 -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 +2044 -1161
- 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 +751 -281
- 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 +29 -7
- package/dist/connectors/api-connector.js +145 -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/remote-mcp.d.ts +10 -30
- package/dist/connectors/remote-mcp.js +955 -563
- package/dist/d1.js +10 -243
- package/dist/derived-context.js +5 -0
- package/dist/describe-config.d.ts +3 -1
- package/dist/describe-config.js +2 -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 +227 -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 +379 -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 +218 -85
- 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 +531 -406
- 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/contract.d.ts +8 -3
- package/dist/operator-ui/generated.js +4 -4
- package/dist/operator-ui/model.d.ts +2 -3
- 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 +65 -31
- package/dist/provider.js +116 -39
- package/dist/providers/_shared/google/hatch.js +91 -0
- package/dist/providers/_shared/google/kit.js +427 -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 +6 -210
- package/dist/providers/_shared/google/workspace.js +6 -425
- package/dist/providers/_shared/rest/compact-index.js +86 -0
- package/dist/providers/_shared/rest/kit.js +146 -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/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 +1 -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 +15 -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 +5 -22
- package/dist/providers/cloudflare/index.js +79 -197
- 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 +4 -3
- package/dist/providers/cloudflare/{value-safety.js → safety.js} +487 -0
- 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 +801 -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 +1023 -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 +1 -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 +4 -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/quickbooks/api.js +299 -0
- package/dist/providers/quickbooks/index.d.ts +13 -0
- package/dist/providers/quickbooks/index.js +93 -0
- package/dist/providers/quickbooks/lib/query.js +118 -0
- package/dist/providers/quickbooks/lib/writes.js +168 -0
- package/dist/providers/quickbooks/safety.js +222 -0
- package/dist/providers/quickbooks/skill.generated.js +5 -0
- package/dist/providers/quickbooks/tools.js +117 -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 +733 -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 +5 -27
- package/dist/providers/stripe/index.js +74 -210
- 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 -11
- package/dist/providers/stripe/tools.js +77 -0
- package/dist/providers/tithely/api.js +531 -0
- package/dist/providers/tithely/index.d.ts +17 -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 +9 -25
- package/dist/providers/vercel/index.js +65 -260
- 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 +10 -5
- package/dist/providers/vercel/{value-safety.js → safety.js} +247 -38
- 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 +21 -15
- package/dist/registry.js +409 -376
- 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 +6 -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 +21 -20
- 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 +552 -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 +322 -223
- 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 +9 -109
- package/dist/ui.d.ts +1 -1
- package/dist/ui.js +0 -1
- 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 +28 -7
- package/documentation/architecture.md +2409 -255
- package/documentation/auth.md +867 -114
- package/documentation/code-mode.md +49 -16
- package/documentation/deploying.md +164 -20
- package/documentation/hosted-mcp-migration.md +460 -0
- package/documentation/integrating.md +129 -144
- package/documentation/meta-tools.md +409 -32
- package/documentation/operating.md +27 -3
- package/documentation/operator-tests.md +3 -0
- package/documentation/operator-ui.md +84 -48
- package/documentation/provider-auth-migration.md +16 -63
- package/documentation/provider-migration-0.29.md +10 -5
- package/documentation/provider-migration-0.35.md +975 -0
- package/documentation/providers.md +1347 -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 +30 -50
- 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 -138
- package/dist/catalog-drift.js +0 -578
- package/dist/operator-ui/agents.d.ts +0 -74
- package/dist/operator-ui/agents.js +0 -104
- package/dist/operator-ui/config-summary.js +0 -565
- package/dist/operator-ui/connection-map.js +0 -376
- package/dist/operator-ui/endpoints.js +0 -221
- package/dist/operator-ui/fix-prompts.d.ts +0 -18
- package/dist/operator-ui/fix-prompts.js +0 -87
- package/dist/operator-ui/health.js +0 -52
- package/dist/operator-ui/member-page.js +0 -97
- package/dist/operator-ui/overview.js +0 -123
- package/dist/operator-ui/setup-commands.js +0 -51
- package/dist/operator-ui/view.d.ts +0 -401
- package/dist/operator-ui/view.js +0 -705
- package/dist/providers/_shared/request-token.js +0 -83
- package/dist/providers/_shared/rest/dispatch.js +0 -41
- 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/tools.js +0 -569
- package/dist/providers/_shared/rest/value-safety.d.ts +0 -201
- package/dist/providers/basecamp/index.d.ts +0 -45
- 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 -1097
- 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/intercom/index.d.ts +0 -24
- package/dist/providers/intercom/index.js +0 -121
- package/dist/providers/intercom/skill.generated.js +0 -8
- package/dist/providers/linear/index.d.ts +0 -55
- package/dist/providers/linear/index.js +0 -537
- package/dist/providers/linear/skill.generated.js +0 -8
- package/dist/providers/mixpanel/index.d.ts +0 -59
- package/dist/providers/mixpanel/index.js +0 -472
- 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 -67
- 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 -51
- package/dist/providers/revenuecat/index.js +0 -697
- 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
|
@@ -33,10 +33,10 @@ new behavior.
|
|
|
33
33
|
|
|
34
34
|
## Deploy-time capability
|
|
35
35
|
|
|
36
|
-
The `executor` passed to `createConnecta()` is required.
|
|
37
|
-
six
|
|
38
|
-
|
|
39
|
-
executor is missing, and the removed `surface` option is rejected rather than
|
|
36
|
+
The `executor` passed to `createConnecta()` is required. The
|
|
37
|
+
[six-tool surface](./meta-tools.md#the-six-tools) is defined in the meta-tool
|
|
38
|
+
reference. Construction fails when the
|
|
39
|
+
executor is missing, and the removed deployment-level `surface` option is rejected rather than
|
|
40
40
|
ignored ([#273](https://github.com/zackbart/connecta/issues/273)), as are the
|
|
41
41
|
pause-only `execute.resumableWrites` and `execute.pausedRunTtlSeconds`
|
|
42
42
|
([#672](https://github.com/zackbart/connecta/issues/672)).
|
|
@@ -70,9 +70,7 @@ through `admission`. Lease release disposes RPC and loader handles independently
|
|
|
70
70
|
of guest settlement. `bindings`, `modules`, or `globalOutbound` violate `P2`.
|
|
71
71
|
The [Worker example](../examples/worker/README.md#code-mode) has the full setup.
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
`import { workerExecutor } from "@zackbart/connecta/worker";` and use the wiring above.
|
|
75
|
-
Keep the peer. Unbranded executors throw, including bundled upstream copies.
|
|
73
|
+
Keep the Worker's optional peer. Unbranded executors throw, including bundled upstream copies.
|
|
76
74
|
Shipped executors carry a non-enumerable `Symbol.for("connecta.executor")` version/lifecycle brand.
|
|
77
75
|
Custom sandboxes import `customExecutor` from `@zackbart/connecta`, then configure
|
|
78
76
|
`executor: customExecutor(myExecutor, { lifecycle: "self-managed" })`. They own guest termination
|
|
@@ -574,7 +572,7 @@ direct calls; and `input_required_invalid`, `input_required_limit`,
|
|
|
574
572
|
| `invalid_args` | arguments or discovery bounds were rejected | false |
|
|
575
573
|
| `not_found` | the downstream answered and the resource is not there — the one code that says skip this id rather than stop, raised only where the provider tells absence from a permission gap | false |
|
|
576
574
|
| `conflict` | the write named a base version someone else already moved past; nothing changed. `details.current` says where things stand (at most 20 whole-number entries) — re-read, reapply, retry with that base | false |
|
|
577
|
-
| `input_required_unsupported` | a downstream asked for input;
|
|
575
|
+
| `input_required_unsupported` | a downstream asked for input; a read gets `nextAction` for the equivalent direct call, a write is an unknown outcome (`writeOutcome: "unknown"`) to reconcile before any fresh call | false |
|
|
578
576
|
| `rate_limited` | the downstream reported a rate limit | true |
|
|
579
577
|
| `unavailable` | the downstream is down or unreachable; optional sanitized `details.host` and `details.code` describe the transport failure without paths, queries, credentials, or provider prose | true |
|
|
580
578
|
| `timeout` | a call or sandbox deadline expired; details name operation, stage, elapsedMs, and deadlineMs | per operation |
|
|
@@ -619,7 +617,7 @@ when empty. An empty string reports `program_error` with
|
|
|
619
617
|
program-authored throw is `program_error`. `details.name` is a bounded engine
|
|
620
618
|
error name; `details.line` is the source line when the runtime supplies one,
|
|
621
619
|
otherwise null. Fixed hints repair imports/require/filesystem access, shadowed
|
|
622
|
-
`connecta`, and invented globals such as `callTool
|
|
620
|
+
`connecta`, and invented globals such as `callTool`.
|
|
623
621
|
|
|
624
622
|
An unchanged uncaught host error retains its classification through Error
|
|
625
623
|
identity. A new error containing its message is a new program error. Copied
|
|
@@ -877,7 +875,12 @@ Programs and direct calls use the same invocation deadline and stages. A call's
|
|
|
877
875
|
and request ceilings still bound the whole run. Timeout details are agent-facing;
|
|
878
876
|
operator records retain only checked classifications and numeric facts.
|
|
879
877
|
A dispatched write timeout becomes `write_outcome_unknown` and retains its
|
|
880
|
-
deadline details even when the program catches the failure.
|
|
878
|
+
deadline details even when the program catches the failure. A completed
|
|
879
|
+
maintained-provider call that reports a timeout keeps `timeout` when its complete
|
|
880
|
+
request ledger records an auxiliary resource read and proves that no call-owned
|
|
881
|
+
request or kit auxiliary falsely declared as a read departed, unless an explicit `writeOutcome: "unknown"` overrides that
|
|
882
|
+
proof. Custom `api()` and `remoteMcp()` connectors, invocation deadlines and
|
|
883
|
+
cancellation without a complete answer retain conservative write outcomes. The final program
|
|
881
884
|
error includes the first timeout in `details`; multiple write timeouts also
|
|
882
885
|
appear in `timeouts`, bounded to ten entries.
|
|
883
886
|
|
|
@@ -908,6 +911,13 @@ because connecta enforces them above the sandbox:
|
|
|
908
911
|
| Result | 24,000 serialized characters |
|
|
909
912
|
| Logs presented to the model | 4,000 characters |
|
|
910
913
|
|
|
914
|
+
For any tool whose output declares `page`, continue while `page.hasMore` is true.
|
|
915
|
+
When approaching the program's host-call limit, return `page.nextCursor` before
|
|
916
|
+
the call that would exceed it and continue in the next program with the same
|
|
917
|
+
arguments and that cursor; don't restart.
|
|
918
|
+
For example, return `{ nextCursor: result.page.nextCursor }` after reducing the
|
|
919
|
+
current page, then pass that cursor to the tool in the next program.
|
|
920
|
+
|
|
911
921
|
Every `call`, `read`, `search`, `describe`, `result`, and `skill` spends one host
|
|
912
922
|
call on entry, before resolution, validation, or dispatch; automatic transfer
|
|
913
923
|
pages of a paged result do not. Catching a local refusal refunds nothing.
|
|
@@ -1023,6 +1033,15 @@ sent and records nothing: it was never an attempt (`W9`).
|
|
|
1023
1033
|
|
|
1024
1034
|
## Writes
|
|
1025
1035
|
|
|
1036
|
+
Kit write tools refuse whole `[redacted]` string values (including decoded
|
|
1037
|
+
spellings) and withheld links in argument keys/values with `invalid_args`
|
|
1038
|
+
before the program runs. Longer prose may mention the marker: for example,
|
|
1039
|
+
`{ body: "the log says [redacted]" }` is accepted. Standard hatches and typed
|
|
1040
|
+
kit requests refuse any marker containment in paths and queries, including on
|
|
1041
|
+
reads. Obtain the original value/link or omit the field when a whole value is
|
|
1042
|
+
withheld. Admission checks agent arguments rather than bodies later composed
|
|
1043
|
+
from internal reads. Legacy non-kit and remote MCP tools keep their own rules.
|
|
1044
|
+
|
|
1026
1045
|
Whether an endpoint writes belongs to deployment code. Every deployment sets
|
|
1027
1046
|
`readOnly` for `/mcp` explicitly; construction fails without it. Each named pool inherits
|
|
1028
1047
|
the deployment's `readOnly` unless it sets its own, in either direction. The
|
|
@@ -1055,13 +1074,21 @@ all calls this deployment can make through it.
|
|
|
1055
1074
|
|
|
1056
1075
|
| Precedence | Evidence | Result |
|
|
1057
1076
|
| ---------- | -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
1058
|
-
| 1 | Exact deployment `classification[connectorId][toolName]` | `read` or `
|
|
1077
|
+
| 1 | Exact deployment `classification[connectorId][toolName]` | `read`, `write`, or `hidden`, even over a stale provider review |
|
|
1059
1078
|
| 2 | `Connector.classification` provider review | Reviewed writes remain writes; a stale schema digest makes a read a write; an explicit downstream contradiction also invalidates a reviewed read |
|
|
1060
1079
|
| 3 | Downstream annotations | Read only when `readOnlyHint === true && destructiveHint !== true`; otherwise write |
|
|
1061
1080
|
|
|
1062
1081
|
Unknown connector override keys fail construction. Unknown static tool keys
|
|
1063
|
-
fail construction
|
|
1064
|
-
catalog
|
|
1082
|
+
fail construction. An absent runtime-discovered tool leaves its override
|
|
1083
|
+
dormant and emits an operator warning once per catalog change; the override applies if the name returns.
|
|
1084
|
+
Hidden tools are absent from search and describe and refuse every call, including
|
|
1085
|
+
a guessed name. `"write"` selects the host approval path. MCP recovery sends a
|
|
1086
|
+
tool only once when either its effective or source class is write, even when an
|
|
1087
|
+
override changes write to read. The source class is the verified provider review
|
|
1088
|
+
where present during migration, otherwise the server annotations. It also governs
|
|
1089
|
+
authorization recovery, program re-runs and ambiguous failure outcomes: after
|
|
1090
|
+
dispatch, an unknown outcome has no retry or wait advice, including on timeout or
|
|
1091
|
+
cancellation. Overrides are exact tool names, including names containing dots.
|
|
1065
1092
|
They are never inferred from descriptions or arguments.
|
|
1066
1093
|
|
|
1067
1094
|
**W9.** Programs on a writable endpoint may write. A dispatched write is awaited even
|
|
@@ -1071,8 +1098,11 @@ write makes the run fail `write_outcome_unknown` with
|
|
|
1071
1098
|
`writes: { succeeded, failed, unknown }`, regardless of its return value.
|
|
1072
1099
|
A failed program that already wrote carries those counts on its error. No
|
|
1073
1100
|
write is automatically retried, including an ambiguous timeout. A downstream
|
|
1074
|
-
refusal
|
|
1075
|
-
|
|
1101
|
+
refusal can establish failure only when it covers the whole call: a request
|
|
1102
|
+
connecta never sent, or an HTTP 4xx refusal (not 408) of the only request the
|
|
1103
|
+
call dispatched. A write's `isError`, a timeout, an unanswered transport
|
|
1104
|
+
failure, and a custom connector that composed several calls leave the outcome
|
|
1105
|
+
unknown.
|
|
1076
1106
|
|
|
1077
1107
|
**W10.** `execute.maxWrites`, default 10, bounds a program's writes in
|
|
1078
1108
|
addition to the host-call budget. It is checked after argument validation and
|
|
@@ -1096,7 +1126,10 @@ omit write tools from `search_tools`, `connecta.search`, and
|
|
|
1096
1126
|
`connecta.describe`, and refuse every write call through `call_tool`,
|
|
1097
1127
|
`call_destructive_tool`, and programs with `read_only_endpoint` before
|
|
1098
1128
|
validation or dispatch. Guides and skills are documentation and may still name
|
|
1099
|
-
those tools.
|
|
1129
|
+
those tools. Meta endpoints list the same six tools in both modes.
|
|
1130
|
+
[Native pools](./meta-tools.md#native-tool-surface) list individual downstream
|
|
1131
|
+
tools and omit writes when read-only. They retain `execute_code` by default;
|
|
1132
|
+
`executeCode: false` replaces it with `read_result`. Approval belongs to the client.
|
|
1100
1133
|
`readOnly` grants no tool or connector access and cannot be set by guest code,
|
|
1101
1134
|
request arguments, or a downstream catalog. `execute.approval`,
|
|
1102
1135
|
`Connector.approval`, per-tool approval exemptions, and pool `trust` are
|
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
Use this guide when creating or maintaining a deployment. For changes to the
|
|
4
4
|
Connecta package itself, follow [repository policy](https://github.com/zackbart/connecta/blob/main/AGENTS.md).
|
|
5
5
|
For work through an already connected endpoint, use [Operating an endpoint](./operating.md).
|
|
6
|
-
[All agent routes](./README.md) are in the index.
|
|
6
|
+
[All agent routes](./README.md) are in the index. For a cursor signing-key error,
|
|
7
|
+
follow [cursor-key recovery](#recover-a-cursor-signing-key).
|
|
7
8
|
|
|
8
9
|
## Choose a deployment
|
|
9
10
|
|
|
@@ -13,7 +14,8 @@ For work through an already connected endpoint, use [Operating an endpoint](./op
|
|
|
13
14
|
| Docker | [Container setup in the same Node template](../templates/node/README.md#run-it-in-docker) | Same source and config, persistent named volume |
|
|
14
15
|
| Cloudflare Workers | [Worker example](../examples/worker/README.md#deploy) | Workers Paid plan, Worker Loader binding, one D1 database, Cloudflare Access |
|
|
15
16
|
|
|
16
|
-
These are the two deployment shapes. Docker packages the Node project
|
|
17
|
+
These are the two deployment shapes. Docker packages the Node project, and
|
|
18
|
+
Alchemy deploys the Worker.
|
|
17
19
|
Templates and their configuration files own the full runnable steps and
|
|
18
20
|
environment-variable names; follow them rather than rebuilding their setup
|
|
19
21
|
from the contract reference.
|
|
@@ -50,24 +52,84 @@ Follow the [template README](../templates/node/README.md) for storage paths,
|
|
|
50
52
|
backups, Docker provisioning, secrets, and optional modules. Run the deployment's
|
|
51
53
|
`npm run typecheck` after configuration changes.
|
|
52
54
|
|
|
55
|
+
Retain the Node template's `undici` dependency and serve with `listen` from
|
|
56
|
+
`@zackbart/connecta/node`. `listen()` installs the owned sender for every
|
|
57
|
+
maintained-provider request, reads included, remote MCP writes, and downstream
|
|
58
|
+
OAuth token exchange/refresh, dynamic registration and revocation POSTs.
|
|
59
|
+
Its separate pre-auth request buffer defaults to 4 MiB, matching core's
|
|
60
|
+
authenticated `admission.requests.maxBodyBytes` default. To accept larger MCP
|
|
61
|
+
bodies, configure both core and `listen(..., { maxBodyBytes })`; a smaller
|
|
62
|
+
platform, proxy or adapter cap still wins. See
|
|
63
|
+
[request body limits](./architecture.md#admission-in-two-places).
|
|
64
|
+
A Node host serving `connecta.fetch` without `listen()` has no owned sender:
|
|
65
|
+
every maintained-provider write, every reviewed POST read and every remote MCP
|
|
66
|
+
write is refused before sending. Downstream OAuth credential POSTs also require
|
|
67
|
+
that sender; discovery GETs retain native fetch. Resource writes worked in 0.34.1;
|
|
68
|
+
credential POSTs used native fetch through 0.34.1. For example, an `assistant` using
|
|
69
|
+
`vercel_api_read` to POST `/v1/registrar/domains/availability` needs that
|
|
70
|
+
transport even on a read-only endpoint. A Node deployment using only the root
|
|
71
|
+
entry refuses those requests before sending them. Workers use their native
|
|
72
|
+
fetch transport.
|
|
73
|
+
|
|
74
|
+
By default, Node's `listen()` handles SIGTERM and SIGINT: it stops accepting
|
|
75
|
+
connections, closes idle connections and accepted sockets without a first HTTP
|
|
76
|
+
request, closes request and code admission, reaps sandbox children, and drains
|
|
77
|
+
active responses and deferred work. A connection serving an active response
|
|
78
|
+
closes as soon as all its admitted responses finish, including SSE, without
|
|
79
|
+
waiting for the normal keepalive timeout or for the client to close. Normal
|
|
80
|
+
keepalive before shutdown is unchanged. Its shutdown deadline defaults to ten seconds
|
|
81
|
+
(`shutdownTimeoutMs`). For example, retain the template's `listen(connecta, port)` when running it under
|
|
82
|
+
Docker Compose so `docker compose stop` uses this cleanup.
|
|
83
|
+
|
|
84
|
+
The owned Node sender connects directly by default. To send maintained-provider
|
|
85
|
+
requests (including reads), remote MCP writes and OAuth credential POSTs through an HTTP(S) CONNECT
|
|
86
|
+
proxy, set `proxy` explicitly on `listen`:
|
|
87
|
+
|
|
88
|
+
```ts
|
|
89
|
+
listen(connecta, { port: 3000, proxy: "http://proxy.example.com:8080" });
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
The URL must have an HTTP or HTTPS scheme and no path, query or fragment.
|
|
93
|
+
Optional URL username/password credentials authenticate CONNECT only; they are
|
|
94
|
+
never forwarded to the destination. Load credential-bearing URLs from the
|
|
95
|
+
host's secret configuration. The sender validates the option before listening,
|
|
96
|
+
uses an owned proxy dispatcher for each send, and closes it when the response
|
|
97
|
+
ends or is canceled. TLS certificates for both proxy and destination use Node's
|
|
98
|
+
normal trust configuration; TLS interception requires operator-configured trust.
|
|
99
|
+
|
|
100
|
+
The sender ignores `NODE_USE_ENV_PROXY`, `HTTP_PROXY`, `HTTPS_PROXY` and global
|
|
101
|
+
dispatchers. Remote MCP reads retain native fetch and its proxy settings; the
|
|
102
|
+
explicit `proxy` option controls only owned sends. Set the host's native-fetch
|
|
103
|
+
proxy policy too if the remote server requires proxy egress for discovery and
|
|
104
|
+
reads. CONNECT failure before destination dispatch is a known unsent failure;
|
|
105
|
+
a connection failure after a write dispatch is unknown and non-retryable.
|
|
106
|
+
Neither case automatically repeats the write. A credential POST is never
|
|
107
|
+
replayed by the sender, including after HTTP 421, a reset or a 503. An uncertain
|
|
108
|
+
refresh requires authorization again; Connecta blocks the spent refresh
|
|
109
|
+
fingerprint rather than redeeming it twice. Once a refresh claim has been
|
|
110
|
+
submitted, that protection remains conservative even if proxy setup later fails.
|
|
111
|
+
Use a fresh authorization flow to reconcile. OAuth discovery remains on native
|
|
112
|
+
fetch and needs its own host proxy policy. These credential POST requirements
|
|
113
|
+
change the native-fetch behavior of 0.34.1.
|
|
114
|
+
|
|
53
115
|
## Start on Workers
|
|
54
116
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
[
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
117
|
+
Use the [Worker example](../examples/worker/README.md) as the canonical runnable
|
|
118
|
+
setup and upgrade guide. Alchemy deploys that example's stack; it owns the
|
|
119
|
+
Worker, D1 database, Worker Loader, secrets, and Access applications.
|
|
120
|
+
|
|
121
|
+
| Task | Canonical procedure |
|
|
122
|
+
| ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
123
|
+
| Copy and install a deployment | [Separate-project installation](../examples/worker/README.md#copied-into-its-own-repository), including exact versions, peers, ignore files, and trusted tooling |
|
|
124
|
+
| Deploy or update the stack | [Deploy](../examples/worker/README.md#deploy), including account permissions and consistent stage selection |
|
|
125
|
+
| Protect secrets and retain data | [Secrets and state](../examples/worker/README.md#secrets-and-state) and [destroying and recovering](../examples/worker/README.md#destroying-and-recovering) |
|
|
126
|
+
| Configure human and agent access | [Cloudflare Access](../examples/worker/README.md#cloudflare-access), [agent bypass](../examples/worker/README.md#let-agents-through-access), and [machine tokens](../examples/worker/README.md#machine-tokens) |
|
|
127
|
+
| Move an existing Wrangler deployment | [Take over existing resources](../examples/worker/README.md#moving-a-wrangler-deployed-worker-to-alchemy) |
|
|
128
|
+
| Run locally and verify a deploy | [Local development](../examples/worker/README.md#local-development) and [verification](../examples/worker/README.md#verify-after-deploying) |
|
|
129
|
+
|
|
130
|
+
Retain the example's [compatibility flags and entrypoint wiring](../examples/worker/README.md#files).
|
|
131
|
+
The [agent bypass notes](#agent-endpoints-behind-cloudflare-access) below record
|
|
132
|
+
verified ingress behavior and the cases that still require verification.
|
|
71
133
|
|
|
72
134
|
## Agent endpoints behind Cloudflare Access
|
|
73
135
|
|
|
@@ -76,7 +138,8 @@ alone and which ignores Access context entirely
|
|
|
76
138
|
([agent endpoints](./auth.md#agent-endpoints)). Behind Access, the edge must
|
|
77
139
|
let those requests through without an Access login or service token. The P0
|
|
78
140
|
probe ([observations](./architecture.md#production-access-bypass-for-agent-endpoints))
|
|
79
|
-
verified this shape on 2026-10-15
|
|
141
|
+
verified this shape on 2026-10-15. The Worker example's `alchemy.run.ts`
|
|
142
|
+
declares both applications:
|
|
80
143
|
|
|
81
144
|
1. Keep the Worker-level application, whose destination is
|
|
82
145
|
`{ "type": "worker", "worker_id": "<the Worker script tag>" }`, exactly as
|
|
@@ -166,6 +229,27 @@ personal connectors in their pools.
|
|
|
166
229
|
[Auth](./auth.md#principals-visibility-and-operators) owns maintainers and members;
|
|
167
230
|
[Clerk setup](./auth.md#clerk-oauth-tokens-and-operator-sessions) owns resource-bound
|
|
168
231
|
tokens and `aud_claim_enabled`. A person's operator session is not an MCP token.
|
|
232
|
+
Several deployments can share one Clerk instance with one Organization each;
|
|
233
|
+
[Clerk Organizations](./auth.md#one-clerk-instance-one-organization-per-deployment)
|
|
234
|
+
owns that setup and its isolation tradeoff.
|
|
235
|
+
|
|
236
|
+
Public deployments require ingress rate limiting on all authenticated routes,
|
|
237
|
+
including agent, operator, connection-start, and callback paths. Connecta's
|
|
238
|
+
fixed bound of 16 active inbound authorizations per loaded core/process or
|
|
239
|
+
isolate fast-refuses with retryable 503 `authentication_busy` and `Retry-After: 1`.
|
|
240
|
+
A separate allowance of 16 abandoned operations holds stalled work after its
|
|
241
|
+
hard deadline plus one second of grace. While it is full, new authentication
|
|
242
|
+
receives the same 503, the log records `authentication_abandoned_saturated`,
|
|
243
|
+
and `/health` reports `admission.authentication.abandonedSaturated: true`.
|
|
244
|
+
Stalled work counts until it settles or until the garbage collector frees
|
|
245
|
+
everything that could settle it, as after Cloudflare cancels an invocation.
|
|
246
|
+
That second release is eventual, never timed, and needs `FinalizationRegistry`:
|
|
247
|
+
on Workers, `enable_weak_ref` or a compatibility date of 2025-05-05 or later.
|
|
248
|
+
`/health` reports `admission.authentication.unreachableRelease`.
|
|
249
|
+
These bounds limit outstanding work, not requests per second or a quota shared by several
|
|
250
|
+
isolates or deployments. Budget ingress across the identity-provider account;
|
|
251
|
+
see [authentication capacity](./auth.md#authentication-capacity-and-ingress-limiting)
|
|
252
|
+
for route coverage and the interaction with MCP execution admission.
|
|
169
253
|
|
|
170
254
|
Every deployment must set `readOnly` in its configuration; startup fails without
|
|
171
255
|
it, and the template and Worker example set `readOnly: false`. Each named pool
|
|
@@ -230,14 +314,74 @@ Bump the exact package pin, read the [changelog](../CHANGELOG.md) for every
|
|
|
230
314
|
intervening release, and apply the relevant migration before startup. `init`
|
|
231
315
|
does not merge changes into an existing deployment.
|
|
232
316
|
|
|
317
|
+
For an existing Node deployment, add the Node entry's pinned optional peer
|
|
318
|
+
before starting the upgraded package: `npm install --save-exact undici@6.29.1`.
|
|
319
|
+
The current Node template already declares this dependency.
|
|
320
|
+
|
|
321
|
+
For 0.35.0, serve Node with `listen` from `@zackbart/connecta/node`, as the
|
|
322
|
+
current template does. Without `listen()`, a host serving `connecta.fetch` has
|
|
323
|
+
no owned sender: every maintained-provider write, every reviewed POST read and
|
|
324
|
+
every remote MCP write is refused before sending, although each worked in 0.34.1.
|
|
325
|
+
Downstream OAuth token, registration and revocation POSTs also require that
|
|
326
|
+
sender. With `listen()`, every maintained-provider request, reads included,
|
|
327
|
+
remote MCP writes and those credential POSTs use the owned sender. Configure
|
|
328
|
+
`listen(..., { proxy })` explicitly for HTTP(S) CONNECT proxy egress; ambient
|
|
329
|
+
`NODE_USE_ENV_PROXY`, `HTTP_PROXY`, `HTTPS_PROXY` and host proxy dispatchers do
|
|
330
|
+
not configure it. Remote MCP reads and OAuth discovery GETs retain native fetch
|
|
331
|
+
and need their own host proxy policy. An uncertain refresh requires fresh
|
|
332
|
+
authorization rather than replaying the spent token. See [Start on Node](#start-on-node).
|
|
333
|
+
|
|
334
|
+
Authenticated MCP bodies now default to 4 MiB through
|
|
335
|
+
`admission.requests.maxBodyBytes`; Node's separate pre-auth buffer also defaults
|
|
336
|
+
to 4 MiB. Configure both core and `listen(..., { maxBodyBytes })` if a deployment
|
|
337
|
+
must accept larger bodies. Smaller platform or proxy limits still apply.
|
|
338
|
+
|
|
339
|
+
After a dispatched write reports an unknown outcome, read the target before
|
|
340
|
+
making another write. Programs retain that outcome even when guest code catches
|
|
341
|
+
the error; see [Writes](./code-mode.md#writes). Provider
|
|
342
|
+
continuations now bind their connection, credential owner and read arguments;
|
|
343
|
+
connections with caller-dependent downstream identities also bind the admitted
|
|
344
|
+
caller and pool owner. Follow each provider's migration rules for old cursors.
|
|
345
|
+
No database conversion or agent-token rotation is required solely for 0.35.0.
|
|
346
|
+
|
|
347
|
+
Native pools and code-off result paging are optional; existing pools keep the
|
|
348
|
+
meta-tool surface. See [Native tool surface](./meta-tools.md#native-tool-surface).
|
|
349
|
+
Vercel workload admission and the separate Eve helper are also opt-in; existing
|
|
350
|
+
agent tokens keep working. See [Vercel workload credentials](./auth.md#vercel-workload-credentials)
|
|
351
|
+
and [Eve agents](./meta-tools.md#eve-agents).
|
|
352
|
+
|
|
353
|
+
- [Provider migration for 0.35](./provider-migration-0.35.md) collects provider upgrade actions for 0.35.0, including removal of Infisical, Notion, and Mixpanel factories.
|
|
233
354
|
- [Migration to 0.34](./migration-0.34.md) covers the Overview landing page, Endpoints at `/endpoints`, default browser titles, and Workspace discovery in owner-less agent pools. No storage migration or token rotation is needed from 0.33.
|
|
234
355
|
- [Migration to 0.33](./migration-0.33.md) maps every removed access option to `maintainers`, pool `members`, and `agents`, moves agents to `/agent/<pool>`, and covers pool owners, token revisions, operator contract v2 with its operator route changes, and the pre-auth listen fix.
|
|
235
356
|
- [Tokens issued before agents](./auth.md#agent-tokens-and-upgrading-from-earlier-tokens) stop admitting until each machine's token is bound once to a declared agent with `npm run adopt-token -- <token-id> <agent>` (Node) or `AccessTokenManager.adopt`, which keeps its secret. Human-bound tokens stay refused; issue those agents new tokens. Pool members name `"agent:<name>"` instead of matching token record ids.
|
|
236
357
|
- [Node storage from 0.28](../templates/node/README.md#storage) uses `connecta migrate-state` to copy the JSON state into SQLite. Activity JSONL is not imported.
|
|
237
358
|
- [Worker storage from 0.28](../examples/worker/README.md#upgrading-from-028) copies KV into D1 with a one-shot migration.
|
|
238
|
-
- [
|
|
359
|
+
- [Worker deployments on Wrangler](../examples/worker/README.md#moving-a-wrangler-deployed-worker-to-alchemy) move to Alchemy once, adopting the Worker, D1 database, and Access applications so the script tag and Access AUD stay unchanged.
|
|
360
|
+
- [Notion, Vercel, and Cloudflare for 0.29](./provider-migration-0.29.md) records historical defaults and retained API tool names.
|
|
239
361
|
- [Executor wiring](./code-mode.md#deploy-time-capability) requires branded shipped executors or a self-managed custom executor.
|
|
240
362
|
|
|
363
|
+
## Recover a cursor signing key
|
|
364
|
+
|
|
365
|
+
Paged API discovery and bound list continuations use one signing key in the
|
|
366
|
+
deployment store. A load failure returns retryable `unavailable` and names the
|
|
367
|
+
cursor signing key without revealing its value. Restore database connectivity
|
|
368
|
+
first, then retry the call. A valid key already cached by a process keeps working.
|
|
369
|
+
|
|
370
|
+
If the stored key is corrupt, pause incoming traffic and stop every Node process
|
|
371
|
+
(or prepare a fresh Worker version), then delete only this row from the
|
|
372
|
+
existing SQLite/D1 database:
|
|
373
|
+
|
|
374
|
+
```sql
|
|
375
|
+
DELETE FROM connecta_kv WHERE key = 'continuation-key:v1:signing';
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
Restart all Node processes or switch all traffic to the fresh Worker version
|
|
379
|
+
before accepting requests again, so no instance retains an older cached key.
|
|
380
|
+
The next paged call creates one replacement key atomically. Do not print or
|
|
381
|
+
inspect its value. Outstanding cursors signed with the old key fail
|
|
382
|
+
`invalid_args`; start each affected search, details walk or list at its first
|
|
383
|
+
page. Other deployment state and credentials remain in the database.
|
|
384
|
+
|
|
241
385
|
## Contributor reference
|
|
242
386
|
|
|
243
387
|
### Implementation and evidence
|