Skip to content

feat(ai): subagent limits, ctx.keys, ctx.step, and ctx.agents - #1727

Open
AlemTuzlak wants to merge 2 commits into
feat/agent-run-contextfrom
feat/agent-limits-keys-step
Open

AlemTuzlak wants to merge 2 commits into
feat/agent-run-contextfrom
feat/agent-limits-keys-step

Conversation

@AlemTuzlak

@AlemTuzlak AlemTuzlak commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

chat({ subagents: { limits } }) now caps the whole subagent tree: depth, total calls, children at once, and time per child. Agent code also gets ctx.keys to build a keyedAdapter with a provider key, plus ctx.step and ctx.agents, which a host can bind.

This piece is split out of #1555. It is a prerequisite for the harness work there. It stacks on #1723 (feat/agent-run-context).

🎯 Changes

  • subagents.limits (SubagentLimits, SubagentBudget): maxDepth, maxConcurrent, maxCalls, timeoutMs. One budget per root chat, shared by every child through ctx.chat({ subagents }). A refused start, a timeout, or a parent with no time left reaches the model as a tool error (subagent limit reached (maxCalls 12), subagent timed out after 20 ms). A router-picked child does not count, but its own children do, one level deeper. Only the root chat's limits apply.
  • ctx.keys (ProviderKeys: get, require, adapter). From SubagentBinding.keys, else each provider's env names (envKey, which getByokKey now uses too). A missing key throws ByokMissingError with a message that names the env var. Nested children get the host keys unless the nested call sets its own.
  • ctx.step.do(name, fn) (AgentStep): runs fn each time without a host. A host sets SubagentBinding.step to keep step values.
  • ctx.agents.start() (AgentStarter, AgentRunHandle): throws without a host. A host sets SubagentBinding.agents.
  • The tool path of createSyntheticSubagentTools is now one runChild function, which the budget wraps.

Docs: chat/subagents.md (Limit the tree, Run context for hosts), advanced/byok.md (Keys inside agents).

✅ Checklist

  • I have followed the steps in the Contributing guide.
  • I have tested code changes locally with pnpm run test:pr, or these tests do not apply to this pull request.
  • I fully understand the code in this pull request, including any code generated with AI assistance.
  • Docs: I updated docs/ for this change, or this change is not user-facing.
  • Changeset: I added a changeset (pnpm changeset), or this PR does not change a published package.

🚀 Release Impact

  • This change affects published code, and I have generated a changeset.
  • This change is docs/CI/dev-only (no release).

Testing

Commands run. After merging the SubagentForward fix from #1723, these passed locally: nx run-many -t test:types,test:lib,test:oxlint -p @tanstack/ai @tanstack/ai-persistence, pnpm --filter @tanstack/ai-react-native-smoke typecheck, and nx run @tanstack/ai-e2e:test:types. CI is green.

Manual test.

  1. Run pnpm --filter @tanstack/ai-e2e test:e2e --grep "subagents".
  2. Check that subagents.limits refuses a call past maxCalls with a tool error passes. The parent model calls researcher twice with maxCalls: 1. One card finishes, and the second tool result is subagent limit reached (maxCalls 1).

How this PR makes testing easy.

  • Unit: packages/ai/tests/subagent-limits.test.ts, agent-step.test.ts, agent-start.test.ts, and a ctx.keys block in provider-keys.test.ts.
  • E2E: the limits scenario in testing/e2e/tests/subagents.spec.ts. ctx.step and ctx.agents only change behavior with a host, so unit tests cover them.

Risk / rollback

Low. Every option is opt-in. Without limits, the budget has no caps. getByokKey reads env names through the new envKey, with the same result where process exists. Revert the PR to undo.

Public API change

Before

chat({ adapter, messages, subagents: { agents: [researcher] } })

After

chat({
  adapter,
  messages,
  subagents: {
    agents: [researcher],
    limits: { maxDepth: 2, maxConcurrent: 3, maxCalls: 12, timeoutMs: 120_000 },
  },
})

const writer = defineAgent({
  name: 'writer',
  description: 'Writes a draft',
  run: async (ctx) =>
    ctx.chat({ adapter: await ctx.keys.adapter(gpt), stream: false }),
})

