dsh-tap 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +99 -0
- package/CHANGELOG.md +751 -0
- package/LICENSE +21 -0
- package/README.en.md +59 -0
- package/README.md +256 -0
- package/cordis.patch.yml +385 -0
- package/core/bridge.js +698 -0
- package/core/json-store.js +91 -0
- package/core/rotation.js +108 -0
- package/core/usage-meter.js +176 -0
- package/docs/diagnosis-cache-quota.md +181 -0
- package/docs/diagnosis-qoder-flash.md +67 -0
- package/docs/diagnosis-trae-3003.md +302 -0
- package/docs/goals/bridge-port-host-split.md +91 -0
- package/docs/goals/desktop-adaptation.md +106 -0
- package/docs/goals/qoder-cn-provider-design.md +308 -0
- package/docs/goals/settings-card-ux-redesign-plan.md +1680 -0
- package/docs/goals/settings-card-ux-redesign.md +162 -0
- package/docs/goals/trae-agent-v3.md +41 -0
- package/docs/goals/trae-work-cn-repair.md +44 -0
- package/docs/goals/v0.8-/351/242/235/345/272/246/345/217/257/350/247/201-/346/250/241/345/236/213/345/212/250/346/200/201/345/214/226-/345/244/232/346/234/215/345/212/241/345/225/206.md +85 -0
- package/docs/pitfalls.md +105 -0
- package/docs/reverse/trae-cloud-api.md +218 -0
- package/docs/reverse/trae-model-catalog.md +129 -0
- package/docs/reverse/traework-cn.md +520 -0
- package/docs/rules/STATE.md +198 -0
- package/docs/rules/content-moderation.md +54 -0
- package/docs/rules/dev-role-boundary.md +94 -0
- package/docs/rules/extra-providers.md +42 -0
- package/docs/rules/gateway-facts.md +91 -0
- package/docs/rules/oauth-handshake.md +76 -0
- package/docs/rules/prompt-cache.md +93 -0
- package/docs/rules/quota-signals.md +125 -0
- package/docs/rules/routing.md +84 -0
- package/docs/rules/templates/oauth-reverse-checklist.md +42 -0
- package/docs/rules/trae-surface.md +242 -0
- package/docs/rules/ua-validation.md +81 -0
- package/host-config.js +282 -0
- package/index.js +2306 -0
- package/lib/client.js +2893 -0
- package/local-scan.js +104 -0
- package/package.json +82 -0
- package/providers/ark/index.js +11 -0
- package/providers/bailian/index.js +10 -0
- package/providers/bigmodel/index.js +11 -0
- package/providers/codebuddy/agenttool.js +122 -0
- package/providers/codebuddy/catalog.js +227 -0
- package/providers/codebuddy/errors.js +44 -0
- package/providers/codebuddy/headers.js +36 -0
- package/providers/codebuddy/images.js +125 -0
- package/providers/codebuddy/index.js +123 -0
- package/providers/codebuddy/oauth.js +279 -0
- package/providers/deepseek/index.js +11 -0
- package/providers/moonshot/index.js +11 -0
- package/providers/openai-compat.js +177 -0
- package/providers/openrouter/index.js +27 -0
- package/providers/qoder/catalog.js +145 -0
- package/providers/qoder/cosy.js +419 -0
- package/providers/qoder/gateway.js +563 -0
- package/providers/qoder/index.js +116 -0
- package/providers/qoder/oauth.js +364 -0
- package/providers/qoder/qoder_auth.wasm +0 -0
- package/providers/qoder/quota.js +56 -0
- package/providers/qwen/index.js +15 -0
- package/providers/tool-pairing.js +129 -0
- package/providers/trae/catalog.js +103 -0
- package/providers/trae/errors.js +85 -0
- package/providers/trae/gateway.js +853 -0
- package/providers/trae/index.js +126 -0
- package/providers/trae/oauth.js +443 -0
- package/providers/trae/quota.js +75 -0
- package/providers/trae/remote.js +365 -0
- package/scripts/capture-cache.mjs +65 -0
- package/scripts/capture-traffic.mjs +83 -0
- package/scripts/hermes-probe-dev-role.mjs +263 -0
- package/scripts/measure-latency.mjs +253 -0
- package/scripts/probe-ark-thinking.mjs +298 -0
- package/scripts/probe-cache-decline.mjs +292 -0
- package/scripts/probe-cache-ttl.mjs +221 -0
- package/scripts/probe-cache.mjs +156 -0
- package/scripts/probe-codebuddy-efforts.mjs +355 -0
- package/scripts/probe-codebuddy-tier-wiring.mjs +244 -0
- package/scripts/probe-effort-gaps.mjs +133 -0
- package/scripts/probe-media.mjs +115 -0
- package/scripts/probe-moderation.mjs +159 -0
- package/scripts/probe-oauth.mjs +617 -0
- package/scripts/probe-qoder-attribution-arm8.mjs +92 -0
- package/scripts/probe-qoder-attribution-arm9.mjs +102 -0
- package/scripts/probe-qoder-attribution.mjs +266 -0
- package/scripts/probe-qoder-flash-confirm.mjs +94 -0
- package/scripts/probe-qoder-live.mjs +344 -0
- package/scripts/probe-qoder-matrix.mjs +274 -0
- package/scripts/probe-qoder-null-content.mjs +153 -0
- package/scripts/probe-qoder-pairing.mjs +308 -0
- package/scripts/probe-qoder-quota.mjs +162 -0
- package/scripts/probe-qoder-thinking-config.mjs +52 -0
- package/scripts/probe-qoder-thinking-efforts.mjs +269 -0
- package/scripts/probe-quota.mjs +136 -0
- package/scripts/probe-quota2.mjs +144 -0
- package/scripts/probe-routing.mjs +226 -0
- package/scripts/probe-trae-3003-diagnosis.mjs +139 -0
- package/scripts/probe-trae-agent-v3.mjs +399 -0
- package/scripts/probe-trae-efforts.mjs +149 -0
- package/scripts/probe-trae-live.mjs +147 -0
- package/scripts/probe-trae-max-effort.mjs +179 -0
- package/scripts/probe-trae-model-routing.mjs +381 -0
- package/scripts/probe-trae-thinking-scene.mjs +238 -0
- package/scripts/probe-trae-transport-outage.mjs +176 -0
- package/scripts/probe-ua.mjs +508 -0
- package/scripts/trae-model-catalog.mjs +632 -0
- package/scripts/verify-agents-md.mjs +45 -0
- package/scripts/verify-bridge.mjs +1041 -0
- package/scripts/verify-core-generic.mjs +302 -0
- package/scripts/verify-desktop-acceptance.mjs +184 -0
- package/scripts/verify-host-config.mjs +265 -0
- package/scripts/verify-models.mjs +390 -0
- package/scripts/verify-providers.mjs +255 -0
- package/scripts/verify-qoder-provider.mjs +1020 -0
- package/scripts/verify-rotation.mjs +308 -0
- package/scripts/verify-trae-model-catalog.mjs +284 -0
- package/scripts/verify-trae-provider.mjs +1451 -0
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* providers/trae/errors.js — Trae 云端错误码表。
|
|
3
|
+
*
|
|
4
|
+
* 语义参照表,不是触发逻辑。每条以探测证据为准(2026-08-23 无凭据实测 +
|
|
5
|
+
* docs/rules/trae-surface.md §2.2):
|
|
6
|
+
* - 聊天网关(trae-api-cn.mchost.guru/api/agent/v3/*)未认证 → 401 + {code:1001}
|
|
7
|
+
* - ExchangeToken(api.trae.cn,火山系 ResponseMetadata.Error 信封):
|
|
8
|
+
* 假 ClientID → 400 code 10101 "Invalid client.";
|
|
9
|
+
* 真 ClientID + 假 AuthCode → 400 code 10101 "无效参数:{__Message.field}."
|
|
10
|
+
* - cloudide 面(api.trae.cn/cloudide/…)未登录 → 401 code 20310
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
export const TRAE_ERROR_CODES = {
|
|
14
|
+
/** 聊天网关统一未认证码(mchost /api/agent/v3/*)。 */
|
|
15
|
+
1001: 'chat gateway authentication failed',
|
|
16
|
+
/** remote 会话(/api/remote/v1/*):套餐/权益不足——message 为空、data.plan 携带
|
|
17
|
+
* 所需档位(2026-08-24 实测:Free 账号请求 kimi-k3 命中,glm-5.3 可正常服务)。 */
|
|
18
|
+
1005: 'remote session entitlement/plan gate',
|
|
19
|
+
/** raw 面(llm_utils_chat):function 未注册/参数 proto 反序列化失败。
|
|
20
|
+
* 2026-10-05 探针实测两形态:「no function config found for appId=…,
|
|
21
|
+
* function=<名>」(function 名未注册)与「LLMUtilsChat ChatStream failed: …
|
|
22
|
+
* read field 8 'Messages' error … required field Name is not set」(历史
|
|
23
|
+
* assistant.tool_calls 误用 OpenAI function 键,该面要求 function_call)。 */
|
|
24
|
+
2001: 'function 未注册或请求体 proto 形态错误',
|
|
25
|
+
/** raw 面(llm_utils_chat)模型解析失败:服务端把请求模型在注册表里全部试挂后
|
|
26
|
+
* 放弃。2026-08-24 实测该码已从"仅非默认模型"扩大到"一切 model 名(含默认、
|
|
27
|
+
* 含不带 model 字段)"——inline_chat 面服务端故障(docs/diagnosis-trae-3003.md)。 */
|
|
28
|
+
3003: 'all models failed(服务端 inline_chat 面模型解析失败)',
|
|
29
|
+
/** raw 面 4001:参数形态/绑定错误(app_id 缺失、parameters 未序列化等)。 */
|
|
30
|
+
4001: 'raw 面参数绑定失败(expr_path/类型不匹配)',
|
|
31
|
+
/** raw 面 4011:限流或「该 function 拒绝此模型」(message 恒谎称 rate limit——
|
|
32
|
+
* dsh-connect-trae 实测:solo_agent 函数调任何模型都回 4011)。 */
|
|
33
|
+
4011: 'rate limit 或 function 不服务该模型(message 文案不可尽信)',
|
|
34
|
+
/** raw 面(llm_utils_chat function=chat):模型名未知(2026-10-05 fn 扫描实测;
|
|
35
|
+
* 与 2001 的区别:chat 是已注册 function,进入模型路由层后才报模型未知)。 */
|
|
36
|
+
4023: 'model unknown(chat function 已注册但模型名不被路由)',
|
|
37
|
+
/** create_agent_task 面:config 注册表为空(2026-08-24 实测,docs/diagnosis-trae-3003.md §11)。 */
|
|
38
|
+
9074: 'agent task config item is empty(solo_agent_lite 注册表为空)',
|
|
39
|
+
/** remote 会话并发门:solo_agent_parallel_limit 用满(僵尸会话占位时也触发,
|
|
40
|
+
* 2026-08-24 实测;会话随沙箱 TTL 自灭,或用 stop 端点善后)。 */
|
|
41
|
+
991502: 'solo agent parallel limit reached',
|
|
42
|
+
/** OAuth/ExchangeToken 面:client 或参数无效(ResponseMetadata 信封)。 */
|
|
43
|
+
10101: 'oauth exchange invalid client/params',
|
|
44
|
+
/** cloudide 面:未登录(GetUserInfo 等带 x-cloudide-token 的端点)。 */
|
|
45
|
+
20310: 'cloudide not logged in',
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** 已知错误码的可操作处置提示(追加在透传消息之后,帮助用户自助而非只看裸码)。 */
|
|
49
|
+
const TRAE_ERROR_HINTS = {
|
|
50
|
+
3003: '(Trae 服务端 inline 通道当前对该模型名返回此错——非凭据/配额问题;可在插件设置卡把「聊天传输」切为 remote(纯文本会话、真实模型路由、耗 work 额度池;注意 remote 不支持 dsh 工具环)或切为 agent(solo_work_lite,2026-10-05 探针证实支持工具环+并行调用,模型位钉死 glm-5.2)。详见 docs/diagnosis-trae-3003.md)',
|
|
51
|
+
2001: '(function 未注册或请求体 proto 形态错误:若消息含 assistant.tool_calls,该面要求 function_call 键而非 OpenAI function 键)',
|
|
52
|
+
4023: '(模型名不被该 function 路由——chat function 已注册但模型注册表无此项;可用模型名见设置卡「同步目录」)',
|
|
53
|
+
991502: '(remote 并发额度被存活会话占满:等待沙箱 TTL 自灭或在 Trae 端停止会话后重试)',
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** 网关统一错误文案:`trae <code> <message>` + 已知码的处置提示。 */
|
|
57
|
+
export function formatTraeErrorMessage(code, message) {
|
|
58
|
+
const base = `trae ${code ?? ''} ${message ?? ''}`.replace(/\s+/g, ' ').trim()
|
|
59
|
+
return code != null && TRAE_ERROR_HINTS[code] ? `${base} ${TRAE_ERROR_HINTS[code]}` : base
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* 把云端错误响应规范化为 { status, code, message }(信封两种:mchost 的
|
|
64
|
+
* {code,message} 与火山系 ResponseMetadata.Error)。非 JSON/空体容忍为
|
|
65
|
+
* "unknown"——网关层崩溃时出现过裸 500(codebuddy images 家族同款教训)。
|
|
66
|
+
* message 为空时按码表回填语义(remote error 事件实测 message:"" + data.plan)。
|
|
67
|
+
*/
|
|
68
|
+
export function normalizeTraeError(status, body) {
|
|
69
|
+
const withFallback = (code, message) => ({
|
|
70
|
+
status,
|
|
71
|
+
code: code ?? null,
|
|
72
|
+
message: message || (code != null && TRAE_ERROR_CODES[code] ? TRAE_ERROR_CODES[code] : message ?? ''),
|
|
73
|
+
})
|
|
74
|
+
if (body && typeof body === 'object') {
|
|
75
|
+
const volc = body.ResponseMetadata?.Error
|
|
76
|
+
if (volc) return withFallback(volc.Code, volc.Message ?? '')
|
|
77
|
+
if (body.code != null || body.message != null) {
|
|
78
|
+
return withFallback(body.code ?? null, body.message ?? '')
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return { status, code: null, message: typeof body === 'string' && body ? body.slice(0, 200) : `HTTP ${status}` }
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** 凭据不可用(组合根候选为空时匹配的稳定文案)。 */
|
|
85
|
+
export const TRAE_CREDENTIAL_UNAVAILABLE_MESSAGE = 'Trae 凭据不可用(先在插件配置卡的 TraeWork CN 分区登录)'
|