feat(providers): add local ZCode ACP backend (#10184)

* feat(providers): add local ZCode ACP backend

* test(snapshots): regenerate translate-path golden for zcode provider

The new local ZCode ACP backend (zcode://app-server/stdio) was added to the
provider catalog but the translate-path golden snapshot was not regenerated,
so the combined suite (provider-translate-path-golden.test.ts) failed on the
merged tip. Regenerate the snapshot to include the zcode translate-path entry.

Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>

* docs(env): document ZCODE_* vars for the local zcode provider

Registers the 11 ZCODE_* env vars read by the zcode executor (.env.example
+ docs/reference/ENVIRONMENT.md) so the env-doc-sync gate stays green.

Co-authored-by: Diego Souza <8016841+diegosouzapw@users.noreply.github.com>

* test(autoCombo): include zcode in the glm-family provider set

#10184's local zcode backend advertises the full GLM_SHARED_MODELS
line-up (registry/zcode, authType none) — same documented case as auggie
and devin-cli-agentic. Update auto/glm provider-set assertion to include
it.

Co-authored-by: Diego Souza <8016841+diegosouzapw@users.noreply.github.com>

---------

Co-authored-by: roomhacker <roomhacker@bezrabotnyi.com>
Co-authored-by: adevwithpurpose <adevwithpurpose@users.noreply.github.com>
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com>
This commit is contained in:
Bezrabotnyi
2026-08-16 06:13:36 +03:00
committed by GitHub
parent aa5b77eb6e
commit 595d04dad9
18 changed files with 1243 additions and 1 deletions

View File

@@ -85,6 +85,25 @@ export const CLI_TOOLS: Record<string, CliCatalogEntry> = {
baseUrlSupport: "full",
defaultCommand: "codex",
},
zcode: {
id: "zcode",
name: "ZCode (GLM Coding Plan)",
color: "#3B82F6",
description: "Local ZCode app-server backend; auth remains in the user's ZCode profile",
docsUrl: "https://zcode.z.ai",
configType: "custom",
category: "code",
vendor: "Z.ai",
// ZCode's app-server is a native length-prefixed protocol, not ACP. The
// zcode provider executor owns its lifecycle instead of ACP spawning it.
acpSpawnable: false,
baseUrlSupport: "none",
defaultCommand: "zcode",
notes: [
{ type: "info", text: "Uses the local ZCode app-server and its existing builtin:zai-coding-plan login." },
{ type: "warning", text: "The response is buffered until the ZCode turn completes." },
],
},
droid: {
id: "droid",
name: "Factory Droid",

View File

@@ -38,6 +38,8 @@ export const FREE_APIKEY_PROVIDER_IDS = new Set([
// accepts an optional connection row for display/priority/testStatus tracking —
// no apiKey is ever required or sent upstream.
"auggie",
// zcode is a local app-server backend; auth stays in the ZCode profile.
"zcode",
]);
export function supportsApiKeyOnFreeProvider(providerId: unknown): boolean {

View File

@@ -157,6 +157,24 @@ export const NOAUTH_PROVIDERS = {
text: "Augment (Auggie CLI) requires the `auggie` binary installed and authenticated locally (`auggie login`). OmniRoute spawns it as a subprocess and never sees or stores your Augment credentials.",
},
},
zcode: {
id: "zcode",
alias: "zc",
name: "ZCode (GLM Coding Plan)",
icon: "terminal",
color: "#3B82F6",
textIcon: "ZC",
website: "https://zcode.z.ai",
noAuth: true,
hasFree: false,
serviceKinds: ["llm"],
isLocalCli: true,
authHint:
"No API key stored by OmniRoute. The local ZCode app-server uses the existing builtin:zai-coding-plan login.",
notice: {
text: "ZCode runs locally through its native app-server. OmniRoute never receives or stores the Z.ai credential.",
},
},
aihorde: {
id: "aihorde",
alias: "horde",

View File

@@ -93,6 +93,17 @@ const CLI_TOOLS: Record<string, any> = {
},
},
},
zcode: {
defaultCommand: "zcode",
envBinKey: "ZCODE_BIN",
requiresBinary: true,
// The app-server performs a local runtime handshake and can be slower on
// the first launch while the user's ZCode profile is loaded.
healthcheckTimeoutMs: 15000,
paths: {
config: ".zcode",
},
},
cline: {
defaultCommand: "cline",
envBinKey: "CLI_CLINE_BIN",