🤖 Generated with Claude Code

subagents.limits caps depth, calls, concurrency, and time across the
whole subagent tree with one shared SubagentBudget. Agents get ctx.keys
(ProviderKeys) from the binding or the provider env names, plus ctx.step
and ctx.agents that a host can bind.
@changeset-bot

changeset-bot Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 43be520

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 51 packages
Name Type
@tanstack/ai Minor
@tanstack/ai-acp Patch
@tanstack/ai-angular Patch
@tanstack/ai-anthropic Patch
@tanstack/ai-bedrock Patch
@tanstack/ai-byteplus Patch
@tanstack/ai-claude-code Patch
@tanstack/ai-client Patch
@tanstack/ai-cloudflare Patch
@tanstack/ai-code-mode-snippets Patch
@tanstack/ai-code-mode Patch
@tanstack/ai-codex Patch
@tanstack/ai-cohere Patch
@tanstack/ai-compaction Patch
@tanstack/ai-devtools-core Patch
@tanstack/ai-durable-stream Patch
@tanstack/ai-elevenlabs Patch
@tanstack/ai-fal Patch
@tanstack/ai-gemini Patch
@tanstack/ai-grok-build Patch
@tanstack/ai-grok Patch
@tanstack/ai-groq Patch
@tanstack/ai-llmgateway Patch
@tanstack/ai-lovable Patch
@tanstack/ai-mcp Patch
@tanstack/ai-memory Patch
@tanstack/ai-mistral Patch
@tanstack/ai-octane Patch
@tanstack/ai-ollama Patch
@tanstack/ai-ollaya Patch
@tanstack/ai-openai Patch
@tanstack/ai-opencode Patch
@tanstack/ai-openrouter Patch
@tanstack/ai-perplexity Patch
@tanstack/ai-persistence Patch
@tanstack/ai-preact Patch
@tanstack/ai-react Patch
@tanstack/ai-reactor Patch
@tanstack/ai-remix Patch
@tanstack/ai-sandbox-cloudflare Patch
@tanstack/ai-sandbox Patch
@tanstack/ai-skills Patch
@tanstack/ai-solid Patch
@tanstack/ai-svelte Patch
@tanstack/ai-typesafe Patch
@tanstack/ai-vercel-gateway Patch
@tanstack/ai-vertex Patch
@tanstack/ai-vue Patch
@tanstack/ai-worldlabs Patch
@tanstack/openai-base Patch
ag-ui Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration
  • Configuration used: Repository: TanStack/ai/.coderabbit.yaml
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 9107cd30-9da3-4cb4-81bb-ec0b4c777f6d

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@nx-cloud

nx-cloud Bot commented Oct 12, 2026 •

Copy link
Copy Markdown

View your CI Pipeline Execution ↗ for commit 43be520

Command Status Duration Result
nx affected --targets=test:sherif,test:knip,tes... ✅ Succeeded 13m 36s View ↗
nx run-many --targets=test:coverage --projects=... ✅ Succeeded 2s View ↗
nx run-many --targets=build --exclude=examples/... ✅ Succeeded 2m 24s View ↗

☁️ Nx Cloud last updated this comment at 2026-10-12 19:30:37 UTC

@pkg-pr-new

pkg-pr-new Bot commented Oct 12, 2026

Copy link
Copy Markdown

Open in StackBlitz

@tanstack/ai

npm i https://pkg.pr.new/@tanstack/ai@1727

@tanstack/ai-acp

npm i https://pkg.pr.new/@tanstack/ai-acp@1727

@tanstack/ai-angular

npm i https://pkg.pr.new/@tanstack/ai-angular@1727

@tanstack/ai-anthropic

npm i https://pkg.pr.new/@tanstack/ai-anthropic@1727

@tanstack/ai-bedrock

npm i https://pkg.pr.new/@tanstack/ai-bedrock@1727

@tanstack/ai-byteplus

npm i https://pkg.pr.new/@tanstack/ai-byteplus@1727

@tanstack/ai-claude-code

npm i https://pkg.pr.new/@tanstack/ai-claude-code@1727

@tanstack/ai-client

npm i https://pkg.pr.new/@tanstack/ai-client@1727

@tanstack/ai-cloudflare

