Skip to content

Project the heavy schema columns off the tool hot paths#970

Merged
RhysSullivan merged 1 commit into
mainfrom
tool-row-select-projection
Jun 12, 2026
Merged

Project the heavy schema columns off the tool hot paths#970
RhysSullivan merged 1 commit into
mainfrom
tool-row-select-projection

Conversation

@RhysSullivan

@RhysSullivan RhysSullivan commented Jun 12, 2026

Copy link
Copy Markdown
Collaborator

What

Every invoke loaded the full tool row — including input_schema and output_schema JSON it never reads — and tools.list loaded every tool's schemas unbounded just to project metadata, so list cost scaled with schema bytes rather than tool count. The same shape of waste the spec inlining had, in miniature, across the tool table.

  • The core DB wrapper now exposes fumadb's column projection (select), typed per table with the result narrowed to the chosen columns.
  • The invoke lookup, tools.list, and the not-found suggestion queries select TOOL_INVOCATION_COLUMNS — everything but the two schema columns.
  • The plugin invokeTool contract documents this as ToolInvocationRow. No plugin read the schemas off the row: operation details ride in plugin storage (openapi/graphql bindings) or annotations (mcp stamp).
  • tools.schema (describe) is unchanged and remains the schema-bearing surface.

Behavior change

Tool.inputSchema/outputSchema (already optional) are now absent on tools.list results. The HTTP list endpoint never serialized them, and the execution/search layers only read name/description — one test asserted schemas via list and moved to tools.schema.

Testing

New tool-row-projection tests: list is metadata-only, invoke works end-to-end off the projected row, describe still serves full schemas. Full repo suite green.

Stack

  1. Remove the D1-to-R2 oversized-value offload #967
  2. Move inline specs to the blob table at boot on the libSQL hosts #968
  3. Drop the inline-spec read paths; pointer configs are the only shape #969
  4. Project the heavy schema columns off the tool hot paths #970 👈 current

@github-actions

github-actions Bot commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Cloudflare preview

Torn down — the PR is closed.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
executor-marketing 7206161 Commit Preview URL

Branch Preview URL
Jun 12 2026, 05:51 AM

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jun 12, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
✅ Deployment successful!
View logs
executor-cloud 7206161 Jun 12 2026, 05:51 AM

@pkg-pr-new

pkg-pr-new Bot commented Jun 12, 2026

Copy link
Copy Markdown

Open in StackBlitz

@executor-js/cli

npm i https://pkg.pr.new/@executor-js/cli@970

@executor-js/config

npm i https://pkg.pr.new/@executor-js/config@970

@executor-js/execution

npm i https://pkg.pr.new/@executor-js/execution@970

@executor-js/sdk

npm i https://pkg.pr.new/@executor-js/sdk@970

@executor-js/codemode-core

npm i https://pkg.pr.new/@executor-js/codemode-core@970

@executor-js/runtime-quickjs

npm i https://pkg.pr.new/@executor-js/runtime-quickjs@970

@executor-js/plugin-file-secrets

npm i https://pkg.pr.new/@executor-js/plugin-file-secrets@970

@executor-js/plugin-graphql

npm i https://pkg.pr.new/@executor-js/plugin-graphql@970

@executor-js/plugin-keychain

npm i https://pkg.pr.new/@executor-js/plugin-keychain@970

@executor-js/plugin-mcp

npm i https://pkg.pr.new/@executor-js/plugin-mcp@970

@executor-js/plugin-onepassword

npm i https://pkg.pr.new/@executor-js/plugin-onepassword@970

@executor-js/plugin-openapi

npm i https://pkg.pr.new/@executor-js/plugin-openapi@970

executor

npm i https://pkg.pr.new/executor@970

commit: 5adeb6c

@RhysSullivan RhysSullivan force-pushed the drop-inline-spec-fallback branch from 52c0bae to 26b23dd Compare June 12, 2026 05:41
@RhysSullivan RhysSullivan force-pushed the tool-row-select-projection branch from 4995d43 to fa0afd7 Compare June 12, 2026 05:41
@RhysSullivan RhysSullivan force-pushed the drop-inline-spec-fallback branch from 26b23dd to 73d64a5 Compare June 12, 2026 05:45
@RhysSullivan RhysSullivan force-pushed the tool-row-select-projection branch from fa0afd7 to 5adeb6c Compare June 12, 2026 05:45
@RhysSullivan RhysSullivan changed the base branch from drop-inline-spec-fallback to main June 12, 2026 05:49
Every invoke loaded the full tool row — including input_schema and
output_schema JSON it never reads — and tools.list loaded every tool's
schemas unbounded just to project metadata, so list cost scaled with
schema bytes rather than tool count. The same shape of waste the spec
inlining had, in miniature, across the tool table.

The core DB wrapper now exposes fumadb's column projection (select),
typed per table with the result narrowed to the chosen columns. The
invoke lookup, tools.list, and the not-found suggestion queries select
TOOL_INVOCATION_COLUMNS — everything but the two schema columns. The
plugin invokeTool contract documents this as ToolInvocationRow (no
plugin read the schemas off the row; operation details ride in plugin
storage or annotations). tools.schema (describe) is unchanged and
remains the schema-bearing surface.

One test moved from asserting schemas on tools.list to tools.schema —
that list behavior is exactly what this change removes.
@RhysSullivan RhysSullivan force-pushed the tool-row-select-projection branch from 5adeb6c to 7206161 Compare June 12, 2026 05:49
@RhysSullivan RhysSullivan merged commit 247634b into main Jun 12, 2026
13 checks passed
@RhysSullivan RhysSullivan deleted the tool-row-select-projection branch June 12, 2026 06:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant