Repository navigation
Sync UsefulSoftwareCo/executor v2 @ 5bd06da41 (beta.37) - #79
Merged
Merged
Conversation
Bring in 1d6ef58, 14dc59b, and 5bd06da. Keep a scoped connection key from widening on the outbound path that now also supplies a default User-Agent, take workflow listing failures as AppEvaluationFailed and per-app provider errors, and regenerate the skill digests. Co-authored-by: shuv <shuv1337@users.noreply.github.com>
Add a security-e2e job on Bun 1.4.4 that prepares the suite, installs Playwright Chromium, and runs the five scoped-connection, OAuth registration, User-Agent, and load-failure scenarios. check stays on Bun 1.3.11. Co-authored-by: shuv <shuv1337@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Syncs UsefulSoftwareCo/executor
v2tip5bd06da41into the fork. Merge-base with forkv2(ade7a4053) is04f358c97. This PR is not merged. It does not tag, release, or deploy.Merging this into fork
v2does not deploy production. The fork workflow isfork-cionly. Shipping the OAuth dynamic-client-registration change and the hosted workflow error contracts to prod needs Lauren's sign-off via Poteto.Missing upstream commits
These three commits were on upstream
v2and not on the fork:1d6ef5809ee59ef8e775caf569fc5a7ebb179080Export 4b71470d14dc59b093a96443916309e8f2b90a7bd9633d7eExport b407786e5bd06da415d373479a1ca8033460b7cdd5fba4bdExport d5c2127aHead of this PR is the merge of fork
ade7a4053and upstream5bd06da41. The in-tree CLI package version in that upstream tip is2.0.0-beta.36. Packaging notes in the same tip stop publishing per-platform runtimes asexecutorversions; runtimes through2.0.0-beta.36are deprecated. No migrations. Host protocols are unchanged (live protocol 14, bundles for 1–13 kept).better-authstays1.7.16; the fork's extra patch hunks are unchanged because upstream did not touchpatches/better-auth@1.7.16.patch.What upstream adds
User-Agent: Executor.AppEvaluationFailedor a per-app provider error (WorkflowDefinitionErrorson the SDK, hosted, and local contracts), the same account used when listing tools or skills fails.clientRegistrationDefaultApplicationType: "infer". That replaces the fork's loopback-only/oauth2/registercheck.Security-adjacent: mixed OAuth callbacks
inferno longer refuses a registration that mixes an HTTPS web callback with a loopback or private-use callback. That registration is one native client, and every callback it names is held to the native rules. The old hook only promoted a registration when every redirect URI was loopback, so a mix stayed on the web rules and was refused.Still refused: plain HTTP off a loopback host, and an HTTPS loopback callback on a web-only client.
oauth-registration-application-typecovers the mix, private-use URIs, web-only clients, and both refusals.Conflict resolutions
Three content conflicts. Both sides' intent is kept.
packages/sdk/src/implementation/credential-handles.ts(#78)Upstream copies the request headers and sets
User-Agent: Executorwhen the app sent none, then scans and places credentials from that copy. The fork stamps the MCP connection this Worker was loaded for (stampCaller) and refuses a managed credential sealed for a different connection, so a scoped connection key cannot widen through the Executor app.The merged
forwarddoes both on the same header copy. When the request carries no credential handle,stampCallerruns onrequestHeadersafter the default User-Agent is applied, then that copy is sent. A missing User-Agent does not skip the connection bind. When the request does carry handles, placement uses the samerequestHeaders(so the User-Agent is kept) and the fork's mismatch check still runs.A scoped connection key still cannot widen when an app request has no User-Agent. The no-handle path is the one the Executor app uses to call the host. It now fills in User-Agent and still replaces any connection id app code wrote with the connection the Worker was loaded for. A managed handle from another connection, or one that dropped the bind, is still refused.
packages/sdk/src/implementation/workflows.tsListing workflows maps runtime failures to
AppEvaluationFailedandProviderErrortoappProviderFailure, and an invalid catalog isAppEvaluationFailed. The fork's workflow behavior stays:sharedRuntime,systemCaller, andcallerContexton captured runs and steps. A workflow body is still the host's own work and does not carry the MCP connection that enqueued it.executor-skill-digests.gen.tsRegenerated with
bun run executor:introfrom the merged skills. Not hand-edited.deploy.mdkeeps the fork'sexecutor apps callnotes and upstream's User-Agent note. Only thedeploy.mddigest changed (679ae66cb0b832e0fb9081ca402eaf4469128677366bfbf38570e1036dd916c8).Verification
packages/sdkandpackages/mcp-authhave no unit-test suite. This repo's tests live ine2e/(the Go host is the only other exception). Those packages were covered by typecheck, lint, and the scenarios below.bun run lint(Bun 1.3.11, the fork-ci pin)bun run typecheckbun run e2e:checkversions:check,format:check,apps:protocols,apps:telemetry,api:errors,auth:rate-limit,v1-import:access, browser-scripts,executor:intro --check, no-unit-tests, storage versions, local data steps, edge contract, e2e boundarybun run patches:checkfile mode differs from the patch: expected rejected, got accepted). Git 2.43.0 here does not warn when a patch's file mode differs, which is what that fixture requires. The merge does not change any patch.fork-cionv2passed this check on 2026-11-05.bun run e2e:preparethenbun run e2e:self-host --workers 2 --test-name '...'(Bun 1.4.4; Motel's collector build requires 1.4.4)Self-host scenarios that passed:
npm-launcher.spec.tschanged with the packaging rewrite and runs undere2e/npm-launcher.config.ts, not the self-host or local jobs. It was not run here.