@yansigit/opencodex 2.33.0 → 2.33.1
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/gui/dist/assets/index-CIDo4y4k.js +102 -0
- package/gui/dist/index.html +1 -1
- package/package.json +3 -1
- package/src/adapters/command-code.ts +101 -20
- package/src/adapters/cursor/envelope-echo.ts +162 -0
- package/src/adapters/cursor/live-transport.ts +3 -1
- package/src/adapters/cursor/native-exec-fs.ts +13 -12
- package/src/adapters/cursor/native-exec-network.ts +3 -5
- package/src/adapters/cursor/native-exec-policy.ts +47 -0
- package/src/adapters/cursor/native-exec-shell.ts +13 -25
- package/src/adapters/cursor/native-exec.ts +18 -10
- package/src/adapters/cursor/protobuf-events.ts +28 -2
- package/src/adapters/cursor/protobuf-request.ts +20 -3
- package/src/adapters/cursor/request-builder.ts +7 -0
- package/src/adapters/cursor/tool-definitions.ts +22 -1
- package/src/adapters/cursor/tool-result-normalize.ts +21 -8
- package/src/adapters/cursor/types.ts +7 -0
- package/src/adapters/cursor.ts +114 -0
- package/src/adapters/google-aistudio-parser.ts +49 -0
- package/src/adapters/google.ts +108 -16
- package/src/adapters/openai-responses.ts +1 -0
- package/src/chat/inbound.ts +15 -0
- package/src/cli/index.ts +1 -1
- package/src/codex/catalog/provider-fetch.ts +34 -0
- package/src/generated/compatibility-version.json +91 -47
- package/src/generated/model-metadata.ts +3 -0
- package/src/oauth/aistudio-native-daemon.ts +62 -0
- package/src/oauth/aistudio-session-sync.ts +95 -0
- package/src/oauth/google-aistudio-auth.ts +98 -0
- package/src/oauth/key-providers.ts +8 -0
- package/src/oauth/login-cli.ts +66 -1
- package/src/providers/derive.ts +1 -1
- package/src/providers/quota.ts +90 -38
- package/src/providers/registry.ts +24 -3
- package/src/router.ts +3 -0
- package/src/routing/account-pool/cooldown.ts +8 -0
- package/src/routing/account-pool/index.ts +1 -0
- package/src/server/aistudio-ws-hub.ts +295 -0
- package/src/server/auth-cors.ts +1 -0
- package/src/server/chat-completions.ts +2 -0
- package/src/server/index.ts +94 -0
- package/src/server/management/logs-usage-routes.ts +11 -5
- package/src/server/management/oauth-account-routes.ts +13 -3
- package/src/server/port-reclaim.ts +19 -1
- package/src/server/request-log-conversation.ts +12 -0
- package/src/server/request-log.ts +2 -1
- package/src/server/responses/core.ts +4 -3
- package/src/server/responses/policy-fallback.ts +1 -1
- package/src/server/ws-bridge.ts +2 -1
- package/src/smoke/fingerprint-cache.ts +133 -0
- package/src/smoke/live-scenarios.ts +33 -0
- package/src/smoke/runner.ts +119 -0
- package/src/types/provider.ts +2 -1
- package/src/types/request.ts +2 -0
- package/src/types/tools.ts +31 -7
- package/src/usage/command-code-manifest.ts +116 -0
- package/src/usage/cost.ts +2 -2
- package/src/usage/expected-prices.ts +83 -0
- package/src/usage/log.ts +2 -2
- package/src/usage/summary.ts +34 -12
- package/src/web-search/index.ts +16 -8
- package/gui/dist/assets/index-DKLr4LTE.js +0 -102
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"path": "package.json",
|
|
13
|
-
"sha256": "
|
|
13
|
+
"sha256": "754ecefba60995331a9d90d8c13513b269cb85aa20c01309be1a407c8ab7bf8a"
|
|
14
14
|
},
|
|
15
15
|
{
|
|
16
16
|
"path": "scripts/model-metadata.source.json",
|
|
@@ -58,11 +58,11 @@
|
|
|
58
58
|
},
|
|
59
59
|
{
|
|
60
60
|
"path": "src/adapters/command-code.ts",
|
|
61
|
-
"sha256": "
|
|
61
|
+
"sha256": "cc6b961854eaa5fd5c20b316cc8f43ab372c9cfaa1a4c25f3eb016f2000e0d8b"
|
|
62
62
|
},
|
|
63
63
|
{
|
|
64
64
|
"path": "src/adapters/cursor.ts",
|
|
65
|
-
"sha256": "
|
|
65
|
+
"sha256": "cee1bc6e59601f00305936295e877c3d2715226c64f08843d869940204d12e01"
|
|
66
66
|
},
|
|
67
67
|
{
|
|
68
68
|
"path": "src/adapters/cursor/arg-codec.ts",
|
|
@@ -88,6 +88,10 @@
|
|
|
88
88
|
"path": "src/adapters/cursor/effort-map.ts",
|
|
89
89
|
"sha256": "495b443a1aabdec8358975f76f03b8f40c9981c9ec6120407d8027128e1a027f"
|
|
90
90
|
},
|
|
91
|
+
{
|
|
92
|
+
"path": "src/adapters/cursor/envelope-echo.ts",
|
|
93
|
+
"sha256": "54ebda108844d9f397fb344b395f9f0584e77629d5333c77507f13c201629d9d"
|
|
94
|
+
},
|
|
91
95
|
{
|
|
92
96
|
"path": "src/adapters/cursor/exec-policy.ts",
|
|
93
97
|
"sha256": "737d62a9b4006ccbc54744472614f6f557d02738aa7bf525ec70c1abeadd5350"
|
|
@@ -126,7 +130,7 @@
|
|
|
126
130
|
},
|
|
127
131
|
{
|
|
128
132
|
"path": "src/adapters/cursor/live-transport.ts",
|
|
129
|
-
"sha256": "
|
|
133
|
+
"sha256": "7e3503156afa169ae3a97e493c2efdd779e9ea662198c75ea6f06b436553b38a"
|
|
130
134
|
},
|
|
131
135
|
{
|
|
132
136
|
"path": "src/adapters/cursor/mcp-config.ts",
|
|
@@ -154,7 +158,7 @@
|
|
|
154
158
|
},
|
|
155
159
|
{
|
|
156
160
|
"path": "src/adapters/cursor/native-exec-fs.ts",
|
|
157
|
-
"sha256": "
|
|
161
|
+
"sha256": "ddeb15ef6d52d88149c3c69157e4157abb2a1871f49715fd8084abde673f2337"
|
|
158
162
|
},
|
|
159
163
|
{
|
|
160
164
|
"path": "src/adapters/cursor/native-exec-mcp.ts",
|
|
@@ -162,11 +166,15 @@
|
|
|
162
166
|
},
|
|
163
167
|
{
|
|
164
168
|
"path": "src/adapters/cursor/native-exec-network.ts",
|
|
165
|
-
"sha256": "
|
|
169
|
+
"sha256": "79c60670bc0beaeb2dab9f63ffbdd0959436b929432c11cc18d095af2ca28466"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"path": "src/adapters/cursor/native-exec-policy.ts",
|
|
173
|
+
"sha256": "8865ed8638c08c6b0e6e90fd5a9a34c8b54cce168670ce248d086ca72a917124"
|
|
166
174
|
},
|
|
167
175
|
{
|
|
168
176
|
"path": "src/adapters/cursor/native-exec-shell.ts",
|
|
169
|
-
"sha256": "
|
|
177
|
+
"sha256": "03fb2c4234d8e246808343e04b0b603ef21c7539b04efccbf96869d9f4040d06"
|
|
170
178
|
},
|
|
171
179
|
{
|
|
172
180
|
"path": "src/adapters/cursor/native-exec-tools.ts",
|
|
@@ -174,19 +182,19 @@
|
|
|
174
182
|
},
|
|
175
183
|
{
|
|
176
184
|
"path": "src/adapters/cursor/native-exec.ts",
|
|
177
|
-
"sha256": "
|
|
185
|
+
"sha256": "0ecdf059b5da7356d7c192815a64e798382df912b45c3e0aefb0ca5270678724"
|
|
178
186
|
},
|
|
179
187
|
{
|
|
180
188
|
"path": "src/adapters/cursor/protobuf-events.ts",
|
|
181
|
-
"sha256": "
|
|
189
|
+
"sha256": "784b452fee1c942ca498a7a0198a4fd1436ab05bef0fa6577d957b34990c35e6"
|
|
182
190
|
},
|
|
183
191
|
{
|
|
184
192
|
"path": "src/adapters/cursor/protobuf-request.ts",
|
|
185
|
-
"sha256": "
|
|
193
|
+
"sha256": "5af888c7e7cbcd5f740b19fbd97527269759526fb7ecf702244952f89468a3a7"
|
|
186
194
|
},
|
|
187
195
|
{
|
|
188
196
|
"path": "src/adapters/cursor/request-builder.ts",
|
|
189
|
-
"sha256": "
|
|
197
|
+
"sha256": "d64d284989f21cb2ab0dadc35f610823af1a377652ee6967051de7280c4bccf7"
|
|
190
198
|
},
|
|
191
199
|
{
|
|
192
200
|
"path": "src/adapters/cursor/thread-continuity.ts",
|
|
@@ -194,11 +202,11 @@
|
|
|
194
202
|
},
|
|
195
203
|
{
|
|
196
204
|
"path": "src/adapters/cursor/tool-definitions.ts",
|
|
197
|
-
"sha256": "
|
|
205
|
+
"sha256": "c450e223fd012aa5a1ef4d146d1c5b68ea9422f8b0cc0973f9e1949646651d16"
|
|
198
206
|
},
|
|
199
207
|
{
|
|
200
208
|
"path": "src/adapters/cursor/tool-result-normalize.ts",
|
|
201
|
-
"sha256": "
|
|
209
|
+
"sha256": "7895ccb1ea511727c398bac7fa25ce5bf766d86c1444619af4eeaf6bfcd47f62"
|
|
202
210
|
},
|
|
203
211
|
{
|
|
204
212
|
"path": "src/adapters/cursor/transport-retry.ts",
|
|
@@ -210,7 +218,11 @@
|
|
|
210
218
|
},
|
|
211
219
|
{
|
|
212
220
|
"path": "src/adapters/cursor/types.ts",
|
|
213
|
-
"sha256": "
|
|
221
|
+
"sha256": "ddaefab0dd3d488ab0e96b2f7bd8e319c5ccb7dedb6a4083040df6503d56d3d5"
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
"path": "src/adapters/google-aistudio-parser.ts",
|
|
225
|
+
"sha256": "bf22ec0dc1731f60039d28d8037414a3579ed59501c4a5b28e9ee10c3386c87c"
|
|
214
226
|
},
|
|
215
227
|
{
|
|
216
228
|
"path": "src/adapters/google-antigravity-hosts.ts",
|
|
@@ -250,7 +262,7 @@
|
|
|
250
262
|
},
|
|
251
263
|
{
|
|
252
264
|
"path": "src/adapters/google.ts",
|
|
253
|
-
"sha256": "
|
|
265
|
+
"sha256": "802f253428b5372afd4e4bdaf209c9f1a1cd9aa77c3183e2aa3142a4469d2a9b"
|
|
254
266
|
},
|
|
255
267
|
{
|
|
256
268
|
"path": "src/adapters/identity.ts",
|
|
@@ -322,7 +334,7 @@
|
|
|
322
334
|
},
|
|
323
335
|
{
|
|
324
336
|
"path": "src/adapters/openai-responses.ts",
|
|
325
|
-
"sha256": "
|
|
337
|
+
"sha256": "c922d4f557f22cfe89f3e5ee8f4ee5be5c8805e9ed634b8877cbd73b4c11e00a"
|
|
326
338
|
},
|
|
327
339
|
{
|
|
328
340
|
"path": "src/adapters/registry.ts",
|
|
@@ -358,7 +370,7 @@
|
|
|
358
370
|
},
|
|
359
371
|
{
|
|
360
372
|
"path": "src/chat/inbound.ts",
|
|
361
|
-
"sha256": "
|
|
373
|
+
"sha256": "cfddf0a818a17fdc45ddb39fd8b4a0caa7f662d53821b70af906ced362898e9d"
|
|
362
374
|
},
|
|
363
375
|
{
|
|
364
376
|
"path": "src/chat/outbound.ts",
|
|
@@ -530,7 +542,7 @@
|
|
|
530
542
|
},
|
|
531
543
|
{
|
|
532
544
|
"path": "src/cli/index.ts",
|
|
533
|
-
"sha256": "
|
|
545
|
+
"sha256": "acba0be33091ff3ee1d9b4f4c5f404264c336c4c7e30a0b1d5a4645a2e381da1"
|
|
534
546
|
},
|
|
535
547
|
{
|
|
536
548
|
"path": "src/cli/init.ts",
|
|
@@ -782,7 +794,7 @@
|
|
|
782
794
|
},
|
|
783
795
|
{
|
|
784
796
|
"path": "src/codex/catalog/provider-fetch.ts",
|
|
785
|
-
"sha256": "
|
|
797
|
+
"sha256": "19701aee29217d40486b3a8571b82bab5278485c3788a199ac538bab4e924c99"
|
|
786
798
|
},
|
|
787
799
|
{
|
|
788
800
|
"path": "src/codex/catalog/sync.ts",
|
|
@@ -1162,7 +1174,7 @@
|
|
|
1162
1174
|
},
|
|
1163
1175
|
{
|
|
1164
1176
|
"path": "src/generated/model-metadata.ts",
|
|
1165
|
-
"sha256": "
|
|
1177
|
+
"sha256": "833c16f411c76c64ca2962ec6950a6c113a0ff09c95faa7631cea3a00f1a4952"
|
|
1166
1178
|
},
|
|
1167
1179
|
{
|
|
1168
1180
|
"path": "src/github/star-state.ts",
|
|
@@ -2064,6 +2076,14 @@
|
|
|
2064
2076
|
"path": "src/oauth/account-import/types.ts",
|
|
2065
2077
|
"sha256": "157cf151ff51f28ba569f00ded3164d141987ac082b778a67150d1baa3e4d1e0"
|
|
2066
2078
|
},
|
|
2079
|
+
{
|
|
2080
|
+
"path": "src/oauth/aistudio-native-daemon.ts",
|
|
2081
|
+
"sha256": "830b6d6b415039ae8a2fe3ec4ecd61432c37538000472ad99ec325cab2ab1ed2"
|
|
2082
|
+
},
|
|
2083
|
+
{
|
|
2084
|
+
"path": "src/oauth/aistudio-session-sync.ts",
|
|
2085
|
+
"sha256": "60b1a97cf7600361d34d8835ca595edf1c4e8753cf97c54624a9ea251b8e42be"
|
|
2086
|
+
},
|
|
2067
2087
|
{
|
|
2068
2088
|
"path": "src/oauth/anthropic-routing.ts",
|
|
2069
2089
|
"sha256": "589ed95211898ccb5e05b8eb896bd018f563177b7dcf919b7662b947b82b68e4"
|
|
@@ -2100,6 +2120,10 @@
|
|
|
2100
2120
|
"path": "src/oauth/github-copilot.ts",
|
|
2101
2121
|
"sha256": "e0bfa9fa518ffc9b04ec81090540cf614ca217ca7ca3f356bc6f74efb6b1e38f"
|
|
2102
2122
|
},
|
|
2123
|
+
{
|
|
2124
|
+
"path": "src/oauth/google-aistudio-auth.ts",
|
|
2125
|
+
"sha256": "93548a1299bdf785204ef3ca4d5d73a28ada7020dbd1af891ed7e3dacf5cb46a"
|
|
2126
|
+
},
|
|
2103
2127
|
{
|
|
2104
2128
|
"path": "src/oauth/google-antigravity.ts",
|
|
2105
2129
|
"sha256": "babefb5a2b6648bf97b47e5cb1ceb52c6c03443625f02195175d6c14b8d83bc0"
|
|
@@ -2114,7 +2138,7 @@
|
|
|
2114
2138
|
},
|
|
2115
2139
|
{
|
|
2116
2140
|
"path": "src/oauth/key-providers.ts",
|
|
2117
|
-
"sha256": "
|
|
2141
|
+
"sha256": "85edb8c6fc3cfa4496e6677954c16eb68f580959ba357ca6db04dabc3d7acb19"
|
|
2118
2142
|
},
|
|
2119
2143
|
{
|
|
2120
2144
|
"path": "src/oauth/kimi.ts",
|
|
@@ -2138,7 +2162,7 @@
|
|
|
2138
2162
|
},
|
|
2139
2163
|
{
|
|
2140
2164
|
"path": "src/oauth/login-cli.ts",
|
|
2141
|
-
"sha256": "
|
|
2165
|
+
"sha256": "cc9e36a434a14384f06a733e2519f4f9e0f7f41bf676d81054f8cac2f8bb1c5a"
|
|
2142
2166
|
},
|
|
2143
2167
|
{
|
|
2144
2168
|
"path": "src/oauth/nous.ts",
|
|
@@ -2218,7 +2242,7 @@
|
|
|
2218
2242
|
},
|
|
2219
2243
|
{
|
|
2220
2244
|
"path": "src/providers/derive.ts",
|
|
2221
|
-
"sha256": "
|
|
2245
|
+
"sha256": "29230e02d732cb0c1ab41f79b881c023dbff3a380cd16fd616b0c387a0091949"
|
|
2222
2246
|
},
|
|
2223
2247
|
{
|
|
2224
2248
|
"path": "src/providers/fastwire.ts",
|
|
@@ -2294,11 +2318,11 @@
|
|
|
2294
2318
|
},
|
|
2295
2319
|
{
|
|
2296
2320
|
"path": "src/providers/quota.ts",
|
|
2297
|
-
"sha256": "
|
|
2321
|
+
"sha256": "9f223cf5c80c32f9e582bd4b34471470b93dca045785b4a6e30b936ec5e66419"
|
|
2298
2322
|
},
|
|
2299
2323
|
{
|
|
2300
2324
|
"path": "src/providers/registry.ts",
|
|
2301
|
-
"sha256": "
|
|
2325
|
+
"sha256": "a4911861adc4d1577276bb2ff6522990b8f5ecc3f75ad0cee6485869765bbcfd"
|
|
2302
2326
|
},
|
|
2303
2327
|
{
|
|
2304
2328
|
"path": "src/providers/replit/constants.ts",
|
|
@@ -2430,7 +2454,7 @@
|
|
|
2430
2454
|
},
|
|
2431
2455
|
{
|
|
2432
2456
|
"path": "src/router.ts",
|
|
2433
|
-
"sha256": "
|
|
2457
|
+
"sha256": "fc639a97d65adbee3b0cfdc0b9bb2072fd60b14eb6f508dd2f3582e730b8da03"
|
|
2434
2458
|
},
|
|
2435
2459
|
{
|
|
2436
2460
|
"path": "src/routing/account-pool/affinity.ts",
|
|
@@ -2438,11 +2462,11 @@
|
|
|
2438
2462
|
},
|
|
2439
2463
|
{
|
|
2440
2464
|
"path": "src/routing/account-pool/cooldown.ts",
|
|
2441
|
-
"sha256": "
|
|
2465
|
+
"sha256": "2d9fbc095930556e6d4a5176a19a5e843746824033b2b2d58af38f94153a75b9"
|
|
2442
2466
|
},
|
|
2443
2467
|
{
|
|
2444
2468
|
"path": "src/routing/account-pool/index.ts",
|
|
2445
|
-
"sha256": "
|
|
2469
|
+
"sha256": "1a87a51a850e8cb044e83b97b03386e029ab8dbb307cd701029f6f7e568124da"
|
|
2446
2470
|
},
|
|
2447
2471
|
{
|
|
2448
2472
|
"path": "src/routing/account-pool/resolve.ts",
|
|
@@ -2552,9 +2576,13 @@
|
|
|
2552
2576
|
"path": "src/server/adapter-resolve.ts",
|
|
2553
2577
|
"sha256": "82c41afe2ba5cc6a1ec675345f92d933987d47d0f90343ecc68fe34b3ea22352"
|
|
2554
2578
|
},
|
|
2579
|
+
{
|
|
2580
|
+
"path": "src/server/aistudio-ws-hub.ts",
|
|
2581
|
+
"sha256": "ff7e0cf101acbb08d02317480dbad7f015e4123c24a1ca7e37a02542448fdc73"
|
|
2582
|
+
},
|
|
2555
2583
|
{
|
|
2556
2584
|
"path": "src/server/auth-cors.ts",
|
|
2557
|
-
"sha256": "
|
|
2585
|
+
"sha256": "10f928f3b05ce2b6992ca28c2fa8a6137b6170a8edc89a998801bcfa41f46cc6"
|
|
2558
2586
|
},
|
|
2559
2587
|
{
|
|
2560
2588
|
"path": "src/server/background-lifecycle.ts",
|
|
@@ -2562,7 +2590,7 @@
|
|
|
2562
2590
|
},
|
|
2563
2591
|
{
|
|
2564
2592
|
"path": "src/server/chat-completions.ts",
|
|
2565
|
-
"sha256": "
|
|
2593
|
+
"sha256": "77738dc71cd34762d4aec230e08f7ad8ebad3071a6d8b725383e6de9248df309"
|
|
2566
2594
|
},
|
|
2567
2595
|
{
|
|
2568
2596
|
"path": "src/server/chat-native-sse.ts",
|
|
@@ -2602,7 +2630,7 @@
|
|
|
2602
2630
|
},
|
|
2603
2631
|
{
|
|
2604
2632
|
"path": "src/server/index.ts",
|
|
2605
|
-
"sha256": "
|
|
2633
|
+
"sha256": "2246d67546fa25fc8ea8bcc924b32cb3e9ead0eb58175b72b91e0b71c2d904fd"
|
|
2606
2634
|
},
|
|
2607
2635
|
{
|
|
2608
2636
|
"path": "src/server/lifecycle.ts",
|
|
@@ -2670,7 +2698,7 @@
|
|
|
2670
2698
|
},
|
|
2671
2699
|
{
|
|
2672
2700
|
"path": "src/server/management/logs-usage-routes.ts",
|
|
2673
|
-
"sha256": "
|
|
2701
|
+
"sha256": "0bc6f49e7f416c786d2f4e49d3c83dab14a5d90b9bd6e4b2146e8e1b2ae84137"
|
|
2674
2702
|
},
|
|
2675
2703
|
{
|
|
2676
2704
|
"path": "src/server/management/model-routes.ts",
|
|
@@ -2686,7 +2714,7 @@
|
|
|
2686
2714
|
},
|
|
2687
2715
|
{
|
|
2688
2716
|
"path": "src/server/management/oauth-account-routes.ts",
|
|
2689
|
-
"sha256": "
|
|
2717
|
+
"sha256": "9f1fe5834e08d8a68ec1facb2c9a89a5e389e2140a1430e689fd5748fdf1c76b"
|
|
2690
2718
|
},
|
|
2691
2719
|
{
|
|
2692
2720
|
"path": "src/server/management/provider-capability-config.ts",
|
|
@@ -2758,7 +2786,7 @@
|
|
|
2758
2786
|
},
|
|
2759
2787
|
{
|
|
2760
2788
|
"path": "src/server/port-reclaim.ts",
|
|
2761
|
-
"sha256": "
|
|
2789
|
+
"sha256": "94d2791f86278a867029c6e5edbdce917ff19ff88ce6d450e3b6e08d43c59653"
|
|
2762
2790
|
},
|
|
2763
2791
|
{
|
|
2764
2792
|
"path": "src/server/ports.ts",
|
|
@@ -2786,11 +2814,11 @@
|
|
|
2786
2814
|
},
|
|
2787
2815
|
{
|
|
2788
2816
|
"path": "src/server/request-log-conversation.ts",
|
|
2789
|
-
"sha256": "
|
|
2817
|
+
"sha256": "656bb6656ed91b6ab3f7f2ebd7a5d6304f954888dc278fb0f299cdd6d5268c0b"
|
|
2790
2818
|
},
|
|
2791
2819
|
{
|
|
2792
2820
|
"path": "src/server/request-log.ts",
|
|
2793
|
-
"sha256": "
|
|
2821
|
+
"sha256": "9a8deaac8162d33e55276d3d57a685f720ce9017b4904e9cc89ea36838606e26"
|
|
2794
2822
|
},
|
|
2795
2823
|
{
|
|
2796
2824
|
"path": "src/server/responses-custom-tool-repair.ts",
|
|
@@ -2862,7 +2890,7 @@
|
|
|
2862
2890
|
},
|
|
2863
2891
|
{
|
|
2864
2892
|
"path": "src/server/responses/core.ts",
|
|
2865
|
-
"sha256": "
|
|
2893
|
+
"sha256": "fd587433ae4ab1f7d3ac7ca8066160972f2cadfb9bf4ea6eff742d03624c3950"
|
|
2866
2894
|
},
|
|
2867
2895
|
{
|
|
2868
2896
|
"path": "src/server/responses/empty-completion-guard.ts",
|
|
@@ -2890,7 +2918,7 @@
|
|
|
2890
2918
|
},
|
|
2891
2919
|
{
|
|
2892
2920
|
"path": "src/server/responses/policy-fallback.ts",
|
|
2893
|
-
"sha256": "
|
|
2921
|
+
"sha256": "f62da21dd6f6c1b33fc629c6ee1a8526cebae28b158d9a3d96326ac82c6d54b2"
|
|
2894
2922
|
},
|
|
2895
2923
|
{
|
|
2896
2924
|
"path": "src/server/responses/responses-field-backfill.ts",
|
|
@@ -2946,7 +2974,7 @@
|
|
|
2946
2974
|
},
|
|
2947
2975
|
{
|
|
2948
2976
|
"path": "src/server/ws-bridge.ts",
|
|
2949
|
-
"sha256": "
|
|
2977
|
+
"sha256": "1f7b016dd2dbfcdd65175e388e8c7fde9331b725a9fae65985dd0cce65cd60c9"
|
|
2950
2978
|
},
|
|
2951
2979
|
{
|
|
2952
2980
|
"path": "src/service-manager-probe.ts",
|
|
@@ -2964,6 +2992,18 @@
|
|
|
2964
2992
|
"path": "src/sidecar/candidates.ts",
|
|
2965
2993
|
"sha256": "8ee0ccd7b240716220e9759892f62a40b1b1d376a1829d12ce017c344ae94900"
|
|
2966
2994
|
},
|
|
2995
|
+
{
|
|
2996
|
+
"path": "src/smoke/fingerprint-cache.ts",
|
|
2997
|
+
"sha256": "4f03fccae517b7bdbc01be82e922b48f7aca7642c91d271b745fe9ac7495b4fa"
|
|
2998
|
+
},
|
|
2999
|
+
{
|
|
3000
|
+
"path": "src/smoke/live-scenarios.ts",
|
|
3001
|
+
"sha256": "ab0fec1e43ffd0efe7756fdf150859d593d3054a3ecef75cc6cf9fe7379a27b5"
|
|
3002
|
+
},
|
|
3003
|
+
{
|
|
3004
|
+
"path": "src/smoke/runner.ts",
|
|
3005
|
+
"sha256": "cad2cbfdbc4f40c2c056c1bdf136481e4d8304dba4751cd1a8becfa9d586e7c2"
|
|
3006
|
+
},
|
|
2967
3007
|
{
|
|
2968
3008
|
"path": "src/stall-timeout.ts",
|
|
2969
3009
|
"sha256": "abd4f8883bf90e2e84495a72a0cd59ce2b2491416396f9ac01e075fef164a0de"
|
|
@@ -3050,15 +3090,15 @@
|
|
|
3050
3090
|
},
|
|
3051
3091
|
{
|
|
3052
3092
|
"path": "src/types/provider.ts",
|
|
3053
|
-
"sha256": "
|
|
3093
|
+
"sha256": "a881c9455b7bfdfedceb77dc9d86fe08f74eb924c8fe61b7fb5faeb39e3d77fc"
|
|
3054
3094
|
},
|
|
3055
3095
|
{
|
|
3056
3096
|
"path": "src/types/request.ts",
|
|
3057
|
-
"sha256": "
|
|
3097
|
+
"sha256": "10e954db03074a11b72b07d8253131cf0d4c654aba185ea516c9053667bbb288"
|
|
3058
3098
|
},
|
|
3059
3099
|
{
|
|
3060
3100
|
"path": "src/types/tools.ts",
|
|
3061
|
-
"sha256": "
|
|
3101
|
+
"sha256": "022652cdf19d08a232d6270b4347a1dbf140f67054b61076adf3a04de03cb52d"
|
|
3062
3102
|
},
|
|
3063
3103
|
{
|
|
3064
3104
|
"path": "src/types/wire.ts",
|
|
@@ -3112,9 +3152,13 @@
|
|
|
3112
3152
|
"path": "src/update/tray-update-plan.mjs",
|
|
3113
3153
|
"sha256": "c11b945c43c0f2d2f10fb6a9d15738ec5639c1938aac0b7c6415ca84d8241211"
|
|
3114
3154
|
},
|
|
3155
|
+
{
|
|
3156
|
+
"path": "src/usage/command-code-manifest.ts",
|
|
3157
|
+
"sha256": "bebe7894653231b7b1edfc0b27aea48871f9efb47c8e34d68b19fffc025cc47a"
|
|
3158
|
+
},
|
|
3115
3159
|
{
|
|
3116
3160
|
"path": "src/usage/cost.ts",
|
|
3117
|
-
"sha256": "
|
|
3161
|
+
"sha256": "f6ff4fe12bd406c5c886f9cd0195940d8b5e46ed75a09f3a8808e4bcd025440d"
|
|
3118
3162
|
},
|
|
3119
3163
|
{
|
|
3120
3164
|
"path": "src/usage/debug.ts",
|
|
@@ -3122,15 +3166,15 @@
|
|
|
3122
3166
|
},
|
|
3123
3167
|
{
|
|
3124
3168
|
"path": "src/usage/expected-prices.ts",
|
|
3125
|
-
"sha256": "
|
|
3169
|
+
"sha256": "d46d9fe44e5755abc6cb79c066b6e3fe6cca1506527ed31d4dcc8cb88f736f25"
|
|
3126
3170
|
},
|
|
3127
3171
|
{
|
|
3128
3172
|
"path": "src/usage/log.ts",
|
|
3129
|
-
"sha256": "
|
|
3173
|
+
"sha256": "0f85a854136dc16981dad049b66d68d23bf0e2bcd7d89807880d70cf6f2c8922"
|
|
3130
3174
|
},
|
|
3131
3175
|
{
|
|
3132
3176
|
"path": "src/usage/summary.ts",
|
|
3133
|
-
"sha256": "
|
|
3177
|
+
"sha256": "8b20c3349048b3e1010862efa2fb5b0f00d17d7f596ae3051f033228976a26b5"
|
|
3134
3178
|
},
|
|
3135
3179
|
{
|
|
3136
3180
|
"path": "src/usage/totals.ts",
|
|
@@ -3202,7 +3246,7 @@
|
|
|
3202
3246
|
},
|
|
3203
3247
|
{
|
|
3204
3248
|
"path": "src/web-search/index.ts",
|
|
3205
|
-
"sha256": "
|
|
3249
|
+
"sha256": "49ced022297af6755f43fa88aded61c8b64bc3a057383821d27bbd1fd3f277b2"
|
|
3206
3250
|
},
|
|
3207
3251
|
{
|
|
3208
3252
|
"path": "src/web-search/loop.ts",
|
|
@@ -27,6 +27,9 @@ const PROVIDER_ALIASES: Record<string, string> = {
|
|
|
27
27
|
"google-antigravity": "google",
|
|
28
28
|
"antigravity": "google",
|
|
29
29
|
"gemini-antigravity": "google",
|
|
30
|
+
"google-aistudio": "google",
|
|
31
|
+
"aistudio": "google",
|
|
32
|
+
"gemini-aistudio": "google",
|
|
30
33
|
"deepseek": "deepseek",
|
|
31
34
|
"moonshot": "moonshot",
|
|
32
35
|
"zhipu-bigmodel": "zai",
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { existsSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { spawn, type ChildProcess } from "node:child_process";
|
|
4
|
+
|
|
5
|
+
export function isNativeWebKitSupported(): boolean {
|
|
6
|
+
return process.platform === "darwin";
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export function getAiStudioNativeDaemonSourcePath(): string {
|
|
10
|
+
return join(process.cwd(), "integrations/aistudio-daemon/main.swift");
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function getAiStudioNativeDaemonBinaryPath(): string {
|
|
14
|
+
return join(process.cwd(), ".tmp/aistudio-webkit-daemon");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export async function buildAiStudioNativeDaemon(outputPath?: string): Promise<string> {
|
|
18
|
+
const src = getAiStudioNativeDaemonSourcePath();
|
|
19
|
+
const dest = outputPath ?? getAiStudioNativeDaemonBinaryPath();
|
|
20
|
+
|
|
21
|
+
const proc = Bun.spawn(["swiftc", "-O", src, "-o", dest], {
|
|
22
|
+
stdout: "pipe",
|
|
23
|
+
stderr: "pipe",
|
|
24
|
+
});
|
|
25
|
+
const exitCode = await proc.exited;
|
|
26
|
+
if (exitCode !== 0) {
|
|
27
|
+
const errText = await new Response(proc.stderr).text();
|
|
28
|
+
throw new Error(`Failed to compile native WebKit daemon: ${errText}`);
|
|
29
|
+
}
|
|
30
|
+
return dest;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
export interface NativeDaemonHandle {
|
|
34
|
+
process: ChildProcess;
|
|
35
|
+
stop: () => void;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export function startAiStudioNativeDaemon(port = 10100): NativeDaemonHandle {
|
|
39
|
+
const binPath = getAiStudioNativeDaemonBinaryPath();
|
|
40
|
+
const srcPath = getAiStudioNativeDaemonSourcePath();
|
|
41
|
+
|
|
42
|
+
const runner = existsSync(binPath)
|
|
43
|
+
? [binPath, "--port", String(port)]
|
|
44
|
+
: ["swift", srcPath, "--port", String(port)];
|
|
45
|
+
|
|
46
|
+
const child = spawn(runner[0]!, runner.slice(1), {
|
|
47
|
+
detached: true,
|
|
48
|
+
stdio: "ignore",
|
|
49
|
+
});
|
|
50
|
+
child.unref();
|
|
51
|
+
|
|
52
|
+
return {
|
|
53
|
+
process: child,
|
|
54
|
+
stop: () => {
|
|
55
|
+
try {
|
|
56
|
+
child.kill();
|
|
57
|
+
} catch (err) {
|
|
58
|
+
void err;
|
|
59
|
+
}
|
|
60
|
+
},
|
|
61
|
+
};
|
|
62
|
+
}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { getConfigDir } from "../config";
|
|
4
|
+
|
|
5
|
+
export interface AiStudioCookieItem {
|
|
6
|
+
name: string;
|
|
7
|
+
value: string;
|
|
8
|
+
domain?: string;
|
|
9
|
+
path?: string;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
export interface AiStudioSessionData {
|
|
13
|
+
selectedProject: string;
|
|
14
|
+
windowId: string;
|
|
15
|
+
cookies: AiStudioCookieItem[];
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export function serializeSessionBundle(data: AiStudioSessionData): string {
|
|
19
|
+
const jsonStr = JSON.stringify(data);
|
|
20
|
+
return Buffer.from(jsonStr, "utf-8").toString("base64");
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export function parseSessionBundle(encoded: string): AiStudioSessionData {
|
|
24
|
+
if (!encoded || typeof encoded !== "string") {
|
|
25
|
+
throw new Error("Invalid session token");
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const raw = Buffer.from(encoded.trim(), "base64").toString("utf-8");
|
|
29
|
+
let data: any;
|
|
30
|
+
try {
|
|
31
|
+
data = JSON.parse(raw);
|
|
32
|
+
} catch (err) {
|
|
33
|
+
void err;
|
|
34
|
+
throw new Error("Failed to parse session token: invalid JSON");
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
if (!data || typeof data !== "object" || !Array.isArray(data.cookies)) {
|
|
38
|
+
throw new Error("Invalid session bundle schema: cookies array required");
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
selectedProject: String(data.selectedProject || ""),
|
|
43
|
+
windowId: String(data.windowId || ""),
|
|
44
|
+
cookies: data.cookies.map((c: any) => ({
|
|
45
|
+
name: String(c.name || ""),
|
|
46
|
+
value: String(c.value || ""),
|
|
47
|
+
domain: c.domain ? String(c.domain) : undefined,
|
|
48
|
+
path: c.path ? String(c.path) : undefined,
|
|
49
|
+
})),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export function getAiStudioSessionPath(): string {
|
|
54
|
+
return join(getConfigDir(), "aistudio-session.json");
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
export function saveAiStudioSession(data: AiStudioSessionData, dest = getAiStudioSessionPath()): string {
|
|
58
|
+
mkdirSync(join(dest, ".."), { recursive: true });
|
|
59
|
+
writeFileSync(dest, JSON.stringify(data, null, 2), { encoding: "utf-8", mode: 0o600 });
|
|
60
|
+
try { chmodSync(dest, 0o600); } catch { /* best-effort on platforms without POSIX modes */ }
|
|
61
|
+
return dest;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
export function saveAiStudioSessionFromToken(tokenOrBase64: string, dest?: string): string {
|
|
65
|
+
const session = parseSessionBundle(tokenOrBase64);
|
|
66
|
+
return saveAiStudioSession(session, dest);
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function loadAiStudioSession(path = getAiStudioSessionPath()): AiStudioSessionData | null {
|
|
70
|
+
if (!existsSync(path)) return null;
|
|
71
|
+
try {
|
|
72
|
+
const data = JSON.parse(readFileSync(path, "utf-8"));
|
|
73
|
+
if (!data || typeof data !== "object" || !Array.isArray(data.cookies)) return null;
|
|
74
|
+
return {
|
|
75
|
+
selectedProject: String(data.selectedProject || ""),
|
|
76
|
+
windowId: String(data.windowId || ""),
|
|
77
|
+
cookies: data.cookies.map((c: any) => ({
|
|
78
|
+
name: String(c.name || ""),
|
|
79
|
+
value: String(c.value || ""),
|
|
80
|
+
domain: c.domain ? String(c.domain) : undefined,
|
|
81
|
+
path: c.path ? String(c.path) : undefined,
|
|
82
|
+
})),
|
|
83
|
+
};
|
|
84
|
+
} catch {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export function cookieHeaderFromSession(session: AiStudioSessionData | null | undefined): string {
|
|
90
|
+
if (!session?.cookies?.length) return "";
|
|
91
|
+
return session.cookies
|
|
92
|
+
.filter((c) => c && c.name && c.value && !/[\r\n\u0000]/.test(c.name) && !/[\r\n\u0000]/.test(c.value))
|
|
93
|
+
.map((c) => c.name.trim() + "=" + c.value.trim())
|
|
94
|
+
.join("; ");
|
|
95
|
+
}
|