executor
1.5.4
Patch Changes
-
#943
f485e4aThanks @RhysSullivan! - One auth model across OpenAPI, GraphQL, and MCP- Every protocol plugin now stores the same placements-based auth methods (the new
@executor-js/sdk/http-authvocabulary): an API-key method carries any mix of header and query placements, each rendered from its own credential input — so one source can declare OAuth, a bearer-header-plus-team-id-query method, a plain bearer, and a query token side by side, and one connection can carry several values (e.g. both Datadog keys). - MCP and GraphQL gain what only OpenAPI could do before: multi-placement methods, query-parameter credentials (servers like ui.sh's
?token=), and multi-input connections. Rendering, catalog projection, slug normalization, and the React method editor/codec are shared instead of triplicated; the connect modal collects one value per input. - Invoking with an unresolvable credential input now fails with
connection_value_missing(naming the missing inputs) instead of silently dialing unauthenticated. - Stored integration configs are rewritten to the canonical shape by a one-off migration: local and self-host run it automatically at startup; cloud operators run
bun run db:migrate-auth:prodbefore deploying. Connection bindings and stored credential values are preserved exactly. - Authoring: apikey methods are authored in ONE request-shaped dialect on every plugin — it reads like the request it produces:
{ type: "apiKey", headers: { Authorization: ["Bearer ", variable("token")] }, queryParams: { team_id: [variable("team_id")] } }(variable()is exported from each plugin; a plain-string value is a static literal). Inputs normalize to the canonical placements model, which is what stored configs and the catalog read as. Authoring is strict where the renderer is: a value carries at most one variable, as the final part. - Every method is keyed by
kind— OpenAPI's oauth templates re-key from the retiredtype: "oauth"spelling tokind: "oauth2"(matching MCP/GraphQL); the one-off migration rewrites stored entries. - Breaking (wire): the retired single-placement inputs (
headerNameon MCP,in/nameon GraphQL), raw canonical-placement inputs, andtype: "oauth"oauth inputs are rejected. Themcp.addServersingularauthshorthand still works.
- Every protocol plugin now stores the same placements-based auth methods (the new
-
#950
dbb48ecThanks @RhysSullivan! - Fix credential sharing for workspace connectionsOrg-shared connections now resolve for every member of a workspace, not only the member who created them. Existing connections are migrated automatically; stored secrets are unaffected.
-
Updated dependencies []:
- @executor-js/local@1.4.4
- @executor-js/sdk@1.5.4
- @executor-js/runtime-quickjs@1.5.4
- @executor-js/api@1.4.26
1.5.3
Patch Changes
-
#939
db09372Thanks @RhysSullivan! - Desktop packaging follow-ups from the v1.5.2 release run:- Fixed the Intel mac desktop build failing in CI (the cross-target dependency install was being glob-expanded by the shell).
- Fixed the first-launch data migration on Windows: renaming the previous database file could hit a transient
EBUSYwhile the just-closed SQLite handle was released, so the move now retries briefly instead of failing startup.
-
Updated dependencies []:
- @executor-js/sdk@1.5.3
- @executor-js/runtime-quickjs@1.5.3
- @executor-js/local@1.4.4
- @executor-js/api@1.4.25
1.5.2
Patch Changes
-
#936
2db9d65Thanks @RhysSullivan! - Desktop- Fixed the desktop app failing to launch: the packaged sidecar was missing its native SQLite and keychain bindings, so the local server exited before the window appeared. The release pipeline now smoke-tests the compiled sidecar before publishing.
- Mac auto-updates now serve the correct architecture — the arm64 and x64 update manifests previously collided, so Apple Silicon machines could be offered Intel builds.
- If the local server fails to start, the app now shows the error (with a pointer to the log) and installs any available update on quit, instead of closing silently.
Integrations & auth
- Integrations can declare multiple authentication methods in every plugin. MCP servers join the slugged template model used by OpenAPI and GraphQL, so a server can offer OAuth and an API key side by side, and adding a custom method appends instead of replacing a detected one. Existing connections keep working with no migration.
- OAuth app management is folded into the connect modal, so client setup happens where accounts are added.
-
Updated dependencies []:
- @executor-js/sdk@1.5.2
- @executor-js/runtime-quickjs@1.5.2
- @executor-js/local@1.4.4
- @executor-js/api@1.4.24
1.5.1
Patch Changes
-
#927
df40cd3Thanks @RhysSullivan! - Fixexecutor webcrashing withno such table: plugin_storagewhen upgrading from an older v1 release. The v1 → v2 data migration now replays the bundled legacy schema migrations first, so databases last touched by any pre-1.5 version are brought up to the final v1 schema before their data is migrated. -
Updated dependencies []:
- @executor-js/sdk@1.5.1
- @executor-js/runtime-quickjs@1.5.1
- @executor-js/local@1.4.4
- @executor-js/api@1.4.23
1.5.0
Minor Changes
-
c7bb2a4Thanks @RhysSullivan! - Integrations and connections rework.Highlights
- Sources are now split into integrations (the API surface) and connections (the credential). One integration can hold many connections — workspace-shared or personal — and each connection gets its own tool catalog.
- Tool addresses carry the connection, so agents can target a specific account:
tools.vercel_api.org.workspace.deployvstools.vercel_api.user.personal.deploy. - Existing data migrates automatically on first launch: sources become integrations, secrets and credential bindings become connections, OAuth apps and tool policies carry over, and the previous database is kept as a backup next to the new one.
- Public no-auth servers (MCP, GraphQL) connect without entering a credential.
- Connections display the signed-in identity, so you can tell accounts apart at a glance.
- The CLI, local web app, and desktop app can connect to a shared Executor server instead of each running their own; the desktop app persists server profiles across restarts.
- Self-hosted Executor now publishes a multi-architecture GHCR image at
ghcr.io/rhyssullivan/executor-selfhost(stable releases taggedlatest, prereleases taggedbeta).
Reliability
- OpenAPI, GraphQL, and MCP tools return structured authentication failures with recovery guidance instead of opaque internal errors — covering missing credentials, expired OAuth connections, upstream 401/403 responses, and MCP per-user isolation.
- OAuth popups complete more reliably in Chrome by preserving the callback channel through the same-origin completion page.
- OAuth Dynamic Client Registration data is reused across retries and reconnects, including scopes, so providers are not asked to register duplicate clients.
- Creating a connection with invalid input (no credential for a credentialed method, mixed input origins) returns a clear error with the reason instead of an opaque internal error.
- The v1 → v2 migration creates connections for no-auth sources, derives OAuth authorize endpoints when v1 only stored a bare issuer origin, keys inline header values per source, and skips malformed credential bindings with a warning instead of silently dropping them. An unreachable OAuth metadata endpoint no longer blocks the migration on launch.
- Google sources use a bundled OpenAPI flow with valid schemas.
- MCP tool output schemas match the actual invocation result envelope, including
content,structuredContent,_meta, andisError. - Integration icons survive migration, connected presets show their icons, and credentials show a loading badge while resolving.
Breaking changes
- Tool addresses gained two segments for the connection's owner and name:
tools.vercel_api.deployis nowtools.vercel_api.org.workspace.deploy. Saved tool policies are rewritten automatically during migration; agent code that hard-codes v1.4 addresses needs the new shape (tools.search()returns ready-to-call paths). - The Google Discovery plugin was removed. Google integrations now go through the bundled Google flow; existing Google sources migrate automatically.
Patch Changes
-
#922
1ba0193Thanks @RhysSullivan! - MoveeffectfromdependenciestopeerDependenciesin the published library packages so consumers provide a single shared Effect instance. -
Updated dependencies [
7d7fbbd,1ba0193]:- @executor-js/sdk@1.5.0
- @executor-js/runtime-quickjs@1.5.0
- @executor-js/local@1.4.4
- @executor-js/api@1.4.22