@jsonstudio/rcc 0.89.1492 → 0.89.1502
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/configsamples/config.json +4 -12
- package/dist/build-info.js +2 -2
- package/dist/cli/commands/init.js +3 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/client/gemini-cli/gemini-cli-protocol-client.js +9 -13
- package/dist/client/gemini-cli/gemini-cli-protocol-client.js.map +1 -1
- package/dist/commands/oauth.js +20 -5
- package/dist/commands/oauth.js.map +1 -1
- package/dist/error-handling/quiet-error-handling-center.js +8 -46
- package/dist/error-handling/quiet-error-handling-center.js.map +1 -1
- package/dist/manager/modules/quota/antigravity-quota-manager.d.ts +2 -4
- package/dist/manager/modules/quota/antigravity-quota-manager.js +48 -137
- package/dist/manager/modules/quota/antigravity-quota-manager.js.map +1 -1
- package/dist/manager/modules/quota/provider-quota-daemon.events.js +2 -63
- package/dist/manager/modules/quota/provider-quota-daemon.events.js.map +1 -1
- package/dist/modules/llmswitch/bridge.js +4 -17
- package/dist/modules/llmswitch/bridge.js.map +1 -1
- package/dist/modules/llmswitch/core-loader.d.ts +1 -1
- package/dist/modules/llmswitch/core-loader.js +3 -15
- package/dist/modules/llmswitch/core-loader.js.map +1 -1
- package/dist/providers/auth/antigravity-userinfo-helper.d.ts +1 -3
- package/dist/providers/auth/antigravity-userinfo-helper.js +7 -41
- package/dist/providers/auth/antigravity-userinfo-helper.js.map +1 -1
- package/dist/providers/auth/gemini-cli-userinfo-helper.js +3 -3
- package/dist/providers/auth/gemini-cli-userinfo-helper.js.map +1 -1
- package/dist/providers/auth/oauth-lifecycle.js +175 -79
- package/dist/providers/auth/oauth-lifecycle.js.map +1 -1
- package/dist/providers/auth/tokenfile-auth.d.ts +0 -12
- package/dist/providers/auth/tokenfile-auth.js +1 -92
- package/dist/providers/auth/tokenfile-auth.js.map +1 -1
- package/dist/providers/core/config/camoufox-launcher.d.ts +0 -5
- package/dist/providers/core/config/camoufox-launcher.js +43 -5
- package/dist/providers/core/config/camoufox-launcher.js.map +1 -1
- package/dist/providers/core/config/oauth-flows.js +1 -1
- package/dist/providers/core/config/oauth-flows.js.map +1 -1
- package/dist/providers/core/config/service-profiles.js +17 -3
- package/dist/providers/core/config/service-profiles.js.map +1 -1
- package/dist/providers/core/runtime/base-provider.d.ts +5 -0
- package/dist/providers/core/runtime/base-provider.js +112 -26
- package/dist/providers/core/runtime/base-provider.js.map +1 -1
- package/dist/providers/core/runtime/gemini-cli-http-provider.d.ts +1 -3
- package/dist/providers/core/runtime/gemini-cli-http-provider.js +71 -370
- package/dist/providers/core/runtime/gemini-cli-http-provider.js.map +1 -1
- package/dist/providers/core/runtime/http-transport-provider.d.ts +0 -1
- package/dist/providers/core/runtime/http-transport-provider.js +5 -38
- package/dist/providers/core/runtime/http-transport-provider.js.map +1 -1
- package/dist/providers/core/runtime/provider-error-classifier.js +3 -1
- package/dist/providers/core/runtime/provider-error-classifier.js.map +1 -1
- package/dist/providers/core/runtime/rate-limit-manager.d.ts +12 -1
- package/dist/providers/core/runtime/rate-limit-manager.js +77 -4
- package/dist/providers/core/runtime/rate-limit-manager.js.map +1 -1
- package/dist/providers/core/strategies/oauth-auth-code-flow.js +10 -4
- package/dist/providers/core/strategies/oauth-auth-code-flow.js.map +1 -1
- package/dist/providers/core/strategies/oauth-device-flow.js +10 -4
- package/dist/providers/core/strategies/oauth-device-flow.js.map +1 -1
- package/dist/server/runtime/http-server/executor-pipeline.d.ts +1 -0
- package/dist/server/runtime/http-server/executor-provider.d.ts +2 -0
- package/dist/server/runtime/http-server/executor-provider.js +46 -0
- package/dist/server/runtime/http-server/executor-provider.js.map +1 -1
- package/dist/server/runtime/http-server/index.js +13 -55
- package/dist/server/runtime/http-server/index.js.map +1 -1
- package/dist/server/runtime/http-server/request-executor.js +12 -2
- package/dist/server/runtime/http-server/request-executor.js.map +1 -1
- package/dist/token-daemon/index.d.ts +1 -0
- package/dist/token-daemon/index.js +81 -1
- package/dist/token-daemon/index.js.map +1 -1
- package/package.json +3 -3
- package/scripts/run-bg.sh +14 -0
- package/scripts/tests/antigravity-codex-sample-pipeline-compare.mjs +221 -0
- package/scripts/tests/antigravity-gemini-dryrun-compare.mjs +222 -0
- package/scripts/tests/ci-jest.mjs +0 -5
- package/scripts/verify-e2e-toolcall.mjs +22 -6
- package/dist/runtime/wasm-runtime/wasm-config.d.ts +0 -73
- package/dist/runtime/wasm-runtime/wasm-config.js +0 -124
- package/dist/runtime/wasm-runtime/wasm-config.js.map +0 -1
- package/dist/runtime/wasm-runtime/wasm-loader.d.ts +0 -40
- package/dist/runtime/wasm-runtime/wasm-loader.js +0 -62
- package/dist/runtime/wasm-runtime/wasm-loader.js.map +0 -1
- package/docs/antigravity-gemini-format-cleanup.md +0 -143
- package/docs/llms-wasm-migration.md +0 -331
- package/docs/llms-wasm-module-boundaries.md +0 -588
- package/docs/llms-wasm-replay-baseline.md +0 -171
- package/docs/plans/llms-wasm-migration-plan.md +0 -401
- package/scripts/antigravity-token-bridge.mjs +0 -283
|
@@ -116,18 +116,10 @@
|
|
|
116
116
|
"apiKey": "YOUR_API_KEY_HERE"
|
|
117
117
|
},
|
|
118
118
|
"models": {
|
|
119
|
-
"gpt-5.1": {
|
|
120
|
-
|
|
121
|
-
},
|
|
122
|
-
"gpt-5.
|
|
123
|
-
"maxContext": 256000
|
|
124
|
-
},
|
|
125
|
-
"gpt-5.2-codex": {
|
|
126
|
-
"maxContext": 256000
|
|
127
|
-
},
|
|
128
|
-
"gpt-5.2": {
|
|
129
|
-
"maxContext": 256000
|
|
130
|
-
}
|
|
119
|
+
"gpt-5.1": {},
|
|
120
|
+
"gpt-5.1-codex": {},
|
|
121
|
+
"gpt-5.2-codex": {},
|
|
122
|
+
"gpt-5.2": {}
|
|
131
123
|
},
|
|
132
124
|
"responses": {
|
|
133
125
|
"process": "chat",
|
package/dist/build-info.js
CHANGED
|
@@ -10,6 +10,9 @@ function buildInteractivePrompt(ctx) {
|
|
|
10
10
|
if (typeof ctx.prompt === 'function') {
|
|
11
11
|
return { prompt: ctx.prompt, close: () => { } };
|
|
12
12
|
}
|
|
13
|
+
if (process.env.CI === '1' || process.env.JEST_WORKER_ID || process.env.NODE_ENV === 'test') {
|
|
14
|
+
return null;
|
|
15
|
+
}
|
|
13
16
|
if (!input.isTTY || !output.isTTY) {
|
|
14
17
|
return null;
|
|
15
18
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,10 +17,7 @@ export class GeminiCLIProtocolClient {
|
|
|
17
17
|
// 注意:Cloud Code Assist 的 request schema 不接受 request.metadata / request.action。
|
|
18
18
|
// action 仅用于 resolveEndpoint;metadata 不下发到上游。
|
|
19
19
|
const { model, project, requestId, userAgent, requestType, ...rest } = payload;
|
|
20
|
-
const
|
|
21
|
-
const payloadRequest = payload && typeof payload.request === 'object'
|
|
22
|
-
? payload.request
|
|
23
|
-
: undefined;
|
|
20
|
+
const payloadRequest = payload && typeof payload.request === 'object' ? payload.request : undefined;
|
|
24
21
|
const body = {};
|
|
25
22
|
if (typeof model === 'string' && model.length > 0) {
|
|
26
23
|
body.model = model;
|
|
@@ -60,7 +57,7 @@ export class GeminiCLIProtocolClient {
|
|
|
60
57
|
sanitizeRequestPayload(finalRequest);
|
|
61
58
|
body.request = finalRequest;
|
|
62
59
|
}
|
|
63
|
-
else if (payloadRequest) {
|
|
60
|
+
else if (payloadRequest && typeof payloadRequest === 'object') {
|
|
64
61
|
const finalRequest = { ...payloadRequest };
|
|
65
62
|
sanitizeRequestPayload(finalRequest);
|
|
66
63
|
body.request = finalRequest;
|
|
@@ -97,16 +94,15 @@ export class GeminiCLIProtocolClient {
|
|
|
97
94
|
deleteHeaderInsensitive('conversation_id');
|
|
98
95
|
const payload = this.extractPayload(_request);
|
|
99
96
|
const isAntigravity = typeof payload.userAgent === 'string' && payload.userAgent.trim() === 'antigravity';
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
deleteHeaderInsensitive('client-metadata');
|
|
104
|
-
}
|
|
105
|
-
else if (!isAntigravity) {
|
|
106
|
-
// gcli2api / opencode alignment: keep a stable header triplet for Gemini CLI.
|
|
107
|
-
// Always override inbound UA to avoid leaking host/client fingerprints into upstream.
|
|
97
|
+
// gcli2api / opencode alignment: keep a stable header triplet.
|
|
98
|
+
// For antigravity, do not override UA (handled by provider), but still send the triplet.
|
|
99
|
+
if (!isAntigravity) {
|
|
108
100
|
normalized['User-Agent'] = 'google-api-nodejs-client/9.15.1';
|
|
101
|
+
}
|
|
102
|
+
if (!normalized['X-Goog-Api-Client']) {
|
|
109
103
|
normalized['X-Goog-Api-Client'] = 'gl-node/22.17.0';
|
|
104
|
+
}
|
|
105
|
+
if (!normalized['Client-Metadata']) {
|
|
110
106
|
normalized['Client-Metadata'] = 'ideType=IDE_UNSPECIFIED,platform=PLATFORM_UNSPECIFIED,pluginType=GEMINI';
|
|
111
107
|
}
|
|
112
108
|
if (!normalized['Accept']) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini-cli-protocol-client.js","sourceRoot":"","sources":["../../../src/client/gemini-cli/gemini-cli-protocol-client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAoB3E,SAAS,eAAe,CAAC,OAA+B;IACtD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,IAAI,OAAO,CAAC;AAC9E,CAAC;AAED,MAAM,OAAO,uBAAuB;IAClC,gBAAgB,CAAC,OAA+B;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini-cli-protocol-client.js","sourceRoot":"","sources":["../../../src/client/gemini-cli/gemini-cli-protocol-client.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAoB3E,SAAS,eAAe,CAAC,OAA+B;IACtD,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,MAAM,IAAI,OAAO,CAAC;AAC9E,CAAC;AAED,MAAM,OAAO,uBAAuB;IAClC,gBAAgB,CAAC,OAA+B;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,mDAAmD;QACnD,+EAA+E;QAC/E,8CAA8C;QAC9C,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;QAC/E,MAAM,cAAc,GAAG,OAAO,IAAI,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QACpG,MAAM,IAAI,GAA4B,EAAE,CAAC;QAEzC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACrB,CAAC;QACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,CAAC;QAED,uCAAuC;QACvC,sEAAsE;QACtE,4CAA4C;QAC5C,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9D,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QACjC,CAAC;QAED,oFAAoF;QACpF,uEAAuE;QACvE,MAAM,cAAc,GAA4B,EAAE,GAAI,IAAgC,EAAE,CAAC;QACzF,MAAM,sBAAsB,GAAG,CAAC,IAA6B,EAAQ,EAAE;YACrE,OAAO,IAAI,CAAC,MAAM,CAAC;YACnB,OAAO,IAAI,CAAC,QAAQ,CAAC;YACrB,OAAO,IAAI,CAAC,MAAM,CAAC;YACnB,OAAO,IAAI,CAAC,UAAU,CAAC;QACzB,CAAC,CAAC;QAEF,mBAAmB;QACnB,sBAAsB,CAAC,cAAc,CAAC,CAAC;QACvC,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,WAAW,GACf,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,MAAM,KAAK,CAAC;gBACxC,cAAc,CAAC,OAAO;gBACtB,OAAO,cAAc,CAAC,OAAO,KAAK,QAAQ;gBAC1C,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YACzC,MAAM,YAAY,GAAG,WAAW,CAAC,CAAC,CAAE,cAAc,CAAC,OAAmC,CAAC,CAAC,CAAC,cAAc,CAAC;YACxG,sBAAsB,CAAC,YAAY,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;QAC9B,CAAC;aAAM,IAAI,cAAc,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;YAChE,MAAM,YAAY,GAAG,EAAE,GAAI,cAA0C,EAAE,CAAC;YACxE,sBAAsB,CAAC,YAAY,CAAC,CAAC;YACrC,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;QAC9B,CAAC;QAED,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,OAA+B,EAAE,gBAAwB;QACvE,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,MAAM,GAAI,OAAO,CAAC,MAAiB,IAAI,iBAAiB,CAAC;QAC/D,MAAM,eAAe,GAAG,OAAO,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,MAAM,IAAI,GACR,eAAe,IAAI,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC9C,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;YACxC,CAAC,CAAC,aAAa,CAAC;QACpB,MAAM,QAAQ,GAAG,GAAG,IAAI,IAAI,MAAM,EAAE,CAAC;QAErC,2BAA2B;QAC3B,sDAAsD;QACtD,IAAI,MAAM,KAAK,uBAAuB,EAAE,CAAC;YACvC,OAAO,GAAG,QAAQ,UAAU,CAAC;QAC/B,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,eAAe,CACb,OAA+B,EAC/B,QAAgC;QAEhC,MAAM,UAAU,GAA2B,EAAE,GAAG,OAAO,EAAE,CAAC;QAE1D,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAQ,EAAE;YACvD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC1C,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;oBAClC,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,oEAAoE;QACpE,uBAAuB,CAAC,YAAY,CAAC,CAAC;QACtC,uBAAuB,CAAC,iBAAiB,CAAC,CAAC;QAE3C,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,aAAa,GAAG,OAAO,OAAO,CAAC,SAAS,KAAK,QAAQ,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,aAAa,CAAC;QAC1G,+DAA+D;QAC/D,yFAAyF;QACzF,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,UAAU,CAAC,YAAY,CAAC,GAAG,iCAAiC,CAAC;QAC/D,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACrC,UAAU,CAAC,mBAAmB,CAAC,GAAG,iBAAiB,CAAC;QACtD,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACnC,UAAU,CAAC,iBAAiB,CAAC,GAAG,yEAAyE,CAAC;QAC5G,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,UAAU,CAAC,QAAQ,CAAC,GAAG,kBAAkB,CAAC;QAC5C,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,cAAc,CAAC,OAA+B;QACpD,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;YAClC,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;gBACrD,iFAAiF;gBACjF,2DAA2D;gBAC3D,MAAM,MAAM,GAA4B,EAAE,GAAI,YAAwC,EAAE,CAAC;gBACzF,MAAM,IAAI,GAAG,OAAkC,CAAC;gBAChD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBAChD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;wBACzC,SAAS;oBACX,CAAC;oBACD,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;wBAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;oBACtB,CAAC;gBACH,CAAC;gBACD,OAAO,MAA0B,CAAC;YACpC,CAAC;QACH,CAAC;QACD,OAAO,EAAE,GAAI,OAAmC,EAAsB,CAAC;IACzE,CAAC;CACF;AAED,eAAe,uBAAuB,CAAC"}
|
package/dist/commands/oauth.js
CHANGED
|
@@ -1,12 +1,27 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
-
import { interactiveRefresh } from '../token-daemon/index.js';
|
|
2
|
+
import { interactiveRefresh, validateOAuthTokens } from '../token-daemon/index.js';
|
|
3
3
|
export function createOauthCommand() {
|
|
4
4
|
const cmd = new Command('oauth');
|
|
5
5
|
cmd
|
|
6
|
-
.description('
|
|
7
|
-
.argument('
|
|
8
|
-
.
|
|
9
|
-
|
|
6
|
+
.description('OAuth tools: refresh token or validate tokens without opening a browser')
|
|
7
|
+
.argument('[args...]', 'Usage: "oauth <selector>" or "oauth validate <selector|all> [--json]"')
|
|
8
|
+
.option('--json', 'Output JSON result (only for validate)', false)
|
|
9
|
+
.action(async (args, options) => {
|
|
10
|
+
const list = Array.isArray(args) ? args : [];
|
|
11
|
+
const first = list[0];
|
|
12
|
+
if (!first) {
|
|
13
|
+
cmd.help();
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (first === 'validate') {
|
|
17
|
+
const selector = list[1] || 'all';
|
|
18
|
+
const ok = await validateOAuthTokens(selector, Boolean(options?.json));
|
|
19
|
+
if (!ok) {
|
|
20
|
+
process.exit(1);
|
|
21
|
+
}
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
await interactiveRefresh(first);
|
|
10
25
|
});
|
|
11
26
|
cmd
|
|
12
27
|
.command('iflow-auto')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/commands/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,kBAAkB,
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../../src/commands/oauth.ts"],"names":[],"mappings":"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"}
|
|
@@ -36,48 +36,6 @@ function asRecord(value) {
|
|
|
36
36
|
}
|
|
37
37
|
return undefined;
|
|
38
38
|
}
|
|
39
|
-
function extractErrorMessage(error) {
|
|
40
|
-
if (typeof error === 'string') {
|
|
41
|
-
return error;
|
|
42
|
-
}
|
|
43
|
-
if (error instanceof Error) {
|
|
44
|
-
return error.message;
|
|
45
|
-
}
|
|
46
|
-
const record = asRecord(error);
|
|
47
|
-
if (typeof record?.message === 'string') {
|
|
48
|
-
return record.message;
|
|
49
|
-
}
|
|
50
|
-
return 'Unknown error';
|
|
51
|
-
}
|
|
52
|
-
function extractErrorCode(error) {
|
|
53
|
-
if (error && typeof error === 'object' && 'code' in error) {
|
|
54
|
-
const code = error.code;
|
|
55
|
-
if (typeof code === 'string' && code.trim()) {
|
|
56
|
-
return code.trim();
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return undefined;
|
|
60
|
-
}
|
|
61
|
-
function isQuotaSignal(context) {
|
|
62
|
-
if (context.source === 'quota') {
|
|
63
|
-
return true;
|
|
64
|
-
}
|
|
65
|
-
const payload = asRecord(context.context);
|
|
66
|
-
const details = asRecord(payload?.details);
|
|
67
|
-
if (details?.virtualRouterQuotaDepleted || details?.virtualRouterQuotaRecovery) {
|
|
68
|
-
return true;
|
|
69
|
-
}
|
|
70
|
-
const requestId = extractRequestId(payload);
|
|
71
|
-
if (requestId && requestId.startsWith('quota_')) {
|
|
72
|
-
return true;
|
|
73
|
-
}
|
|
74
|
-
const code = typeof details?.code === 'string' ? details.code : extractErrorCode(context.error);
|
|
75
|
-
if (code && code.startsWith('QUOTA_')) {
|
|
76
|
-
return true;
|
|
77
|
-
}
|
|
78
|
-
const message = extractErrorMessage(context.error);
|
|
79
|
-
return message.startsWith('Quota manager:');
|
|
80
|
-
}
|
|
81
39
|
function extractDetails(context) {
|
|
82
40
|
const errorObject = asRecord(context.error);
|
|
83
41
|
const payload = asRecord(context.context);
|
|
@@ -130,7 +88,13 @@ export class QuietErrorHandlingCenter extends ErrorHandlingCenter {
|
|
|
130
88
|
state.errorCount += 1;
|
|
131
89
|
const errorId = `error_${state.errorCount}_${Date.now()}`;
|
|
132
90
|
const details = extractDetails(errorContext);
|
|
133
|
-
const message =
|
|
91
|
+
const message = typeof errorContext.error === 'string'
|
|
92
|
+
? errorContext.error
|
|
93
|
+
: errorContext.error instanceof Error
|
|
94
|
+
? errorContext.error.message
|
|
95
|
+
: typeof errorContext.error?.message === 'string'
|
|
96
|
+
? String(errorContext.error.message)
|
|
97
|
+
: 'Unknown error';
|
|
134
98
|
const snippet = truncateForConsole(message, 500);
|
|
135
99
|
const payload = {
|
|
136
100
|
errorId,
|
|
@@ -143,9 +107,7 @@ export class QuietErrorHandlingCenter extends ErrorHandlingCenter {
|
|
|
143
107
|
source: errorContext.source,
|
|
144
108
|
severity: errorContext.severity
|
|
145
109
|
};
|
|
146
|
-
|
|
147
|
-
console.error('[route-error]', JSON.stringify(payload));
|
|
148
|
-
}
|
|
110
|
+
console.error('[route-error]', JSON.stringify(payload));
|
|
149
111
|
const response = {
|
|
150
112
|
success: true,
|
|
151
113
|
message: `Error processed: ${message}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"quiet-error-handling-center.js","sourceRoot":"","sources":["../../src/error-handling/quiet-error-handling-center.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAyC,MAAM,mBAAmB,CAAC;AAC/F,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D,SAAS,eAAe,CAAC,QAA6B;IAKpD,MAAM,GAAG,GAAG,QAA4F,CAAC;IACzG,IAAI,OAAO,GAAG,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QAC5C,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC;IAC7B,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;QACvC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;QACtC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,CAAC;IACD,OAAO,GAAmG,CAAC;AAC7G,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAiC;IACzD,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,UAAU,GAAG;QACjB,OAAO,CAAC,SAAS;QACjB,OAAO,CAAC,eAAe;QACvB,OAAO,CAAC,iBAAiB;QACzB,OAAO,CAAC,iBAAiB;KAC1B,CAAC;IACF,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC;YACtD,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,KAAgC,CAAC;IAC1C,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"quiet-error-handling-center.js","sourceRoot":"","sources":["../../src/error-handling/quiet-error-handling-center.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,8 @@ export declare class QuotaManagerModule implements ManagerModule {
|
|
|
11
11
|
private antigravityTokens;
|
|
12
12
|
private refreshTimer;
|
|
13
13
|
private quotaRoutingEnabled;
|
|
14
|
+
private refreshFailures;
|
|
15
|
+
private refreshDisabled;
|
|
14
16
|
private providerErrorCenter;
|
|
15
17
|
init(context: ManagerContext): Promise<void>;
|
|
16
18
|
start(): Promise<void>;
|
|
@@ -50,10 +52,6 @@ export declare class QuotaManagerModule implements ManagerModule {
|
|
|
50
52
|
private buildAntigravityKey;
|
|
51
53
|
private extractAntigravityAlias;
|
|
52
54
|
private computeResetAt;
|
|
53
|
-
private readAntigravityTokenMeta;
|
|
54
|
-
private resolveQuotaProtectionConfig;
|
|
55
|
-
private computeProtectedModels;
|
|
56
|
-
private persistProtectedModels;
|
|
57
55
|
private refreshAllAntigravityQuotas;
|
|
58
56
|
/**
|
|
59
57
|
* 每 5 分钟刷新一次 quota(固定间隔)。
|
|
@@ -11,6 +11,8 @@ export class QuotaManagerModule {
|
|
|
11
11
|
antigravityTokens = new Map();
|
|
12
12
|
refreshTimer = null;
|
|
13
13
|
quotaRoutingEnabled = true;
|
|
14
|
+
refreshFailures = 0;
|
|
15
|
+
refreshDisabled = false;
|
|
14
16
|
providerErrorCenter = null;
|
|
15
17
|
async init(context) {
|
|
16
18
|
this.snapshot = this.loadSnapshotFromDisk();
|
|
@@ -19,7 +21,13 @@ export class QuotaManagerModule {
|
|
|
19
21
|
async start() {
|
|
20
22
|
// 启动时立即做一次最佳努力刷新,然后根据 token 过期时间和 5 分钟基准动态调度后续刷新。
|
|
21
23
|
try {
|
|
22
|
-
await this.refreshAllAntigravityQuotas();
|
|
24
|
+
const result = await this.refreshAllAntigravityQuotas();
|
|
25
|
+
if (result.attempted > 0 && result.successCount === 0) {
|
|
26
|
+
this.refreshFailures = 1;
|
|
27
|
+
}
|
|
28
|
+
else if (result.successCount > 0) {
|
|
29
|
+
this.refreshFailures = 0;
|
|
30
|
+
}
|
|
23
31
|
}
|
|
24
32
|
catch {
|
|
25
33
|
// ignore startup refresh failures
|
|
@@ -42,7 +50,11 @@ export class QuotaManagerModule {
|
|
|
42
50
|
async refreshNow() {
|
|
43
51
|
const refreshedAt = Date.now();
|
|
44
52
|
try {
|
|
45
|
-
await this.refreshAllAntigravityQuotas();
|
|
53
|
+
const result = await this.refreshAllAntigravityQuotas();
|
|
54
|
+
if (result.successCount > 0) {
|
|
55
|
+
this.refreshFailures = 0;
|
|
56
|
+
this.refreshDisabled = false;
|
|
57
|
+
}
|
|
46
58
|
}
|
|
47
59
|
catch {
|
|
48
60
|
// ignore refresh failures
|
|
@@ -76,8 +88,7 @@ export class QuotaManagerModule {
|
|
|
76
88
|
this.antigravityTokens.set(cleanAlias, {
|
|
77
89
|
alias: cleanAlias,
|
|
78
90
|
tokenFile: cleanToken,
|
|
79
|
-
apiBase: cleanBase
|
|
80
|
-
protectedModels: this.antigravityTokens.get(cleanAlias)?.protectedModels ?? new Set()
|
|
91
|
+
apiBase: cleanBase
|
|
81
92
|
});
|
|
82
93
|
}
|
|
83
94
|
/**
|
|
@@ -88,21 +99,6 @@ export class QuotaManagerModule {
|
|
|
88
99
|
if (!aliasId) {
|
|
89
100
|
return;
|
|
90
101
|
}
|
|
91
|
-
const tokenRegistration = this.antigravityTokens.get(aliasId);
|
|
92
|
-
const protectedModels = tokenRegistration?.protectedModels ?? new Set();
|
|
93
|
-
const protectionConfig = this.resolveQuotaProtectionConfig();
|
|
94
|
-
const nextProtectedModels = this.computeProtectedModels({
|
|
95
|
-
current: protectedModels,
|
|
96
|
-
quota,
|
|
97
|
-
config: protectionConfig
|
|
98
|
-
});
|
|
99
|
-
if (tokenRegistration && protectionConfig.enabled) {
|
|
100
|
-
const updated = this.persistProtectedModels(tokenRegistration.tokenFile, nextProtectedModels);
|
|
101
|
-
if (updated) {
|
|
102
|
-
tokenRegistration.protectedModels = nextProtectedModels;
|
|
103
|
-
this.antigravityTokens.set(aliasId, tokenRegistration);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
102
|
const now = Date.now();
|
|
107
103
|
const next = { ...this.snapshot };
|
|
108
104
|
for (const [modelId, info] of Object.entries(quota.models)) {
|
|
@@ -111,9 +107,6 @@ export class QuotaManagerModule {
|
|
|
111
107
|
remainingFraction: Number.isFinite(info.remainingFraction) ? info.remainingFraction : null,
|
|
112
108
|
fetchedAt: quota.fetchedAt
|
|
113
109
|
};
|
|
114
|
-
if (nextProtectedModels.has(modelId)) {
|
|
115
|
-
record.remainingFraction = 0;
|
|
116
|
-
}
|
|
117
110
|
const resetAt = this.computeResetAt(info.resetTimeRaw);
|
|
118
111
|
// Keep resetAt even if it's already in the past so admin UI can inspect drift/staleness.
|
|
119
112
|
// Routing gate still treats `resetAt <= now` as unknown quota and will block entry.
|
|
@@ -194,131 +187,35 @@ export class QuotaManagerModule {
|
|
|
194
187
|
return undefined;
|
|
195
188
|
}
|
|
196
189
|
}
|
|
197
|
-
readAntigravityTokenMeta(filePath) {
|
|
198
|
-
try {
|
|
199
|
-
const raw = fs.readFileSync(filePath, 'utf8');
|
|
200
|
-
const parsed = raw.trim() ? JSON.parse(raw) : {};
|
|
201
|
-
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
202
|
-
return { disabled: false, proxyDisabled: false, protectedModels: new Set() };
|
|
203
|
-
}
|
|
204
|
-
const token = parsed;
|
|
205
|
-
const disabled = token.disabled === true;
|
|
206
|
-
const proxyDisabled = token.proxy_disabled === true || token.proxyDisabled === true;
|
|
207
|
-
const list = token.protected_models ?? token.protectedModels;
|
|
208
|
-
const models = Array.isArray(list)
|
|
209
|
-
? list
|
|
210
|
-
.map((entry) => (typeof entry === 'string' ? entry.trim() : ''))
|
|
211
|
-
.filter((entry) => entry.length > 0)
|
|
212
|
-
: [];
|
|
213
|
-
return { disabled, proxyDisabled, protectedModels: new Set(models) };
|
|
214
|
-
}
|
|
215
|
-
catch {
|
|
216
|
-
return { disabled: false, proxyDisabled: false, protectedModels: new Set() };
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
resolveQuotaProtectionConfig() {
|
|
220
|
-
const enabledRaw = String(process.env.ROUTECODEX_ANTIGRAVITY_QUOTA_PROTECTION || process.env.RCC_ANTIGRAVITY_QUOTA_PROTECTION || '')
|
|
221
|
-
.trim()
|
|
222
|
-
.toLowerCase();
|
|
223
|
-
const enabled = enabledRaw === '1' || enabledRaw === 'true' || enabledRaw === 'yes';
|
|
224
|
-
const thresholdRaw = String(process.env.ROUTECODEX_ANTIGRAVITY_QUOTA_PROTECT_THRESHOLD ||
|
|
225
|
-
process.env.RCC_ANTIGRAVITY_QUOTA_PROTECT_THRESHOLD ||
|
|
226
|
-
'').trim();
|
|
227
|
-
const thresholdPercent = Number.isFinite(Number(thresholdRaw)) ? Number(thresholdRaw) : 10;
|
|
228
|
-
const defaultModels = [
|
|
229
|
-
'claude-sonnet-4-5',
|
|
230
|
-
'gemini-3-pro-high',
|
|
231
|
-
'gemini-3-flash',
|
|
232
|
-
'gemini-3-pro-image'
|
|
233
|
-
];
|
|
234
|
-
const modelsRaw = String(process.env.ROUTECODEX_ANTIGRAVITY_QUOTA_PROTECT_MODELS || process.env.RCC_ANTIGRAVITY_QUOTA_PROTECT_MODELS || '')
|
|
235
|
-
.trim();
|
|
236
|
-
const list = modelsRaw
|
|
237
|
-
? modelsRaw.split(',').map((m) => m.trim()).filter(Boolean)
|
|
238
|
-
: defaultModels;
|
|
239
|
-
return {
|
|
240
|
-
enabled,
|
|
241
|
-
thresholdPercent: Number.isFinite(thresholdPercent) && thresholdPercent > 0 ? thresholdPercent : 10,
|
|
242
|
-
monitoredModels: new Set(list)
|
|
243
|
-
};
|
|
244
|
-
}
|
|
245
|
-
computeProtectedModels(options) {
|
|
246
|
-
const { current, quota, config } = options;
|
|
247
|
-
if (!config.enabled) {
|
|
248
|
-
return new Set(current);
|
|
249
|
-
}
|
|
250
|
-
const next = new Set();
|
|
251
|
-
const monitored = config.monitoredModels;
|
|
252
|
-
for (const entry of current) {
|
|
253
|
-
if (!monitored.has(entry)) {
|
|
254
|
-
next.add(entry);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
for (const modelId of monitored) {
|
|
258
|
-
const info = quota.models[modelId];
|
|
259
|
-
if (!info) {
|
|
260
|
-
continue;
|
|
261
|
-
}
|
|
262
|
-
const fraction = Number.isFinite(info.remainingFraction) ? info.remainingFraction : NaN;
|
|
263
|
-
if (!Number.isFinite(fraction)) {
|
|
264
|
-
continue;
|
|
265
|
-
}
|
|
266
|
-
const percentage = fraction > 1 ? fraction : fraction * 100;
|
|
267
|
-
if (percentage <= config.thresholdPercent) {
|
|
268
|
-
next.add(modelId);
|
|
269
|
-
}
|
|
270
|
-
else {
|
|
271
|
-
next.delete(modelId);
|
|
272
|
-
}
|
|
273
|
-
}
|
|
274
|
-
return next;
|
|
275
|
-
}
|
|
276
|
-
persistProtectedModels(tokenFile, models) {
|
|
277
|
-
try {
|
|
278
|
-
const raw = fs.readFileSync(tokenFile, 'utf8');
|
|
279
|
-
const parsed = raw.trim() ? JSON.parse(raw) : {};
|
|
280
|
-
if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed)) {
|
|
281
|
-
return false;
|
|
282
|
-
}
|
|
283
|
-
const root = parsed;
|
|
284
|
-
const next = Array.from(models);
|
|
285
|
-
next.sort();
|
|
286
|
-
const existing = Array.isArray(root.protected_models)
|
|
287
|
-
? root.protected_models.map((m) => String(m)).sort()
|
|
288
|
-
: [];
|
|
289
|
-
const changed = next.length !== existing.length || next.some((value, idx) => value !== existing[idx]);
|
|
290
|
-
if (!changed) {
|
|
291
|
-
return false;
|
|
292
|
-
}
|
|
293
|
-
root.protected_models = next;
|
|
294
|
-
fs.writeFileSync(tokenFile, `${JSON.stringify(root, null, 2)}\n`, 'utf8');
|
|
295
|
-
return true;
|
|
296
|
-
}
|
|
297
|
-
catch {
|
|
298
|
-
return false;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
190
|
async refreshAllAntigravityQuotas() {
|
|
302
191
|
await this.syncAntigravityTokensFromDisk();
|
|
303
192
|
if (this.antigravityTokens.size === 0) {
|
|
304
|
-
return;
|
|
193
|
+
return { attempted: 0, successCount: 0, failureCount: 0 };
|
|
305
194
|
}
|
|
195
|
+
let attempted = 0;
|
|
196
|
+
let successCount = 0;
|
|
197
|
+
let failureCount = 0;
|
|
306
198
|
for (const { alias, tokenFile, apiBase } of this.antigravityTokens.values()) {
|
|
307
199
|
try {
|
|
308
200
|
const accessToken = await loadAntigravityAccessToken(tokenFile);
|
|
309
201
|
if (!accessToken) {
|
|
310
202
|
continue;
|
|
311
203
|
}
|
|
204
|
+
attempted += 1;
|
|
312
205
|
const snapshot = await fetchAntigravityQuotaSnapshot(apiBase, accessToken);
|
|
313
206
|
if (!snapshot) {
|
|
207
|
+
failureCount += 1;
|
|
314
208
|
continue;
|
|
315
209
|
}
|
|
316
210
|
this.updateAntigravityQuota(alias, snapshot);
|
|
211
|
+
successCount += 1;
|
|
317
212
|
}
|
|
318
213
|
catch {
|
|
214
|
+
failureCount += 1;
|
|
319
215
|
// 单个 alias 失败不影响其他 alias 的刷新
|
|
320
216
|
}
|
|
321
217
|
}
|
|
218
|
+
return { attempted, successCount, failureCount };
|
|
322
219
|
}
|
|
323
220
|
/**
|
|
324
221
|
* 每 5 分钟刷新一次 quota(固定间隔)。
|
|
@@ -329,17 +226,36 @@ export class QuotaManagerModule {
|
|
|
329
226
|
clearTimeout(this.refreshTimer);
|
|
330
227
|
this.refreshTimer = null;
|
|
331
228
|
}
|
|
229
|
+
if (this.refreshDisabled) {
|
|
230
|
+
return;
|
|
231
|
+
}
|
|
332
232
|
const baseIntervalMs = 5 * 60 * 1000;
|
|
333
233
|
const delayMs = baseIntervalMs;
|
|
334
234
|
this.refreshTimer = setTimeout(() => {
|
|
335
235
|
void this.refreshAllAntigravityQuotas()
|
|
236
|
+
.then((result) => {
|
|
237
|
+
if (result.attempted > 0 && result.successCount === 0) {
|
|
238
|
+
this.refreshFailures += 1;
|
|
239
|
+
if (this.refreshFailures >= 3) {
|
|
240
|
+
this.refreshDisabled = true;
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
else if (result.successCount > 0) {
|
|
244
|
+
this.refreshFailures = 0;
|
|
245
|
+
}
|
|
246
|
+
})
|
|
336
247
|
.catch(() => {
|
|
337
|
-
|
|
248
|
+
this.refreshFailures += 1;
|
|
249
|
+
if (this.refreshFailures >= 3) {
|
|
250
|
+
this.refreshDisabled = true;
|
|
251
|
+
}
|
|
338
252
|
})
|
|
339
253
|
.finally(() => {
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
254
|
+
if (!this.refreshDisabled) {
|
|
255
|
+
void this.scheduleNextRefresh().catch(() => {
|
|
256
|
+
// ignore reschedule failure
|
|
257
|
+
});
|
|
258
|
+
}
|
|
343
259
|
});
|
|
344
260
|
}, delayMs);
|
|
345
261
|
this.refreshTimer.unref?.();
|
|
@@ -375,15 +291,10 @@ export class QuotaManagerModule {
|
|
|
375
291
|
if (legacyAlias) {
|
|
376
292
|
legacyAliases.push(legacyAlias);
|
|
377
293
|
}
|
|
378
|
-
const tokenMeta = this.readAntigravityTokenMeta(match.filePath);
|
|
379
|
-
if (tokenMeta.disabled || tokenMeta.proxyDisabled) {
|
|
380
|
-
continue;
|
|
381
|
-
}
|
|
382
294
|
next.set(alias, {
|
|
383
295
|
alias,
|
|
384
296
|
tokenFile: match.filePath,
|
|
385
|
-
apiBase: base
|
|
386
|
-
protectedModels: tokenMeta.protectedModels
|
|
297
|
+
apiBase: base
|
|
387
298
|
});
|
|
388
299
|
}
|
|
389
300
|
// 若已有显式注册的 alias,保留其覆盖权
|