@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/routes/ui-data.js
CHANGED
|
@@ -21,9 +21,6 @@ function attempt(operation) {
|
|
|
21
21
|
}
|
|
22
22
|
export function uiData(registry, baseUrl, options) {
|
|
23
23
|
return Effect.suspend(() => {
|
|
24
|
-
const requestScope = {};
|
|
25
|
-
if (options.activityContext)
|
|
26
|
-
bindActivityRequest(requestScope, options.activityContext);
|
|
27
24
|
const vault = options.credentialVault;
|
|
28
25
|
const owner = options.personalCredentialOwner;
|
|
29
26
|
/**
|
|
@@ -34,7 +31,7 @@ export function uiData(registry, baseUrl, options) {
|
|
|
34
31
|
* `status()` can quote a downstream error body, which can quote the
|
|
35
32
|
* secret it just rejected (INV-6). An `ok` status is simply dropped.
|
|
36
33
|
*/
|
|
37
|
-
const logStatus = (id, state, failure) => {
|
|
34
|
+
const logStatus = (id, state, failure, requestScope) => {
|
|
38
35
|
if (state === "ok")
|
|
39
36
|
return;
|
|
40
37
|
const logger = registry.contextFor(id, baseUrl, requestScope).logger;
|
|
@@ -43,7 +40,7 @@ export function uiData(registry, baseUrl, options) {
|
|
|
43
40
|
// Status first, then the catalog only when status is ok. A failed status
|
|
44
41
|
// read is an error status, not a failed row: the row still reports the
|
|
45
42
|
// connector's credential.
|
|
46
|
-
const observe = (c, drift, signal) => {
|
|
43
|
+
const observe = (c, drift, signal, requestScope) => {
|
|
47
44
|
if (drift) {
|
|
48
45
|
return Effect.succeed({
|
|
49
46
|
status: { state: "auth_required", message: drift },
|
|
@@ -74,7 +71,13 @@ export function uiData(registry, baseUrl, options) {
|
|
|
74
71
|
}))).pipe(Effect.map((tools) => ({ status, tools, catalogFailed: false })),
|
|
75
72
|
// The registry owns the failed catalog observation; the page only
|
|
76
73
|
// needs to know there was one.
|
|
77
|
-
Effect.catch(() => Effect.succeed({ status, tools: [], catalogFailed: !signal.aborted }))
|
|
74
|
+
Effect.catch(() => Effect.succeed({ status, tools: [], catalogFailed: !signal.aborted })),
|
|
75
|
+
// Loading the catalog may replace an earlier clean observation.
|
|
76
|
+
// Read this view's current bounded facts without another status probe.
|
|
77
|
+
Effect.map((observed) => ({
|
|
78
|
+
...observed,
|
|
79
|
+
status: registry.withCatalogObservations(c.id, baseUrl, observed.status),
|
|
80
|
+
})));
|
|
78
81
|
}).pipe(Effect.catch((error) => Effect.succeed({
|
|
79
82
|
status: failureStatus(c.id, error),
|
|
80
83
|
tools: [],
|
|
@@ -146,14 +149,14 @@ export function uiData(registry, baseUrl, options) {
|
|
|
146
149
|
});
|
|
147
150
|
}));
|
|
148
151
|
};
|
|
149
|
-
const detail = (c, signal) => Effect.gen(function* () {
|
|
152
|
+
const detail = (c, signal, requestScope) => Effect.gen(function* () {
|
|
150
153
|
const drift = yield* attempt(() => registry.credentialDriftFor(c.id));
|
|
151
154
|
// One deadline covers the whole row. The status and catalog reads once
|
|
152
155
|
// had a second one of the same length inside it, which could only fire
|
|
153
156
|
// after this one had already ended the row.
|
|
154
|
-
const { status, tools, catalogFailed } = yield* observe(c, drift, signal);
|
|
157
|
+
const { status, tools, catalogFailed } = yield* observe(c, drift, signal, requestScope);
|
|
155
158
|
const credential = yield* credentialFor(c);
|
|
156
|
-
logStatus(c.id, status.state, statusFailure(status));
|
|
159
|
+
logStatus(c.id, status.state, statusFailure(status), requestScope);
|
|
157
160
|
const problem = uiProblemFor(c, status.state, {
|
|
158
161
|
credentialDrift: Boolean(drift),
|
|
159
162
|
catalogFailed,
|
|
@@ -168,10 +171,7 @@ export function uiData(registry, baseUrl, options) {
|
|
|
168
171
|
toolCount: tools.length,
|
|
169
172
|
tools,
|
|
170
173
|
// Counts only, and only when a refresh in this runtime produced them.
|
|
171
|
-
// `Registry.
|
|
172
|
-
// `boundedCatalogDrift`, so what lands here cannot carry a name or a
|
|
173
|
-
// schema even if the plugin seam returned one.
|
|
174
|
-
...(status.catalogDrift ? { catalogDrift: status.catalogDrift } : {}),
|
|
174
|
+
// `Registry.withCatalogObservations` rebuilt the report through
|
|
175
175
|
...(status.catalogAccess ? { catalogAccess: status.catalogAccess } : {}),
|
|
176
176
|
...(status.resourceTemplateRefusals ? { resourceTemplateRefusals: status.resourceTemplateRefusals } : {}),
|
|
177
177
|
...(status.state === "auth_required" && c.startAuth && options.mayManage?.(c.id) && options.oauthConnectUrl
|
|
@@ -182,8 +182,8 @@ export function uiData(registry, baseUrl, options) {
|
|
|
182
182
|
...(credential ? { credential } : {}),
|
|
183
183
|
};
|
|
184
184
|
});
|
|
185
|
-
const unavailable = (c, error) => Effect.sync(() => {
|
|
186
|
-
logStatus(c.id, "failed", error);
|
|
185
|
+
const unavailable = (c, error, requestScope) => Effect.sync(() => {
|
|
186
|
+
logStatus(c.id, "failed", error, requestScope);
|
|
187
187
|
return {
|
|
188
188
|
id: c.id,
|
|
189
189
|
...(c.title ? { title: c.title } : {}),
|
|
@@ -195,13 +195,20 @@ export function uiData(registry, baseUrl, options) {
|
|
|
195
195
|
tools: [],
|
|
196
196
|
};
|
|
197
197
|
});
|
|
198
|
-
const row = (c) =>
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
198
|
+
const row = (c) => Effect.suspend(() => {
|
|
199
|
+
// A row ends independently. Revoking its probe must not revoke a live
|
|
200
|
+
// sibling that happens to belong to the same operator payload.
|
|
201
|
+
const requestScope = {};
|
|
202
|
+
if (options.activityContext)
|
|
203
|
+
bindActivityRequest(requestScope, options.activityContext);
|
|
204
|
+
return withDeadlineEffect((signal) => detail(c, signal, requestScope), {
|
|
205
|
+
timeoutMs: options.timeoutMs ?? DETAIL_TIMEOUT_MS,
|
|
206
|
+
...(options.signal ? { signal: options.signal } : {}),
|
|
207
|
+
timeoutError: new Error(DETAIL_TIMED_OUT),
|
|
208
|
+
}).pipe(
|
|
209
|
+
// A hook that throws where it should reject fails its own row too.
|
|
210
|
+
Effect.catchDefect((defect) => Effect.fail(defect)), Effect.catch((error) => unavailable(c, error, requestScope)), Effect.ensuring(Effect.suspend(() => closeScope(c, registry.contextFor(c.id, baseUrl, requestScope), options.defer))));
|
|
211
|
+
});
|
|
205
212
|
return Effect.forEach(registry.listConnectors(), row, {
|
|
206
213
|
concurrency: resolveDiscoveryConcurrency(options.discoveryConcurrency),
|
|
207
214
|
}).pipe(Effect.map((connectors) => ({
|
package/dist/routes/ui.js
CHANGED
|
@@ -74,7 +74,7 @@ export async function routeUi(context) {
|
|
|
74
74
|
const operatorPage = operatorPageForPath(path);
|
|
75
75
|
if (operatorPage &&
|
|
76
76
|
(operatorPage !== "activity" || opts.config.activity?.store.list) &&
|
|
77
|
-
(operatorPage !== "tokens" || opts.config.accessTokens)) {
|
|
77
|
+
(operatorPage !== "tokens" || opts.config.accessTokens || opts.config.agents.length > 0)) {
|
|
78
78
|
if (request.method !== "GET" && request.method !== "HEAD") {
|
|
79
79
|
return privateJson({ error: "method not allowed" }, { status: 405 });
|
|
80
80
|
}
|
|
@@ -50,29 +50,3 @@ function installed() {
|
|
|
50
50
|
export function startCallAdmission(controller, request) {
|
|
51
51
|
return installed()(controller, request, liveNow);
|
|
52
52
|
}
|
|
53
|
-
/**
|
|
54
|
-
* Admit one downstream call, as `controller.acquire()` does, without a
|
|
55
|
-
* Promise.
|
|
56
|
-
*
|
|
57
|
-
* Fails with the same CallAdmissionError objects and bumps the same counters.
|
|
58
|
-
* The rolling window and queue-wait times read the fiber's Clock. Nothing
|
|
59
|
-
* happens until the effect runs, and each run is a fresh admission.
|
|
60
|
-
* Interrupting the fiber while it is queued withdraws it (counted as
|
|
61
|
-
* cancelled); interrupting it after a slot was handed over releases that slot
|
|
62
|
-
* rather than stranding it.
|
|
63
|
-
*/
|
|
64
|
-
export function admitCall(controller, request) {
|
|
65
|
-
const admit = installed();
|
|
66
|
-
return Effect.clockWith((clock) => admit(controller, request, () => clock.currentTimeMillisUnsafe()));
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* A permit owned by the enclosing Scope: released when the scope closes, on
|
|
70
|
-
* success, failure, or interruption alike. The queued wait stays
|
|
71
|
-
* interruptible, so a caller that left does not hold its place in line until
|
|
72
|
-
* the queue timeout.
|
|
73
|
-
*/
|
|
74
|
-
export function acquireCallScoped(controller, request) {
|
|
75
|
-
return Effect.acquireRelease(admitCall(controller, request), (permit) => Effect.sync(() => permit.release()), {
|
|
76
|
-
interruptible: true,
|
|
77
|
-
});
|
|
78
|
-
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { originalCallIdentity } from "../provider-call-facts.js";
|
|
2
|
+
import { Effect } from "effect";
|
|
3
|
+
import { ActiveCall, Operation, contextView, duringViewEffect } from "./call.js";
|
|
4
|
+
const entries = new WeakMap();
|
|
5
|
+
export function registerCallEntry(connector, core) {
|
|
6
|
+
entries.set(connector, {
|
|
7
|
+
own: connector.callTool,
|
|
8
|
+
run: (name, args, options) => Effect.gen(function* () {
|
|
9
|
+
const lease = yield* ActiveCall;
|
|
10
|
+
const operation = yield* Operation;
|
|
11
|
+
if (!operation)
|
|
12
|
+
return yield* Effect.die(new Error("An api call needs its operation services."));
|
|
13
|
+
const services = yield* Effect.context();
|
|
14
|
+
const view = contextView({ ...lease, services }, operation);
|
|
15
|
+
return yield* duringViewEffect(view, () => core(name, args, view, options));
|
|
16
|
+
}),
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export function callEntry(connector, own) {
|
|
20
|
+
const entry = entries.get(originalCallIdentity(connector));
|
|
21
|
+
return entry?.own === own ? entry.run : undefined;
|
|
22
|
+
}
|
|
23
|
+
const tools = new WeakMap();
|
|
24
|
+
export function registerToolEntry(tool, run) {
|
|
25
|
+
tools.set(tool, { own: tool.handler, run });
|
|
26
|
+
}
|
|
27
|
+
export function toolEntry(tool) {
|
|
28
|
+
const entry = tools.get(tool);
|
|
29
|
+
return entry?.own === tool.handler ? entry.run : undefined;
|
|
30
|
+
}
|