@ccpocket/bridge 1.65.1 → 1.66.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/dist/codex-process.d.ts +7 -0
- package/dist/codex-process.js +76 -0
- package/dist/codex-process.js.map +1 -1
- package/dist/parser.d.ts +7 -0
- package/dist/parser.js +15 -0
- package/dist/parser.js.map +1 -1
- package/dist/session.d.ts +2 -0
- package/dist/session.js +4 -0
- package/dist/session.js.map +1 -1
- package/dist/sessions-index.d.ts +1 -0
- package/dist/sessions-index.js +12 -0
- package/dist/sessions-index.js.map +1 -1
- package/dist/websocket.d.ts +2 -0
- package/dist/websocket.js +98 -0
- package/dist/websocket.js.map +1 -1
- package/package.json +1 -1
package/dist/websocket.js
CHANGED
|
@@ -70,6 +70,17 @@ function fallbackCodexReasoningEfforts(model) {
|
|
|
70
70
|
return FALLBACK_GPT_5_6_REASONING_EFFORTS;
|
|
71
71
|
return FALLBACK_CODEX_REASONING_EFFORTS;
|
|
72
72
|
}
|
|
73
|
+
function fallbackCodexServiceTiers(model) {
|
|
74
|
+
return [
|
|
75
|
+
"gpt-5.6-sol",
|
|
76
|
+
"gpt-5.6-terra",
|
|
77
|
+
"gpt-5.6-luna",
|
|
78
|
+
"gpt-5.5",
|
|
79
|
+
"gpt-5.4",
|
|
80
|
+
].includes(model)
|
|
81
|
+
? ["fast"]
|
|
82
|
+
: [];
|
|
83
|
+
}
|
|
73
84
|
const CODEX_RECENT_THREAD_SOURCE_KINDS = [
|
|
74
85
|
"cli",
|
|
75
86
|
"vscode",
|
|
@@ -454,6 +465,10 @@ export class BridgeWebSocketServer {
|
|
|
454
465
|
model,
|
|
455
466
|
fallbackCodexReasoningEfforts(model),
|
|
456
467
|
]));
|
|
468
|
+
codexModelServiceTiers = Object.fromEntries(FALLBACK_CODEX_MODELS.map((model) => [
|
|
469
|
+
model,
|
|
470
|
+
fallbackCodexServiceTiers(model),
|
|
471
|
+
]));
|
|
457
472
|
/** FCM token → push notification locale */
|
|
458
473
|
tokenLocales = new Map();
|
|
459
474
|
tokenPrivacyMode = new Map();
|
|
@@ -679,6 +694,9 @@ export class BridgeWebSocketServer {
|
|
|
679
694
|
if (derivedCodexSettings.modelReasoningEffort !== undefined) {
|
|
680
695
|
msg.modelReasoningEffort = derivedCodexSettings.modelReasoningEffort;
|
|
681
696
|
}
|
|
697
|
+
if (derivedCodexSettings.serviceTier !== undefined) {
|
|
698
|
+
msg.serviceTier = derivedCodexSettings.serviceTier;
|
|
699
|
+
}
|
|
682
700
|
if (derivedCodexSettings.networkAccessEnabled !== undefined) {
|
|
683
701
|
msg.networkAccessEnabled = derivedCodexSettings.networkAccessEnabled;
|
|
684
702
|
}
|
|
@@ -1059,6 +1077,27 @@ export class BridgeWebSocketServer {
|
|
|
1059
1077
|
return String(value);
|
|
1060
1078
|
}
|
|
1061
1079
|
}
|
|
1080
|
+
sendCodexCurrentSettings(ws, sessionId, session) {
|
|
1081
|
+
const process = session.process instanceof CodexProcess
|
|
1082
|
+
? session.process
|
|
1083
|
+
: undefined;
|
|
1084
|
+
const settings = session.codexSettings;
|
|
1085
|
+
this.send(ws, {
|
|
1086
|
+
type: "system",
|
|
1087
|
+
subtype: "codex_settings",
|
|
1088
|
+
sessionId,
|
|
1089
|
+
provider: "codex",
|
|
1090
|
+
...(settings?.model ?? process?.model
|
|
1091
|
+
? { model: settings?.model ?? process?.model }
|
|
1092
|
+
: {}),
|
|
1093
|
+
...(settings?.modelReasoningEffort ?? process?.modelReasoningEffort
|
|
1094
|
+
? {
|
|
1095
|
+
modelReasoningEffort: settings?.modelReasoningEffort ?? process?.modelReasoningEffort,
|
|
1096
|
+
}
|
|
1097
|
+
: {}),
|
|
1098
|
+
serviceTier: settings?.serviceTier ?? process?.serviceTier ?? "standard",
|
|
1099
|
+
});
|
|
1100
|
+
}
|
|
1062
1101
|
async sendCodexCanonicalHistorySnapshot(ws, sessionId, session, options = {}) {
|
|
1063
1102
|
try {
|
|
1064
1103
|
const entries = await this.codexCanonicalHistoryEntries(session);
|
|
@@ -1073,6 +1112,7 @@ export class BridgeWebSocketServer {
|
|
|
1073
1112
|
status: session.status,
|
|
1074
1113
|
reason: "reset",
|
|
1075
1114
|
});
|
|
1115
|
+
this.sendCodexCurrentSettings(ws, sessionId, session);
|
|
1076
1116
|
this.sendCodexQueueState(ws, sessionId, session);
|
|
1077
1117
|
if (options.includeCachedCommands) {
|
|
1078
1118
|
this.sendCachedCommands(ws, sessionId, session);
|
|
@@ -1097,6 +1137,7 @@ export class BridgeWebSocketServer {
|
|
|
1097
1137
|
messages: entries.map((entry) => entry.message),
|
|
1098
1138
|
sessionId,
|
|
1099
1139
|
});
|
|
1140
|
+
this.sendCodexCurrentSettings(ws, sessionId, session);
|
|
1100
1141
|
this.send(ws, {
|
|
1101
1142
|
type: "status",
|
|
1102
1143
|
status: session.status,
|
|
@@ -1583,6 +1624,7 @@ export class BridgeWebSocketServer {
|
|
|
1583
1624
|
model: msg.model,
|
|
1584
1625
|
modelReasoningEffort: msg.modelReasoningEffort ??
|
|
1585
1626
|
undefined,
|
|
1627
|
+
serviceTier: msg.serviceTier,
|
|
1586
1628
|
networkAccessEnabled: msg.networkAccessEnabled,
|
|
1587
1629
|
webSearchMode: msg.webSearchMode ??
|
|
1588
1630
|
undefined,
|
|
@@ -2258,6 +2300,7 @@ export class BridgeWebSocketServer {
|
|
|
2258
2300
|
sandboxMode: newSandboxMode,
|
|
2259
2301
|
model: oldSettings.model,
|
|
2260
2302
|
modelReasoningEffort: oldSettings.modelReasoningEffort,
|
|
2303
|
+
serviceTier: oldSettings.serviceTier,
|
|
2261
2304
|
networkAccessEnabled: oldSettings.networkAccessEnabled,
|
|
2262
2305
|
webSearchMode: oldSettings.webSearchMode,
|
|
2263
2306
|
collaborationMode: newCollaboration,
|
|
@@ -2318,6 +2361,7 @@ export class BridgeWebSocketServer {
|
|
|
2318
2361
|
sandboxMode: newSandboxMode,
|
|
2319
2362
|
model: oldSettings.model,
|
|
2320
2363
|
modelReasoningEffort: oldSettings.modelReasoningEffort,
|
|
2364
|
+
serviceTier: oldSettings.serviceTier,
|
|
2321
2365
|
networkAccessEnabled: oldSettings.networkAccessEnabled,
|
|
2322
2366
|
webSearchMode: oldSettings.webSearchMode,
|
|
2323
2367
|
collaborationMode: newCollaboration,
|
|
@@ -2439,6 +2483,37 @@ export class BridgeWebSocketServer {
|
|
|
2439
2483
|
console.log(`[ws] set_codex_model(codex): model=${model} effort=${modelReasoningEffort ?? ""}`);
|
|
2440
2484
|
break;
|
|
2441
2485
|
}
|
|
2486
|
+
case "set_codex_speed": {
|
|
2487
|
+
const session = this.resolveSession(msg.sessionId);
|
|
2488
|
+
if (!session || session.provider !== "codex") {
|
|
2489
|
+
this.send(ws, {
|
|
2490
|
+
type: "error",
|
|
2491
|
+
message: "No active Codex session.",
|
|
2492
|
+
errorCode: "set_codex_speed_unsupported",
|
|
2493
|
+
});
|
|
2494
|
+
return;
|
|
2495
|
+
}
|
|
2496
|
+
const serviceTier = msg.serviceTier === "fast" ? "fast" : "standard";
|
|
2497
|
+
if (session.codexSettings?.serviceTier === serviceTier)
|
|
2498
|
+
break;
|
|
2499
|
+
const process = session.process;
|
|
2500
|
+
process.setServiceTier(serviceTier);
|
|
2501
|
+
session.codexSettings = {
|
|
2502
|
+
...(session.codexSettings ?? {}),
|
|
2503
|
+
serviceTier,
|
|
2504
|
+
};
|
|
2505
|
+
session.lastActivityAt = new Date();
|
|
2506
|
+
this.broadcastSessionMessage(session.id, {
|
|
2507
|
+
type: "system",
|
|
2508
|
+
subtype: "set_codex_speed",
|
|
2509
|
+
sessionId: session.id,
|
|
2510
|
+
provider: "codex",
|
|
2511
|
+
serviceTier,
|
|
2512
|
+
});
|
|
2513
|
+
this.broadcastSessionList();
|
|
2514
|
+
console.log(`[ws] set_codex_speed(codex): serviceTier=${serviceTier}`);
|
|
2515
|
+
break;
|
|
2516
|
+
}
|
|
2442
2517
|
case "get_goal": {
|
|
2443
2518
|
const session = this.resolveSession(msg.sessionId);
|
|
2444
2519
|
if (!session || session.provider !== "codex") {
|
|
@@ -2634,6 +2709,7 @@ export class BridgeWebSocketServer {
|
|
|
2634
2709
|
sandboxMode: newSandboxMode,
|
|
2635
2710
|
model: oldSettings.model,
|
|
2636
2711
|
modelReasoningEffort: oldSettings.modelReasoningEffort,
|
|
2712
|
+
serviceTier: oldSettings.serviceTier,
|
|
2637
2713
|
networkAccessEnabled: oldSettings.networkAccessEnabled,
|
|
2638
2714
|
webSearchMode: oldSettings.webSearchMode,
|
|
2639
2715
|
collaborationMode,
|
|
@@ -2685,6 +2761,7 @@ export class BridgeWebSocketServer {
|
|
|
2685
2761
|
sandboxMode: newSandboxMode,
|
|
2686
2762
|
model: oldSettings.model,
|
|
2687
2763
|
modelReasoningEffort: oldSettings.modelReasoningEffort,
|
|
2764
|
+
serviceTier: oldSettings.serviceTier,
|
|
2688
2765
|
networkAccessEnabled: oldSettings.networkAccessEnabled,
|
|
2689
2766
|
webSearchMode: oldSettings.webSearchMode,
|
|
2690
2767
|
collaborationMode,
|
|
@@ -2880,6 +2957,9 @@ export class BridgeWebSocketServer {
|
|
|
2880
2957
|
messages: [...splitPastHistory.historyMessages, ...session.history],
|
|
2881
2958
|
sessionId: msg.sessionId,
|
|
2882
2959
|
});
|
|
2960
|
+
if (session.provider === "codex") {
|
|
2961
|
+
this.sendCodexCurrentSettings(ws, msg.sessionId, session);
|
|
2962
|
+
}
|
|
2883
2963
|
this.send(ws, {
|
|
2884
2964
|
type: "status",
|
|
2885
2965
|
status: session.status,
|
|
@@ -2922,6 +3002,7 @@ export class BridgeWebSocketServer {
|
|
|
2922
3002
|
status: session.status,
|
|
2923
3003
|
...(result.kind === "snapshot" ? { reason: result.reason } : {}),
|
|
2924
3004
|
});
|
|
3005
|
+
this.sendCodexCurrentSettings(ws, msg.sessionId, session);
|
|
2925
3006
|
this.sendCodexQueueState(ws, msg.sessionId, session);
|
|
2926
3007
|
break;
|
|
2927
3008
|
}
|
|
@@ -3216,6 +3297,7 @@ export class BridgeWebSocketServer {
|
|
|
3216
3297
|
model: msg.model,
|
|
3217
3298
|
modelReasoningEffort: msg.modelReasoningEffort ??
|
|
3218
3299
|
undefined,
|
|
3300
|
+
serviceTier: msg.serviceTier,
|
|
3219
3301
|
networkAccessEnabled: msg.networkAccessEnabled,
|
|
3220
3302
|
webSearchMode: msg.webSearchMode ??
|
|
3221
3303
|
undefined,
|
|
@@ -4786,6 +4868,7 @@ export class BridgeWebSocketServer {
|
|
|
4786
4868
|
claudeModelEfforts: this.claudeModelEfforts,
|
|
4787
4869
|
codexModels: this.codexModels,
|
|
4788
4870
|
codexModelReasoningEfforts: this.codexModelReasoningEfforts,
|
|
4871
|
+
codexModelServiceTiers: this.codexModelServiceTiers,
|
|
4789
4872
|
codexProfiles: this.codexProfiles,
|
|
4790
4873
|
defaultCodexProfile: this.defaultCodexProfile,
|
|
4791
4874
|
bridgeVersion: getPackageVersion(),
|
|
@@ -4816,6 +4899,7 @@ export class BridgeWebSocketServer {
|
|
|
4816
4899
|
claudeModelEfforts: this.claudeModelEfforts,
|
|
4817
4900
|
codexModels: this.codexModels,
|
|
4818
4901
|
codexModelReasoningEfforts: this.codexModelReasoningEfforts,
|
|
4902
|
+
codexModelServiceTiers: this.codexModelServiceTiers,
|
|
4819
4903
|
codexProfiles: this.codexProfiles,
|
|
4820
4904
|
defaultCodexProfile: this.defaultCodexProfile,
|
|
4821
4905
|
bridgeVersion: getPackageVersion(),
|
|
@@ -5156,6 +5240,7 @@ export class BridgeWebSocketServer {
|
|
|
5156
5240
|
return models.map((model) => ({
|
|
5157
5241
|
model,
|
|
5158
5242
|
supportedReasoningEfforts: fallbackCodexReasoningEfforts(model),
|
|
5243
|
+
supportedServiceTiers: fallbackCodexServiceTiers(model),
|
|
5159
5244
|
}));
|
|
5160
5245
|
}
|
|
5161
5246
|
applyCodexModels(models) {
|
|
@@ -5166,6 +5251,12 @@ export class BridgeWebSocketServer {
|
|
|
5166
5251
|
? model.supportedReasoningEfforts
|
|
5167
5252
|
: fallbackCodexReasoningEfforts(model.model),
|
|
5168
5253
|
]));
|
|
5254
|
+
this.codexModelServiceTiers = Object.fromEntries(models.map((model) => [
|
|
5255
|
+
model.model,
|
|
5256
|
+
(model.supportedServiceTiers?.length ?? 0) > 0
|
|
5257
|
+
? model.supportedServiceTiers
|
|
5258
|
+
: fallbackCodexServiceTiers(model.model),
|
|
5259
|
+
]));
|
|
5169
5260
|
}
|
|
5170
5261
|
applyFallbackCodexModels() {
|
|
5171
5262
|
this.codexModels = FALLBACK_CODEX_MODELS;
|
|
@@ -5173,6 +5264,10 @@ export class BridgeWebSocketServer {
|
|
|
5173
5264
|
model,
|
|
5174
5265
|
fallbackCodexReasoningEfforts(model),
|
|
5175
5266
|
]));
|
|
5267
|
+
this.codexModelServiceTiers = Object.fromEntries(FALLBACK_CODEX_MODELS.map((model) => [
|
|
5268
|
+
model,
|
|
5269
|
+
fallbackCodexServiceTiers(model),
|
|
5270
|
+
]));
|
|
5176
5271
|
}
|
|
5177
5272
|
async loadCodexProfiles(projectPath) {
|
|
5178
5273
|
const process = this.getActiveCodexProcess() ??
|
|
@@ -6049,6 +6144,9 @@ export class BridgeWebSocketServer {
|
|
|
6049
6144
|
if (session.codexSettings.modelReasoningEffort !== undefined) {
|
|
6050
6145
|
msg.modelReasoningEffort = session.codexSettings.modelReasoningEffort;
|
|
6051
6146
|
}
|
|
6147
|
+
if (session.codexSettings.serviceTier !== undefined) {
|
|
6148
|
+
msg.serviceTier = session.codexSettings.serviceTier;
|
|
6149
|
+
}
|
|
6052
6150
|
if (session.codexSettings.networkAccessEnabled !== undefined) {
|
|
6053
6151
|
msg.networkAccessEnabled = session.codexSettings.networkAccessEnabled;
|
|
6054
6152
|
}
|