npm i https://pkg.pr.new/@tanstack/ai-cloudflare@1727

@tanstack/ai-code-mode

npm i https://pkg.pr.new/@tanstack/ai-code-mode@1727

@tanstack/ai-code-mode-snippets

npm i https://pkg.pr.new/@tanstack/ai-code-mode-snippets@1727

@tanstack/ai-codex

npm i https://pkg.pr.new/@tanstack/ai-codex@1727

@tanstack/ai-cohere

npm i https://pkg.pr.new/@tanstack/ai-cohere@1727

@tanstack/ai-compaction

npm i https://pkg.pr.new/@tanstack/ai-compaction@1727

@tanstack/ai-devtools-core

npm i https://pkg.pr.new/@tanstack/ai-devtools-core@1727

@tanstack/ai-durable-stream

npm i https://pkg.pr.new/@tanstack/ai-durable-stream@1727

@tanstack/ai-elevenlabs

npm i https://pkg.pr.new/@tanstack/ai-elevenlabs@1727

@tanstack/ai-event-client

npm i https://pkg.pr.new/@tanstack/ai-event-client@1727

@tanstack/ai-fal

npm i https://pkg.pr.new/@tanstack/ai-fal@1727

@tanstack/ai-gemini

npm i https://pkg.pr.new/@tanstack/ai-gemini@1727

@tanstack/ai-grok

npm i https://pkg.pr.new/@tanstack/ai-grok@1727

@tanstack/ai-grok-build

npm i https://pkg.pr.new/@tanstack/ai-grok-build@1727

@tanstack/ai-groq

npm i https://pkg.pr.new/@tanstack/ai-groq@1727

@tanstack/ai-isolate-cloudflare

npm i https://pkg.pr.new/@tanstack/ai-isolate-cloudflare@1727

@tanstack/ai-isolate-daytona

npm i https://pkg.pr.new/@tanstack/ai-isolate-daytona@1727

@tanstack/ai-isolate-e2b

npm i https://pkg.pr.new/@tanstack/ai-isolate-e2b@1727

@tanstack/ai-isolate-node

npm i https://pkg.pr.new/@tanstack/ai-isolate-node@1727

@tanstack/ai-isolate-quickjs

npm i https://pkg.pr.new/@tanstack/ai-isolate-quickjs@1727

@tanstack/ai-isolate-quickjs-bun

npm i https://pkg.pr.new/@tanstack/ai-isolate-quickjs-bun@1727

@tanstack/ai-llmgateway

npm i https://pkg.pr.new/@tanstack/ai-llmgateway@1727

@tanstack/ai-lovable

npm i https://pkg.pr.new/@tanstack/ai-lovable@1727

@tanstack/ai-mcp

npm i https://pkg.pr.new/@tanstack/ai-mcp@1727

@tanstack/ai-memory

npm i https://pkg.pr.new/@tanstack/ai-memory@1727

@tanstack/ai-mistral

npm i https://pkg.pr.new/@tanstack/ai-mistral@1727

@tanstack/ai-octane

npm i https://pkg.pr.new/@tanstack/ai-octane@1727

@tanstack/ai-ollama

npm i https://pkg.pr.new/@tanstack/ai-ollama@1727

@tanstack/ai-ollaya

npm i https://pkg.pr.new/@tanstack/ai-ollaya@1727

@tanstack/ai-openai

npm i https://pkg.pr.new/@tanstack/ai-openai@1727

@tanstack/ai-opencode

npm i https://pkg.pr.new/@tanstack/ai-opencode@1727

@tanstack/ai-openrouter

npm i https://pkg.pr.new/@tanstack/ai-openrouter@1727

@tanstack/ai-perplexity

npm i https://pkg.pr.new/@tanstack/ai-perplexity@1727

@tanstack/ai-persistence

npm i https://pkg.pr.new/@tanstack/ai-persistence@1727

@tanstack/ai-preact

npm i https://pkg.pr.new/@tanstack/ai-preact@1727

@tanstack/ai-react

npm i https://pkg.pr.new/@tanstack/ai-react@1727

@tanstack/ai-react-ui

npm i https://pkg.pr.new/@tanstack/ai-react-ui@1727

@tanstack/ai-reactor

