Repository navigation
fix(sse): derive the auto-combo noauth pool from emulated tool calling - #16436
Merged
diegosouzapw merged 7 commits intoOct 16, 2026
Conversation
…hared.ts docs - opencode: add toolCalling=emulated in registry - duckduckgo-web: add toolCalling=emulated in registry - cloudflare-playground: add toolCalling=emulated in registry - uncloseai: add toolCalling=emulated in registry - shared.ts: document toolCalling='emulated' opt-in for prompt-emulated providers This allows free noauth providers (opencode, duckduckgo-web, cloudflare-playground, uncloseai) to work with tool-calling combos by using prompt-emulated tool calling instead of native upstream tool calling. The emulated approach lets 3rd-party CLIs (Claude, Codex, Cursor) handle tool calls while the free provider just generates text. This unlocks free models for tool use cases without requiring upstream tool calling support.
opensource-elearning
force-pushed
the
fix/noauth-providers-api-and-bun-pack
branch
from
October 13, 2026 02:42
cf8bba8 to
0594df5
Compare
…roviders
- Add toolCalling=emulated to cloudflare-playground and uncloseai
- Auto-discovery in virtualFactory.ts picks up all providers with toolCalling=emulated
- No hardcoded allowlist - new providers just need toolCalling=emulated in NOAUTH_PROVIDERS
5 providers now support tool-calling combos via emulation:
- devin-cli-agentic
- opencode
- duckduckgo-web
- cloudflare-playground
- uncloseai
Update the two regression guards that pinned the old {opencode}-only allowlist
(tests/unit/virtual-auto-combo.test.ts, tests/unit/noauth-autocombo-allowlist.test.ts)
to the auto-discovered set, keeping the 2026-07-24 egress-reliability note
(refs cheaper-inference#8183/cheaper-inference#6453/cheaper-inference#7032) as historical context. Repair the comment block above
getEmulatedToolCallingNoAuthProviders(), which the rewrite had left cut mid-sentence.
Verified: auto/coding, auto/coding:free, auto/coding:pro work with tools
opensource-elearning
force-pushed
the
fix/noauth-providers-api-and-bun-pack
branch
from
October 13, 2026 04:05
0594df5 to
217ee3b
Compare
6 of 7 tasks
Move discovery into emulatedNoAuthAllowlist.ts so virtualFactory.ts stays under its frozen ceiling (1239/1258). The pool remains every NOAUTH provider with toolCalling "emulated": cloudflare-playground, devin-cli-agentic, duckduckgo-web, opencode, and uncloseai.
# Conflicts: # open-sse/config/providers/registry/opencode/index.ts
diegosouzapw
merged commit Oct 16, 2026
6759603
into
cheaper-inference:release/v3.8.52
8 of 9 checks passed
diegosouzapw
pushed a commit
that referenced
this pull request
Oct 18, 2026
devin-cli-agentic joins the auto/* pools only once its isolated login is confirmed. A cached `devin auth status` probe (no CLI output, which holds account PII, is ever returned) backs a readiness gate in the auto-combo no-auth pool, a provider-card / detail-page badge, and GET /api/providers/devin-cli-agentic/auth-status, which is classified LOCAL_ONLY in routeGuard.ts because it spawns the CLI (Hard Rules #15/#17; covered by route-guard-devin-agentic-auth-status.test.ts). Direct devin-cli-agentic/<model> routing is unchanged. Operational notes: - The auto/* path never waits on the CLI: it reads the cached status and, when it is missing or older than 60 s, starts ONE background `devin auth status` spawn (8 s timeout). So a server with auto/* traffic spawns the Devin CLI in the background about once a minute. - Devin was already in the auto/* no-auth allowlist via #16436 (emulated tool calling); this PR narrows that admission to a confirmed login. Maintainer fixes on top: - Boundary: open-sse/services/autoCombo/virtualFactory.ts no longer imports @/lib/providers/noAuthAutoRoutingReadiness (new open-sse -> src edge; tip at the 774 ceiling). New open-sse/services/autoCombo/noAuthReadiness.ts registry (registerNoAuthReadiness(id, probe) + isNoAuthProviderReadyForAutoRouting(id)); it fails closed: a provider that requires a probe stays out when none is registered or the probe throws. The Devin probe is registered from src at boot (registerNodejs -> registerNoAuthAutoRoutingReadiness()). - tests/unit/virtual-auto-combo.test.ts (failing on the PR head: it still listed devin-cli-agentic as allowed) now stubs the readiness probe as logged in, so it keeps asserting the full membership with Devin included; no assertion weakened. - noauth-autocombo-allowlist.test.ts registers the real probe like boot does, plus fail-closed cases (no registered probe while the CLI is logged in; throwing probe keeps the rest of the pool intact). - Prettier on devin-agentic-auth-status.test.ts; merged the current tip. Evidence: - noauth-autocombo-allowlist, virtual-auto-combo, devin-agentic-auth-status, route-guard-devin-agentic-auth-status, instrumentation-import-graph-12074: 32/32 (re-run after the final tip merge); vitest providerCardAudioBadge.test.tsx + tests/unit/autoCombo: 16/16. - Gates exit 0: typecheck:core, open-sse typecheck, api typecheck, file-size, complexity, cognitive complexity, dead-code, boundary ratchet (774/774), agent skills (Generated 0), changelog-integrity, env-doc-sync, docs-sync, eslint, prettier. - Any remaining CI reds are the inherited base-red #15306. Thanks @mohammadraufzahed!
6 of 7 tasks
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.
Summary
Adds
toolCalling: "emulated"to the free noauth providers so they stay eligible for tool-calling combos, and replaces the hardcoded auto-combo noauth allowlist with auto-discovery fromNOAUTH_PROVIDERS.Changes
1. Registry entries (
open-sse/config/providers/registry/*)toolCalling: "emulated"added to:opencodeduckduckgo-webcloudflare-playgrounduncloseai2.
open-sse/config/providers/shared.tsNew optional field on
RegistryEntry, with docs:Opt-in for providers whose registry/capability rows report
toolCalling: falsebut that serve prompt-emulated tool calling.3.
src/shared/constants/providers/noauth.tstoolCalling: "emulated"added to opencode, cloudflare-playground and uncloseai. (duckduckgo-webanddevin-cli-agenticalready carried it on the base branch.)4.
open-sse/services/autoCombo/virtualFactory.ts— auto-discoveryReplaces the hardcoded allowlist:
getEmulatedToolCallingNoAuthProviders()scansNOAUTH_PROVIDERSat startup and collects every entry withnoAuth: trueandtoolCalling: "emulated", so there is no hardcoded list to maintain when a provider is added.Net effect on the fresh-install
auto/auto-*noauth pool:{opencode}→{cloudflare-playground, devin-cli-agentic, duckduckgo-web, opencode, uncloseai}.aihorde,auggie,codex-app-server,veoaifree-webandzcodecarry no opt-in and stay out.5. Regression guards updated
tests/unit/noauth-autocombo-allowlist.test.tsandtests/unit/virtual-auto-combo.test.tspinned the old hardcoded{opencode}allowlist. Both now assert the auto-discovered set — present:cloudflare-playground,devin-cli-agentic,duckduckgo-web,opencode,uncloseai; absent:aihorde,auggie,codex-app-server,veoaifree-web,zcode.The header of
noauth-autocombo-allowlist.test.tsand the docblock abovegetEmulatedToolCallingNoAuthProviders()keep the operator decision of 2026-07-24 (refs #8183/#6453/#7032) as historical context:duckduckgo-web(429/VQD) andaihorde(401, anon key rejected) were unreliable on the reference egress (VPS .15) and still carry no opt-in, so they stay out. That decision also scoped the pool to the category/tier and flat-variantauto/*pools —auto/<family>selectors still bypass it (bypassAllowlist, refs #6453/#8183).Adding
toolCalling: "emulated"to anotherNOAUTH_PROVIDERSentry now requires a reviewed diff in both guard files. That is intentional.Why this matters
Free noauth providers have no native upstream tool calling, so the
supportsToolCallingcheck filtered them out of tool-calling combos (auto/coding,auto/best-coding, …). WithtoolCalling: "emulated"they stay eligible: the 3rd-party CLI (Claude Code, Codex, Cursor, …) executes the tools while the free provider only emits the call markers.Scope note
Rebased onto
release/v3.8.52and trimmed to this PR's own 2 commits. Commits belonging to other open PRs were removed and remain in their own PRs: #16323, #16324, #16325, #16326, #16341, #16342, #16346, #16355. The straypr-body.md(leftover draft belonging to another feature) was dropped from the first commit.tests/unit/auto-combo-candidates-free-access-reason.test.tsis byte-identical to base here and its fix lives in #16326.Testing
npm run typecheck:core— passtests/unit/noauth-autocombo-allowlist.test.ts— 3/3 passtests/unit/virtual-auto-combo.test.ts— 12/12 passtests/unit/capability-filter.test.ts,tests/unit/model-capabilities-registry.test.ts,tests/unit/8488-capability-filter-fail-closed.test.ts— 39/39 passshared.ts:916, which is pre-existing and already listed inconfig/quality/eslint-suppressions.json