@anthonyhaussman/opencode-agy-auth 1.2.6-alpha.0 → 1.2.6-beta.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/README.md +0 -1
- package/dist/index.d.ts +5 -6
- package/dist/index.js +84 -883
- package/dist/index.js.map +1 -1
- package/dist/src/constants.d.ts +0 -2
- package/dist/src/plugin/oauth-authorize.d.ts +0 -9
- package/dist/src/plugin/types.d.ts +0 -33
- package/dist/src/plugin.d.ts +0 -23
- package/dist/src/sdk/agy-cli-version.d.ts +1 -1
- package/package.json +1 -1
- package/dist/src/plugin/v2.d.ts +0 -22
package/dist/index.js
CHANGED
|
@@ -268,7 +268,7 @@ function createAgyActivityRequestId() {
|
|
|
268
268
|
import os from "os";
|
|
269
269
|
|
|
270
270
|
// src/sdk/agy-cli-version.ts
|
|
271
|
-
var AGY_CLI_VERSION = "1.2.
|
|
271
|
+
var AGY_CLI_VERSION = "1.2.6";
|
|
272
272
|
|
|
273
273
|
// src/sdk/user-agent.ts
|
|
274
274
|
var cachedUserAgent = null;
|
|
@@ -579,12 +579,6 @@ async function resolveQuotaResetDelay(accessToken, projectId, model, userAgentMo
|
|
|
579
579
|
return null;
|
|
580
580
|
}
|
|
581
581
|
}
|
|
582
|
-
var retryInternals = {
|
|
583
|
-
parseRetryDelayValue,
|
|
584
|
-
parseRetryDelayFromMessage,
|
|
585
|
-
findResetTimeForModel,
|
|
586
|
-
resolveQuotaResetDelay
|
|
587
|
-
};
|
|
588
582
|
|
|
589
583
|
// src/sdk/retry/helpers.ts
|
|
590
584
|
var DEFAULT_MAX_ATTEMPTS = 3;
|
|
@@ -1581,11 +1575,7 @@ function createOAuthAuthorizeMethod(options) {
|
|
|
1581
1575
|
const isHeadless = !!(process.env.SSH_CONNECTION || process.env.SSH_CLIENT || process.env.SSH_TTY || process.env.OPENCODE_HEADLESS);
|
|
1582
1576
|
const authorization = await authorizeAgy();
|
|
1583
1577
|
if (!isHeadless) {
|
|
1584
|
-
|
|
1585
|
-
options.openBrowser(authorization.url);
|
|
1586
|
-
} else {
|
|
1587
|
-
openBrowserUrl(authorization.url);
|
|
1588
|
-
}
|
|
1578
|
+
openBrowserUrl(authorization.url);
|
|
1589
1579
|
}
|
|
1590
1580
|
return {
|
|
1591
1581
|
url: authorization.url,
|
|
@@ -1639,23 +1629,16 @@ function parseOAuthCallbackInput(input) {
|
|
|
1639
1629
|
}
|
|
1640
1630
|
return { code: trimmed };
|
|
1641
1631
|
}
|
|
1642
|
-
function defaultOpenBrowserLauncher(command, args) {
|
|
1643
|
-
const child = spawn(command, args, {
|
|
1644
|
-
stdio: "ignore",
|
|
1645
|
-
detached: true
|
|
1646
|
-
});
|
|
1647
|
-
child.unref?.();
|
|
1648
|
-
}
|
|
1649
|
-
var openBrowserLauncher = defaultOpenBrowserLauncher;
|
|
1650
1632
|
function openBrowserUrl(url2) {
|
|
1651
|
-
if ((process.env.NODE_ENV === "test" || process.env.VITEST) && openBrowserLauncher === defaultOpenBrowserLauncher) {
|
|
1652
|
-
return;
|
|
1653
|
-
}
|
|
1654
1633
|
try {
|
|
1655
1634
|
const platform2 = process.platform;
|
|
1656
1635
|
const command = platform2 === "darwin" ? "open" : platform2 === "win32" ? "rundll32" : "xdg-open";
|
|
1657
1636
|
const args = platform2 === "win32" ? ["url.dll,FileProtocolHandler", url2] : [url2];
|
|
1658
|
-
|
|
1637
|
+
const child = spawn(command, args, {
|
|
1638
|
+
stdio: "ignore",
|
|
1639
|
+
detached: true
|
|
1640
|
+
});
|
|
1641
|
+
child.unref?.();
|
|
1659
1642
|
} catch {
|
|
1660
1643
|
}
|
|
1661
1644
|
}
|
|
@@ -16060,7 +16043,7 @@ var models_default = {
|
|
|
16060
16043
|
}
|
|
16061
16044
|
},
|
|
16062
16045
|
experimentIds: [
|
|
16063
|
-
|
|
16046
|
+
106329234,
|
|
16064
16047
|
106519115,
|
|
16065
16048
|
105979552,
|
|
16066
16049
|
105979574,
|
|
@@ -16084,6 +16067,8 @@ var models_default = {
|
|
|
16084
16067
|
106278607,
|
|
16085
16068
|
106512082,
|
|
16086
16069
|
106380926,
|
|
16070
|
+
106723203,
|
|
16071
|
+
106242397,
|
|
16087
16072
|
106281951,
|
|
16088
16073
|
106264532,
|
|
16089
16074
|
106044947,
|
|
@@ -16103,6 +16088,7 @@ var models_default = {
|
|
|
16103
16088
|
105906495,
|
|
16104
16089
|
106283614,
|
|
16105
16090
|
106640124,
|
|
16091
|
+
106242393,
|
|
16106
16092
|
106038164,
|
|
16107
16093
|
106032301,
|
|
16108
16094
|
106121604
|
|
@@ -16165,7 +16151,7 @@ var models_default = {
|
|
|
16165
16151
|
modelProvider: "MODEL_PROVIDER_ANTHROPIC",
|
|
16166
16152
|
quotaInfo: {
|
|
16167
16153
|
remainingFraction: 1,
|
|
16168
|
-
resetTime: "2026-09-
|
|
16154
|
+
resetTime: "2026-09-18T16:07:34Z"
|
|
16169
16155
|
},
|
|
16170
16156
|
recommended: true,
|
|
16171
16157
|
supportedMimeTypes: {
|
|
@@ -16204,7 +16190,7 @@ var models_default = {
|
|
|
16204
16190
|
modelProvider: "MODEL_PROVIDER_ANTHROPIC",
|
|
16205
16191
|
quotaInfo: {
|
|
16206
16192
|
remainingFraction: 1,
|
|
16207
|
-
resetTime: "2026-09-
|
|
16193
|
+
resetTime: "2026-09-18T16:07:34Z"
|
|
16208
16194
|
},
|
|
16209
16195
|
recommended: true,
|
|
16210
16196
|
supportedMimeTypes: {
|
|
@@ -16240,8 +16226,8 @@ var models_default = {
|
|
|
16240
16226
|
},
|
|
16241
16227
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16242
16228
|
quotaInfo: {
|
|
16243
|
-
remainingFraction: 0.
|
|
16244
|
-
resetTime: "2026-09-
|
|
16229
|
+
remainingFraction: 0.7753168,
|
|
16230
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16245
16231
|
},
|
|
16246
16232
|
recommended: true,
|
|
16247
16233
|
supportedMimeTypes: {
|
|
@@ -16323,8 +16309,8 @@ var models_default = {
|
|
|
16323
16309
|
},
|
|
16324
16310
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16325
16311
|
quotaInfo: {
|
|
16326
|
-
remainingFraction: 0.
|
|
16327
|
-
resetTime: "2026-09-
|
|
16312
|
+
remainingFraction: 0.7753168,
|
|
16313
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16328
16314
|
},
|
|
16329
16315
|
recommended: true,
|
|
16330
16316
|
supportedMimeTypes: {
|
|
@@ -16406,8 +16392,8 @@ var models_default = {
|
|
|
16406
16392
|
},
|
|
16407
16393
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16408
16394
|
quotaInfo: {
|
|
16409
|
-
remainingFraction: 0.
|
|
16410
|
-
resetTime: "2026-09-
|
|
16395
|
+
remainingFraction: 0.7753168,
|
|
16396
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16411
16397
|
},
|
|
16412
16398
|
recommended: true,
|
|
16413
16399
|
supportedMimeTypes: {
|
|
@@ -16486,8 +16472,8 @@ var models_default = {
|
|
|
16486
16472
|
},
|
|
16487
16473
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16488
16474
|
quotaInfo: {
|
|
16489
|
-
remainingFraction: 0.
|
|
16490
|
-
resetTime: "2026-09-
|
|
16475
|
+
remainingFraction: 0.7753168,
|
|
16476
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16491
16477
|
},
|
|
16492
16478
|
recommended: true,
|
|
16493
16479
|
requiresImageOutputOutsideFunctionResponses: true,
|
|
@@ -16567,8 +16553,8 @@ var models_default = {
|
|
|
16567
16553
|
},
|
|
16568
16554
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16569
16555
|
quotaInfo: {
|
|
16570
|
-
remainingFraction: 0.
|
|
16571
|
-
resetTime: "2026-09-
|
|
16556
|
+
remainingFraction: 0.7753168,
|
|
16557
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16572
16558
|
},
|
|
16573
16559
|
recommended: true,
|
|
16574
16560
|
supportedMimeTypes: {
|
|
@@ -16642,7 +16628,7 @@ var models_default = {
|
|
|
16642
16628
|
stringValue: `{
|
|
16643
16629
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
16644
16630
|
"max_token_limit": "256000",
|
|
16645
|
-
"token_threshold": "
|
|
16631
|
+
"token_threshold": "50000",
|
|
16646
16632
|
"max_overhead_ratio": "0.15",
|
|
16647
16633
|
"moving_window_size": "1",
|
|
16648
16634
|
"enabled": true,
|
|
@@ -16672,8 +16658,8 @@ var models_default = {
|
|
|
16672
16658
|
},
|
|
16673
16659
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16674
16660
|
quotaInfo: {
|
|
16675
|
-
remainingFraction: 0.
|
|
16676
|
-
resetTime: "2026-09-
|
|
16661
|
+
remainingFraction: 0.7753168,
|
|
16662
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16677
16663
|
},
|
|
16678
16664
|
recommended: true,
|
|
16679
16665
|
supportedMimeTypes: {
|
|
@@ -16742,8 +16728,8 @@ var models_default = {
|
|
|
16742
16728
|
model: "MODEL_PLACEHOLDER_M21",
|
|
16743
16729
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16744
16730
|
quotaInfo: {
|
|
16745
|
-
remainingFraction: 0.
|
|
16746
|
-
resetTime: "2026-09-
|
|
16731
|
+
remainingFraction: 0.7753168,
|
|
16732
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16747
16733
|
}
|
|
16748
16734
|
},
|
|
16749
16735
|
"gemini-3.1-flash-lite": {
|
|
@@ -16761,8 +16747,8 @@ var models_default = {
|
|
|
16761
16747
|
},
|
|
16762
16748
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16763
16749
|
quotaInfo: {
|
|
16764
|
-
remainingFraction: 0.
|
|
16765
|
-
resetTime: "2026-09-
|
|
16750
|
+
remainingFraction: 0.7753168,
|
|
16751
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16766
16752
|
}
|
|
16767
16753
|
},
|
|
16768
16754
|
"gemini-3.1-pro-high": {
|
|
@@ -16793,8 +16779,8 @@ var models_default = {
|
|
|
16793
16779
|
},
|
|
16794
16780
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16795
16781
|
quotaInfo: {
|
|
16796
|
-
remainingFraction: 0.
|
|
16797
|
-
resetTime: "2026-09-
|
|
16782
|
+
remainingFraction: 0.7753168,
|
|
16783
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16798
16784
|
},
|
|
16799
16785
|
recommended: true,
|
|
16800
16786
|
supportedMimeTypes: {
|
|
@@ -16884,8 +16870,8 @@ var models_default = {
|
|
|
16884
16870
|
},
|
|
16885
16871
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16886
16872
|
quotaInfo: {
|
|
16887
|
-
remainingFraction: 0.
|
|
16888
|
-
resetTime: "2026-09-
|
|
16873
|
+
remainingFraction: 0.7753168,
|
|
16874
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16889
16875
|
},
|
|
16890
16876
|
recommended: true,
|
|
16891
16877
|
supportedMimeTypes: {
|
|
@@ -16959,7 +16945,7 @@ var models_default = {
|
|
|
16959
16945
|
stringValue: `{
|
|
16960
16946
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
16961
16947
|
"max_token_limit": "256000",
|
|
16962
|
-
"token_threshold": "
|
|
16948
|
+
"token_threshold": "50000",
|
|
16963
16949
|
"max_overhead_ratio": "0.15",
|
|
16964
16950
|
"moving_window_size": "1",
|
|
16965
16951
|
"enabled": true,
|
|
@@ -16989,8 +16975,8 @@ var models_default = {
|
|
|
16989
16975
|
},
|
|
16990
16976
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16991
16977
|
quotaInfo: {
|
|
16992
|
-
remainingFraction: 0.
|
|
16993
|
-
resetTime: "2026-09-
|
|
16978
|
+
remainingFraction: 0.7753168,
|
|
16979
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
16994
16980
|
},
|
|
16995
16981
|
recommended: true,
|
|
16996
16982
|
supportedMimeTypes: {
|
|
@@ -17072,8 +17058,8 @@ var models_default = {
|
|
|
17072
17058
|
},
|
|
17073
17059
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17074
17060
|
quotaInfo: {
|
|
17075
|
-
remainingFraction: 0.
|
|
17076
|
-
resetTime: "2026-09-
|
|
17061
|
+
remainingFraction: 0.7753168,
|
|
17062
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
17077
17063
|
},
|
|
17078
17064
|
recommended: true,
|
|
17079
17065
|
supportedMimeTypes: {
|
|
@@ -17149,7 +17135,7 @@ var models_default = {
|
|
|
17149
17135
|
stringValue: `{
|
|
17150
17136
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
17151
17137
|
"max_token_limit": "256000",
|
|
17152
|
-
"token_threshold": "
|
|
17138
|
+
"token_threshold": "50000",
|
|
17153
17139
|
"max_overhead_ratio": "0.15",
|
|
17154
17140
|
"moving_window_size": "1",
|
|
17155
17141
|
"enabled": true,
|
|
@@ -17179,8 +17165,8 @@ var models_default = {
|
|
|
17179
17165
|
},
|
|
17180
17166
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17181
17167
|
quotaInfo: {
|
|
17182
|
-
remainingFraction: 0.
|
|
17183
|
-
resetTime: "2026-09-
|
|
17168
|
+
remainingFraction: 0.7753168,
|
|
17169
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
17184
17170
|
},
|
|
17185
17171
|
recommended: true,
|
|
17186
17172
|
supportedMimeTypes: {
|
|
@@ -17256,7 +17242,7 @@ var models_default = {
|
|
|
17256
17242
|
stringValue: `{
|
|
17257
17243
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
17258
17244
|
"max_token_limit": "256000",
|
|
17259
|
-
"token_threshold": "
|
|
17245
|
+
"token_threshold": "50000",
|
|
17260
17246
|
"max_overhead_ratio": "0.15",
|
|
17261
17247
|
"moving_window_size": "1",
|
|
17262
17248
|
"enabled": true,
|
|
@@ -17298,8 +17284,8 @@ var models_default = {
|
|
|
17298
17284
|
},
|
|
17299
17285
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17300
17286
|
quotaInfo: {
|
|
17301
|
-
remainingFraction: 0.
|
|
17302
|
-
resetTime: "2026-09-
|
|
17287
|
+
remainingFraction: 0.7753168,
|
|
17288
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
17303
17289
|
},
|
|
17304
17290
|
recommended: true,
|
|
17305
17291
|
supportedMimeTypes: {
|
|
@@ -17375,7 +17361,7 @@ var models_default = {
|
|
|
17375
17361
|
stringValue: `{
|
|
17376
17362
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
17377
17363
|
"max_token_limit": "256000",
|
|
17378
|
-
"token_threshold": "
|
|
17364
|
+
"token_threshold": "50000",
|
|
17379
17365
|
"max_overhead_ratio": "0.15",
|
|
17380
17366
|
"moving_window_size": "1",
|
|
17381
17367
|
"enabled": true,
|
|
@@ -17417,8 +17403,8 @@ var models_default = {
|
|
|
17417
17403
|
},
|
|
17418
17404
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17419
17405
|
quotaInfo: {
|
|
17420
|
-
remainingFraction: 0.
|
|
17421
|
-
resetTime: "2026-09-
|
|
17406
|
+
remainingFraction: 0.7753168,
|
|
17407
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
17422
17408
|
},
|
|
17423
17409
|
recommended: true,
|
|
17424
17410
|
supportedMimeTypes: {
|
|
@@ -17494,7 +17480,7 @@ var models_default = {
|
|
|
17494
17480
|
stringValue: `{
|
|
17495
17481
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
17496
17482
|
"max_token_limit": "256000",
|
|
17497
|
-
"token_threshold": "
|
|
17483
|
+
"token_threshold": "50000",
|
|
17498
17484
|
"max_overhead_ratio": "0.15",
|
|
17499
17485
|
"moving_window_size": "1",
|
|
17500
17486
|
"enabled": true,
|
|
@@ -17536,8 +17522,8 @@ var models_default = {
|
|
|
17536
17522
|
},
|
|
17537
17523
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17538
17524
|
quotaInfo: {
|
|
17539
|
-
remainingFraction: 0.
|
|
17540
|
-
resetTime: "2026-09-
|
|
17525
|
+
remainingFraction: 0.7753168,
|
|
17526
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
17541
17527
|
},
|
|
17542
17528
|
recommended: true,
|
|
17543
17529
|
supportedMimeTypes: {
|
|
@@ -17612,7 +17598,7 @@ var models_default = {
|
|
|
17612
17598
|
stringValue: `{
|
|
17613
17599
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
17614
17600
|
"max_token_limit": "256000",
|
|
17615
|
-
"token_threshold": "
|
|
17601
|
+
"token_threshold": "50000",
|
|
17616
17602
|
"max_overhead_ratio": "0.15",
|
|
17617
17603
|
"moving_window_size": "1",
|
|
17618
17604
|
"enabled": true,
|
|
@@ -17654,8 +17640,8 @@ var models_default = {
|
|
|
17654
17640
|
},
|
|
17655
17641
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17656
17642
|
quotaInfo: {
|
|
17657
|
-
remainingFraction: 0.
|
|
17658
|
-
resetTime: "2026-09-
|
|
17643
|
+
remainingFraction: 0.7753168,
|
|
17644
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
17659
17645
|
},
|
|
17660
17646
|
recommended: true,
|
|
17661
17647
|
supportedMimeTypes: {
|
|
@@ -17729,7 +17715,7 @@ var models_default = {
|
|
|
17729
17715
|
stringValue: `{
|
|
17730
17716
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
17731
17717
|
"max_token_limit": "256000",
|
|
17732
|
-
"token_threshold": "
|
|
17718
|
+
"token_threshold": "50000",
|
|
17733
17719
|
"max_overhead_ratio": "0.15",
|
|
17734
17720
|
"moving_window_size": "1",
|
|
17735
17721
|
"enabled": true,
|
|
@@ -17765,8 +17751,8 @@ var models_default = {
|
|
|
17765
17751
|
},
|
|
17766
17752
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17767
17753
|
quotaInfo: {
|
|
17768
|
-
remainingFraction: 0.
|
|
17769
|
-
resetTime: "2026-09-
|
|
17754
|
+
remainingFraction: 0.7753168,
|
|
17755
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
17770
17756
|
},
|
|
17771
17757
|
recommended: true,
|
|
17772
17758
|
supportedMimeTypes: {
|
|
@@ -17842,7 +17828,7 @@ var models_default = {
|
|
|
17842
17828
|
stringValue: `{
|
|
17843
17829
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
17844
17830
|
"max_token_limit": "256000",
|
|
17845
|
-
"token_threshold": "
|
|
17831
|
+
"token_threshold": "50000",
|
|
17846
17832
|
"max_overhead_ratio": "0.15",
|
|
17847
17833
|
"moving_window_size": "1",
|
|
17848
17834
|
"enabled": true,
|
|
@@ -17878,8 +17864,8 @@ var models_default = {
|
|
|
17878
17864
|
},
|
|
17879
17865
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17880
17866
|
quotaInfo: {
|
|
17881
|
-
remainingFraction: 0.
|
|
17882
|
-
resetTime: "2026-09-
|
|
17867
|
+
remainingFraction: 0.7753168,
|
|
17868
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
17883
17869
|
},
|
|
17884
17870
|
recommended: true,
|
|
17885
17871
|
supportedMimeTypes: {
|
|
@@ -17955,7 +17941,7 @@ var models_default = {
|
|
|
17955
17941
|
stringValue: `{
|
|
17956
17942
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
17957
17943
|
"max_token_limit": "256000",
|
|
17958
|
-
"token_threshold": "
|
|
17944
|
+
"token_threshold": "50000",
|
|
17959
17945
|
"max_overhead_ratio": "0.15",
|
|
17960
17946
|
"moving_window_size": "1",
|
|
17961
17947
|
"enabled": true,
|
|
@@ -17991,8 +17977,8 @@ var models_default = {
|
|
|
17991
17977
|
},
|
|
17992
17978
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17993
17979
|
quotaInfo: {
|
|
17994
|
-
remainingFraction: 0.
|
|
17995
|
-
resetTime: "2026-09-
|
|
17980
|
+
remainingFraction: 0.7753168,
|
|
17981
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
17996
17982
|
},
|
|
17997
17983
|
recommended: true,
|
|
17998
17984
|
supportedMimeTypes: {
|
|
@@ -18067,7 +18053,7 @@ var models_default = {
|
|
|
18067
18053
|
stringValue: `{
|
|
18068
18054
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
18069
18055
|
"max_token_limit": "256000",
|
|
18070
|
-
"token_threshold": "
|
|
18056
|
+
"token_threshold": "50000",
|
|
18071
18057
|
"max_overhead_ratio": "0.15",
|
|
18072
18058
|
"moving_window_size": "1",
|
|
18073
18059
|
"enabled": true,
|
|
@@ -18103,8 +18089,8 @@ var models_default = {
|
|
|
18103
18089
|
},
|
|
18104
18090
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18105
18091
|
quotaInfo: {
|
|
18106
|
-
remainingFraction: 0.
|
|
18107
|
-
resetTime: "2026-09-
|
|
18092
|
+
remainingFraction: 0.7753168,
|
|
18093
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
18108
18094
|
},
|
|
18109
18095
|
recommended: true,
|
|
18110
18096
|
supportedMimeTypes: {
|
|
@@ -18178,7 +18164,7 @@ var models_default = {
|
|
|
18178
18164
|
stringValue: `{
|
|
18179
18165
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
18180
18166
|
"max_token_limit": "256000",
|
|
18181
|
-
"token_threshold": "
|
|
18167
|
+
"token_threshold": "50000",
|
|
18182
18168
|
"max_overhead_ratio": "0.15",
|
|
18183
18169
|
"moving_window_size": "1",
|
|
18184
18170
|
"enabled": true,
|
|
@@ -18214,8 +18200,8 @@ var models_default = {
|
|
|
18214
18200
|
},
|
|
18215
18201
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18216
18202
|
quotaInfo: {
|
|
18217
|
-
remainingFraction: 0.
|
|
18218
|
-
resetTime: "2026-09-
|
|
18203
|
+
remainingFraction: 0.7753168,
|
|
18204
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
18219
18205
|
},
|
|
18220
18206
|
recommended: true,
|
|
18221
18207
|
supportedMimeTypes: {
|
|
@@ -18291,7 +18277,7 @@ var models_default = {
|
|
|
18291
18277
|
stringValue: `{
|
|
18292
18278
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
18293
18279
|
"max_token_limit": "256000",
|
|
18294
|
-
"token_threshold": "
|
|
18280
|
+
"token_threshold": "50000",
|
|
18295
18281
|
"max_overhead_ratio": "0.15",
|
|
18296
18282
|
"moving_window_size": "1",
|
|
18297
18283
|
"enabled": true,
|
|
@@ -18327,8 +18313,8 @@ var models_default = {
|
|
|
18327
18313
|
},
|
|
18328
18314
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18329
18315
|
quotaInfo: {
|
|
18330
|
-
remainingFraction: 0.
|
|
18331
|
-
resetTime: "2026-09-
|
|
18316
|
+
remainingFraction: 0.7753168,
|
|
18317
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
18332
18318
|
},
|
|
18333
18319
|
recommended: true,
|
|
18334
18320
|
supportedMimeTypes: {
|
|
@@ -18404,7 +18390,7 @@ var models_default = {
|
|
|
18404
18390
|
stringValue: `{
|
|
18405
18391
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
18406
18392
|
"max_token_limit": "256000",
|
|
18407
|
-
"token_threshold": "
|
|
18393
|
+
"token_threshold": "50000",
|
|
18408
18394
|
"max_overhead_ratio": "0.15",
|
|
18409
18395
|
"moving_window_size": "1",
|
|
18410
18396
|
"enabled": true,
|
|
@@ -18440,8 +18426,8 @@ var models_default = {
|
|
|
18440
18426
|
},
|
|
18441
18427
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18442
18428
|
quotaInfo: {
|
|
18443
|
-
remainingFraction: 0.
|
|
18444
|
-
resetTime: "2026-09-
|
|
18429
|
+
remainingFraction: 0.7753168,
|
|
18430
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
18445
18431
|
},
|
|
18446
18432
|
recommended: true,
|
|
18447
18433
|
supportedMimeTypes: {
|
|
@@ -18516,7 +18502,7 @@ var models_default = {
|
|
|
18516
18502
|
stringValue: `{
|
|
18517
18503
|
"strategy": "CHECKPOINT_STRATEGY_SAME_MODEL",
|
|
18518
18504
|
"max_token_limit": "256000",
|
|
18519
|
-
"token_threshold": "
|
|
18505
|
+
"token_threshold": "50000",
|
|
18520
18506
|
"max_overhead_ratio": "0.15",
|
|
18521
18507
|
"moving_window_size": "1",
|
|
18522
18508
|
"enabled": true,
|
|
@@ -18552,8 +18538,8 @@ var models_default = {
|
|
|
18552
18538
|
},
|
|
18553
18539
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18554
18540
|
quotaInfo: {
|
|
18555
|
-
remainingFraction: 0.
|
|
18556
|
-
resetTime: "2026-09-
|
|
18541
|
+
remainingFraction: 0.7753168,
|
|
18542
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
18557
18543
|
},
|
|
18558
18544
|
recommended: true,
|
|
18559
18545
|
supportedMimeTypes: {
|
|
@@ -18642,8 +18628,8 @@ var models_default = {
|
|
|
18642
18628
|
},
|
|
18643
18629
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18644
18630
|
quotaInfo: {
|
|
18645
|
-
remainingFraction: 0.
|
|
18646
|
-
resetTime: "2026-09-
|
|
18631
|
+
remainingFraction: 0.7753168,
|
|
18632
|
+
resetTime: "2026-09-18T11:38:10Z"
|
|
18647
18633
|
},
|
|
18648
18634
|
recommended: true,
|
|
18649
18635
|
supportedMimeTypes: {
|
|
@@ -18720,7 +18706,7 @@ var models_default = {
|
|
|
18720
18706
|
modelProvider: "MODEL_PROVIDER_OPENAI",
|
|
18721
18707
|
quotaInfo: {
|
|
18722
18708
|
remainingFraction: 1,
|
|
18723
|
-
resetTime: "2026-09-
|
|
18709
|
+
resetTime: "2026-09-18T16:07:34Z"
|
|
18724
18710
|
},
|
|
18725
18711
|
recommended: true,
|
|
18726
18712
|
supportsThinking: true,
|
|
@@ -20830,799 +20816,14 @@ function toUrlString(value) {
|
|
|
20830
20816
|
return value.toString();
|
|
20831
20817
|
}
|
|
20832
20818
|
|
|
20833
|
-
// src/plugin/types.ts
|
|
20834
|
-
function defineOpenCodeV2Plugin(def) {
|
|
20835
|
-
return def;
|
|
20836
|
-
}
|
|
20837
|
-
|
|
20838
|
-
// src/plugin/v2.ts
|
|
20839
|
-
import { homedir as homedir4 } from "os";
|
|
20840
|
-
import { join as join6 } from "path";
|
|
20841
|
-
import { existsSync as existsSync6, mkdirSync as mkdirSync5, readFileSync as readFileSync5, writeFileSync as writeFileSync5 } from "fs";
|
|
20842
|
-
import "http";
|
|
20843
|
-
var AGY_V2_QUOTA_COMMAND = "agy-quota";
|
|
20844
|
-
var AGY_V2_QUOTA_SUMMARY_COMMAND = "agy-quota-summary";
|
|
20845
|
-
var AGY_V2_QUOTA_COMMAND_TEMPLATE = `Retrieve Agy Code Assist quota usage for the current authenticated account.
|
|
20846
|
-
|
|
20847
|
-
Immediately call \`${AGY_QUOTA_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
20848
|
-
Do not call other tools.
|
|
20849
|
-
`;
|
|
20850
|
-
var AGY_V2_QUOTA_SUMMARY_COMMAND_TEMPLATE = `Retrieve Agy Code Assist quota summary (weekly and 5-hour limits by model group) for the current authenticated account.
|
|
20851
|
-
|
|
20852
|
-
Immediately call \`${AGY_QUOTA_SUMMARY_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
20853
|
-
Do not call other tools.
|
|
20854
|
-
`;
|
|
20855
|
-
function getSafeHeader2(headers, key) {
|
|
20856
|
-
if (!headers) {
|
|
20857
|
-
return void 0;
|
|
20858
|
-
}
|
|
20859
|
-
const targetKey = key.toLowerCase();
|
|
20860
|
-
if (typeof headers.get === "function") {
|
|
20861
|
-
try {
|
|
20862
|
-
return headers.get(targetKey) || void 0;
|
|
20863
|
-
} catch {
|
|
20864
|
-
}
|
|
20865
|
-
}
|
|
20866
|
-
if (Array.isArray(headers)) {
|
|
20867
|
-
const found = headers.find((item) => {
|
|
20868
|
-
if (Array.isArray(item) && typeof item[0] === "string") {
|
|
20869
|
-
return item[0].toLowerCase() === targetKey;
|
|
20870
|
-
}
|
|
20871
|
-
return false;
|
|
20872
|
-
});
|
|
20873
|
-
return found ? String(found[1]) : void 0;
|
|
20874
|
-
}
|
|
20875
|
-
if (typeof headers === "object") {
|
|
20876
|
-
const foundKey = Object.keys(headers).find((k) => k.toLowerCase() === targetKey);
|
|
20877
|
-
return foundKey ? headers[foundKey] !== void 0 ? String(headers[foundKey]) : void 0 : void 0;
|
|
20878
|
-
}
|
|
20879
|
-
return void 0;
|
|
20880
|
-
}
|
|
20881
|
-
function setSafeHeaders2(initHeaders, newHeaders) {
|
|
20882
|
-
if (typeof globalThis.Headers !== "undefined") {
|
|
20883
|
-
const headers = new globalThis.Headers(initHeaders ?? {});
|
|
20884
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20885
|
-
headers.set(k, v);
|
|
20886
|
-
}
|
|
20887
|
-
return headers;
|
|
20888
|
-
}
|
|
20889
|
-
if (Array.isArray(initHeaders)) {
|
|
20890
|
-
const nextHeaders2 = [...initHeaders];
|
|
20891
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20892
|
-
const idx = nextHeaders2.findIndex((item) => Array.isArray(item) && typeof item[0] === "string" && item[0].toLowerCase() === k.toLowerCase());
|
|
20893
|
-
if (idx !== -1) {
|
|
20894
|
-
nextHeaders2[idx] = [k, v];
|
|
20895
|
-
} else {
|
|
20896
|
-
nextHeaders2.push([k, v]);
|
|
20897
|
-
}
|
|
20898
|
-
}
|
|
20899
|
-
return nextHeaders2;
|
|
20900
|
-
}
|
|
20901
|
-
const nextHeaders = {};
|
|
20902
|
-
if (initHeaders && typeof initHeaders === "object") {
|
|
20903
|
-
for (const [k, v] of Object.entries(initHeaders)) {
|
|
20904
|
-
nextHeaders[k] = String(v);
|
|
20905
|
-
}
|
|
20906
|
-
}
|
|
20907
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20908
|
-
const existingKey = Object.keys(nextHeaders).find((key) => key.toLowerCase() === k.toLowerCase());
|
|
20909
|
-
if (existingKey) {
|
|
20910
|
-
nextHeaders[existingKey] = v;
|
|
20911
|
-
} else {
|
|
20912
|
-
nextHeaders[k] = v;
|
|
20913
|
-
}
|
|
20914
|
-
}
|
|
20915
|
-
return nextHeaders;
|
|
20916
|
-
}
|
|
20917
|
-
function toUrlString2(value) {
|
|
20918
|
-
if (typeof value === "string") {
|
|
20919
|
-
return value;
|
|
20920
|
-
}
|
|
20921
|
-
const candidate = value.url;
|
|
20922
|
-
if (candidate) {
|
|
20923
|
-
return candidate;
|
|
20924
|
-
}
|
|
20925
|
-
return value.toString();
|
|
20926
|
-
}
|
|
20927
|
-
function resolveModelTier2(baseModelId, init) {
|
|
20928
|
-
const parts = baseModelId.split("@");
|
|
20929
|
-
const base = parts[0] || "";
|
|
20930
|
-
const suffixTier = parts[1]?.toLowerCase();
|
|
20931
|
-
const mapping = TIER_MAPPING[base];
|
|
20932
|
-
if (!mapping) {
|
|
20933
|
-
return baseModelId;
|
|
20934
|
-
}
|
|
20935
|
-
const headerTier = getSafeHeader2(init?.headers, "x-agy-tier")?.toLowerCase() || null;
|
|
20936
|
-
const requestedTier = headerTier || suffixTier;
|
|
20937
|
-
if (requestedTier && Object.prototype.hasOwnProperty.call(mapping, requestedTier)) {
|
|
20938
|
-
return mapping[requestedTier] || baseModelId;
|
|
20939
|
-
}
|
|
20940
|
-
return mapping["medium"] ?? mapping["high"];
|
|
20941
|
-
}
|
|
20942
|
-
var storedAuthOverrideForTesting = void 0;
|
|
20943
|
-
function loadStoredAuthFromJson() {
|
|
20944
|
-
if (storedAuthOverrideForTesting !== void 0) {
|
|
20945
|
-
return storedAuthOverrideForTesting;
|
|
20946
|
-
}
|
|
20947
|
-
const authPath = join6(homedir4(), ".local", "share", "opencode", "auth.json");
|
|
20948
|
-
try {
|
|
20949
|
-
if (existsSync6(authPath)) {
|
|
20950
|
-
const content = readFileSync5(authPath, "utf8");
|
|
20951
|
-
const data = JSON.parse(content);
|
|
20952
|
-
return data?.[AGY_PROVIDER_ID];
|
|
20953
|
-
}
|
|
20954
|
-
} catch {
|
|
20955
|
-
}
|
|
20956
|
-
return void 0;
|
|
20957
|
-
}
|
|
20958
|
-
function saveStoredAuthToJson(authRecord) {
|
|
20959
|
-
if (process.env.NODE_ENV === "test" || process.env.VITEST || storedAuthOverrideForTesting !== void 0) {
|
|
20960
|
-
return;
|
|
20961
|
-
}
|
|
20962
|
-
try {
|
|
20963
|
-
const dirPath = join6(homedir4(), ".local", "share", "opencode");
|
|
20964
|
-
if (!existsSync6(dirPath)) {
|
|
20965
|
-
mkdirSync5(dirPath, { recursive: true });
|
|
20966
|
-
}
|
|
20967
|
-
const authPath = join6(dirPath, "auth.json");
|
|
20968
|
-
let data = {};
|
|
20969
|
-
if (existsSync6(authPath)) {
|
|
20970
|
-
try {
|
|
20971
|
-
data = JSON.parse(readFileSync5(authPath, "utf8")) || {};
|
|
20972
|
-
} catch {
|
|
20973
|
-
data = {};
|
|
20974
|
-
}
|
|
20975
|
-
}
|
|
20976
|
-
data[AGY_PROVIDER_ID] = {
|
|
20977
|
-
type: "oauth",
|
|
20978
|
-
refresh: authRecord.refresh,
|
|
20979
|
-
access: authRecord.access,
|
|
20980
|
-
expires: authRecord.expires
|
|
20981
|
-
};
|
|
20982
|
-
writeFileSync5(authPath, JSON.stringify(data, null, 2), "utf8");
|
|
20983
|
-
} catch {
|
|
20984
|
-
}
|
|
20985
|
-
}
|
|
20986
|
-
function createV2FetchInterceptor(getAuthSnapshot) {
|
|
20987
|
-
return async function agyV2Fetch(input, init) {
|
|
20988
|
-
const isGL = isGenerativeLanguageRequest(input);
|
|
20989
|
-
const isInternal = toUrlString2(input).includes("cloudcode-pa.googleapis.com");
|
|
20990
|
-
if (!isGL && !isInternal) {
|
|
20991
|
-
return agyFetch(input, init);
|
|
20992
|
-
}
|
|
20993
|
-
let rawAuth = getAuthSnapshot ? await getAuthSnapshot() : void 0;
|
|
20994
|
-
if (!rawAuth) {
|
|
20995
|
-
rawAuth = loadStoredAuthFromJson();
|
|
20996
|
-
}
|
|
20997
|
-
if (!rawAuth || !isOAuthAuth(rawAuth)) {
|
|
20998
|
-
return agyFetch(input, init);
|
|
20999
|
-
}
|
|
21000
|
-
let authRecord = resolveCachedAuth(rawAuth);
|
|
21001
|
-
if (accessTokenExpired(authRecord)) {
|
|
21002
|
-
const refreshed = await refreshAccessToken(authRecord, { auth: { set: async () => {
|
|
21003
|
-
} } });
|
|
21004
|
-
if (refreshed) {
|
|
21005
|
-
authRecord = refreshed;
|
|
21006
|
-
}
|
|
21007
|
-
}
|
|
21008
|
-
if (!authRecord.access) {
|
|
21009
|
-
return agyFetch(input, init);
|
|
21010
|
-
}
|
|
21011
|
-
if (isInternal) {
|
|
21012
|
-
const hasAuth = getSafeHeader2(init?.headers, "Authorization") !== void 0;
|
|
21013
|
-
if (hasAuth) {
|
|
21014
|
-
return agyFetch(input, init);
|
|
21015
|
-
}
|
|
21016
|
-
const userAgent = buildAgyCliUserAgent();
|
|
21017
|
-
const headers = setSafeHeaders2(init?.headers, {
|
|
21018
|
-
Authorization: `Bearer ${authRecord.access}`,
|
|
21019
|
-
"User-Agent": userAgent
|
|
21020
|
-
});
|
|
21021
|
-
return agyFetch(input, {
|
|
21022
|
-
...init,
|
|
21023
|
-
headers
|
|
21024
|
-
});
|
|
21025
|
-
}
|
|
21026
|
-
const requestTarget = parseGenerativeLanguageRequest(input);
|
|
21027
|
-
const requestUserAgentModel = requestTarget?.effectiveModel;
|
|
21028
|
-
let projectContext;
|
|
21029
|
-
try {
|
|
21030
|
-
projectContext = await ensureProjectContext(
|
|
21031
|
-
authRecord,
|
|
21032
|
-
{ auth: { set: async () => {
|
|
21033
|
-
} } },
|
|
21034
|
-
void 0,
|
|
21035
|
-
requestUserAgentModel
|
|
21036
|
-
);
|
|
21037
|
-
} catch {
|
|
21038
|
-
projectContext = {
|
|
21039
|
-
effectiveProjectId: parseRefreshParts(authRecord.refresh).projectId || "antigravity",
|
|
21040
|
-
auth: authRecord
|
|
21041
|
-
};
|
|
21042
|
-
}
|
|
21043
|
-
const originalRequestedModel = parseGenerativeLanguageRequest(input)?.effectiveModel;
|
|
21044
|
-
let modifiedInput = input;
|
|
21045
|
-
if (isGL && originalRequestedModel) {
|
|
21046
|
-
const originalBase = originalRequestedModel.replace("google-agy/", "");
|
|
21047
|
-
const resolvedBase = resolveModelTier2(originalBase, init);
|
|
21048
|
-
if (originalBase !== resolvedBase) {
|
|
21049
|
-
if (typeof modifiedInput === "string") {
|
|
21050
|
-
modifiedInput = modifiedInput.replace(`models/${originalBase}`, `models/${resolvedBase}`);
|
|
21051
|
-
} else if (typeof Request !== "undefined" && modifiedInput instanceof Request) {
|
|
21052
|
-
const newUrl = modifiedInput.url.replace(`models/${originalBase}`, `models/${resolvedBase}`);
|
|
21053
|
-
modifiedInput = new Request(newUrl, modifiedInput);
|
|
21054
|
-
}
|
|
21055
|
-
}
|
|
21056
|
-
}
|
|
21057
|
-
const transformed = prepareAgyRequest(
|
|
21058
|
-
modifiedInput,
|
|
21059
|
-
init,
|
|
21060
|
-
authRecord.access,
|
|
21061
|
-
projectContext.effectiveProjectId,
|
|
21062
|
-
void 0
|
|
21063
|
-
);
|
|
21064
|
-
const chatLogger = createChatLogger();
|
|
21065
|
-
if (chatLogger) {
|
|
21066
|
-
chatLogger.logRequest(
|
|
21067
|
-
toUrlString2(transformed.request),
|
|
21068
|
-
transformed.init.method || "GET",
|
|
21069
|
-
transformed.init.headers,
|
|
21070
|
-
transformed.init.body
|
|
21071
|
-
);
|
|
21072
|
-
}
|
|
21073
|
-
const response = await fetchWithRetry(transformed.request, transformed.init);
|
|
21074
|
-
return transformAgyResponse(
|
|
21075
|
-
response,
|
|
21076
|
-
transformed.streaming,
|
|
21077
|
-
null,
|
|
21078
|
-
transformed.requestedModel,
|
|
21079
|
-
transformed.sessionId,
|
|
21080
|
-
chatLogger
|
|
21081
|
-
);
|
|
21082
|
-
};
|
|
21083
|
-
}
|
|
21084
|
-
async function setupOpenCodeV2(ctx) {
|
|
21085
|
-
ctx.catalog.transform(async (editor) => {
|
|
21086
|
-
if (!editor) return;
|
|
21087
|
-
const resolveVariants = (modelId) => {
|
|
21088
|
-
const mapping = TIER_MAPPING[modelId];
|
|
21089
|
-
if (!mapping) return void 0;
|
|
21090
|
-
const variants = [];
|
|
21091
|
-
if (mapping.minimal !== void 0) variants.push({ id: "minimal" });
|
|
21092
|
-
if (mapping.low !== void 0) variants.push({ id: "low" });
|
|
21093
|
-
if (mapping.medium !== void 0) variants.push({ id: "medium" });
|
|
21094
|
-
if (mapping.high !== void 0) variants.push({ id: "high" });
|
|
21095
|
-
return variants.length > 0 ? variants : void 0;
|
|
21096
|
-
};
|
|
21097
|
-
if (typeof editor?.provider?.update === "function") {
|
|
21098
|
-
editor.provider.update(AGY_PROVIDER_ID, (p) => {
|
|
21099
|
-
p.name = "Antigravity CLI";
|
|
21100
|
-
p.activation = "enabled";
|
|
21101
|
-
p.package = "aisdk:@ai-sdk/google";
|
|
21102
|
-
p.description = "Google Gemini Antigravity Code Assist OAuth provider";
|
|
21103
|
-
p.settings = { ...p.settings || {}, apiKey: "dummy" };
|
|
21104
|
-
p.integrationID = AGY_PROVIDER_ID;
|
|
21105
|
-
});
|
|
21106
|
-
if (typeof editor?.model?.update === "function") {
|
|
21107
|
-
for (const [modelId, simple] of Object.entries(STATIC_MODELS_SIMPLE)) {
|
|
21108
|
-
editor.model.update(AGY_PROVIDER_ID, modelId, (m) => {
|
|
21109
|
-
m.name = simple.name;
|
|
21110
|
-
m.capabilities = {
|
|
21111
|
-
tools: true,
|
|
21112
|
-
input: ["text", "image"],
|
|
21113
|
-
output: ["text"]
|
|
21114
|
-
};
|
|
21115
|
-
m.limit = {
|
|
21116
|
-
context: simple.maxTokens,
|
|
21117
|
-
output: simple.maxOutputTokens
|
|
21118
|
-
};
|
|
21119
|
-
m.family = "gemini";
|
|
21120
|
-
if (simple.cost) {
|
|
21121
|
-
m.cost = simple.cost;
|
|
21122
|
-
}
|
|
21123
|
-
const variants = resolveVariants(modelId);
|
|
21124
|
-
if (variants) {
|
|
21125
|
-
m.variants = variants;
|
|
21126
|
-
}
|
|
21127
|
-
});
|
|
21128
|
-
}
|
|
21129
|
-
}
|
|
21130
|
-
return;
|
|
21131
|
-
}
|
|
21132
|
-
const catalog = editor;
|
|
21133
|
-
catalog.providers = catalog.providers || {};
|
|
21134
|
-
catalog.providers[AGY_PROVIDER_ID] = {
|
|
21135
|
-
id: AGY_PROVIDER_ID,
|
|
21136
|
-
name: "Antigravity CLI",
|
|
21137
|
-
npm: "aisdk:@ai-sdk/google",
|
|
21138
|
-
settings: { apiKey: "dummy" },
|
|
21139
|
-
integrationID: AGY_PROVIDER_ID,
|
|
21140
|
-
models: { ...catalog.providers[AGY_PROVIDER_ID]?.models || {} },
|
|
21141
|
-
...catalog.providers[AGY_PROVIDER_ID]
|
|
21142
|
-
};
|
|
21143
|
-
if (catalog.providers[AGY_PROVIDER_ID].settings) {
|
|
21144
|
-
catalog.providers[AGY_PROVIDER_ID].settings = {
|
|
21145
|
-
...catalog.providers[AGY_PROVIDER_ID].settings,
|
|
21146
|
-
apiKey: "dummy"
|
|
21147
|
-
};
|
|
21148
|
-
} else {
|
|
21149
|
-
catalog.providers[AGY_PROVIDER_ID].settings = { apiKey: "dummy" };
|
|
21150
|
-
}
|
|
21151
|
-
catalog.providers[AGY_PROVIDER_ID].integrationID = AGY_PROVIDER_ID;
|
|
21152
|
-
const targetModels = catalog.providers[AGY_PROVIDER_ID].models;
|
|
21153
|
-
for (const [modelId, simple] of Object.entries(STATIC_MODELS_SIMPLE)) {
|
|
21154
|
-
const isClaude = modelId.startsWith("claude-");
|
|
21155
|
-
const isGpt = modelId.startsWith("gpt-");
|
|
21156
|
-
const variants = resolveVariants(modelId);
|
|
21157
|
-
targetModels[modelId] = {
|
|
21158
|
-
id: modelId,
|
|
21159
|
-
providerID: AGY_PROVIDER_ID,
|
|
21160
|
-
name: simple.name,
|
|
21161
|
-
description: simple.description,
|
|
21162
|
-
family: modelId.includes("gemini") ? "gemini" : isClaude ? "claude" : isGpt ? "gpt" : "unknown",
|
|
21163
|
-
reasoning: simple.reasoning,
|
|
21164
|
-
attachment: simple.attachment,
|
|
21165
|
-
tool_call: simple.toolCall,
|
|
21166
|
-
limit: {
|
|
21167
|
-
context: simple.maxTokens,
|
|
21168
|
-
output: simple.maxOutputTokens
|
|
21169
|
-
},
|
|
21170
|
-
cost: simple.cost || { input: 0, output: 0 },
|
|
21171
|
-
...variants ? { variants } : {},
|
|
21172
|
-
...targetModels[modelId] || {}
|
|
21173
|
-
};
|
|
21174
|
-
}
|
|
21175
|
-
});
|
|
21176
|
-
ctx.tool.transform(async (editor) => {
|
|
21177
|
-
if (!editor) return;
|
|
21178
|
-
const quotaTool = createAgyQuotaTool({
|
|
21179
|
-
client: void 0,
|
|
21180
|
-
getAuthResolver: () => void 0,
|
|
21181
|
-
getConfiguredProjectId: () => void 0,
|
|
21182
|
-
getUserAgentModel: () => void 0
|
|
21183
|
-
});
|
|
21184
|
-
const quotaSummaryTool = createAgyQuotaSummaryTool({
|
|
21185
|
-
client: void 0,
|
|
21186
|
-
getAuthResolver: () => void 0,
|
|
21187
|
-
getConfiguredProjectId: () => void 0,
|
|
21188
|
-
getUserAgentModel: () => void 0
|
|
21189
|
-
});
|
|
21190
|
-
if (typeof editor.add === "function") {
|
|
21191
|
-
editor.add({
|
|
21192
|
-
name: AGY_QUOTA_TOOL_NAME,
|
|
21193
|
-
description: quotaTool.description,
|
|
21194
|
-
input: {},
|
|
21195
|
-
execute: async (args, context) => quotaTool.execute(args, context)
|
|
21196
|
-
});
|
|
21197
|
-
editor.add({
|
|
21198
|
-
name: AGY_QUOTA_SUMMARY_TOOL_NAME,
|
|
21199
|
-
description: quotaSummaryTool.description,
|
|
21200
|
-
input: {},
|
|
21201
|
-
execute: async (args, context) => quotaSummaryTool.execute(args, context)
|
|
21202
|
-
});
|
|
21203
|
-
} else if (typeof editor.set === "function") {
|
|
21204
|
-
editor.set(AGY_QUOTA_TOOL_NAME, quotaTool);
|
|
21205
|
-
editor.set(AGY_QUOTA_SUMMARY_TOOL_NAME, quotaSummaryTool);
|
|
21206
|
-
} else if (editor.tools && typeof editor.tools === "object") {
|
|
21207
|
-
editor.tools[AGY_QUOTA_TOOL_NAME] = quotaTool;
|
|
21208
|
-
editor.tools[AGY_QUOTA_SUMMARY_TOOL_NAME] = quotaSummaryTool;
|
|
21209
|
-
} else if (typeof editor === "object") {
|
|
21210
|
-
editor[AGY_QUOTA_TOOL_NAME] = quotaTool;
|
|
21211
|
-
editor[AGY_QUOTA_SUMMARY_TOOL_NAME] = quotaSummaryTool;
|
|
21212
|
-
}
|
|
21213
|
-
});
|
|
21214
|
-
ctx.command.transform(async (editor) => {
|
|
21215
|
-
if (!editor) return;
|
|
21216
|
-
const commands = {
|
|
21217
|
-
[AGY_V2_QUOTA_COMMAND]: {
|
|
21218
|
-
description: "Show Agy Code Assist quota usage",
|
|
21219
|
-
template: AGY_V2_QUOTA_COMMAND_TEMPLATE
|
|
21220
|
-
},
|
|
21221
|
-
[AGY_V2_QUOTA_SUMMARY_COMMAND]: {
|
|
21222
|
-
description: "Show Agy Code Assist quota summary with weekly and 5-hour limits",
|
|
21223
|
-
template: AGY_V2_QUOTA_SUMMARY_COMMAND_TEMPLATE
|
|
21224
|
-
}
|
|
21225
|
-
};
|
|
21226
|
-
if (typeof editor.add === "function") {
|
|
21227
|
-
editor.add({
|
|
21228
|
-
name: AGY_V2_QUOTA_COMMAND,
|
|
21229
|
-
description: "Display current Antigravity quota usage",
|
|
21230
|
-
template: AGY_V2_QUOTA_COMMAND_TEMPLATE
|
|
21231
|
-
});
|
|
21232
|
-
editor.add({
|
|
21233
|
-
name: AGY_V2_QUOTA_SUMMARY_COMMAND,
|
|
21234
|
-
description: "Display Antigravity quota summary grouped by model family",
|
|
21235
|
-
template: AGY_V2_QUOTA_SUMMARY_COMMAND_TEMPLATE
|
|
21236
|
-
});
|
|
21237
|
-
} else if (typeof editor.set === "function") {
|
|
21238
|
-
editor.set(AGY_V2_QUOTA_COMMAND, commands[AGY_V2_QUOTA_COMMAND]);
|
|
21239
|
-
editor.set(AGY_V2_QUOTA_SUMMARY_COMMAND, commands[AGY_V2_QUOTA_SUMMARY_COMMAND]);
|
|
21240
|
-
} else if (editor.commands && typeof editor.commands === "object") {
|
|
21241
|
-
editor.commands[AGY_V2_QUOTA_COMMAND] = commands[AGY_V2_QUOTA_COMMAND];
|
|
21242
|
-
editor.commands[AGY_V2_QUOTA_SUMMARY_COMMAND] = commands[AGY_V2_QUOTA_SUMMARY_COMMAND];
|
|
21243
|
-
} else if (typeof editor === "object") {
|
|
21244
|
-
editor[AGY_V2_QUOTA_COMMAND] = commands[AGY_V2_QUOTA_COMMAND];
|
|
21245
|
-
editor[AGY_V2_QUOTA_SUMMARY_COMMAND] = commands[AGY_V2_QUOTA_SUMMARY_COMMAND];
|
|
21246
|
-
}
|
|
21247
|
-
});
|
|
21248
|
-
ctx.integration?.transform?.((editor) => {
|
|
21249
|
-
if (!editor) return;
|
|
21250
|
-
editor.update?.(AGY_PROVIDER_ID, (integration) => {
|
|
21251
|
-
integration.name = "Antigravity CLI (plugin)";
|
|
21252
|
-
});
|
|
21253
|
-
editor.method?.update?.({
|
|
21254
|
-
integrationID: AGY_PROVIDER_ID,
|
|
21255
|
-
method: {
|
|
21256
|
-
id: "oauth",
|
|
21257
|
-
type: "oauth",
|
|
21258
|
-
label: "Antigravity CLI (OAuth)"
|
|
21259
|
-
},
|
|
21260
|
-
authorize: async () => {
|
|
21261
|
-
const authorization = await authorizeAgy();
|
|
21262
|
-
return {
|
|
21263
|
-
mode: "code",
|
|
21264
|
-
url: authorization.url,
|
|
21265
|
-
instructions: "Please complete Google account authorization in your browser. After authorization, copy the full redirect URL or code and paste it below:",
|
|
21266
|
-
callback: async (code) => {
|
|
21267
|
-
const trimmed = code.trim();
|
|
21268
|
-
const parsed = parseOAuthCallbackInput(trimmed);
|
|
21269
|
-
const authCode = parsed.code || trimmed;
|
|
21270
|
-
if (!authCode) {
|
|
21271
|
-
return { type: "failed", error: "Missing authorization code in callback input" };
|
|
21272
|
-
}
|
|
21273
|
-
if (parsed.state && parsed.state !== authorization.state) {
|
|
21274
|
-
return { type: "failed", error: "State mismatch in callback input (possible CSRF attempt)" };
|
|
21275
|
-
}
|
|
21276
|
-
const exchangeResult = await exchangeAgyWithVerifier(authCode, authorization.verifier);
|
|
21277
|
-
if (exchangeResult.type !== "success") {
|
|
21278
|
-
return exchangeResult;
|
|
21279
|
-
}
|
|
21280
|
-
const initialRefresh = formatRefreshParts({
|
|
21281
|
-
refreshToken: exchangeResult.refresh
|
|
21282
|
-
});
|
|
21283
|
-
let authRecord = {
|
|
21284
|
-
type: "oauth",
|
|
21285
|
-
refresh: initialRefresh,
|
|
21286
|
-
access: exchangeResult.access,
|
|
21287
|
-
expires: exchangeResult.expires
|
|
21288
|
-
};
|
|
21289
|
-
try {
|
|
21290
|
-
const projectContext = await ensureProjectContext(
|
|
21291
|
-
authRecord,
|
|
21292
|
-
{ auth: { set: async () => {
|
|
21293
|
-
} } }
|
|
21294
|
-
);
|
|
21295
|
-
authRecord = {
|
|
21296
|
-
...authRecord,
|
|
21297
|
-
refresh: projectContext.auth.refresh
|
|
21298
|
-
};
|
|
21299
|
-
} catch {
|
|
21300
|
-
}
|
|
21301
|
-
saveStoredAuthToJson(authRecord);
|
|
21302
|
-
return {
|
|
21303
|
-
type: "oauth",
|
|
21304
|
-
methodID: "oauth",
|
|
21305
|
-
refresh: authRecord.refresh,
|
|
21306
|
-
access: authRecord.access,
|
|
21307
|
-
expires: authRecord.expires
|
|
21308
|
-
};
|
|
21309
|
-
}
|
|
21310
|
-
};
|
|
21311
|
-
}
|
|
21312
|
-
});
|
|
21313
|
-
});
|
|
21314
|
-
ctx.aisdk?.hook("sdk", async (event) => {
|
|
21315
|
-
if (!event) return;
|
|
21316
|
-
const isMatchingProvider = event.providerID === AGY_PROVIDER_ID || event.model?.providerID === AGY_PROVIDER_ID;
|
|
21317
|
-
if (!isMatchingProvider) return;
|
|
21318
|
-
event.options = event.options || {};
|
|
21319
|
-
event.options.apiKey = "dummy";
|
|
21320
|
-
event.options.fetch = createV2FetchInterceptor();
|
|
21321
|
-
});
|
|
21322
|
-
let lastInterceptedModel;
|
|
21323
|
-
ctx.session.hook(
|
|
21324
|
-
"http.request",
|
|
21325
|
-
async (event) => {
|
|
21326
|
-
if (!event) return;
|
|
21327
|
-
const rawUrl = typeof event.url === "string" ? event.url : event.request?.url || "";
|
|
21328
|
-
const isGL = isGenerativeLanguageRequest(rawUrl);
|
|
21329
|
-
const isInternal = rawUrl.includes("cloudcode-pa.googleapis.com");
|
|
21330
|
-
if (!isGL && !isInternal) {
|
|
21331
|
-
return;
|
|
21332
|
-
}
|
|
21333
|
-
event.headers = event.headers || {};
|
|
21334
|
-
let modelName;
|
|
21335
|
-
let rawAuth = event.auth;
|
|
21336
|
-
if (rawAuth && !rawAuth.type) {
|
|
21337
|
-
const tokenVal = rawAuth.access || rawAuth.token;
|
|
21338
|
-
if (tokenVal || rawAuth.refresh) {
|
|
21339
|
-
rawAuth = { type: "oauth", access: tokenVal, ...rawAuth };
|
|
21340
|
-
}
|
|
21341
|
-
}
|
|
21342
|
-
if (!rawAuth || !isOAuthAuth(rawAuth)) {
|
|
21343
|
-
rawAuth = loadStoredAuthFromJson();
|
|
21344
|
-
}
|
|
21345
|
-
let authRecord = rawAuth && isOAuthAuth(rawAuth) ? resolveCachedAuth(rawAuth) : void 0;
|
|
21346
|
-
if (authRecord && accessTokenExpired(authRecord)) {
|
|
21347
|
-
const refreshed = await refreshAccessToken(authRecord, { auth: { set: async () => {
|
|
21348
|
-
} } });
|
|
21349
|
-
if (refreshed) {
|
|
21350
|
-
authRecord = refreshed;
|
|
21351
|
-
saveStoredAuthToJson(refreshed);
|
|
21352
|
-
}
|
|
21353
|
-
}
|
|
21354
|
-
if (isGL) {
|
|
21355
|
-
const parsed = parseGenerativeLanguageRequest(rawUrl);
|
|
21356
|
-
modelName = parsed?.effectiveModel;
|
|
21357
|
-
if (modelName) {
|
|
21358
|
-
lastInterceptedModel = modelName;
|
|
21359
|
-
}
|
|
21360
|
-
if (typeof event.headers.delete === "function") {
|
|
21361
|
-
event.headers.delete("x-goog-api-key");
|
|
21362
|
-
event.headers.delete("api-key");
|
|
21363
|
-
} else {
|
|
21364
|
-
for (const key of Object.keys(event.headers)) {
|
|
21365
|
-
const lower = key.toLowerCase();
|
|
21366
|
-
if (lower === "x-goog-api-key" || lower === "api-key") {
|
|
21367
|
-
delete event.headers[key];
|
|
21368
|
-
}
|
|
21369
|
-
}
|
|
21370
|
-
}
|
|
21371
|
-
if (event.request?.headers) {
|
|
21372
|
-
if (typeof event.request.headers.delete === "function") {
|
|
21373
|
-
event.request.headers.delete("x-goog-api-key");
|
|
21374
|
-
event.request.headers.delete("api-key");
|
|
21375
|
-
} else {
|
|
21376
|
-
for (const key of Object.keys(event.request.headers)) {
|
|
21377
|
-
const lower = key.toLowerCase();
|
|
21378
|
-
if (lower === "x-goog-api-key" || lower === "api-key") {
|
|
21379
|
-
delete event.request.headers[key];
|
|
21380
|
-
}
|
|
21381
|
-
}
|
|
21382
|
-
}
|
|
21383
|
-
}
|
|
21384
|
-
let cleanUrl = rawUrl;
|
|
21385
|
-
try {
|
|
21386
|
-
const parsedUrl = new URL(rawUrl);
|
|
21387
|
-
let urlChanged = false;
|
|
21388
|
-
for (const param of ["key", "x-goog-api-key", "api-key"]) {
|
|
21389
|
-
if (parsedUrl.searchParams.has(param)) {
|
|
21390
|
-
parsedUrl.searchParams.delete(param);
|
|
21391
|
-
urlChanged = true;
|
|
21392
|
-
}
|
|
21393
|
-
}
|
|
21394
|
-
if (urlChanged) {
|
|
21395
|
-
cleanUrl = parsedUrl.toString();
|
|
21396
|
-
}
|
|
21397
|
-
} catch {
|
|
21398
|
-
}
|
|
21399
|
-
if (authRecord && authRecord.access) {
|
|
21400
|
-
let projectContext;
|
|
21401
|
-
try {
|
|
21402
|
-
projectContext = await ensureProjectContext(
|
|
21403
|
-
authRecord,
|
|
21404
|
-
{ auth: { set: async () => {
|
|
21405
|
-
} } },
|
|
21406
|
-
void 0,
|
|
21407
|
-
modelName
|
|
21408
|
-
);
|
|
21409
|
-
} catch {
|
|
21410
|
-
projectContext = {
|
|
21411
|
-
effectiveProjectId: parseRefreshParts(authRecord.refresh).projectId || "antigravity",
|
|
21412
|
-
auth: authRecord
|
|
21413
|
-
};
|
|
21414
|
-
}
|
|
21415
|
-
const originalRequestedModel = modelName;
|
|
21416
|
-
let modifiedUrl = cleanUrl;
|
|
21417
|
-
if (originalRequestedModel) {
|
|
21418
|
-
const originalBase = originalRequestedModel.replace("google-agy/", "");
|
|
21419
|
-
const initHeaders = event.headers instanceof Headers ? event.headers : event.request?.headers;
|
|
21420
|
-
const resolvedBase = resolveModelTier2(originalBase, { headers: initHeaders });
|
|
21421
|
-
if (originalBase !== resolvedBase) {
|
|
21422
|
-
modifiedUrl = modifiedUrl.replace(`models/${originalBase}`, `models/${resolvedBase}`);
|
|
21423
|
-
}
|
|
21424
|
-
}
|
|
21425
|
-
let bodyPayload = event.body;
|
|
21426
|
-
if (bodyPayload === void 0 && event.request) {
|
|
21427
|
-
if (typeof event.request.clone === "function") {
|
|
21428
|
-
try {
|
|
21429
|
-
bodyPayload = await event.request.clone().text();
|
|
21430
|
-
} catch {
|
|
21431
|
-
}
|
|
21432
|
-
} else if (event.request.body !== void 0) {
|
|
21433
|
-
bodyPayload = event.request.body;
|
|
21434
|
-
}
|
|
21435
|
-
}
|
|
21436
|
-
let preExistingUserAgent;
|
|
21437
|
-
if (typeof event.headers?.get === "function") {
|
|
21438
|
-
preExistingUserAgent = event.headers.get("user-agent") || event.headers.get("User-Agent") || void 0;
|
|
21439
|
-
} else if (event.headers && typeof event.headers === "object") {
|
|
21440
|
-
preExistingUserAgent = event.headers["user-agent"] || event.headers["User-Agent"] || void 0;
|
|
21441
|
-
}
|
|
21442
|
-
if (!preExistingUserAgent && typeof event.request?.headers?.get === "function") {
|
|
21443
|
-
preExistingUserAgent = event.request.headers.get("user-agent") || event.request.headers.get("User-Agent") || void 0;
|
|
21444
|
-
} else if (!preExistingUserAgent && event.request?.headers && typeof event.request.headers === "object") {
|
|
21445
|
-
preExistingUserAgent = event.request.headers["user-agent"] || event.request.headers["User-Agent"] || void 0;
|
|
21446
|
-
}
|
|
21447
|
-
const method = event.method || event.request?.method || "POST";
|
|
21448
|
-
const requestHeaders = event.headers || event.request?.headers;
|
|
21449
|
-
const transformed = prepareAgyRequest(
|
|
21450
|
-
modifiedUrl,
|
|
21451
|
-
{
|
|
21452
|
-
method,
|
|
21453
|
-
headers: requestHeaders,
|
|
21454
|
-
body: bodyPayload
|
|
21455
|
-
},
|
|
21456
|
-
authRecord.access,
|
|
21457
|
-
projectContext.effectiveProjectId
|
|
21458
|
-
);
|
|
21459
|
-
const targetUrl = toUrlString2(transformed.request);
|
|
21460
|
-
if (typeof event.url === "string") {
|
|
21461
|
-
event.url = targetUrl;
|
|
21462
|
-
}
|
|
21463
|
-
if (event.request && typeof event.request === "object") {
|
|
21464
|
-
if (typeof Request !== "undefined" && event.request instanceof Request) {
|
|
21465
|
-
event.request = new Request(targetUrl, {
|
|
21466
|
-
method: transformed.init.method,
|
|
21467
|
-
headers: transformed.init.headers,
|
|
21468
|
-
body: transformed.init.body
|
|
21469
|
-
});
|
|
21470
|
-
} else if (typeof event.request.url === "string") {
|
|
21471
|
-
try {
|
|
21472
|
-
event.request.url = targetUrl;
|
|
21473
|
-
} catch {
|
|
21474
|
-
}
|
|
21475
|
-
}
|
|
21476
|
-
}
|
|
21477
|
-
const headerEntries = transformed.init.headers instanceof Headers ? Array.from(transformed.init.headers.entries()) : Object.entries(transformed.init.headers || {});
|
|
21478
|
-
for (const [k, v] of headerEntries) {
|
|
21479
|
-
const lowerK = k.toLowerCase();
|
|
21480
|
-
if (lowerK === "user-agent") {
|
|
21481
|
-
if (preExistingUserAgent) {
|
|
21482
|
-
continue;
|
|
21483
|
-
}
|
|
21484
|
-
if (typeof event.headers?.set === "function") {
|
|
21485
|
-
event.headers.set("User-Agent", v);
|
|
21486
|
-
} else if (event.headers) {
|
|
21487
|
-
event.headers["User-Agent"] = v;
|
|
21488
|
-
}
|
|
21489
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21490
|
-
event.request.headers.set("User-Agent", v);
|
|
21491
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21492
|
-
event.request.headers["User-Agent"] = v;
|
|
21493
|
-
}
|
|
21494
|
-
continue;
|
|
21495
|
-
}
|
|
21496
|
-
if (typeof event.headers?.set === "function") {
|
|
21497
|
-
event.headers.set(k, v);
|
|
21498
|
-
} else if (event.headers) {
|
|
21499
|
-
event.headers[k] = v;
|
|
21500
|
-
}
|
|
21501
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21502
|
-
event.request.headers.set(k, v);
|
|
21503
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21504
|
-
event.request.headers[k] = v;
|
|
21505
|
-
}
|
|
21506
|
-
}
|
|
21507
|
-
if (transformed.init.body !== void 0) {
|
|
21508
|
-
event.body = transformed.init.body;
|
|
21509
|
-
if (event.request && typeof event.request === "object" && !(event.request instanceof Request)) {
|
|
21510
|
-
event.request.body = transformed.init.body;
|
|
21511
|
-
}
|
|
21512
|
-
}
|
|
21513
|
-
} else {
|
|
21514
|
-
if (typeof event.url === "string") {
|
|
21515
|
-
event.url = cleanUrl;
|
|
21516
|
-
}
|
|
21517
|
-
if (event.request && typeof event.request === "object") {
|
|
21518
|
-
if (typeof event.request.url === "string") {
|
|
21519
|
-
event.request.url = cleanUrl;
|
|
21520
|
-
}
|
|
21521
|
-
}
|
|
21522
|
-
}
|
|
21523
|
-
}
|
|
21524
|
-
if (authRecord && authRecord.access) {
|
|
21525
|
-
if (typeof event.headers?.set === "function") {
|
|
21526
|
-
event.headers.set("Authorization", `Bearer ${authRecord.access}`);
|
|
21527
|
-
} else if (event.headers) {
|
|
21528
|
-
event.headers["Authorization"] = `Bearer ${authRecord.access}`;
|
|
21529
|
-
}
|
|
21530
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21531
|
-
event.request.headers.set("Authorization", `Bearer ${authRecord.access}`);
|
|
21532
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21533
|
-
event.request.headers["Authorization"] = `Bearer ${authRecord.access}`;
|
|
21534
|
-
}
|
|
21535
|
-
}
|
|
21536
|
-
const userAgent = buildAgyCliUserAgent(modelName);
|
|
21537
|
-
if (typeof event.headers?.set === "function") {
|
|
21538
|
-
if (!event.headers.get("User-Agent") && !event.headers.get("user-agent")) {
|
|
21539
|
-
event.headers.set("User-Agent", userAgent);
|
|
21540
|
-
}
|
|
21541
|
-
} else if (event.headers) {
|
|
21542
|
-
if (!event.headers["User-Agent"] && !event.headers["user-agent"]) {
|
|
21543
|
-
event.headers["User-Agent"] = userAgent;
|
|
21544
|
-
}
|
|
21545
|
-
}
|
|
21546
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21547
|
-
if (!event.request.headers.get("User-Agent") && !event.request.headers.get("user-agent")) {
|
|
21548
|
-
event.request.headers.set("User-Agent", userAgent);
|
|
21549
|
-
}
|
|
21550
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21551
|
-
if (!event.request.headers["User-Agent"] && !event.request.headers["user-agent"]) {
|
|
21552
|
-
event.request.headers["User-Agent"] = userAgent;
|
|
21553
|
-
}
|
|
21554
|
-
}
|
|
21555
|
-
},
|
|
21556
|
-
{ providerID: AGY_PROVIDER_ID }
|
|
21557
|
-
);
|
|
21558
|
-
ctx.session.hook(
|
|
21559
|
-
"http.response",
|
|
21560
|
-
async (event) => {
|
|
21561
|
-
if (!event || !event.response) return;
|
|
21562
|
-
const rawUrl = typeof event.url === "string" ? event.url : event.request?.url || "";
|
|
21563
|
-
const isInternal = rawUrl.includes("cloudcode-pa.googleapis.com");
|
|
21564
|
-
if (isInternal && event.response instanceof Response) {
|
|
21565
|
-
const isStreaming = rawUrl.includes(":streamGenerateCode") || event.response.headers.get("content-type")?.includes("text/event-stream");
|
|
21566
|
-
const parsedModel = parseGenerativeLanguageRequest(rawUrl)?.effectiveModel || lastInterceptedModel;
|
|
21567
|
-
const transformed = await transformAgyResponse(
|
|
21568
|
-
event.response,
|
|
21569
|
-
!!isStreaming,
|
|
21570
|
-
null,
|
|
21571
|
-
parsedModel,
|
|
21572
|
-
void 0,
|
|
21573
|
-
void 0
|
|
21574
|
-
);
|
|
21575
|
-
event.response = transformed;
|
|
21576
|
-
}
|
|
21577
|
-
},
|
|
21578
|
-
{ providerID: AGY_PROVIDER_ID }
|
|
21579
|
-
);
|
|
21580
|
-
ctx.session.hook(
|
|
21581
|
-
"retry",
|
|
21582
|
-
async (event) => {
|
|
21583
|
-
if (!event) return;
|
|
21584
|
-
const response = event.response;
|
|
21585
|
-
if (response instanceof Response) {
|
|
21586
|
-
if (response.status === 429 || response.status === 503) {
|
|
21587
|
-
const quota = await classifyQuotaResponse(response);
|
|
21588
|
-
if (quota?.retryDelayMs) {
|
|
21589
|
-
event.retryDelayMs = quota.retryDelayMs;
|
|
21590
|
-
} else {
|
|
21591
|
-
event.retryDelayMs = await resolveRetryDelayMs(response, event.attempt || 1);
|
|
21592
|
-
}
|
|
21593
|
-
}
|
|
21594
|
-
} else if (event.details && Array.isArray(event.details)) {
|
|
21595
|
-
const retryInfo = event.details.find(
|
|
21596
|
-
(d) => d && d["@type"] === "type.googleapis.com/google.rpc.RetryInfo"
|
|
21597
|
-
);
|
|
21598
|
-
if (retryInfo?.retryDelay) {
|
|
21599
|
-
const delayMs = retryInternals.parseRetryDelayValue(retryInfo.retryDelay);
|
|
21600
|
-
if (delayMs !== null) {
|
|
21601
|
-
event.retryDelayMs = delayMs;
|
|
21602
|
-
}
|
|
21603
|
-
}
|
|
21604
|
-
}
|
|
21605
|
-
},
|
|
21606
|
-
{ providerID: AGY_PROVIDER_ID }
|
|
21607
|
-
);
|
|
21608
|
-
}
|
|
21609
|
-
var v2PluginDefinition = defineOpenCodeV2Plugin({
|
|
21610
|
-
id: AGY_PROVIDER_ID,
|
|
21611
|
-
setup: setupOpenCodeV2
|
|
21612
|
-
});
|
|
21613
|
-
|
|
21614
20819
|
// index.ts
|
|
21615
|
-
var
|
|
21616
|
-
|
|
20820
|
+
var index_default = {
|
|
20821
|
+
id: "@anthonyhaussman/opencode-agy-auth",
|
|
21617
20822
|
server: AgyCLIOAuthPlugin
|
|
21618
20823
|
};
|
|
21619
|
-
var index_default = dualPlugin;
|
|
21620
20824
|
export {
|
|
21621
20825
|
AgyCLIOAuthPlugin,
|
|
21622
20826
|
GoogleOAuthPlugin,
|
|
21623
|
-
index_default as default
|
|
21624
|
-
defineOpenCodeV2Plugin,
|
|
21625
|
-
setupOpenCodeV2,
|
|
21626
|
-
v2PluginDefinition
|
|
20827
|
+
index_default as default
|
|
21627
20828
|
};
|
|
21628
20829
|
//# sourceMappingURL=index.js.map
|