npm i https://pkg.pr.new/@tanstack/ai-reactor@1727

@tanstack/ai-remix

npm i https://pkg.pr.new/@tanstack/ai-remix@1727

@tanstack/ai-sandbox

npm i https://pkg.pr.new/@tanstack/ai-sandbox@1727

@tanstack/ai-sandbox-blaxel

npm i https://pkg.pr.new/@tanstack/ai-sandbox-blaxel@1727

@tanstack/ai-sandbox-boxd

npm i https://pkg.pr.new/@tanstack/ai-sandbox-boxd@1727

@tanstack/ai-sandbox-cloudflare

npm i https://pkg.pr.new/@tanstack/ai-sandbox-cloudflare@1727

@tanstack/ai-sandbox-daytona

npm i https://pkg.pr.new/@tanstack/ai-sandbox-daytona@1727

@tanstack/ai-sandbox-docker

npm i https://pkg.pr.new/@tanstack/ai-sandbox-docker@1727

@tanstack/ai-sandbox-e2b

npm i https://pkg.pr.new/@tanstack/ai-sandbox-e2b@1727

@tanstack/ai-sandbox-local-process

npm i https://pkg.pr.new/@tanstack/ai-sandbox-local-process@1727

@tanstack/ai-sandbox-railway

npm i https://pkg.pr.new/@tanstack/ai-sandbox-railway@1727

@tanstack/ai-sandbox-sprites

npm i https://pkg.pr.new/@tanstack/ai-sandbox-sprites@1727

@tanstack/ai-sandbox-upstash-box

npm i https://pkg.pr.new/@tanstack/ai-sandbox-upstash-box@1727

@tanstack/ai-sandbox-vercel

npm i https://pkg.pr.new/@tanstack/ai-sandbox-vercel@1727

@tanstack/ai-skills

npm i https://pkg.pr.new/@tanstack/ai-skills@1727

@tanstack/ai-solid

npm i https://pkg.pr.new/@tanstack/ai-solid@1727

@tanstack/ai-solid-ui

npm i https://pkg.pr.new/@tanstack/ai-solid-ui@1727

@tanstack/ai-svelte

npm i https://pkg.pr.new/@tanstack/ai-svelte@1727

@tanstack/ai-typesafe

npm i https://pkg.pr.new/@tanstack/ai-typesafe@1727

@tanstack/ai-utils

npm i https://pkg.pr.new/@tanstack/ai-utils@1727

@tanstack/ai-vercel-gateway

npm i https://pkg.pr.new/@tanstack/ai-vercel-gateway@1727

@tanstack/ai-vertex

npm i https://pkg.pr.new/@tanstack/ai-vertex@1727

@tanstack/ai-vue

npm i https://pkg.pr.new/@tanstack/ai-vue@1727

@tanstack/ai-vue-ui

npm i https://pkg.pr.new/@tanstack/ai-vue-ui@1727

@tanstack/ai-worldlabs

npm i https://pkg.pr.new/@tanstack/ai-worldlabs@1727

@tanstack/openai-base

npm i https://pkg.pr.new/@tanstack/openai-base@1727

@tanstack/preact-ai-devtools

npm i https://pkg.pr.new/@tanstack/preact-ai-devtools@1727

@tanstack/react-ai-devtools

npm i https://pkg.pr.new/@tanstack/react-ai-devtools@1727

@tanstack/solid-ai-devtools

npm i https://pkg.pr.new/@tanstack/solid-ai-devtools@1727

@tanstack/svelte-ai-devtools

npm i https://pkg.pr.new/@tanstack/svelte-ai-devtools@1727

commit: 43be520

@github-actions

Copy link
Copy Markdown
Contributor

Coverage

✅ Coverage held across 66 compared package(s).

Each package is measured twice in this job — on this PR and on its merge-base with main — and compared. A metric fails only when it is at or above 60% on the merge-base and under 60% on this PR. Other drops are listed but do not fail. Packages your PR doesn't affect are not measured and not listed.

