machine-bridge-mcp 2.0.0 → 3.0.0-beta.102
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 +1142 -0
- package/CONTRIBUTING.md +23 -25
- package/GOVERNANCE.md +2 -2
- package/README.md +58 -20
- package/SECURITY.md +161 -120
- package/SUPPORT.md +1 -1
- package/browser-extension/broker-auth.js +83 -0
- package/browser-extension/broker-liveness.js +35 -0
- package/browser-extension/browser-error-boundary.js +96 -0
- package/browser-extension/browser-operations.js +1456 -101
- package/browser-extension/devtools-input.js +195 -34
- package/browser-extension/devtools-observation.js +429 -0
- package/browser-extension/devtools-session.js +48 -0
- package/browser-extension/manifest.json +4 -3
- package/browser-extension/page-automation.js +578 -118
- package/browser-extension/pairing-bootstrap.js +42 -0
- package/browser-extension/pairing.js +28 -12
- package/browser-extension/service-worker.js +126 -106
- package/docs/AGENT_CONTEXT.md +13 -10
- package/docs/ARCHITECTURE.md +159 -67
- package/docs/AUDIT.md +1302 -4
- package/docs/CLIENTS.md +19 -6
- package/docs/COMPUTER_USE.md +297 -0
- package/docs/ENGINEERING.md +72 -13
- package/docs/GETTING_STARTED.md +18 -20
- package/docs/LOCAL_AUTHORIZATION.md +115 -72
- package/docs/LOCAL_AUTOMATION.md +27 -21
- package/docs/LOGGING.md +40 -19
- package/docs/MANAGED_JOBS.md +37 -34
- package/docs/MULTI_ACCOUNT.md +98 -37
- package/docs/OPERATIONS.md +145 -51
- package/docs/OVERVIEW.md +14 -11
- package/docs/POLICY_REFERENCE.md +71 -3
- package/docs/PRIVACY.md +41 -2
- package/docs/PROJECT_STANDARDS.md +29 -6
- package/docs/RELEASING.md +238 -64
- package/docs/TESTING.md +150 -39
- package/docs/THREAT_MODEL.md +164 -67
- package/docs/TOOL_REFERENCE.md +653 -60
- package/docs/UPGRADING.md +78 -18
- package/native/macos/MachineBridgeBackgroundInput.swift +1051 -0
- package/native/macos/MachineBridgeBackgroundInputSmokeFixture.swift +295 -0
- package/native/macos/MachineBridgeTrustBroker.swift +233 -0
- package/package.json +94 -16
- package/scripts/accepted-candidate-tarball.mjs +77 -0
- package/scripts/candidate-runtime-store.mjs +93 -0
- package/scripts/check-plan.mjs +73 -3
- package/scripts/check-runner.mjs +129 -17
- package/scripts/commit-message-check.mjs +5 -2
- package/scripts/consumer-package-security.mjs +293 -0
- package/scripts/coverage-check.mjs +251 -15
- package/scripts/coverage-generation.mjs +41 -0
- package/scripts/coverage-range-merge.mjs +41 -0
- package/scripts/foreground-daemon-recovery.mjs +88 -0
- package/scripts/generate-policy-reference.mjs +28 -5
- package/scripts/generate-tool-reference.mjs +1 -1
- package/scripts/generate-worker-types.mjs +21 -11
- package/scripts/github-backlog.mjs +11 -10
- package/scripts/github-push.mjs +62 -16
- package/scripts/github-release-asset.mjs +58 -0
- package/scripts/github-release.mjs +241 -132
- package/scripts/global-package-installation.mjs +68 -0
- package/scripts/hardened-npm-session.mjs +42 -0
- package/scripts/install-published-prerelease.mjs +198 -0
- package/scripts/local-release-acceptance.mjs +103 -45
- package/scripts/macos-background-input-smoke.mjs +515 -0
- package/scripts/network-retry.mjs +8 -1
- package/scripts/npm-global-prefix.mjs +27 -0
- package/scripts/npm-publication-policy.mjs +17 -0
- package/scripts/official-mcp-conformance.mjs +267 -0
- package/scripts/persistent-activation-process.mjs +101 -0
- package/scripts/prepare-pinned-npm.mjs +12 -69
- package/scripts/prerelease-activation.mjs +160 -0
- package/scripts/privacy-check.mjs +14 -6
- package/scripts/promotion-digest.mjs +128 -0
- package/scripts/publish-npm.mjs +260 -0
- package/scripts/published-release.mjs +132 -0
- package/scripts/release-acceptance.mjs +62 -54
- package/scripts/release-browser-extension-store.mjs +172 -0
- package/scripts/release-candidate-manifest.mjs +52 -0
- package/scripts/release-channel.mjs +106 -0
- package/scripts/release-diagnostic.mjs +41 -0
- package/scripts/release-impact-check.mjs +12 -22
- package/scripts/release-oauth-canary-core.mjs +325 -0
- package/scripts/release-oauth-canary-evidence.mjs +100 -0
- package/scripts/release-oauth-canary.mjs +127 -0
- package/scripts/release-publication-guard.mjs +67 -0
- package/scripts/release-soak.mjs +284 -0
- package/scripts/release-state.mjs +1 -1
- package/scripts/run-checks.mjs +44 -7
- package/scripts/run-worker-dry-run.mjs +21 -0
- package/scripts/sarif-security-gate.mjs +2 -1
- package/scripts/sbom-check.mjs +106 -0
- package/scripts/start-release-candidate.mjs +267 -44
- package/scripts/syntax-check.mjs +36 -14
- package/scripts/verification-generation-guard.mjs +15 -0
- package/scripts/verification-idle-sleep-guard.mjs +37 -0
- package/scripts/verification-state.mjs +108 -0
- package/scripts/wrangler-command-lifecycle.mjs +115 -0
- package/src/local/account-access.mjs +13 -1
- package/src/local/account-admin-response.mjs +92 -0
- package/src/local/account-admin.mjs +52 -19
- package/src/local/agent-context-projection.mjs +26 -7
- package/src/local/agent-context.mjs +88 -49
- package/src/local/agent-skill-discovery.mjs +16 -5
- package/src/local/app-automation-macos-jxa.mjs +350 -0
- package/src/local/app-automation.mjs +873 -163
- package/src/local/application-capability-projection.mjs +24 -0
- package/src/local/authority-context.mjs +106 -0
- package/src/local/autostart-log-maintenance.mjs +36 -0
- package/src/local/browser-bridge-http.mjs +5 -3
- package/src/local/browser-bridge.mjs +109 -31
- package/src/local/browser-broker-auth-http.mjs +67 -0
- package/src/local/browser-broker-auth.mjs +98 -0
- package/src/local/browser-broker-routes.mjs +63 -20
- package/src/local/browser-broker-server.mjs +17 -7
- package/src/local/browser-command.mjs +79 -30
- package/src/local/browser-computer-observation-service.mjs +266 -0
- package/src/local/browser-extension-identity.mjs +50 -0
- package/src/local/browser-extension-path.mjs +22 -0
- package/src/local/browser-extension-protocol.mjs +50 -11
- package/src/local/browser-operation-service.mjs +147 -117
- package/src/local/browser-pairing-grant.mjs +109 -0
- package/src/local/browser-pairing-http.mjs +36 -0
- package/src/local/browser-pairing-launch.mjs +58 -0
- package/src/local/browser-pairing-store.mjs +85 -48
- package/src/local/browser-request-registry.mjs +40 -14
- package/src/local/browser-request-settlement.mjs +78 -0
- package/src/local/browser-resource-input.mjs +74 -0
- package/src/local/browser-trusted-input-health.mjs +63 -0
- package/src/local/call-authority.mjs +21 -0
- package/src/local/call-capacity.mjs +45 -0
- package/src/local/call-registry-drain.mjs +54 -0
- package/src/local/call-registry.mjs +30 -15
- package/src/local/capability-observer.mjs +5 -0
- package/src/local/capability-ranking.mjs +3 -2
- package/src/local/child-process-settlement.mjs +132 -0
- package/src/local/cli-account-admin.mjs +40 -6
- package/src/local/cli-activate.mjs +162 -0
- package/src/local/cli-local-admin.mjs +20 -45
- package/src/local/cli-options.mjs +12 -13
- package/src/local/cli-ready-output.mjs +52 -0
- package/src/local/cli-service.mjs +91 -11
- package/src/local/cli.mjs +232 -150
- package/src/local/computer-use-application-observation.mjs +224 -0
- package/src/local/computer-use-arguments.mjs +270 -0
- package/src/local/computer-use-deadline.mjs +50 -0
- package/src/local/computer-use-dispatch-settlement.mjs +40 -0
- package/src/local/computer-use-expectation.mjs +171 -0
- package/src/local/computer-use-observation.mjs +769 -0
- package/src/local/computer-use-recovery.mjs +82 -0
- package/src/local/computer-use-result-budget.mjs +145 -0
- package/src/local/computer-use-snapshot-store.mjs +67 -0
- package/src/local/computer-use.mjs +2255 -0
- package/src/local/daemon-http-relay-auth.mjs +26 -0
- package/src/local/daemon-http-relay-connection.mjs +298 -0
- package/src/local/daemon-http-relay-request.mjs +64 -0
- package/src/local/daemon-http-relay-sequence.mjs +49 -0
- package/src/local/daemon-process.mjs +40 -7
- package/src/local/delegated-process-sandbox.mjs +148 -0
- package/src/local/device-identity.mjs +156 -49
- package/src/local/device-root-provider.mjs +81 -0
- package/src/local/directory-metadata.mjs +47 -0
- package/src/local/doctor-reporting.mjs +23 -0
- package/src/local/durable-process-spec.mjs +80 -0
- package/src/local/errors.mjs +25 -15
- package/src/local/exclusive-file.mjs +74 -26
- package/src/local/execution-limits.mjs +9 -0
- package/src/local/execution-routing.mjs +276 -0
- package/src/local/execution-surface.mjs +23 -0
- package/src/local/file-mutation-coordinator.mjs +47 -0
- package/src/local/file-snapshot-preservation.mjs +24 -0
- package/src/local/filesystem-identity.mjs +54 -0
- package/src/local/fixed-process-environment.mjs +21 -0
- package/src/local/full-access-test.mjs +31 -13
- package/src/local/git-commit.mjs +69 -0
- package/src/local/git-config-safety.mjs +55 -0
- package/src/local/git-log-parser.mjs +41 -0
- package/src/local/git-metadata-boundary.mjs +77 -0
- package/src/local/git-metadata-tree-safety.mjs +59 -0
- package/src/local/git-operation-state.mjs +19 -0
- package/src/local/git-service.mjs +165 -30
- package/src/local/hardened-npm-download-timeout.mjs +46 -0
- package/src/local/hardened-npm-download.mjs +109 -0
- package/src/local/hardened-npm-extract.mjs +20 -0
- package/src/local/hardened-npm-verification.mjs +104 -0
- package/src/local/hardened-npm.mjs +199 -0
- package/src/local/job-runner.mjs +244 -89
- package/src/local/lifecycle.mjs +6 -0
- package/src/local/log.mjs +19 -45
- package/src/local/macos-background-input.mjs +398 -0
- package/src/local/macos-idle-sleep-assertion.mjs +65 -0
- package/src/local/macos-trust-broker.mjs +404 -0
- package/src/local/managed-job-cancellation.mjs +42 -0
- package/src/local/managed-job-capacity.mjs +16 -0
- package/src/local/managed-job-directory-generation.mjs +60 -0
- package/src/local/managed-job-directory.mjs +75 -0
- package/src/local/managed-job-durable-process.mjs +49 -0
- package/src/local/managed-job-lock.mjs +46 -14
- package/src/local/managed-job-plan.mjs +38 -14
- package/src/local/managed-job-projection.mjs +23 -15
- package/src/local/managed-job-retention.mjs +128 -0
- package/src/local/managed-job-runner-claim.mjs +70 -0
- package/src/local/managed-job-runner.mjs +35 -10
- package/src/local/managed-job-storage.mjs +22 -6
- package/src/local/managed-job-terminal-maintenance.mjs +40 -0
- package/src/local/managed-job-terminal.mjs +150 -0
- package/src/local/managed-jobs.mjs +424 -287
- package/src/local/npm-cli.mjs +42 -0
- package/src/local/npm-environment.mjs +37 -0
- package/src/local/operation-authorization.mjs +68 -324
- package/src/local/operation-risk.mjs +51 -4
- package/src/local/owner-state-lock.mjs +118 -0
- package/src/local/package-identity.mjs +9 -0
- package/src/local/patch.mjs +20 -18
- package/src/local/path-inspection.mjs +23 -0
- package/src/local/policy.mjs +19 -0
- package/src/local/private-toolchain-integrity.mjs +54 -0
- package/src/local/process-execution.mjs +87 -75
- package/src/local/process-foreground-timeout.mjs +50 -0
- package/src/local/process-identity.mjs +41 -7
- package/src/local/process-nonreplayable-settlement.mjs +50 -0
- package/src/local/process-result-projection.mjs +22 -0
- package/src/local/process-session-events.mjs +47 -0
- package/src/local/process-session-remote-activity.mjs +10 -0
- package/src/local/process-session-termination.mjs +73 -0
- package/src/local/process-sessions.mjs +144 -112
- package/src/local/process-tracker.mjs +140 -13
- package/src/local/process-tree-ownership-types.d.ts +37 -0
- package/src/local/process-tree-ownership.mjs +57 -0
- package/src/local/process-tree-signal.mjs +34 -0
- package/src/local/process-tree-snapshot.mjs +77 -0
- package/src/local/process-tree-supervisor.mjs +69 -0
- package/src/local/process-tree.mjs +11 -53
- package/src/local/project-metadata.mjs +19 -6
- package/src/local/relay-call-recovery.mjs +58 -38
- package/src/local/relay-connection-classification.mjs +131 -0
- package/src/local/relay-connection-support.mjs +91 -0
- package/src/local/relay-connection.mjs +179 -272
- package/src/local/relay-diagnostics.mjs +91 -0
- package/src/local/relay-heartbeat.mjs +119 -0
- package/src/local/relay-liveness.mjs +109 -0
- package/src/local/relay-peer-diagnostics.mjs +29 -0
- package/src/local/release-runtime-lock.mjs +18 -0
- package/src/local/remote-activity-idle-sleep-guard.mjs +77 -0
- package/src/local/remote-configuration.mjs +48 -0
- package/src/local/resilient-relay-connection.mjs +178 -0
- package/src/local/resource-admission-diagnostics.mjs +52 -0
- package/src/local/resource-admission-policy.mjs +115 -0
- package/src/local/resource-admission.mjs +339 -0
- package/src/local/resource-build-root.mjs +83 -0
- package/src/local/resource-cargo-concurrency.mjs +38 -0
- package/src/local/resource-cmake-concurrency.mjs +42 -0
- package/src/local/resource-command-concurrency.mjs +37 -0
- package/src/local/resource-command-profile.mjs +176 -0
- package/src/local/resource-coordinator-accounting.mjs +21 -0
- package/src/local/resource-cpu-window.mjs +20 -0
- package/src/local/resource-disk-headroom.mjs +13 -0
- package/src/local/resource-elastic-memory.mjs +19 -0
- package/src/local/resource-elastic-request.mjs +36 -0
- package/src/local/resource-foreground-wait.mjs +29 -0
- package/src/local/resource-go-concurrency.mjs +43 -0
- package/src/local/resource-gradle-concurrency.mjs +57 -0
- package/src/local/resource-host-cache.mjs +39 -0
- package/src/local/resource-host-darwin.mjs +54 -0
- package/src/local/resource-host-linux.mjs +35 -0
- package/src/local/resource-host-sample-file.mjs +23 -0
- package/src/local/resource-host-snapshot.mjs +99 -0
- package/src/local/resource-lease-accounting.mjs +119 -0
- package/src/local/resource-light-command.mjs +6 -0
- package/src/local/resource-make-concurrency.mjs +42 -0
- package/src/local/resource-maven-concurrency.mjs +38 -0
- package/src/local/resource-ninja-command-concurrency.mjs +20 -0
- package/src/local/resource-ninja-concurrency.mjs +28 -0
- package/src/local/resource-operations.mjs +26 -10
- package/src/local/resource-pressure.mjs +67 -0
- package/src/local/resource-probe-command.mjs +35 -0
- package/src/local/resource-process-admission.mjs +59 -0
- package/src/local/resource-process-ancestry-cache.mjs +43 -0
- package/src/local/resource-process-ancestry.mjs +32 -0
- package/src/local/resource-process-priority.mjs +15 -0
- package/src/local/resource-project-key.mjs +53 -0
- package/src/local/resource-pytest-concurrency.mjs +33 -0
- package/src/local/resource-release-control-classification.mjs +14 -0
- package/src/local/resource-release-control-executable.mjs +70 -0
- package/src/local/resource-release-control-workspace.mjs +41 -0
- package/src/local/resource-request-contract.mjs +30 -0
- package/src/local/resource-script-classification.mjs +44 -0
- package/src/local/resource-shell-analysis.mjs +58 -0
- package/src/local/resource-staging-recovery.mjs +97 -0
- package/src/local/resource-swift-concurrency.mjs +31 -0
- package/src/local/resource-transaction-lock.mjs +189 -0
- package/src/local/resource-wait.mjs +48 -0
- package/src/local/resource-waiters.mjs +139 -0
- package/src/local/resource-xcode-command.mjs +7 -0
- package/src/local/resource-xcode-concurrency.mjs +34 -0
- package/src/local/resource-xcode-non-build.mjs +19 -0
- package/src/local/runtime-activation.mjs +700 -0
- package/src/local/runtime-activity-projection.mjs +48 -0
- package/src/local/runtime-capabilities.mjs +48 -15
- package/src/local/runtime-diagnostic-state.mjs +14 -0
- package/src/local/runtime-diagnostics.mjs +40 -13
- package/src/local/runtime-info-projection.mjs +60 -0
- package/src/local/runtime-info-relay-projection.mjs +21 -0
- package/src/local/runtime-paths.mjs +2 -1
- package/src/local/runtime-process-routing.mjs +33 -0
- package/src/local/runtime-relay-connection-options.mjs +44 -0
- package/src/local/runtime-relay-control.mjs +98 -0
- package/src/local/runtime-relay.mjs +26 -50
- package/src/local/runtime-reporting.mjs +37 -21
- package/src/local/runtime-resource-service.mjs +77 -0
- package/src/local/runtime-tool-handlers.mjs +13 -10
- package/src/local/runtime.mjs +244 -208
- package/src/local/secure-file.mjs +73 -20
- package/src/local/security-audit-dispatch.mjs +35 -0
- package/src/local/security-audit-log.mjs +215 -0
- package/src/local/security-audit-state.mjs +139 -0
- package/src/local/security-audit-storage.mjs +135 -0
- package/src/local/security-audit-warning.mjs +31 -0
- package/src/local/security-audit-worker.mjs +87 -0
- package/src/local/service-convergence.mjs +42 -1
- package/src/local/service-definition.mjs +24 -0
- package/src/local/service-environment.mjs +18 -10
- package/src/local/service-owner.mjs +146 -0
- package/src/local/service-ownership.mjs +17 -0
- package/src/local/service-restart-handoff.mjs +64 -0
- package/src/local/service-restart-scheduler.mjs +49 -0
- package/src/local/service-runtime-convergence.mjs +52 -0
- package/src/local/service-runtime.mjs +105 -0
- package/src/local/service-status.mjs +60 -0
- package/src/local/service.mjs +385 -92
- package/src/local/shell.mjs +39 -19
- package/src/local/ssh-key.mjs +158 -42
- package/src/local/state-inventory.mjs +50 -24
- package/src/local/state-owner-lock-inventory.mjs +23 -0
- package/src/local/state-root-owned-namespaces.mjs +83 -0
- package/src/local/state-root-retirement.mjs +89 -0
- package/src/local/state.mjs +386 -96
- package/src/local/stdio.mjs +96 -66
- package/src/local/support-state-projection.mjs +30 -0
- package/src/local/system-network-route.mjs +76 -0
- package/src/local/systemd-removal.mjs +20 -0
- package/src/local/tool-executor.mjs +85 -20
- package/src/local/tool-result-boundary.mjs +51 -0
- package/src/local/toolchain-operation-lock.mjs +41 -0
- package/src/local/tools.mjs +7 -5
- package/src/local/trusted-executable.mjs +53 -0
- package/src/local/trusted-git-executable.mjs +34 -0
- package/src/local/trusted-github-cli.mjs +24 -0
- package/src/local/windows-service-convergence.mjs +49 -0
- package/src/local/windows-service.mjs +52 -45
- package/src/local/worker-deployment-fingerprint.mjs +102 -0
- package/src/local/worker-deployment.mjs +48 -60
- package/src/local/worker-health.mjs +12 -4
- package/src/local/worker-secret-file.mjs +37 -17
- package/src/local/workspace-file-service.mjs +156 -239
- package/src/local/workspace-file-transaction.mjs +189 -0
- package/src/local/workspace-search.mjs +55 -0
- package/src/local/wrangler-toolchain/package-lock.json +1505 -0
- package/src/local/wrangler-toolchain/package.json +23 -0
- package/src/local/wrangler-toolchain-verification.mjs +135 -0
- package/src/local/wrangler-toolchain.mjs +188 -0
- package/src/shared/access-contract.json +7 -1
- package/src/shared/activation-recovery.mjs +49 -0
- package/src/shared/admin-auth.d.mts +2 -1
- package/src/shared/admin-auth.mjs +3 -3
- package/src/shared/authority-revocation.d.mts +9 -0
- package/src/shared/authority-revocation.mjs +28 -0
- package/src/shared/daemon-auth.d.mts +11 -0
- package/src/shared/daemon-auth.mjs +17 -0
- package/src/shared/device-session-auth.d.mts +20 -0
- package/src/shared/device-session-auth.mjs +51 -0
- package/src/shared/foreground-timeout.d.mts +15 -0
- package/src/shared/foreground-timeout.mjs +70 -0
- package/src/shared/log-redaction.d.mts +9 -0
- package/src/shared/log-redaction.mjs +51 -0
- package/src/shared/mcp-protocol.d.mts +27 -0
- package/src/shared/mcp-protocol.mjs +275 -0
- package/src/shared/project-overview-projection.d.mts +4 -0
- package/src/shared/project-overview-projection.mjs +96 -0
- package/src/shared/relay-contract.json +28 -0
- package/src/shared/result-projection.d.mts +2 -1
- package/src/shared/result-projection.mjs +13 -2
- package/src/shared/server-metadata.json +15 -9
- package/src/shared/tool-argument-validation.d.mts +17 -0
- package/src/shared/tool-argument-validation.mjs +325 -0
- package/src/shared/tool-call-capacity.d.mts +41 -0
- package/src/shared/tool-call-capacity.mjs +59 -0
- package/src/shared/tool-catalog.json +626 -57
- package/src/worker/access.ts +12 -0
- package/src/worker/account-admin.ts +55 -33
- package/src/worker/authority-revocations.ts +174 -0
- package/src/worker/authority.ts +52 -6
- package/src/worker/daemon-auth.ts +49 -68
- package/src/worker/daemon-channel.ts +36 -0
- package/src/worker/daemon-http-auth.ts +63 -0
- package/src/worker/daemon-http-channel.ts +120 -0
- package/src/worker/daemon-http-controller.ts +163 -0
- package/src/worker/daemon-http-protocol.ts +62 -0
- package/src/worker/daemon-http-registry.ts +82 -0
- package/src/worker/daemon-last-observation.ts +30 -0
- package/src/worker/daemon-liveness.ts +8 -6
- package/src/worker/daemon-ready-dispatch.ts +17 -0
- package/src/worker/daemon-ready-messages.ts +73 -0
- package/src/worker/daemon-ready-waiters.ts +79 -0
- package/src/worker/daemon-recovery-budget.ts +13 -0
- package/src/worker/daemon-registry.ts +58 -0
- package/src/worker/daemon-relay-diagnostics.ts +127 -0
- package/src/worker/daemon-socket-attachment.ts +55 -0
- package/src/worker/daemon-sockets.ts +72 -62
- package/src/worker/daemon-status.ts +38 -0
- package/src/worker/device-session-verifier.ts +129 -0
- package/src/worker/dpop.ts +157 -0
- package/src/worker/durable-process-timeout.ts +29 -0
- package/src/worker/errors.ts +57 -0
- package/src/worker/http.ts +112 -26
- package/src/worker/index.ts +446 -440
- package/src/worker/mcp-access.ts +57 -0
- package/src/worker/mcp-controller.ts +188 -0
- package/src/worker/mcp-http-accept.ts +11 -0
- package/src/worker/mcp-http-contract.ts +322 -0
- package/src/worker/mcp-initialization-compat.ts +141 -0
- package/src/worker/mcp-jsonrpc.ts +11 -29
- package/src/worker/mcp-removed-protocol.ts +17 -0
- package/src/worker/mcp-response-proxy.ts +135 -0
- package/src/worker/mcp-response-stream.ts +65 -0
- package/src/worker/mcp-stale-schema-compat.ts +57 -0
- package/src/worker/mcp-stream-proxy-contract.ts +48 -0
- package/src/worker/mcp-tool-call-input.ts +23 -0
- package/src/worker/nonce-store.ts +33 -35
- package/src/worker/oauth-authorization-page.ts +21 -1
- package/src/worker/oauth-client-admin.ts +52 -0
- package/src/worker/oauth-client-contract.ts +38 -0
- package/src/worker/oauth-controller.ts +107 -47
- package/src/worker/oauth-field-contract.ts +31 -0
- package/src/worker/oauth-record-contract.ts +7 -0
- package/src/worker/oauth-refresh-authority.ts +27 -0
- package/src/worker/oauth-refresh-exchange.ts +162 -0
- package/src/worker/oauth-refresh-families.ts +130 -27
- package/src/worker/oauth-refresh-persistence.ts +116 -0
- package/src/worker/oauth-state.ts +33 -18
- package/src/worker/oauth-store-validation.ts +131 -0
- package/src/worker/oauth-token-derivation.ts +33 -0
- package/src/worker/oauth-token-issuance.ts +119 -0
- package/src/worker/oauth-tokens.ts +56 -190
- package/src/worker/observability.ts +38 -5
- package/src/worker/pending-admission.ts +15 -0
- package/src/worker/pending-call-capacity.ts +108 -0
- package/src/worker/pending-call-contract.ts +42 -5
- package/src/worker/pending-call-deadlines.ts +75 -0
- package/src/worker/pending-calls.ts +131 -125
- package/src/worker/runtime-alarm-storage.ts +37 -0
- package/src/worker/runtime-alarm.ts +136 -0
- package/src/worker/server-info-activity.ts +36 -0
- package/src/worker/server-info-tool-delivery.ts +15 -0
- package/src/worker/server-info.ts +168 -0
- package/src/worker/tool-catalog.ts +47 -1
- package/src/worker/tool-timeout.ts +75 -14
- package/src/worker/websocket-protocol.ts +26 -2
- package/src/worker/worker-edge-guard.ts +90 -0
- package/src/worker/worker-edge-log.ts +65 -0
- package/src/worker/worker-entry.ts +52 -0
- package/src/worker/worker-mcp-config.ts +23 -0
- package/src/worker/worker-metadata.ts +48 -0
- package/src/worker/worker-rate-limit-key.ts +30 -0
- package/src/worker/worker-runtime-config.ts +20 -0
- package/src/worker/worker-static-routes.ts +54 -0
- package/src/worker/worker-task-lifetime.ts +18 -0
- package/tsconfig.local.json +17 -1
- package/wrangler.jsonc +13 -0
- package/src/local/cli-approval.mjs +0 -117
- package/src/local/operation-state-lock.mjs +0 -92
- package/src/worker/mcp-session.ts +0 -72
package/docs/TOOL_REFERENCE.md
CHANGED
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
> Generated from `src/shared/tool-catalog.json`. Do not edit this file manually.
|
|
4
4
|
|
|
5
|
-
This catalog is the authoritative public tool contract for names, availability classes, behavior annotations, and JSON input schemas.
|
|
5
|
+
This catalog is the authoritative public tool contract for names, local-daemon availability classes, behavior annotations, and JSON input schemas. An availability value describes the daemon policy ceiling, not authenticated remote-account entitlement. Remote account-role ceilings (including owner-only tools) and the effective-authority intersection are generated in [POLICY_REFERENCE.md](POLICY_REFERENCE.md).
|
|
6
6
|
|
|
7
|
-
Tool count: **
|
|
7
|
+
Tool count: **54**.
|
|
8
8
|
|
|
9
9
|
## Index
|
|
10
10
|
|
|
@@ -14,10 +14,12 @@ Tool count: **51**.
|
|
|
14
14
|
| [`project_overview`](#project_overview) | `always` | yes | no | yes | no |
|
|
15
15
|
| [`session_bootstrap`](#session_bootstrap) | `always` | yes | no | yes | no |
|
|
16
16
|
| [`resolve_task_capabilities`](#resolve_task_capabilities) | `always` | yes | no | yes | no |
|
|
17
|
-
| [`list_local_applications`](#list_local_applications) | `
|
|
17
|
+
| [`list_local_applications`](#list_local_applications) | `always` | yes | no | yes | yes |
|
|
18
18
|
| [`open_local_application`](#open_local_application) | `full` | no | no | no | yes |
|
|
19
19
|
| [`inspect_local_application`](#inspect_local_application) | `full` | yes | no | yes | yes |
|
|
20
20
|
| [`operate_local_application`](#operate_local_application) | `full` | no | yes | no | yes |
|
|
21
|
+
| [`computer_observe`](#computer_observe) | `full` | no | no | no | yes |
|
|
22
|
+
| [`computer_act`](#computer_act) | `full` | no | yes | no | yes |
|
|
21
23
|
| [`browser_status`](#browser_status) | `full` | no | no | yes | yes |
|
|
22
24
|
| [`pair_browser_extension`](#pair_browser_extension) | `full` | no | no | no | yes |
|
|
23
25
|
| [`browser_list_tabs`](#browser_list_tabs) | `full` | yes | no | yes | yes |
|
|
@@ -47,6 +49,7 @@ Tool count: **51**.
|
|
|
47
49
|
| [`git_diff`](#git_diff) | `always` | yes | no | yes | no |
|
|
48
50
|
| [`git_log`](#git_log) | `always` | yes | no | yes | no |
|
|
49
51
|
| [`git_show`](#git_show) | `always` | yes | no | yes | no |
|
|
52
|
+
| [`git_commit`](#git_commit) | `direct-exec` | no | no | no | no |
|
|
50
53
|
| [`run_process`](#run_process) | `direct-exec` | no | yes | no | yes |
|
|
51
54
|
| [`start_process`](#start_process) | `direct-exec` | no | yes | no | yes |
|
|
52
55
|
| [`read_process`](#read_process) | `direct-exec` | yes | no | yes | no |
|
|
@@ -66,7 +69,7 @@ Tool count: **51**.
|
|
|
66
69
|
|
|
67
70
|
**Server information**
|
|
68
71
|
|
|
69
|
-
Return
|
|
72
|
+
Return live authorization and daemon status. Use detail=summary for routine version, authority, readiness, relay, capacity, and timeout checks; use the default/full projection for exact tool membership, OAuth metadata, account identity, and detailed observability.
|
|
70
73
|
|
|
71
74
|
| Contract field | Value |
|
|
72
75
|
|---|---|
|
|
@@ -81,6 +84,17 @@ Return authenticated account authority, effective policy/tools, daemon capabilit
|
|
|
81
84
|
```json
|
|
82
85
|
{
|
|
83
86
|
"type": "object",
|
|
87
|
+
"properties": {
|
|
88
|
+
"detail": {
|
|
89
|
+
"type": "string",
|
|
90
|
+
"enum": [
|
|
91
|
+
"summary",
|
|
92
|
+
"full"
|
|
93
|
+
],
|
|
94
|
+
"default": "full",
|
|
95
|
+
"description": "Use summary for compact health/authority status; use full for complete tool, OAuth, and observability diagnostics."
|
|
96
|
+
}
|
|
97
|
+
},
|
|
84
98
|
"additionalProperties": false
|
|
85
99
|
}
|
|
86
100
|
```
|
|
@@ -89,7 +103,7 @@ Return authenticated account authority, effective policy/tools, daemon capabilit
|
|
|
89
103
|
|
|
90
104
|
**Project overview**
|
|
91
105
|
|
|
92
|
-
Summarize the connected workspace and
|
|
106
|
+
Summarize the connected workspace, repository root, top-level entries, and project-facing runtime context. Use detail=summary for a compact inventory/readiness projection; use full for exact tool membership, account authority detail, and complete top-level metadata.
|
|
93
107
|
|
|
94
108
|
| Contract field | Value |
|
|
95
109
|
|---|---|
|
|
@@ -104,6 +118,17 @@ Summarize the connected workspace and repository. Remote responses report the au
|
|
|
104
118
|
```json
|
|
105
119
|
{
|
|
106
120
|
"type": "object",
|
|
121
|
+
"properties": {
|
|
122
|
+
"detail": {
|
|
123
|
+
"type": "string",
|
|
124
|
+
"enum": [
|
|
125
|
+
"summary",
|
|
126
|
+
"full"
|
|
127
|
+
],
|
|
128
|
+
"default": "full",
|
|
129
|
+
"description": "Use summary for compact workspace/inventory and authority counts; use full for exact tools, account identity, routing detail, and per-entry paths/sizes."
|
|
130
|
+
}
|
|
131
|
+
},
|
|
107
132
|
"additionalProperties": false
|
|
108
133
|
}
|
|
109
134
|
```
|
|
@@ -112,7 +137,7 @@ Summarize the connected workspace and repository. Remote responses report the au
|
|
|
112
137
|
|
|
113
138
|
**Load session bootstrap**
|
|
114
139
|
|
|
115
|
-
Load built-in working agreements, bounded automatic project facts, user-global
|
|
140
|
+
Load built-in working agreements, bounded automatic project facts, authority-permitted user-global guidance, root workspace instructions, and capability refresh metadata. Delegated remote accounts do not read the daemon owner's home-scoped agent config unless their effective authority permits unrestricted paths. Clients call it explicitly when refreshed authority-scoped project context is needed; MCP 2026-07-28 has no initialization-time compatibility adapter.
|
|
116
141
|
|
|
117
142
|
| Contract field | Value |
|
|
118
143
|
|---|---|
|
|
@@ -142,7 +167,7 @@ Load built-in working agreements, bounded automatic project facts, user-global a
|
|
|
142
167
|
|
|
143
168
|
**Resolve task capabilities**
|
|
144
169
|
|
|
145
|
-
Rescan
|
|
170
|
+
Rescan authority-permitted task-relevant instructions, skills, registered commands, installed applications, browser metadata, and the effective tool catalog. Delegated remote accounts remain confined to project-scoped capability context unless their effective authority permits unrestricted paths. Return bounded set-level execution routes, ranked tools, routing ambiguity, and an optional selected skill. Pass known_refresh_fingerprint to omit unchanged static instructions while recomputing task-specific ranking. The result is advisory: direct Bash and every other policy-allowed tool remain available.
|
|
146
171
|
|
|
147
172
|
| Contract field | Value |
|
|
148
173
|
|---|---|
|
|
@@ -178,6 +203,12 @@ Rescan built-in and automatic project context, local instruction files, skills,
|
|
|
178
203
|
"include_selected_skill": {
|
|
179
204
|
"type": "boolean",
|
|
180
205
|
"default": true
|
|
206
|
+
},
|
|
207
|
+
"known_refresh_fingerprint": {
|
|
208
|
+
"type": "string",
|
|
209
|
+
"pattern": "^[a-f0-9]{64}$",
|
|
210
|
+
"maxLength": 64,
|
|
211
|
+
"description": "Previous refresh fingerprint. When it still matches, unchanged static instructions are omitted while task-specific ranking is recomputed."
|
|
181
212
|
}
|
|
182
213
|
},
|
|
183
214
|
"required": [
|
|
@@ -194,7 +225,7 @@ Discover installed local applications and launchers without reading their docume
|
|
|
194
225
|
|
|
195
226
|
| Contract field | Value |
|
|
196
227
|
|---|---|
|
|
197
|
-
| Availability | `
|
|
228
|
+
| Availability | `always` |
|
|
198
229
|
| Read-only hint | yes |
|
|
199
230
|
| Destructive hint | no |
|
|
200
231
|
| Idempotent hint | yes |
|
|
@@ -226,7 +257,7 @@ Discover installed local applications and launchers without reading their docume
|
|
|
226
257
|
|
|
227
258
|
**Open local application**
|
|
228
259
|
|
|
229
|
-
Open a named local application, optionally with a document or URL target, using the operating system launcher.
|
|
260
|
+
Open a named local application, optionally with a document or URL target, using the operating system launcher. Launch is non-idempotent: cancellation is checked immediately before invoking the launcher, but once the launcher process invocation is attempted, timeout, cancellation, or response loss is an unknown launch outcome and callers should inspect application state before retrying. That fixed ambiguous settlement is returned as a public, non-retryable MCP error. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
230
261
|
|
|
231
262
|
| Contract field | Value |
|
|
232
263
|
|---|---|
|
|
@@ -259,7 +290,7 @@ Open a named local application, optionally with a document or URL target, using
|
|
|
259
290
|
"timeout_seconds": {
|
|
260
291
|
"type": "integer",
|
|
261
292
|
"minimum": 1,
|
|
262
|
-
"maximum":
|
|
293
|
+
"maximum": 60,
|
|
263
294
|
"default": 30
|
|
264
295
|
}
|
|
265
296
|
},
|
|
@@ -273,7 +304,7 @@ Open a named local application, optionally with a document or URL target, using
|
|
|
273
304
|
|
|
274
305
|
**Inspect local application UI**
|
|
275
306
|
|
|
276
|
-
Inspect a bounded macOS Accessibility tree for a running application. Requires local Accessibility permission and never executes arbitrary AppleScript supplied by the caller.
|
|
307
|
+
Inspect a bounded macOS Accessibility tree for a running application. Requires local Accessibility permission and never executes arbitrary AppleScript supplied by the caller. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
277
308
|
|
|
278
309
|
| Contract field | Value |
|
|
279
310
|
|---|---|
|
|
@@ -319,7 +350,7 @@ Inspect a bounded macOS Accessibility tree for a running application. Requires l
|
|
|
319
350
|
"timeout_seconds": {
|
|
320
351
|
"type": "integer",
|
|
321
352
|
"minimum": 1,
|
|
322
|
-
"maximum":
|
|
353
|
+
"maximum": 60,
|
|
323
354
|
"default": 30
|
|
324
355
|
}
|
|
325
356
|
},
|
|
@@ -333,7 +364,7 @@ Inspect a bounded macOS Accessibility tree for a running application. Requires l
|
|
|
333
364
|
|
|
334
365
|
**Operate local application UI**
|
|
335
366
|
|
|
336
|
-
Perform a structured macOS Accessibility action on a matched UI element. Text can be supplied through a registered local resource so secret values do not enter MCP arguments.
|
|
367
|
+
Perform a structured macOS Accessibility action on a matched UI element. check/uncheck are desired-state operations: they read the current checkbox/radio state at dispatch time, skip input when already satisfied, and otherwise issue at most one AXPress (uncheck is checkbox-only). Text can be supplied through a registered local resource so secret values do not enter MCP arguments. keystroke focuses the matched AX target and delivers surrogate-safe Unicode chunks with public PID-scoped CoreGraphics keyboard events; key_press delivers a layout-independent special key (Enter, Tab, Escape, Backspace, Delete, arrows, Home/End, PageUp/PageDown, or Space) with optional Shift+, likewise PID-scoped and without making the application frontmost. Both return input_transport=public-cgevent-pid; Meta/Control/Alt and character shortcuts are deliberately unsupported because inactive-AppKit validation did not establish reliable command-shortcut semantics. Cancellation is re-checked after asynchronous local-resource resolution and before invoking the fixed JXA mutation helper. Explicit JXA selector/geometry/action preflight errors remain definite, but once the mutating osascript invocation is attempted, timeout, cancellation, missing output, or malformed helper settlement is an unknown action outcome and must not be replayed blindly. Fixed launch/Accessibility/visual ambiguous settlements are returned as public, non-retryable MCP errors. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
337
368
|
|
|
338
369
|
| Contract field | Value |
|
|
339
370
|
|---|---|
|
|
@@ -357,13 +388,17 @@ Perform a structured macOS Accessibility action on a matched UI element. Text ca
|
|
|
357
388
|
},
|
|
358
389
|
"action": {
|
|
359
390
|
"type": "string",
|
|
391
|
+
"description": "Structured Accessibility action. check/uncheck are idempotent desired-state actions; check accepts checkbox or radio-button targets, while uncheck accepts checkbox targets.",
|
|
360
392
|
"enum": [
|
|
361
393
|
"activate",
|
|
362
394
|
"click",
|
|
395
|
+
"check",
|
|
396
|
+
"uncheck",
|
|
363
397
|
"set_value",
|
|
364
398
|
"focus",
|
|
365
399
|
"press",
|
|
366
|
-
"keystroke"
|
|
400
|
+
"keystroke",
|
|
401
|
+
"key_press"
|
|
367
402
|
]
|
|
368
403
|
},
|
|
369
404
|
"selector": {
|
|
@@ -409,6 +444,11 @@ Perform a structured macOS Accessibility action on a matched UI element. Text ca
|
|
|
409
444
|
"type": "string",
|
|
410
445
|
"pattern": "^[a-z][a-z0-9._-]{0,63}$"
|
|
411
446
|
},
|
|
447
|
+
"key": {
|
|
448
|
+
"type": "string",
|
|
449
|
+
"maxLength": 100,
|
|
450
|
+
"description": "Required for key_press. One layout-independent special key: Enter, Tab, Escape, Backspace, Delete, ArrowLeft, ArrowUp, ArrowRight, ArrowDown, Home, End, PageUp, PageDown, or Space, optionally prefixed with Shift+."
|
|
451
|
+
},
|
|
412
452
|
"include_menus": {
|
|
413
453
|
"type": "boolean",
|
|
414
454
|
"default": false,
|
|
@@ -423,7 +463,7 @@ Perform a structured macOS Accessibility action on a matched UI element. Text ca
|
|
|
423
463
|
"timeout_seconds": {
|
|
424
464
|
"type": "integer",
|
|
425
465
|
"minimum": 1,
|
|
426
|
-
"maximum":
|
|
466
|
+
"maximum": 60,
|
|
427
467
|
"default": 30
|
|
428
468
|
}
|
|
429
469
|
},
|
|
@@ -434,11 +474,504 @@ Perform a structured macOS Accessibility action on a matched UI element. Text ca
|
|
|
434
474
|
}
|
|
435
475
|
```
|
|
436
476
|
|
|
477
|
+
## `computer_observe`
|
|
478
|
+
|
|
479
|
+
**Observe computer surface**
|
|
480
|
+
|
|
481
|
+
Create a snapshot-bound browser or desktop observation. Browser mode combines executable DOM refs with a real Chromium Accessibility snapshot, layout geometry, document epoch, and an optional screenshot captured through the same bounded CDP session when available; high-confidence AX nodes are fused back to executable action_ref values, while executable DOM candidates are salience-ranked globally across accessible frames. Cancellation is checked again after asynchronous capture and before snapshot publication, so a cancelled observe cannot leave an actionable snapshot_id in the bounded store. Use computer_act with the exact snapshot_id instead of carrying selectors across changing UI state. timeout_seconds is one end-to-end observation budget; compound screenshot/semantic/window-revalidation stages consume the remaining deadline rather than restarting it.
|
|
482
|
+
|
|
483
|
+
| Contract field | Value |
|
|
484
|
+
|---|---|
|
|
485
|
+
| Availability | `full` |
|
|
486
|
+
| Read-only hint | no |
|
|
487
|
+
| Destructive hint | no |
|
|
488
|
+
| Idempotent hint | no |
|
|
489
|
+
| Open-world hint | yes |
|
|
490
|
+
|
|
491
|
+
### Input schema
|
|
492
|
+
|
|
493
|
+
```json
|
|
494
|
+
{
|
|
495
|
+
"type": "object",
|
|
496
|
+
"additionalProperties": false,
|
|
497
|
+
"properties": {
|
|
498
|
+
"surface": {
|
|
499
|
+
"type": "string",
|
|
500
|
+
"enum": [
|
|
501
|
+
"browser",
|
|
502
|
+
"application"
|
|
503
|
+
]
|
|
504
|
+
},
|
|
505
|
+
"tab_id": {
|
|
506
|
+
"type": "integer",
|
|
507
|
+
"minimum": 1,
|
|
508
|
+
"description": "Browser tab to observe. Omit to use the active tab."
|
|
509
|
+
},
|
|
510
|
+
"application": {
|
|
511
|
+
"type": "string",
|
|
512
|
+
"minLength": 1,
|
|
513
|
+
"maxLength": 300,
|
|
514
|
+
"description": "Required when surface=application."
|
|
515
|
+
},
|
|
516
|
+
"include_screenshot": {
|
|
517
|
+
"type": "boolean",
|
|
518
|
+
"default": true,
|
|
519
|
+
"description": "Include a browser viewport screenshot or, for macOS application observations, a best-effort target-window screenshot. Application screenshot failure does not discard Accessibility state."
|
|
520
|
+
},
|
|
521
|
+
"screenshot_format": {
|
|
522
|
+
"type": "string",
|
|
523
|
+
"enum": [
|
|
524
|
+
"png",
|
|
525
|
+
"jpeg"
|
|
526
|
+
],
|
|
527
|
+
"default": "png"
|
|
528
|
+
},
|
|
529
|
+
"screenshot_quality": {
|
|
530
|
+
"type": "integer",
|
|
531
|
+
"minimum": 1,
|
|
532
|
+
"maximum": 100,
|
|
533
|
+
"default": 90
|
|
534
|
+
},
|
|
535
|
+
"max_elements": {
|
|
536
|
+
"type": "integer",
|
|
537
|
+
"minimum": 1,
|
|
538
|
+
"maximum": 1000,
|
|
539
|
+
"default": 300
|
|
540
|
+
},
|
|
541
|
+
"max_ax_nodes": {
|
|
542
|
+
"type": "integer",
|
|
543
|
+
"minimum": 1,
|
|
544
|
+
"maximum": 2000,
|
|
545
|
+
"default": 600,
|
|
546
|
+
"description": "Browser only. Maximum Chromium Accessibility nodes retained after salience ranking."
|
|
547
|
+
},
|
|
548
|
+
"max_frames": {
|
|
549
|
+
"type": "integer",
|
|
550
|
+
"minimum": 1,
|
|
551
|
+
"maximum": 64,
|
|
552
|
+
"default": 32,
|
|
553
|
+
"description": "Browser only. Maximum CDP frame documents considered for the Accessibility snapshot."
|
|
554
|
+
},
|
|
555
|
+
"ax_depth": {
|
|
556
|
+
"type": "integer",
|
|
557
|
+
"minimum": 1,
|
|
558
|
+
"maximum": 16,
|
|
559
|
+
"default": 12,
|
|
560
|
+
"description": "Browser only. Maximum Chromium Accessibility tree depth requested per frame."
|
|
561
|
+
},
|
|
562
|
+
"focus_query": {
|
|
563
|
+
"type": "string",
|
|
564
|
+
"maxLength": 1000,
|
|
565
|
+
"description": "Optional task/target hint used only to rank bounded browser DOM/Chromium Accessibility or macOS application Accessibility observations; it never becomes a selector or action. Observation metadata reports whether the bounded scan matched the query and whether absence was searched exhaustively."
|
|
566
|
+
},
|
|
567
|
+
"max_depth": {
|
|
568
|
+
"type": "integer",
|
|
569
|
+
"minimum": 1,
|
|
570
|
+
"maximum": 12,
|
|
571
|
+
"default": 6,
|
|
572
|
+
"description": "Application accessibility traversal depth."
|
|
573
|
+
},
|
|
574
|
+
"include_values": {
|
|
575
|
+
"type": "boolean",
|
|
576
|
+
"default": false
|
|
577
|
+
},
|
|
578
|
+
"include_menus": {
|
|
579
|
+
"type": "boolean",
|
|
580
|
+
"default": false,
|
|
581
|
+
"description": "Application only. Include menu subtrees."
|
|
582
|
+
},
|
|
583
|
+
"all_frames": {
|
|
584
|
+
"type": "boolean",
|
|
585
|
+
"default": true,
|
|
586
|
+
"description": "Browser only. Inspect accessible frames within the aggregate element budget."
|
|
587
|
+
},
|
|
588
|
+
"timeout_seconds": {
|
|
589
|
+
"type": "integer",
|
|
590
|
+
"minimum": 1,
|
|
591
|
+
"maximum": 60,
|
|
592
|
+
"default": 30
|
|
593
|
+
}
|
|
594
|
+
},
|
|
595
|
+
"required": [
|
|
596
|
+
"surface"
|
|
597
|
+
]
|
|
598
|
+
}
|
|
599
|
+
```
|
|
600
|
+
|
|
601
|
+
## `computer_act`
|
|
602
|
+
|
|
603
|
+
**Act on computer snapshot**
|
|
604
|
+
|
|
605
|
+
Perform one snapshot-bound browser or desktop action and then observe/verify the effect. Semantic targets use refs from computer_observe. Browser click/double-click/hover/scroll may use normalized_viewport coordinates from the same navigation-coherent CDP screenshot; browser drag uses a source target plus destination from that same snapshot and requires ref-to-ref or point-to-point evidence. macOS application drag uses two normalized points from the same window screenshot, and application scroll uses one normalized point plus bounded wheel deltas; both require the opt-in snapshot-bound native pixel backend and do not guess Accessibility fallbacks. Point dispatch revalidates the exact screenshot immediately before native/trusted input; browser ref drag revalidates both trusted backend identities and in-viewport geometry before any drag input; browser ref scroll revalidates the anchor identity and requires its content quad to remain in viewport before one trusted wheel event. Browser reload/back/forward also bind the observed tab URL, document epoch, and current history-list slot and revalidate those authorities immediately before the navigation mutation; stale or unavailable history authority fails before dispatch. Results distinguish dispatch_status from effect_status; unknown outcomes must be inspected before retrying. dispatch_status=unknown is driven only by fixed lower-layer mutation-settlement markers, so a resource or preflight timeout before mutation remains a definite failure. Deterministic post-observation checks expose `verification.post_checks[].evidence_source` (`browser_tab_state`, `browser_semantic`, `application_process`, `application_workspace`, `application_accessibility`, or `screenshot`) so callers can distinguish state evidence from pixel evidence. Browser post-state defaults to a compact summary plus bounded semantic delta; post_screenshot=auto avoids redundant images unless visual evidence or ambiguous dispatch requires one. Request post_observation_detail=full only when the full tree is needed. timeout_seconds is one end-to-end action budget spanning preflight, the single dispatch attempt, verification, and post-observation; internal stages receive only the remaining deadline.
|
|
606
|
+
|
|
607
|
+
| Contract field | Value |
|
|
608
|
+
|---|---|
|
|
609
|
+
| Availability | `full` |
|
|
610
|
+
| Read-only hint | no |
|
|
611
|
+
| Destructive hint | yes |
|
|
612
|
+
| Idempotent hint | no |
|
|
613
|
+
| Open-world hint | yes |
|
|
614
|
+
|
|
615
|
+
### Input schema
|
|
616
|
+
|
|
617
|
+
```json
|
|
618
|
+
{
|
|
619
|
+
"type": "object",
|
|
620
|
+
"additionalProperties": false,
|
|
621
|
+
"properties": {
|
|
622
|
+
"surface": {
|
|
623
|
+
"type": "string",
|
|
624
|
+
"enum": [
|
|
625
|
+
"browser",
|
|
626
|
+
"application"
|
|
627
|
+
]
|
|
628
|
+
},
|
|
629
|
+
"snapshot_id": {
|
|
630
|
+
"type": "string",
|
|
631
|
+
"pattern": "^cu_[A-Za-z0-9_-]{8,80}$"
|
|
632
|
+
},
|
|
633
|
+
"action": {
|
|
634
|
+
"type": "string",
|
|
635
|
+
"description": "Surface action. For application refs, check/uncheck are idempotent desired-state actions verified by post-observation checked state; their required target state cannot be weakened by expect. Application key_press is ref-only and sends one layout-independent special key, optionally Shift-modified, through PID-scoped CoreGraphics without activating the app.",
|
|
636
|
+
"enum": [
|
|
637
|
+
"navigate",
|
|
638
|
+
"reload",
|
|
639
|
+
"back",
|
|
640
|
+
"forward",
|
|
641
|
+
"click",
|
|
642
|
+
"double_click",
|
|
643
|
+
"hover",
|
|
644
|
+
"drag",
|
|
645
|
+
"scroll",
|
|
646
|
+
"fill",
|
|
647
|
+
"type_text",
|
|
648
|
+
"select",
|
|
649
|
+
"check",
|
|
650
|
+
"uncheck",
|
|
651
|
+
"focus",
|
|
652
|
+
"press",
|
|
653
|
+
"submit",
|
|
654
|
+
"scroll_into_view",
|
|
655
|
+
"activate",
|
|
656
|
+
"set_value",
|
|
657
|
+
"keystroke",
|
|
658
|
+
"key_press"
|
|
659
|
+
]
|
|
660
|
+
},
|
|
661
|
+
"target": {
|
|
662
|
+
"oneOf": [
|
|
663
|
+
{
|
|
664
|
+
"type": "object",
|
|
665
|
+
"additionalProperties": false,
|
|
666
|
+
"properties": {
|
|
667
|
+
"ref": {
|
|
668
|
+
"type": "string",
|
|
669
|
+
"minLength": 1,
|
|
670
|
+
"maxLength": 100
|
|
671
|
+
}
|
|
672
|
+
},
|
|
673
|
+
"required": [
|
|
674
|
+
"ref"
|
|
675
|
+
]
|
|
676
|
+
},
|
|
677
|
+
{
|
|
678
|
+
"type": "object",
|
|
679
|
+
"additionalProperties": false,
|
|
680
|
+
"properties": {
|
|
681
|
+
"point": {
|
|
682
|
+
"type": "object",
|
|
683
|
+
"additionalProperties": false,
|
|
684
|
+
"properties": {
|
|
685
|
+
"x": {
|
|
686
|
+
"type": "number",
|
|
687
|
+
"minimum": 0,
|
|
688
|
+
"exclusiveMaximum": 1
|
|
689
|
+
},
|
|
690
|
+
"y": {
|
|
691
|
+
"type": "number",
|
|
692
|
+
"minimum": 0,
|
|
693
|
+
"exclusiveMaximum": 1
|
|
694
|
+
},
|
|
695
|
+
"space": {
|
|
696
|
+
"type": "string",
|
|
697
|
+
"enum": [
|
|
698
|
+
"normalized_viewport"
|
|
699
|
+
],
|
|
700
|
+
"default": "normalized_viewport"
|
|
701
|
+
}
|
|
702
|
+
},
|
|
703
|
+
"required": [
|
|
704
|
+
"x",
|
|
705
|
+
"y"
|
|
706
|
+
]
|
|
707
|
+
}
|
|
708
|
+
},
|
|
709
|
+
"required": [
|
|
710
|
+
"point"
|
|
711
|
+
]
|
|
712
|
+
}
|
|
713
|
+
],
|
|
714
|
+
"description": "Snapshot-bound semantic ref; a normalized point is also allowed for browser click/double-click/hover/drag/scroll against the exact navigation-coherent CDP screenshot, and for macOS application click/double-click/drag/scroll against the exact window screenshot. Application click point delivery may prefer one unique addressable Accessibility control under the point. Application double_click is deliberately point-only and always uses one snapshot-bound native pixel settlement; it is never approximated by repeated AXPress. Arbitrary/custom-drawn single-click pixels plus all application double-click, drag, and scroll points require the snapshot's opt-in native pixel backend. For drag this is the source endpoint; for scroll this is the wheel anchor. Omit only for targetless actions."
|
|
715
|
+
},
|
|
716
|
+
"destination": {
|
|
717
|
+
"oneOf": [
|
|
718
|
+
{
|
|
719
|
+
"type": "object",
|
|
720
|
+
"additionalProperties": false,
|
|
721
|
+
"properties": {
|
|
722
|
+
"ref": {
|
|
723
|
+
"type": "string",
|
|
724
|
+
"minLength": 1,
|
|
725
|
+
"maxLength": 100
|
|
726
|
+
}
|
|
727
|
+
},
|
|
728
|
+
"required": [
|
|
729
|
+
"ref"
|
|
730
|
+
]
|
|
731
|
+
},
|
|
732
|
+
{
|
|
733
|
+
"type": "object",
|
|
734
|
+
"additionalProperties": false,
|
|
735
|
+
"properties": {
|
|
736
|
+
"point": {
|
|
737
|
+
"type": "object",
|
|
738
|
+
"additionalProperties": false,
|
|
739
|
+
"properties": {
|
|
740
|
+
"x": {
|
|
741
|
+
"type": "number",
|
|
742
|
+
"minimum": 0,
|
|
743
|
+
"exclusiveMaximum": 1
|
|
744
|
+
},
|
|
745
|
+
"y": {
|
|
746
|
+
"type": "number",
|
|
747
|
+
"minimum": 0,
|
|
748
|
+
"exclusiveMaximum": 1
|
|
749
|
+
},
|
|
750
|
+
"space": {
|
|
751
|
+
"type": "string",
|
|
752
|
+
"enum": [
|
|
753
|
+
"normalized_viewport"
|
|
754
|
+
],
|
|
755
|
+
"default": "normalized_viewport"
|
|
756
|
+
}
|
|
757
|
+
},
|
|
758
|
+
"required": [
|
|
759
|
+
"x",
|
|
760
|
+
"y"
|
|
761
|
+
]
|
|
762
|
+
}
|
|
763
|
+
},
|
|
764
|
+
"required": [
|
|
765
|
+
"point"
|
|
766
|
+
]
|
|
767
|
+
}
|
|
768
|
+
],
|
|
769
|
+
"description": "Drag destination from the same computer snapshot. Browser drag requires ref-to-ref or normalized-point-to-point evidence; mixed evidence types are rejected. macOS application drag currently requires normalized point source and destination from the same window screenshot and the snapshot-bound native pixel backend."
|
|
770
|
+
},
|
|
771
|
+
"delta_x": {
|
|
772
|
+
"type": "number",
|
|
773
|
+
"minimum": -10000,
|
|
774
|
+
"maximum": 10000,
|
|
775
|
+
"default": 0,
|
|
776
|
+
"description": "Browser or macOS application scroll only. Horizontal trusted wheel delta in logical pixels; positive values scroll right. At least one of delta_x or delta_y must be non-zero."
|
|
777
|
+
},
|
|
778
|
+
"delta_y": {
|
|
779
|
+
"type": "number",
|
|
780
|
+
"minimum": -10000,
|
|
781
|
+
"maximum": 10000,
|
|
782
|
+
"default": 0,
|
|
783
|
+
"description": "Browser or macOS application scroll only. Vertical trusted wheel delta in logical pixels; positive values scroll down. At least one of delta_x or delta_y must be non-zero."
|
|
784
|
+
},
|
|
785
|
+
"url": {
|
|
786
|
+
"type": "string",
|
|
787
|
+
"maxLength": 32768,
|
|
788
|
+
"description": "Required for browser navigate."
|
|
789
|
+
},
|
|
790
|
+
"value": {
|
|
791
|
+
"type": "string",
|
|
792
|
+
"maxLength": 131072
|
|
793
|
+
},
|
|
794
|
+
"value_resource": {
|
|
795
|
+
"type": "string",
|
|
796
|
+
"pattern": "^[a-z][a-z0-9._-]{0,63}$"
|
|
797
|
+
},
|
|
798
|
+
"key": {
|
|
799
|
+
"type": "string",
|
|
800
|
+
"maxLength": 100,
|
|
801
|
+
"description": "Browser press key, or application key_press special key. Application supports Enter, Tab, Escape, Backspace, Delete, ArrowLeft, ArrowUp, ArrowRight, ArrowDown, Home, End, PageUp, PageDown, Space, with optional Shift+."
|
|
802
|
+
},
|
|
803
|
+
"wait_for": {
|
|
804
|
+
"type": "string",
|
|
805
|
+
"enum": [
|
|
806
|
+
"none",
|
|
807
|
+
"domcontentloaded",
|
|
808
|
+
"complete"
|
|
809
|
+
],
|
|
810
|
+
"default": "none"
|
|
811
|
+
},
|
|
812
|
+
"input_mode": {
|
|
813
|
+
"type": "string",
|
|
814
|
+
"enum": [
|
|
815
|
+
"auto",
|
|
816
|
+
"trusted",
|
|
817
|
+
"dom"
|
|
818
|
+
],
|
|
819
|
+
"default": "auto",
|
|
820
|
+
"description": "Browser only."
|
|
821
|
+
},
|
|
822
|
+
"element_timeout_seconds": {
|
|
823
|
+
"type": "integer",
|
|
824
|
+
"minimum": 1,
|
|
825
|
+
"maximum": 60,
|
|
826
|
+
"default": 10
|
|
827
|
+
},
|
|
828
|
+
"timeout_seconds": {
|
|
829
|
+
"type": "integer",
|
|
830
|
+
"minimum": 1,
|
|
831
|
+
"maximum": 60,
|
|
832
|
+
"default": 30
|
|
833
|
+
},
|
|
834
|
+
"verify_timeout_seconds": {
|
|
835
|
+
"type": "integer",
|
|
836
|
+
"minimum": 1,
|
|
837
|
+
"maximum": 60,
|
|
838
|
+
"default": 5,
|
|
839
|
+
"description": "Bounded effect-verification window. Browser conditions use the browser wait backend; application expectations may retry at most nine read-only post-action observations with bounded backoff, and each retry capture is capped by the remaining verification budget. Verification retries never replay the dispatched action; post-dispatch cancellation or incomplete readback makes unsettled effect evidence unknown rather than retryable."
|
|
840
|
+
},
|
|
841
|
+
"include_post_screenshot": {
|
|
842
|
+
"type": "boolean",
|
|
843
|
+
"description": "Legacy explicit boolean override for post_screenshot: true maps to always and false maps to never. Mutually exclusive with post_screenshot."
|
|
844
|
+
},
|
|
845
|
+
"post_screenshot": {
|
|
846
|
+
"type": "string",
|
|
847
|
+
"enum": [
|
|
848
|
+
"auto",
|
|
849
|
+
"always",
|
|
850
|
+
"never"
|
|
851
|
+
],
|
|
852
|
+
"default": "auto",
|
|
853
|
+
"description": "auto includes the post-action screenshot only for snapshot-bound visual-point actions, explicit expect.visual_change, or an unknown dispatch outcome on either browser or application surfaces; always/never force the choice. Mutually exclusive with include_post_screenshot."
|
|
854
|
+
},
|
|
855
|
+
"post_max_elements": {
|
|
856
|
+
"type": "integer",
|
|
857
|
+
"minimum": 1,
|
|
858
|
+
"maximum": 1000,
|
|
859
|
+
"default": 180
|
|
860
|
+
},
|
|
861
|
+
"post_max_ax_nodes": {
|
|
862
|
+
"type": "integer",
|
|
863
|
+
"minimum": 1,
|
|
864
|
+
"maximum": 2000,
|
|
865
|
+
"default": 180,
|
|
866
|
+
"description": "Browser only. Bound Chromium Accessibility nodes in the automatic post-action observation."
|
|
867
|
+
},
|
|
868
|
+
"post_max_depth": {
|
|
869
|
+
"type": "integer",
|
|
870
|
+
"minimum": 1,
|
|
871
|
+
"maximum": 12,
|
|
872
|
+
"default": 6,
|
|
873
|
+
"description": "Application only. Accessibility depth for the new post-action observation. It does not change target dispatch identity; dispatch and preflight reuse the source snapshot's max_depth."
|
|
874
|
+
},
|
|
875
|
+
"post_observation_detail": {
|
|
876
|
+
"type": "string",
|
|
877
|
+
"enum": [
|
|
878
|
+
"summary",
|
|
879
|
+
"full"
|
|
880
|
+
],
|
|
881
|
+
"description": "Return a compact post-state summary or the full post-action semantic observation. Both browser and application surfaces default to summary; application summaries retain a bounded set of actionable post-snapshot refs. Request full only when the complete tree is required."
|
|
882
|
+
},
|
|
883
|
+
"include_menus": {
|
|
884
|
+
"type": "boolean",
|
|
885
|
+
"default": false,
|
|
886
|
+
"description": "Application only. Include menu trees in the new post-action observation. It does not change target dispatch identity; observe with include_menus=true when the source target itself is in a menu."
|
|
887
|
+
},
|
|
888
|
+
"expect": {
|
|
889
|
+
"type": "object",
|
|
890
|
+
"additionalProperties": false,
|
|
891
|
+
"properties": {
|
|
892
|
+
"url_contains": {
|
|
893
|
+
"type": "string",
|
|
894
|
+
"minLength": 1,
|
|
895
|
+
"maxLength": 32768
|
|
896
|
+
},
|
|
897
|
+
"url_changed": {
|
|
898
|
+
"type": "boolean"
|
|
899
|
+
},
|
|
900
|
+
"semantic_change": {
|
|
901
|
+
"type": "boolean",
|
|
902
|
+
"description": "Explicitly require the bounded semantic observation fingerprint to change or remain unchanged."
|
|
903
|
+
},
|
|
904
|
+
"visual_change": {
|
|
905
|
+
"type": "boolean",
|
|
906
|
+
"description": "Explicitly require the screenshot SHA-256 fingerprint to change or remain unchanged. Requires screenshots in both the referenced and post-action observations; animations can satisfy this condition, so use it only when visual change is the intended effect."
|
|
907
|
+
},
|
|
908
|
+
"text": {
|
|
909
|
+
"type": "string",
|
|
910
|
+
"minLength": 1,
|
|
911
|
+
"maxLength": 4000
|
|
912
|
+
},
|
|
913
|
+
"load_state": {
|
|
914
|
+
"type": "string",
|
|
915
|
+
"enum": [
|
|
916
|
+
"domcontentloaded",
|
|
917
|
+
"complete"
|
|
918
|
+
]
|
|
919
|
+
},
|
|
920
|
+
"target_state": {
|
|
921
|
+
"type": "string",
|
|
922
|
+
"enum": [
|
|
923
|
+
"attached",
|
|
924
|
+
"detached",
|
|
925
|
+
"visible",
|
|
926
|
+
"hidden",
|
|
927
|
+
"enabled",
|
|
928
|
+
"editable",
|
|
929
|
+
"checked",
|
|
930
|
+
"unchecked"
|
|
931
|
+
]
|
|
932
|
+
},
|
|
933
|
+
"frontmost": {
|
|
934
|
+
"type": "boolean"
|
|
935
|
+
},
|
|
936
|
+
"target_exists": {
|
|
937
|
+
"type": "boolean"
|
|
938
|
+
},
|
|
939
|
+
"target_enabled": {
|
|
940
|
+
"type": "boolean"
|
|
941
|
+
},
|
|
942
|
+
"target_focused": {
|
|
943
|
+
"type": "boolean"
|
|
944
|
+
},
|
|
945
|
+
"target_checked": {
|
|
946
|
+
"type": "boolean"
|
|
947
|
+
},
|
|
948
|
+
"target_selected": {
|
|
949
|
+
"type": "boolean"
|
|
950
|
+
},
|
|
951
|
+
"target_expanded": {
|
|
952
|
+
"type": "boolean"
|
|
953
|
+
},
|
|
954
|
+
"target_value_matches": {
|
|
955
|
+
"type": "boolean",
|
|
956
|
+
"description": "Application set_value only. Compare the post-action AXValue with the value being written inside the local application backend and return only a Boolean result. Non-sensitive set_value actions require this to remain true; sensitive targets do not support this readback."
|
|
957
|
+
}
|
|
958
|
+
},
|
|
959
|
+
"description": "Browser expectations use url/text/load/target_state and optional explicit semantic_change/visual_change checks; application expectations use frontmost and semantic target state fields including enabled/focused/checked/selected/expanded, plus private target_value_matches readback for non-sensitive set_value actions."
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
"required": [
|
|
963
|
+
"surface",
|
|
964
|
+
"snapshot_id",
|
|
965
|
+
"action"
|
|
966
|
+
]
|
|
967
|
+
}
|
|
968
|
+
```
|
|
969
|
+
|
|
437
970
|
## `browser_status`
|
|
438
971
|
|
|
439
972
|
**Browser bridge status**
|
|
440
973
|
|
|
441
|
-
Start or inspect the loopback bridge for the Chromium profile where the extension is installed. Machine Bridge does not launch Playwright or another browser process, but cannot infer whether that profile is the user's daily or isolated profile; status reports authenticated extension version, protocol, capabilities, and reload state.
|
|
974
|
+
Start or inspect the loopback bridge for the Chromium profile where the extension is installed. Machine Bridge does not launch Playwright or another browser process, but cannot infer whether that profile is the user's daily or isolated profile; status reports authenticated extension version, protocol, capabilities, and reload state. Concurrent callers may share one broker-startup operation, but each caller re-checks its own cancellation after shared startup settles, so cancelling one request does not cancel startup for another waiter or return completion to the cancelled caller.
|
|
442
975
|
|
|
443
976
|
| Contract field | Value |
|
|
444
977
|
|---|---|
|
|
@@ -461,7 +994,7 @@ Start or inspect the loopback bridge for the Chromium profile where the extensio
|
|
|
461
994
|
|
|
462
995
|
**Pair browser extension**
|
|
463
996
|
|
|
464
|
-
Open the local pairing page and return the packaged unpacked-extension path for installation in the user's intended Chromium profile. Pairing is persisted only after an acknowledged version/capability handshake.
|
|
997
|
+
Open the local pairing page and return the packaged unpacked-extension path for installation in the user's intended Chromium profile. Pairing is persisted only after an acknowledged version/capability handshake. Opening the pairing page is non-idempotent: cancellation is checked immediately before the OS launcher, but once that launcher invocation is attempted, timeout/cancellation/response loss is an unknown launch outcome and callers should inspect the browser before opening it again. That fixed ambiguous settlement is returned as a public, non-retryable MCP error.
|
|
465
998
|
|
|
466
999
|
| Contract field | Value |
|
|
467
1000
|
|---|---|
|
|
@@ -490,7 +1023,7 @@ Open the local pairing page and return the packaged unpacked-extension path for
|
|
|
490
1023
|
|
|
491
1024
|
**List browser tabs**
|
|
492
1025
|
|
|
493
|
-
|
|
1026
|
+
Read the tab inventory from the paired existing Chromium profile without creating, activating, or closing a tab. Use browser_manage_tabs for tab mutations. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
494
1027
|
|
|
495
1028
|
| Contract field | Value |
|
|
496
1029
|
|---|---|
|
|
@@ -518,7 +1051,7 @@ List tabs from the paired user's existing Chromium browser profile.
|
|
|
518
1051
|
"timeout_seconds": {
|
|
519
1052
|
"type": "integer",
|
|
520
1053
|
"minimum": 1,
|
|
521
|
-
"maximum":
|
|
1054
|
+
"maximum": 60,
|
|
522
1055
|
"default": 30
|
|
523
1056
|
}
|
|
524
1057
|
}
|
|
@@ -529,7 +1062,7 @@ List tabs from the paired user's existing Chromium browser profile.
|
|
|
529
1062
|
|
|
530
1063
|
**Manage browser tabs**
|
|
531
1064
|
|
|
532
|
-
Create, activate, or close tabs in the paired existing
|
|
1065
|
+
Create, activate, or close tabs in the paired existing Chromium profile. Tab mutations are non-idempotent: if Chrome rejects a mutation request after invocation, or the broker loses the extension response after attempting dispatch, the outcome is reported as unknown and callers should inspect browser_list_tabs before retrying. If a completed mutating extension result cannot be serialized or fit within the bounded response budget, that result settlement is also unknown and must not be used as evidence that activation/close/create did not run. Fixed ambiguous browser settlements are returned as public, non-retryable MCP errors. Activation is verified between its two mutation stages: after tab activation resolves, the target is re-read and must still be active before its freshly observed current window is focused; after focus resolves, the target is re-read again and success returns only the final verified tab provenance. Concurrent tab/window moves or user tab switches are reported as partial completion with inspection guidance and are never automatically re-activated or re-focused. Cancellation is re-checked after asynchronous tab lookup and before each later mutation stage; a stage not yet started is skipped, while an earlier completed stage is not rolled back. Use browser_list_tabs when only a read-only tab inventory is needed. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
533
1066
|
|
|
534
1067
|
| Contract field | Value |
|
|
535
1068
|
|---|---|
|
|
@@ -571,7 +1104,7 @@ Create, activate, or close tabs in the paired existing browser profile.
|
|
|
571
1104
|
"timeout_seconds": {
|
|
572
1105
|
"type": "integer",
|
|
573
1106
|
"minimum": 1,
|
|
574
|
-
"maximum":
|
|
1107
|
+
"maximum": 60,
|
|
575
1108
|
"default": 30
|
|
576
1109
|
}
|
|
577
1110
|
},
|
|
@@ -585,7 +1118,7 @@ Create, activate, or close tabs in the paired existing browser profile.
|
|
|
585
1118
|
|
|
586
1119
|
**Read browser page source**
|
|
587
1120
|
|
|
588
|
-
Read bounded serialized
|
|
1121
|
+
Read bounded raw serialized DOM HTML from the active or selected tab only when source markup is genuinely required. Raw source can contain hidden bootstrap, session, account, authentication, or other sensitive data that is not visible in the rendered page; treat the entire result as sensitive and do not use it for routine semantic inspection. Prefer browser_inspect_page for semantic elements, actionability, reusable refs, and structured interaction planning. max_bytes is one aggregate budget across at most 64 accessible frames. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
589
1122
|
|
|
590
1123
|
| Contract field | Value |
|
|
591
1124
|
|---|---|
|
|
@@ -615,7 +1148,7 @@ Read bounded serialized current DOM HTML from the active or selected browser tab
|
|
|
615
1148
|
"timeout_seconds": {
|
|
616
1149
|
"type": "integer",
|
|
617
1150
|
"minimum": 1,
|
|
618
|
-
"maximum":
|
|
1151
|
+
"maximum": 60,
|
|
619
1152
|
"default": 30
|
|
620
1153
|
},
|
|
621
1154
|
"frame_id": {
|
|
@@ -634,7 +1167,7 @@ Read bounded serialized current DOM HTML from the active or selected browser tab
|
|
|
634
1167
|
|
|
635
1168
|
**Inspect browser page**
|
|
636
1169
|
|
|
637
|
-
Inspect a bounded snapshot-
|
|
1170
|
+
Inspect a bounded semantic/actionability snapshot with reusable element refs for structured browser decisions and actions. Candidates are salience-ranked globally across accessible frames instead of consuming the aggregate budget in frame traversal order. This is not raw page source; use browser_get_source when serialized DOM HTML is required. The aggregate element budget spans at most 64 accessible frames. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
638
1171
|
|
|
639
1172
|
| Contract field | Value |
|
|
640
1173
|
|---|---|
|
|
@@ -668,7 +1201,7 @@ Inspect a bounded snapshot-version-2 semantic representation across at most 64 a
|
|
|
668
1201
|
"timeout_seconds": {
|
|
669
1202
|
"type": "integer",
|
|
670
1203
|
"minimum": 1,
|
|
671
|
-
"maximum":
|
|
1204
|
+
"maximum": 60,
|
|
672
1205
|
"default": 30
|
|
673
1206
|
},
|
|
674
1207
|
"frame_id": {
|
|
@@ -687,7 +1220,7 @@ Inspect a bounded snapshot-version-2 semantic representation across at most 64 a
|
|
|
687
1220
|
|
|
688
1221
|
**Wait for browser state**
|
|
689
1222
|
|
|
690
|
-
Wait until all supplied URL, load, text, and element-state conditions are satisfied in an existing browser tab.
|
|
1223
|
+
Wait until all supplied URL, load, text, and element-state conditions are satisfied in an existing browser tab. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
691
1224
|
|
|
692
1225
|
| Contract field | Value |
|
|
693
1226
|
|---|---|
|
|
@@ -788,7 +1321,7 @@ Wait until all supplied URL, load, text, and element-state conditions are satisf
|
|
|
788
1321
|
"timeout_seconds": {
|
|
789
1322
|
"type": "integer",
|
|
790
1323
|
"minimum": 1,
|
|
791
|
-
"maximum":
|
|
1324
|
+
"maximum": 60,
|
|
792
1325
|
"default": 30
|
|
793
1326
|
}
|
|
794
1327
|
}
|
|
@@ -799,7 +1332,7 @@ Wait until all supplied URL, load, text, and element-state conditions are satisf
|
|
|
799
1332
|
|
|
800
1333
|
**Operate browser page**
|
|
801
1334
|
|
|
802
|
-
Perform one structured navigation or page action in the user's existing browser tab without arbitrary JavaScript. Automatic trusted-input fallback occurs only before any DevTools Input
|
|
1335
|
+
Perform one structured navigation or page action in the user's existing browser tab without arbitrary JavaScript. Automatic trusted-input fallback occurs only before any trusted preparation (including DOM focus/scroll) or DevTools Input mutation starts; ambiguous post-dispatch failures require inspection before retry. Broker timeout, disconnect, extension replacement, or response loss after WebSocket dispatch is attempted is also an unknown mutation outcome, not proof that the action did not run. If the mutating extension call completes but its success result cannot be serialized or fit within the bounded response budget, that result settlement is likewise unknown and callers must inspect state rather than replay. Fixed ambiguous browser settlements are returned as public, non-retryable MCP errors. DOM/trusted-preparation page calls use a structured settlement envelope: an explicit page preflight error remains definite, while loss of the mutating scripting invocation response after that invocation is attempted is an unknown action outcome and must not be replayed blindly. Cancellation is re-checked after asynchronous target/preparation steps and before each later mutation stage; a stage not yet started is skipped, while earlier focus/scroll/input effects are not rolled back. A successful action is not converted to failure by a later tab-metadata read: current tab provenance is returned only when verified, otherwise tab_metadata_verified is false and stale pre-action title/URL metadata is omitted. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
803
1336
|
|
|
804
1337
|
| Contract field | Value |
|
|
805
1338
|
|---|---|
|
|
@@ -913,7 +1446,7 @@ Perform one structured navigation or page action in the user's existing browser
|
|
|
913
1446
|
"timeout_seconds": {
|
|
914
1447
|
"type": "integer",
|
|
915
1448
|
"minimum": 1,
|
|
916
|
-
"maximum":
|
|
1449
|
+
"maximum": 60,
|
|
917
1450
|
"default": 30
|
|
918
1451
|
},
|
|
919
1452
|
"frame_id": {
|
|
@@ -947,7 +1480,7 @@ Perform one structured navigation or page action in the user's existing browser
|
|
|
947
1480
|
|
|
948
1481
|
**Fill complex browser form**
|
|
949
1482
|
|
|
950
|
-
Fill multiple fields and optionally submit a complex form. Sensitive values can come from registered local resources; errors identify possible earlier mutations without returning field values.
|
|
1483
|
+
Fill multiple fields and optionally submit a complex form. Sensitive values can come from registered local resources; errors identify possible earlier mutations without returning field values. If the broker has attempted extension dispatch and the response is then lost, times out, disconnects, or is interrupted by extension replacement, the mutation outcome is unknown and browser state must be inspected before retrying. If the completed mutating extension result cannot be serialized or fit within the bounded response budget, that result settlement is also unknown and the form must not be replayed blindly. Fixed ambiguous browser settlements are returned as public, non-retryable MCP errors. The mutating page-world scripting call also uses a structured settlement envelope: explicit selector/field preflight errors remain definite, but loss of the scripting invocation response after the invocation is attempted is an unknown form outcome and must be inspected before retrying. Cancellation observed after asynchronous target lookup but before page mutation skips the fill stage; once page mutation starts, earlier field changes are not rolled back. Successful results attach current tab title/URL only when a fresh metadata read verifies them; otherwise tab_metadata_verified is false and stale pre-fill provenance is omitted. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
951
1484
|
|
|
952
1485
|
| Contract field | Value |
|
|
953
1486
|
|---|---|
|
|
@@ -1109,7 +1642,7 @@ Fill multiple fields and optionally submit a complex form. Sensitive values can
|
|
|
1109
1642
|
"timeout_seconds": {
|
|
1110
1643
|
"type": "integer",
|
|
1111
1644
|
"minimum": 1,
|
|
1112
|
-
"maximum":
|
|
1645
|
+
"maximum": 60,
|
|
1113
1646
|
"default": 60
|
|
1114
1647
|
},
|
|
1115
1648
|
"frame_id": {
|
|
@@ -1133,7 +1666,7 @@ Fill multiple fields and optionally submit a complex form. Sensitive values can
|
|
|
1133
1666
|
|
|
1134
1667
|
**Capture browser screenshot**
|
|
1135
1668
|
|
|
1136
|
-
Capture the visible area of the active or selected tab from the paired existing browser profile, restore the previous active tab when safe,
|
|
1669
|
+
Capture the visible area of the active or selected tab from the paired existing browser profile and return native MCP image content without focusing another window. Selecting an inactive tab may temporarily activate it. Immediately before activation, the extension revalidates that the same restore-baseline tab is still active in that window; a concurrent user tab switch fails definite pre-dispatch without activating anything. If the activation response is then lost, or if the resolved activation no longer verifies the same target tab in the restore-baseline window, the outcome is unknown, no capture or automatic rollback is attempted, and callers should inspect browser_list_tabs before retrying. Broker response loss after extension dispatch is attempted is also reported as unknown because the temporary activation/capture lifecycle may already have run. If the completed mutating extension result cannot be serialized or fit within the bounded response budget, that result settlement is likewise unknown because temporary tab activation/restoration may already have occurred. Fixed ambiguous browser settlements are returned as public, non-retryable MCP errors. Cancellation observed before temporary activation prevents activation; if it arrives after confirmed temporary activation but before capture, capture is skipped and the previous active tab is restored when safely verifiable. After confirmed temporary activation, later capture or verification failures restore the previous active tab when safe while preserving a concurrent user tab switch; restoration revalidates that the baseline tab still belongs to the capture window before activating it. Once the restore activation API is invoked, a rejected response, returned window mismatch, or failed post-restore verification is an unknown active-tab outcome and callers must inspect browser_list_tabs before retrying; no same screenshot is replayed automatically. Successful results use the verified post-capture active-tab observation for title/URL provenance and report tab_metadata_verified=true. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
1137
1670
|
|
|
1138
1671
|
| Contract field | Value |
|
|
1139
1672
|
|---|---|
|
|
@@ -1171,7 +1704,7 @@ Capture the visible area of the active or selected tab from the paired existing
|
|
|
1171
1704
|
"timeout_seconds": {
|
|
1172
1705
|
"type": "integer",
|
|
1173
1706
|
"minimum": 1,
|
|
1174
|
-
"maximum":
|
|
1707
|
+
"maximum": 60,
|
|
1175
1708
|
"default": 30
|
|
1176
1709
|
}
|
|
1177
1710
|
}
|
|
@@ -1182,7 +1715,7 @@ Capture the visible area of the active or selected tab from the paired existing
|
|
|
1182
1715
|
|
|
1183
1716
|
**Upload browser files**
|
|
1184
1717
|
|
|
1185
|
-
Populate a browser file input from registered local resource files without returning file contents through MCP results.
|
|
1718
|
+
Populate a browser file input from registered local resource files without returning file contents through MCP results. If the broker has attempted extension dispatch and the response is then lost, times out, disconnects, or is interrupted by extension replacement, the mutation outcome is unknown and browser state must be inspected before retrying. If the completed mutating extension result cannot be serialized or fit within the bounded response budget, that result settlement is also unknown and the upload must not be replayed blindly. Fixed ambiguous browser settlements are returned as public, non-retryable MCP errors. The mutating page-world scripting call also uses a structured settlement envelope: explicit selector/file-input preflight errors remain definite, but loss of the scripting invocation response after the invocation is attempted is an unknown upload outcome and must be inspected before retrying. Cancellation observed after asynchronous target lookup but before the file-input mutation skips that stage; once the page mutation starts, resulting input/change handlers are not rolled back. Successful results attach current tab title/URL only when a fresh metadata read verifies them; otherwise tab_metadata_verified is false and stale pre-upload provenance is omitted. Foreground execution is limited to 60 seconds; use process sessions or managed jobs for longer work.
|
|
1186
1719
|
|
|
1187
1720
|
| Contract field | Value |
|
|
1188
1721
|
|---|---|
|
|
@@ -1274,7 +1807,7 @@ Populate a browser file input from registered local resource files without retur
|
|
|
1274
1807
|
"timeout_seconds": {
|
|
1275
1808
|
"type": "integer",
|
|
1276
1809
|
"minimum": 1,
|
|
1277
|
-
"maximum":
|
|
1810
|
+
"maximum": 60,
|
|
1278
1811
|
"default": 60
|
|
1279
1812
|
},
|
|
1280
1813
|
"frame_id": {
|
|
@@ -1300,7 +1833,7 @@ Populate a browser file input from registered local resource files without retur
|
|
|
1300
1833
|
|
|
1301
1834
|
**Load agent context**
|
|
1302
1835
|
|
|
1303
|
-
Discover
|
|
1836
|
+
Discover the instruction, skill, and registered-command inventory for a target path, including precedence and provenance. Use this when the caller needs the context itself; use resolve_task_capabilities when it needs task-specific ranking and execution-route advice.
|
|
1304
1837
|
|
|
1305
1838
|
| Contract field | Value |
|
|
1306
1839
|
|---|---|
|
|
@@ -1455,7 +1988,7 @@ List effective direct-argv commands from project manifests and safe automatic pa
|
|
|
1455
1988
|
|
|
1456
1989
|
**Run registered local command**
|
|
1457
1990
|
|
|
1458
|
-
|
|
1991
|
+
Prefer this when the repository already defines the desired operation as a registered command or package script. It runs the fixed argv/cwd/timeout contract without shell reinterpretation; use exec_command for ad hoc pipelines or run_process for an unregistered executable argv. Local foreground execution remains request-scoped. Remote execution is durable-first: the command is committed as a principal-bound one-step managed job and the response returns a job_id for read_job recovery across MCP disconnects or daemon replacement. Supply idempotency_key when retry-safe recovery of an ambiguous acceptance response is required.
|
|
1459
1992
|
|
|
1460
1993
|
| Contract field | Value |
|
|
1461
1994
|
|---|---|
|
|
@@ -1490,10 +2023,15 @@ Run an effective manifest or automatic package-script command through its fixed
|
|
|
1490
2023
|
"maxItems": 64,
|
|
1491
2024
|
"default": []
|
|
1492
2025
|
},
|
|
2026
|
+
"idempotency_key": {
|
|
2027
|
+
"type": "string",
|
|
2028
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._~:-]{0,127}$"
|
|
2029
|
+
},
|
|
1493
2030
|
"timeout_seconds": {
|
|
1494
2031
|
"type": "integer",
|
|
1495
2032
|
"minimum": 1,
|
|
1496
|
-
"maximum":
|
|
2033
|
+
"maximum": 60,
|
|
2034
|
+
"default": 60
|
|
1497
2035
|
}
|
|
1498
2036
|
},
|
|
1499
2037
|
"required": [
|
|
@@ -1670,7 +2208,7 @@ Read a bounded PNG, JPEG, GIF, or WebP image from the workspace and return nativ
|
|
|
1670
2208
|
|
|
1671
2209
|
**Write text file**
|
|
1672
2210
|
|
|
1673
|
-
Atomically write a UTF-8 file up to 5 MiB. Supports create-only and optimistic SHA-256 checks;
|
|
2211
|
+
Atomically write a UTF-8 file up to 5 MiB. Supports create-only and optimistic SHA-256 checks; expected state failures return typed conflict reasons without exposing file content or hashes.
|
|
1674
2212
|
|
|
1675
2213
|
| Contract field | Value |
|
|
1676
2214
|
|---|---|
|
|
@@ -1713,7 +2251,7 @@ Atomically write a UTF-8 file up to 5 MiB. Supports create-only and optimistic S
|
|
|
1713
2251
|
|
|
1714
2252
|
**Edit text file**
|
|
1715
2253
|
|
|
1716
|
-
Atomically replace an exact text fragment in one UTF-8 file.
|
|
2254
|
+
Atomically replace an exact text fragment in one UTF-8 file. Missing text returns not_found; ambiguous text, stale SHA-256 preconditions, and unsupported targets return typed conflicts.
|
|
1717
2255
|
|
|
1718
2256
|
| Contract field | Value |
|
|
1719
2257
|
|---|---|
|
|
@@ -1761,7 +2299,7 @@ Atomically replace an exact text fragment in one UTF-8 file. By default the old
|
|
|
1761
2299
|
|
|
1762
2300
|
**Apply structured patch**
|
|
1763
2301
|
|
|
1764
|
-
Apply a bounded Begin Patch/End Patch envelope containing add, update, move, or delete
|
|
2302
|
+
Apply a bounded Begin Patch/End Patch envelope containing add, update, move, or delete operations. Syntax errors are invalid_request; stale contexts and target collisions are typed conflicts; mutations remain serialized and transactional. A failed transaction is rolled back when possible; if rollback itself is incomplete after mutations began, the tool returns a public non-retryable patch_recovery_incomplete settlement because affected files may be partially modified and must be inspected before retrying.
|
|
1765
2303
|
|
|
1766
2304
|
| Contract field | Value |
|
|
1767
2305
|
|---|---|
|
|
@@ -1860,7 +2398,8 @@ Return bounded Git porcelain status for the repository containing a workspace pa
|
|
|
1860
2398
|
"properties": {
|
|
1861
2399
|
"path": {
|
|
1862
2400
|
"type": "string",
|
|
1863
|
-
"default": "."
|
|
2401
|
+
"default": ".",
|
|
2402
|
+
"maxLength": 32768
|
|
1864
2403
|
}
|
|
1865
2404
|
},
|
|
1866
2405
|
"additionalProperties": false
|
|
@@ -1889,7 +2428,8 @@ Return bounded unified Git diff with external diff, text conversion, and filesys
|
|
|
1889
2428
|
"properties": {
|
|
1890
2429
|
"path": {
|
|
1891
2430
|
"type": "string",
|
|
1892
|
-
"default": "."
|
|
2431
|
+
"default": ".",
|
|
2432
|
+
"maxLength": 32768
|
|
1893
2433
|
},
|
|
1894
2434
|
"staged": {
|
|
1895
2435
|
"type": "boolean",
|
|
@@ -1928,7 +2468,8 @@ Return recent commits in a bounded, machine-readable format. Author email addres
|
|
|
1928
2468
|
"properties": {
|
|
1929
2469
|
"path": {
|
|
1930
2470
|
"type": "string",
|
|
1931
|
-
"default": "."
|
|
2471
|
+
"default": ".",
|
|
2472
|
+
"maxLength": 32768
|
|
1932
2473
|
},
|
|
1933
2474
|
"max_count": {
|
|
1934
2475
|
"type": "integer",
|
|
@@ -1967,11 +2508,13 @@ Return bounded metadata and patch output for one revision without running reposi
|
|
|
1967
2508
|
"properties": {
|
|
1968
2509
|
"path": {
|
|
1969
2510
|
"type": "string",
|
|
1970
|
-
"default": "."
|
|
2511
|
+
"default": ".",
|
|
2512
|
+
"maxLength": 32768
|
|
1971
2513
|
},
|
|
1972
2514
|
"revision": {
|
|
1973
2515
|
"type": "string",
|
|
1974
|
-
"default": "HEAD"
|
|
2516
|
+
"default": "HEAD",
|
|
2517
|
+
"maxLength": 256
|
|
1975
2518
|
},
|
|
1976
2519
|
"max_bytes": {
|
|
1977
2520
|
"type": "integer",
|
|
@@ -1984,11 +2527,49 @@ Return bounded metadata and patch output for one revision without running reposi
|
|
|
1984
2527
|
}
|
|
1985
2528
|
```
|
|
1986
2529
|
|
|
2530
|
+
## `git_commit`
|
|
2531
|
+
|
|
2532
|
+
**Create Git commit**
|
|
2533
|
+
|
|
2534
|
+
Create one local Git commit from the repository's existing staged index. This tool refuses repositories with an in-progress merge, rebase, cherry-pick, revert, bisect, or sequencer operation. It never stages files, amends history, signs, runs Git hooks, launches an editor, or pushes. The commit message is delivered over stdin rather than process argv; repository-local Git author identity must already be configured.
|
|
2535
|
+
|
|
2536
|
+
| Contract field | Value |
|
|
2537
|
+
|---|---|
|
|
2538
|
+
| Availability | `direct-exec` |
|
|
2539
|
+
| Read-only hint | no |
|
|
2540
|
+
| Destructive hint | no |
|
|
2541
|
+
| Idempotent hint | no |
|
|
2542
|
+
| Open-world hint | no |
|
|
2543
|
+
|
|
2544
|
+
### Input schema
|
|
2545
|
+
|
|
2546
|
+
```json
|
|
2547
|
+
{
|
|
2548
|
+
"type": "object",
|
|
2549
|
+
"properties": {
|
|
2550
|
+
"path": {
|
|
2551
|
+
"type": "string",
|
|
2552
|
+
"default": ".",
|
|
2553
|
+
"maxLength": 32768
|
|
2554
|
+
},
|
|
2555
|
+
"message": {
|
|
2556
|
+
"type": "string",
|
|
2557
|
+
"minLength": 1,
|
|
2558
|
+
"maxLength": 16384
|
|
2559
|
+
}
|
|
2560
|
+
},
|
|
2561
|
+
"required": [
|
|
2562
|
+
"message"
|
|
2563
|
+
],
|
|
2564
|
+
"additionalProperties": false
|
|
2565
|
+
}
|
|
2566
|
+
```
|
|
2567
|
+
|
|
1987
2568
|
## `run_process`
|
|
1988
2569
|
|
|
1989
2570
|
**Run process directly**
|
|
1990
2571
|
|
|
1991
|
-
|
|
2572
|
+
Run an explicit executable plus argv when no shell syntax is needed and no registered command fits. This avoids quoting, globbing, pipelines, and redirection, but it is not a sandbox; use exec_command when Bash composition is the convenient choice. Local foreground execution remains request-scoped. Remote execution is durable-first: the argv is committed as a principal-bound one-step managed job and the response returns a job_id for read_job recovery across MCP disconnects or daemon replacement. Supply idempotency_key when retry-safe recovery of an ambiguous acceptance response is required.
|
|
1992
2573
|
|
|
1993
2574
|
| Contract field | Value |
|
|
1994
2575
|
|---|---|
|
|
@@ -2016,11 +2597,15 @@ Execute an argv array without a command shell. This avoids shell parsing but doe
|
|
|
2016
2597
|
"type": "string",
|
|
2017
2598
|
"default": "."
|
|
2018
2599
|
},
|
|
2600
|
+
"idempotency_key": {
|
|
2601
|
+
"type": "string",
|
|
2602
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._~:-]{0,127}$"
|
|
2603
|
+
},
|
|
2019
2604
|
"timeout_seconds": {
|
|
2020
2605
|
"type": "integer",
|
|
2021
2606
|
"minimum": 1,
|
|
2022
|
-
"maximum":
|
|
2023
|
-
"default":
|
|
2607
|
+
"maximum": 60,
|
|
2608
|
+
"default": 60
|
|
2024
2609
|
}
|
|
2025
2610
|
},
|
|
2026
2611
|
"required": [
|
|
@@ -2034,7 +2619,7 @@ Execute an argv array without a command shell. This avoids shell parsing but doe
|
|
|
2034
2619
|
|
|
2035
2620
|
**Start process session**
|
|
2036
2621
|
|
|
2037
|
-
Start a direct argv process without a shell and retain bounded stdout, stderr, and stdin state across MCP calls.
|
|
2622
|
+
Start a direct argv process without a shell and retain bounded stdout, stderr, and stdin state across MCP calls. Cancellation before spawn is definite. If cancellation or deadline arrives after the child has spawned but before the start result settles, the server requests termination and returns a public non-retryable unknown outcome with the allocated session_id; the retained session remains inspectable so callers can verify its state instead of starting the command again blindly. Process sessions are daemon-lifetime state: use start_job/read_job when work must survive a Machine Bridge daemon restart, service replacement, or MCP disconnect. For an authorized remote call on macOS, a successfully admitted session keeps an idle-sleep assertion for the child lifetime; this does not override explicit sleep or lid-close behavior.
|
|
2038
2623
|
|
|
2039
2624
|
| Contract field | Value |
|
|
2040
2625
|
|---|---|
|
|
@@ -2131,7 +2716,7 @@ Read bounded stdout and stderr deltas from a running process session or a recent
|
|
|
2131
2716
|
|
|
2132
2717
|
**Write process stdin**
|
|
2133
2718
|
|
|
2134
|
-
Write bounded UTF-8 data to a live process session and optionally close its stdin stream.
|
|
2719
|
+
Write bounded UTF-8 data to a live process session and optionally close its stdin stream. Cancellation before any stdin mutation is definite. Once stdin.write or stdin.end has been invoked, callback/error/cancellation ambiguity is returned as a public non-retryable unknown outcome with the session_id; inspect the session before writing the same data again because the child may already have consumed it.
|
|
2135
2720
|
|
|
2136
2721
|
| Contract field | Value |
|
|
2137
2722
|
|---|---|
|
|
@@ -2205,7 +2790,7 @@ Terminate a live server-managed process tree with graceful or forced termination
|
|
|
2205
2790
|
|
|
2206
2791
|
**Diagnose runtime layers**
|
|
2207
2792
|
|
|
2208
|
-
Run fixed, non-user-controlled local probes to distinguish MCP policy, local filesystem, process-spawn, shell, managed-job storage, and registered-resource failures. A successful response proves the request reached the local daemon; it cannot diagnose a host refusal that blocks the tool call itself.
|
|
2793
|
+
Run fixed, non-user-controlled local probes and return privacy-safe control-plane state (call capacity, draining processes, execution guardrails, relay liveness, and audit health) to distinguish MCP policy, local filesystem, process-spawn, shell, managed-job storage, and registered-resource failures. A successful response proves the request reached the local daemon; it cannot diagnose a host refusal that blocks the tool call itself.
|
|
2209
2794
|
|
|
2210
2795
|
| Contract field | Value |
|
|
2211
2796
|
|---|---|
|
|
@@ -2293,9 +2878,9 @@ Generate or reuse an Ed25519 SSH key pair on the local machine and register the
|
|
|
2293
2878
|
|
|
2294
2879
|
## `stage_job`
|
|
2295
2880
|
|
|
2296
|
-
**Stage managed job
|
|
2881
|
+
**Stage managed job draft**
|
|
2297
2882
|
|
|
2298
|
-
Validate and persist a managed-job
|
|
2883
|
+
Validate and persist a durable managed-job draft without starting any process. This is a non-executing record only; a trusted owner client starts work with start_job after reviewing or reconstructing the plan.
|
|
2299
2884
|
|
|
2300
2885
|
| Contract field | Value |
|
|
2301
2886
|
|---|---|
|
|
@@ -2498,7 +3083,7 @@ Validate and persist a managed-job plan without starting any process. Use this w
|
|
|
2498
3083
|
|
|
2499
3084
|
**Start managed job**
|
|
2500
3085
|
|
|
2501
|
-
Durably accept a detached argv-based job with ordered steps, job-scoped temporary files, and guaranteed-attempt finally steps. The independent local runner continues if the MCP connection disappears. Use {{temp:name}}, {{resource:name}}, env_resources, or stdin_resource; registered resource contents never enter MCP arguments.
|
|
3086
|
+
Durably accept a detached argv-based job with ordered steps, job-scoped temporary files, and guaranteed-attempt finally steps. The independent local runner continues if the MCP connection disappears. On macOS, an authorized remote account job keeps a runner-owned idle-sleep assertion only after the runner ownership claim is confirmed and persisted account ownership is validated, then through admission, steps, cleanup, and terminal persistence; local managed jobs do not acquire this remote-continuity assertion, and it does not override explicit sleep or lid-close behavior. Use an idempotency_key to deduplicate an uncertain retry while the original job record is retained; eviction/retention expiry ends that deduplication window, so this is not permanent exactly-once execution. Use {{temp:name}}, {{resource:name}}, env_resources, or stdin_resource; registered resource contents never enter MCP arguments.
|
|
2502
3087
|
|
|
2503
3088
|
| Contract field | Value |
|
|
2504
3089
|
|---|---|
|
|
@@ -2518,6 +3103,10 @@ Durably accept a detached argv-based job with ordered steps, job-scoped temporar
|
|
|
2518
3103
|
"type": "string",
|
|
2519
3104
|
"maxLength": 128
|
|
2520
3105
|
},
|
|
3106
|
+
"idempotency_key": {
|
|
3107
|
+
"type": "string",
|
|
3108
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._~:-]{0,127}$"
|
|
3109
|
+
},
|
|
2521
3110
|
"steps": {
|
|
2522
3111
|
"type": "array",
|
|
2523
3112
|
"minItems": 1,
|
|
@@ -2701,7 +3290,7 @@ Durably accept a detached argv-based job with ordered steps, job-scoped temporar
|
|
|
2701
3290
|
|
|
2702
3291
|
**List managed jobs**
|
|
2703
3292
|
|
|
2704
|
-
List recent detached managed jobs and their lifecycle status without returning step output.
|
|
3293
|
+
List recent detached managed jobs and their lifecycle status without returning step output. Owner/local callers also receive coarse retained-state capacity counts, including unreadable retired cleanup blockers, without internal retired filenames or filesystem identities.
|
|
2705
3294
|
|
|
2706
3295
|
| Contract field | Value |
|
|
2707
3296
|
|---|---|
|
|
@@ -2732,7 +3321,7 @@ List recent detached managed jobs and their lifecycle status without returning s
|
|
|
2732
3321
|
|
|
2733
3322
|
**Read managed job**
|
|
2734
3323
|
|
|
2735
|
-
Return one managed job status plus bounded, resource-redacted step results. Registered resource paths and contents are never returned.
|
|
3324
|
+
Return one managed job status plus bounded, resource-redacted step results. current_phase=resource_admission means the runner is still in cooperative pre-spawn resource admission and no child for that step has started yet. Completed step results keep duration_ms as total orchestration duration; local/owner reads additionally expose resource_admission_ms as the pre-spawn portion, while delegated non-owner reads omit that machine-user scheduling timing. Registered resource paths and contents are never returned.
|
|
2736
3325
|
|
|
2737
3326
|
| Contract field | Value |
|
|
2738
3327
|
|---|---|
|
|
@@ -2796,7 +3385,7 @@ Request cancellation of a detached managed job. The runner terminates the active
|
|
|
2796
3385
|
|
|
2797
3386
|
**Execute shell command**
|
|
2798
3387
|
|
|
2799
|
-
|
|
3388
|
+
Run Bash-compatible shell composition in the workspace: pipelines, redirection, globbing, conditionals, or compact multi-command probes. This is the convenient general escape hatch, not a sandbox, and has the local user's operating-system authority. Prefer run_local_command for an existing fixed project command and run_process when no shell syntax is needed. Local foreground execution remains request-scoped. Remote execution is durable-first: the shell argv is committed as a principal-bound one-step managed job and the response returns a job_id for read_job recovery across MCP disconnects or daemon replacement. Supply idempotency_key when retry-safe recovery of an ambiguous acceptance response is required.
|
|
2800
3389
|
|
|
2801
3390
|
| Contract field | Value |
|
|
2802
3391
|
|---|---|
|
|
@@ -2817,11 +3406,15 @@ Execute a shell command with workspace cwd. This is not a sandbox and has the op
|
|
|
2817
3406
|
"minLength": 1,
|
|
2818
3407
|
"maxLength": 65536
|
|
2819
3408
|
},
|
|
3409
|
+
"idempotency_key": {
|
|
3410
|
+
"type": "string",
|
|
3411
|
+
"pattern": "^[A-Za-z0-9][A-Za-z0-9._~:-]{0,127}$"
|
|
3412
|
+
},
|
|
2820
3413
|
"timeout_seconds": {
|
|
2821
3414
|
"type": "integer",
|
|
2822
3415
|
"minimum": 1,
|
|
2823
|
-
"maximum":
|
|
2824
|
-
"default":
|
|
3416
|
+
"maximum": 60,
|
|
3417
|
+
"default": 60
|
|
2825
3418
|
}
|
|
2826
3419
|
},
|
|
2827
3420
|
"required": [
|