package statements branches functions lines
ai 91.38% (+0.06) 84.78% (+0.06) 92.07% (+0.08) 92.96% (+0.04) ok
ai-acp 78.41% (0.00) 66.79% (0.00) 70.27% (0.00) 80.13% (0.00) ok
ai-angular 73.37% (0.00) 60.66% (0.00) 62.14% (0.00) 75.13% (0.00) ok
ai-anthropic 91.67% (0.00) 85.80% (0.00) 95.53% (0.00) 92.07% (0.00) ok
ai-bedrock 89.52% (0.00) 82.07% (0.00) 92.62% (0.00) 90.82% (0.00) ok
ai-byteplus 97.06% (0.00) 91.62% (0.00) 98.26% (0.00) 98.49% (0.00) ok
ai-claude-code 88.93% (0.00) 76.88% (0.00) 86.88% (0.00) 90.40% (0.00) ok
ai-client 86.46% (0.00) 79.22% (0.00) 84.61% (0.00) 88.40% (0.00) ok
ai-cloudflare 84.64% (0.00) 75.00% (0.00) 83.92% (0.00) 86.00% (0.00) ok
ai-code-mode 91.71% (0.00) 83.12% (0.00) 86.27% (0.00) 92.63% (0.00) ok
ai-code-mode-snippets 87.13% (0.00) 75.67% (0.00) 91.11% (0.00) 88.39% (0.00) ok
ai-codex 94.55% (0.00) 85.10% (0.00) 89.28% (0.00) 95.56% (0.00) ok
ai-cohere 88.97% (0.00) 88.37% (0.00) 85.71% (0.00) 91.80% (0.00) ok
ai-compaction 95.70% (0.00) 82.35% (0.00) 100.00% (0.00) 97.88% (0.00) ok
ai-devtools 83.13% (0.00) 72.77% (0.00) 87.07% (0.00) 85.22% (0.00) ok
ai-durable-stream 86.70% (0.00) 82.25% (0.00) 92.30% (0.00) 88.72% (0.00) ok
ai-elevenlabs 74.68% (0.00) 69.59% (0.00) 59.13% (0.00) 75.46% (0.00) ok
ai-fal 91.10% (0.00) 82.63% (0.00) 92.40% (0.00) 91.60% (0.00) ok
ai-gemini 68.12% (0.00) 67.54% (0.00) 63.97% (0.00) 68.82% (0.00) ok
ai-grok 48.80% (0.00) 53.33% (0.00) 56.16% (0.00) 49.63% (0.00) ok
ai-grok-build 79.19% (0.00) 63.56% (0.00) 77.39% (0.00) 81.02% (0.00) ok
ai-groq 51.31% (0.00) 47.17% (0.00) 65.11% (0.00) 53.42% (0.00) ok
ai-isolate-cloudflare 94.11% (0.00) 70.66% (0.00) 100.00% (0.00) 93.96% (0.00) ok
ai-isolate-daytona 90.25% (0.00) 80.59% (0.00) 100.00% (0.00) 90.15% (0.00) ok
ai-isolate-e2b 92.11% (0.00) 81.48% (0.00) 97.36% (0.00) 95.05% (0.00) ok
ai-isolate-node 84.00% (0.00) 43.39% (0.00) 100.00% (0.00) 83.78% (0.00) ok
ai-isolate-quickjs 89.07% (0.00) 76.41% (0.00) 90.90% (0.00) 90.30% (0.00) ok
ai-isolate-quickjs-bun 7.76% (0.00) 8.08% (0.00) 5.00% (0.00) 8.33% (0.00) ok
ai-llmgateway 97.67% (0.00) 100.00% (0.00) 88.88% (0.00) 97.67% (0.00) ok
ai-lovable 73.21% (0.00) 55.63% (0.00) 85.07% (0.00) 73.96% (0.00) ok
ai-mcp 96.52% (0.00) 91.68% (0.00) 96.88% (0.00) 98.48% (0.00) ok
ai-memory 73.87% (0.00) 52.70% (0.00) 79.74% (0.00) 76.04% (0.00) ok
ai-mistral 84.99% (0.00) 79.97% (0.00) 92.59% (0.00) 85.64% (0.00) ok
ai-octane 90.58% (0.00) 71.48% (0.00) 87.29% (0.00) 91.24% (0.00) ok
ai-ollama 91.76% (0.00) 76.47% (0.00) 90.62% (0.00) 91.71% (0.00) ok
ai-ollaya 86.84% (0.00) 89.28% (0.00) 85.71% (0.00) 91.66% (0.00) ok
ai-openai 65.34% (0.00) 65.68% (0.00) 66.66% (0.00) 65.63% (0.00) ok
ai-opencode 68.77% (0.00) 60.82% (0.00) 64.04% (0.00) 70.78% (0.00) ok
ai-openrouter 86.01% (0.00) 69.73% (0.00) 90.00% (0.00) 87.82% (0.00) ok
ai-perplexity 91.34% (0.00) 90.43% (0.00) 100.00% (0.00) 93.87% (0.00) ok
ai-persistence 91.18% (0.00) 80.14% (0.00) 97.38% (0.00) 94.62% (0.00) ok
ai-preact 87.80% (0.00) 75.87% (0.00) 88.73% (0.00) 89.66% (0.00) ok
ai-react 73.13% (0.00) 52.16% (0.00) 75.54% (0.00) 73.08% (0.00) ok
ai-reactor 94.91% (0.00) 83.33% (0.00) 93.33% (0.00) 96.55% (0.00) ok
ai-remix 39.39% (0.00) 23.35% (0.00) 35.51% (0.00) 41.58% (0.00) ok
ai-sandbox 77.45% (0.00) 82.80% (0.00) 74.47% (0.00) 77.97% (0.00) ok
ai-sandbox-blaxel 87.64% (0.00) 77.18% (0.00) 82.26% (0.00) 89.71% (0.00) ok
ai-sandbox-boxd 95.86% (0.00) 87.12% (0.00) 95.31% (0.00) 98.17% (0.00) ok
ai-sandbox-cloudflare 67.91% (0.00) 57.47% (0.00) 71.79% (0.00) 69.62% (0.00) ok
ai-sandbox-daytona 82.70% (0.00) 81.89% (0.00) 67.14% (0.00) 85.18% (0.00) ok
ai-sandbox-docker 80.15% (0.00) 71.49% (0.00) 77.38% (0.00) 82.13% (0.00) ok
ai-sandbox-e2b 94.42% (0.00) 88.97% (0.00) 93.24% (0.00) 98.63% (0.00) ok
ai-sandbox-local-process 68.00% (0.00) 53.59% (0.00) 75.86% (0.00) 68.88% (0.00) ok
ai-sandbox-railway 94.75% (0.00) 92.68% (0.00) 90.90% (0.00) 97.59% (0.00) ok
ai-sandbox-sprites 73.23% (0.00) 59.70% (0.00) 73.83% (0.00) 76.17% (0.00) ok
ai-sandbox-upstash-box 94.82% (0.00) 91.52% (0.00) 91.04% (0.00) 97.76% (0.00) ok
ai-sandbox-vercel 44.67% (0.00) 38.18% (0.00) 35.18% (0.00) 45.76% (0.00) ok
ai-skills 80.38% (0.00) 64.05% (0.00) 84.86% (0.00) 82.44% (0.00) ok
ai-solid 53.73% (0.00) 40.45% (0.00) 51.94% (0.00) 57.78% (0.00) ok
ai-svelte 70.44% (0.00) 54.50% (0.00) 69.86% (0.00) 75.99% (0.00) ok
ai-typesafe 78.04% (0.00) 84.61% (0.00) 66.66% (0.00) 82.05% (0.00) ok
ai-vercel-gateway 75.97% (0.00) 55.63% (0.00) 85.41% (0.00) 79.38% (0.00) ok
ai-vertex 96.77% (0.00) 97.22% (0.00) 100.00% (0.00) 96.77% (0.00) ok
ai-vue 60.70% (0.00) 36.17% (0.00) 62.00% (0.00) 62.95% (0.00) ok
ai-worldlabs 79.62% (0.00) 71.50% (0.00) 91.42% (0.00) 82.66% (0.00) ok
openai-base 88.71% (0.00) 76.01% (0.00) 98.35% (0.00) 90.86% (0.00) ok

@github-actions
github-actions Bot requested a review from tombeckenham October 12, 2026 21:19
@github-actions github-actions Bot added the waiting-on: maintainer The ball is in the maintainers’ court label Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

waiting-on: maintainer The ball is in the maintainers’ court

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants