@anthonyhaussman/opencode-agy-auth 1.2.7-alpha.1 → 1.2.7-alpha.3
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/index.js +491 -569
- package/dist/index.js.map +1 -1
- package/dist/src/plugin/headers.d.ts +7 -0
- package/dist/src/plugin/quota-summary.d.ts +2 -0
- package/dist/src/plugin/quota.d.ts +2 -0
- package/dist/src/plugin/tier.d.ts +28 -0
- package/dist/src/plugin/v2-fetch.d.ts +1 -0
- package/dist/src/plugin/v2-session.d.ts +7 -0
- package/dist/src/plugin/v2-storage.d.ts +3 -0
- package/dist/src/plugin/v2.d.ts +7 -15
- package/dist/src/plugin.d.ts +2 -23
- package/dist/src/sdk/agy-cli-version.d.ts +1 -1
- package/package.json +1 -1
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.7";
|
|
272
272
|
|
|
273
273
|
// src/sdk/user-agent.ts
|
|
274
274
|
var cachedUserAgent = null;
|
|
@@ -15337,6 +15337,12 @@ function formatRelativeResetTime(resetTime) {
|
|
|
15337
15337
|
|
|
15338
15338
|
// src/plugin/quota.ts
|
|
15339
15339
|
var AGY_QUOTA_TOOL_NAME = "agy_quota";
|
|
15340
|
+
var AGY_V2_QUOTA_COMMAND = "agy-quota";
|
|
15341
|
+
var AGY_V2_QUOTA_COMMAND_TEMPLATE = `Retrieve Agy Code Assist quota usage for the current authenticated account.
|
|
15342
|
+
|
|
15343
|
+
Immediately call \`${AGY_QUOTA_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
15344
|
+
Do not call other tools.
|
|
15345
|
+
`;
|
|
15340
15346
|
function createAgyQuotaTool({
|
|
15341
15347
|
client,
|
|
15342
15348
|
getAuthResolver,
|
|
@@ -15576,6 +15582,12 @@ function splitModelVariant(modelId) {
|
|
|
15576
15582
|
|
|
15577
15583
|
// src/plugin/quota-summary.ts
|
|
15578
15584
|
var AGY_QUOTA_SUMMARY_TOOL_NAME = "agy_quota_summary";
|
|
15585
|
+
var AGY_V2_QUOTA_SUMMARY_COMMAND = "agy-quota-summary";
|
|
15586
|
+
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.
|
|
15587
|
+
|
|
15588
|
+
Immediately call \`${AGY_QUOTA_SUMMARY_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
15589
|
+
Do not call other tools.
|
|
15590
|
+
`;
|
|
15579
15591
|
function createAgyQuotaSummaryTool({
|
|
15580
15592
|
client,
|
|
15581
15593
|
getAuthResolver,
|
|
@@ -16060,6 +16072,7 @@ var models_default = {
|
|
|
16060
16072
|
}
|
|
16061
16073
|
},
|
|
16062
16074
|
experimentIds: [
|
|
16075
|
+
106738697,
|
|
16063
16076
|
106329234,
|
|
16064
16077
|
106519115,
|
|
16065
16078
|
105979552,
|
|
@@ -16168,7 +16181,7 @@ var models_default = {
|
|
|
16168
16181
|
modelProvider: "MODEL_PROVIDER_ANTHROPIC",
|
|
16169
16182
|
quotaInfo: {
|
|
16170
16183
|
remainingFraction: 1,
|
|
16171
|
-
resetTime: "2026-09-
|
|
16184
|
+
resetTime: "2026-09-19T15:08:03Z"
|
|
16172
16185
|
},
|
|
16173
16186
|
recommended: true,
|
|
16174
16187
|
supportedMimeTypes: {
|
|
@@ -16207,7 +16220,7 @@ var models_default = {
|
|
|
16207
16220
|
modelProvider: "MODEL_PROVIDER_ANTHROPIC",
|
|
16208
16221
|
quotaInfo: {
|
|
16209
16222
|
remainingFraction: 1,
|
|
16210
|
-
resetTime: "2026-09-
|
|
16223
|
+
resetTime: "2026-09-19T15:08:03Z"
|
|
16211
16224
|
},
|
|
16212
16225
|
recommended: true,
|
|
16213
16226
|
supportedMimeTypes: {
|
|
@@ -16243,8 +16256,8 @@ var models_default = {
|
|
|
16243
16256
|
},
|
|
16244
16257
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16245
16258
|
quotaInfo: {
|
|
16246
|
-
remainingFraction: 0.
|
|
16247
|
-
resetTime: "2026-09-
|
|
16259
|
+
remainingFraction: 0.964089,
|
|
16260
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16248
16261
|
},
|
|
16249
16262
|
recommended: true,
|
|
16250
16263
|
supportedMimeTypes: {
|
|
@@ -16326,8 +16339,8 @@ var models_default = {
|
|
|
16326
16339
|
},
|
|
16327
16340
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16328
16341
|
quotaInfo: {
|
|
16329
|
-
remainingFraction: 0.
|
|
16330
|
-
resetTime: "2026-09-
|
|
16342
|
+
remainingFraction: 0.964089,
|
|
16343
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16331
16344
|
},
|
|
16332
16345
|
recommended: true,
|
|
16333
16346
|
supportedMimeTypes: {
|
|
@@ -16409,8 +16422,8 @@ var models_default = {
|
|
|
16409
16422
|
},
|
|
16410
16423
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16411
16424
|
quotaInfo: {
|
|
16412
|
-
remainingFraction: 0.
|
|
16413
|
-
resetTime: "2026-09-
|
|
16425
|
+
remainingFraction: 0.964089,
|
|
16426
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16414
16427
|
},
|
|
16415
16428
|
recommended: true,
|
|
16416
16429
|
supportedMimeTypes: {
|
|
@@ -16489,8 +16502,8 @@ var models_default = {
|
|
|
16489
16502
|
},
|
|
16490
16503
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16491
16504
|
quotaInfo: {
|
|
16492
|
-
remainingFraction: 0.
|
|
16493
|
-
resetTime: "2026-09-
|
|
16505
|
+
remainingFraction: 0.964089,
|
|
16506
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16494
16507
|
},
|
|
16495
16508
|
recommended: true,
|
|
16496
16509
|
requiresImageOutputOutsideFunctionResponses: true,
|
|
@@ -16570,8 +16583,8 @@ var models_default = {
|
|
|
16570
16583
|
},
|
|
16571
16584
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16572
16585
|
quotaInfo: {
|
|
16573
|
-
remainingFraction: 0.
|
|
16574
|
-
resetTime: "2026-09-
|
|
16586
|
+
remainingFraction: 0.964089,
|
|
16587
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16575
16588
|
},
|
|
16576
16589
|
recommended: true,
|
|
16577
16590
|
supportedMimeTypes: {
|
|
@@ -16675,8 +16688,8 @@ var models_default = {
|
|
|
16675
16688
|
},
|
|
16676
16689
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16677
16690
|
quotaInfo: {
|
|
16678
|
-
remainingFraction: 0.
|
|
16679
|
-
resetTime: "2026-09-
|
|
16691
|
+
remainingFraction: 0.964089,
|
|
16692
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16680
16693
|
},
|
|
16681
16694
|
recommended: true,
|
|
16682
16695
|
supportedMimeTypes: {
|
|
@@ -16745,8 +16758,8 @@ var models_default = {
|
|
|
16745
16758
|
model: "MODEL_PLACEHOLDER_M21",
|
|
16746
16759
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16747
16760
|
quotaInfo: {
|
|
16748
|
-
remainingFraction: 0.
|
|
16749
|
-
resetTime: "2026-09-
|
|
16761
|
+
remainingFraction: 0.964089,
|
|
16762
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16750
16763
|
}
|
|
16751
16764
|
},
|
|
16752
16765
|
"gemini-3.1-flash-lite": {
|
|
@@ -16764,8 +16777,8 @@ var models_default = {
|
|
|
16764
16777
|
},
|
|
16765
16778
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16766
16779
|
quotaInfo: {
|
|
16767
|
-
remainingFraction: 0.
|
|
16768
|
-
resetTime: "2026-09-
|
|
16780
|
+
remainingFraction: 0.964089,
|
|
16781
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16769
16782
|
}
|
|
16770
16783
|
},
|
|
16771
16784
|
"gemini-3.1-pro-high": {
|
|
@@ -16796,8 +16809,8 @@ var models_default = {
|
|
|
16796
16809
|
},
|
|
16797
16810
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16798
16811
|
quotaInfo: {
|
|
16799
|
-
remainingFraction: 0.
|
|
16800
|
-
resetTime: "2026-09-
|
|
16812
|
+
remainingFraction: 0.964089,
|
|
16813
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16801
16814
|
},
|
|
16802
16815
|
recommended: true,
|
|
16803
16816
|
supportedMimeTypes: {
|
|
@@ -16887,8 +16900,8 @@ var models_default = {
|
|
|
16887
16900
|
},
|
|
16888
16901
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16889
16902
|
quotaInfo: {
|
|
16890
|
-
remainingFraction: 0.
|
|
16891
|
-
resetTime: "2026-09-
|
|
16903
|
+
remainingFraction: 0.964089,
|
|
16904
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16892
16905
|
},
|
|
16893
16906
|
recommended: true,
|
|
16894
16907
|
supportedMimeTypes: {
|
|
@@ -16992,8 +17005,8 @@ var models_default = {
|
|
|
16992
17005
|
},
|
|
16993
17006
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16994
17007
|
quotaInfo: {
|
|
16995
|
-
remainingFraction: 0.
|
|
16996
|
-
resetTime: "2026-09-
|
|
17008
|
+
remainingFraction: 0.964089,
|
|
17009
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
16997
17010
|
},
|
|
16998
17011
|
recommended: true,
|
|
16999
17012
|
supportedMimeTypes: {
|
|
@@ -17075,8 +17088,8 @@ var models_default = {
|
|
|
17075
17088
|
},
|
|
17076
17089
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17077
17090
|
quotaInfo: {
|
|
17078
|
-
remainingFraction: 0.
|
|
17079
|
-
resetTime: "2026-09-
|
|
17091
|
+
remainingFraction: 0.964089,
|
|
17092
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
17080
17093
|
},
|
|
17081
17094
|
recommended: true,
|
|
17082
17095
|
supportedMimeTypes: {
|
|
@@ -17182,8 +17195,8 @@ var models_default = {
|
|
|
17182
17195
|
},
|
|
17183
17196
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17184
17197
|
quotaInfo: {
|
|
17185
|
-
remainingFraction: 0.
|
|
17186
|
-
resetTime: "2026-09-
|
|
17198
|
+
remainingFraction: 0.964089,
|
|
17199
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
17187
17200
|
},
|
|
17188
17201
|
recommended: true,
|
|
17189
17202
|
supportedMimeTypes: {
|
|
@@ -17301,8 +17314,8 @@ var models_default = {
|
|
|
17301
17314
|
},
|
|
17302
17315
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17303
17316
|
quotaInfo: {
|
|
17304
|
-
remainingFraction: 0.
|
|
17305
|
-
resetTime: "2026-09-
|
|
17317
|
+
remainingFraction: 0.964089,
|
|
17318
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
17306
17319
|
},
|
|
17307
17320
|
recommended: true,
|
|
17308
17321
|
supportedMimeTypes: {
|
|
@@ -17420,8 +17433,8 @@ var models_default = {
|
|
|
17420
17433
|
},
|
|
17421
17434
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17422
17435
|
quotaInfo: {
|
|
17423
|
-
remainingFraction: 0.
|
|
17424
|
-
resetTime: "2026-09-
|
|
17436
|
+
remainingFraction: 0.964089,
|
|
17437
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
17425
17438
|
},
|
|
17426
17439
|
recommended: true,
|
|
17427
17440
|
supportedMimeTypes: {
|
|
@@ -17539,8 +17552,8 @@ var models_default = {
|
|
|
17539
17552
|
},
|
|
17540
17553
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17541
17554
|
quotaInfo: {
|
|
17542
|
-
remainingFraction: 0.
|
|
17543
|
-
resetTime: "2026-09-
|
|
17555
|
+
remainingFraction: 0.964089,
|
|
17556
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
17544
17557
|
},
|
|
17545
17558
|
recommended: true,
|
|
17546
17559
|
supportedMimeTypes: {
|
|
@@ -17657,8 +17670,8 @@ var models_default = {
|
|
|
17657
17670
|
},
|
|
17658
17671
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17659
17672
|
quotaInfo: {
|
|
17660
|
-
remainingFraction: 0.
|
|
17661
|
-
resetTime: "2026-09-
|
|
17673
|
+
remainingFraction: 0.964089,
|
|
17674
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
17662
17675
|
},
|
|
17663
17676
|
recommended: true,
|
|
17664
17677
|
supportedMimeTypes: {
|
|
@@ -17768,8 +17781,8 @@ var models_default = {
|
|
|
17768
17781
|
},
|
|
17769
17782
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17770
17783
|
quotaInfo: {
|
|
17771
|
-
remainingFraction: 0.
|
|
17772
|
-
resetTime: "2026-09-
|
|
17784
|
+
remainingFraction: 0.964089,
|
|
17785
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
17773
17786
|
},
|
|
17774
17787
|
recommended: true,
|
|
17775
17788
|
supportedMimeTypes: {
|
|
@@ -17881,8 +17894,8 @@ var models_default = {
|
|
|
17881
17894
|
},
|
|
17882
17895
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17883
17896
|
quotaInfo: {
|
|
17884
|
-
remainingFraction: 0.
|
|
17885
|
-
resetTime: "2026-09-
|
|
17897
|
+
remainingFraction: 0.964089,
|
|
17898
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
17886
17899
|
},
|
|
17887
17900
|
recommended: true,
|
|
17888
17901
|
supportedMimeTypes: {
|
|
@@ -17994,8 +18007,8 @@ var models_default = {
|
|
|
17994
18007
|
},
|
|
17995
18008
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17996
18009
|
quotaInfo: {
|
|
17997
|
-
remainingFraction: 0.
|
|
17998
|
-
resetTime: "2026-09-
|
|
18010
|
+
remainingFraction: 0.964089,
|
|
18011
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
17999
18012
|
},
|
|
18000
18013
|
recommended: true,
|
|
18001
18014
|
supportedMimeTypes: {
|
|
@@ -18106,8 +18119,8 @@ var models_default = {
|
|
|
18106
18119
|
},
|
|
18107
18120
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18108
18121
|
quotaInfo: {
|
|
18109
|
-
remainingFraction: 0.
|
|
18110
|
-
resetTime: "2026-09-
|
|
18122
|
+
remainingFraction: 0.964089,
|
|
18123
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
18111
18124
|
},
|
|
18112
18125
|
recommended: true,
|
|
18113
18126
|
supportedMimeTypes: {
|
|
@@ -18217,8 +18230,8 @@ var models_default = {
|
|
|
18217
18230
|
},
|
|
18218
18231
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18219
18232
|
quotaInfo: {
|
|
18220
|
-
remainingFraction: 0.
|
|
18221
|
-
resetTime: "2026-09-
|
|
18233
|
+
remainingFraction: 0.964089,
|
|
18234
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
18222
18235
|
},
|
|
18223
18236
|
recommended: true,
|
|
18224
18237
|
supportedMimeTypes: {
|
|
@@ -18277,8 +18290,6 @@ var models_default = {
|
|
|
18277
18290
|
supportsImages: true,
|
|
18278
18291
|
supportsThinking: true,
|
|
18279
18292
|
supportsVideo: true,
|
|
18280
|
-
tagDescription: "Limited time",
|
|
18281
|
-
tagTitle: "Fast",
|
|
18282
18293
|
thinkingBudget: -1
|
|
18283
18294
|
},
|
|
18284
18295
|
"gemini-3.8-flash-low": {
|
|
@@ -18330,8 +18341,8 @@ var models_default = {
|
|
|
18330
18341
|
},
|
|
18331
18342
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18332
18343
|
quotaInfo: {
|
|
18333
|
-
remainingFraction: 0.
|
|
18334
|
-
resetTime: "2026-09-
|
|
18344
|
+
remainingFraction: 0.964089,
|
|
18345
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
18335
18346
|
},
|
|
18336
18347
|
recommended: true,
|
|
18337
18348
|
supportedMimeTypes: {
|
|
@@ -18443,8 +18454,8 @@ var models_default = {
|
|
|
18443
18454
|
},
|
|
18444
18455
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18445
18456
|
quotaInfo: {
|
|
18446
|
-
remainingFraction: 0.
|
|
18447
|
-
resetTime: "2026-09-
|
|
18457
|
+
remainingFraction: 0.964089,
|
|
18458
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
18448
18459
|
},
|
|
18449
18460
|
recommended: true,
|
|
18450
18461
|
supportedMimeTypes: {
|
|
@@ -18555,8 +18566,8 @@ var models_default = {
|
|
|
18555
18566
|
},
|
|
18556
18567
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18557
18568
|
quotaInfo: {
|
|
18558
|
-
remainingFraction: 0.
|
|
18559
|
-
resetTime: "2026-09-
|
|
18569
|
+
remainingFraction: 0.964089,
|
|
18570
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
18560
18571
|
},
|
|
18561
18572
|
recommended: true,
|
|
18562
18573
|
supportedMimeTypes: {
|
|
@@ -18645,8 +18656,8 @@ var models_default = {
|
|
|
18645
18656
|
},
|
|
18646
18657
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18647
18658
|
quotaInfo: {
|
|
18648
|
-
remainingFraction: 0.
|
|
18649
|
-
resetTime: "2026-09-
|
|
18659
|
+
remainingFraction: 0.964089,
|
|
18660
|
+
resetTime: "2026-09-19T14:53:58Z"
|
|
18650
18661
|
},
|
|
18651
18662
|
recommended: true,
|
|
18652
18663
|
supportedMimeTypes: {
|
|
@@ -18723,7 +18734,7 @@ var models_default = {
|
|
|
18723
18734
|
modelProvider: "MODEL_PROVIDER_OPENAI",
|
|
18724
18735
|
quotaInfo: {
|
|
18725
18736
|
remainingFraction: 1,
|
|
18726
|
-
resetTime: "2026-09-
|
|
18737
|
+
resetTime: "2026-09-19T15:08:03Z"
|
|
18727
18738
|
},
|
|
18728
18739
|
recommended: true,
|
|
18729
18740
|
supportsThinking: true,
|
|
@@ -20222,22 +20233,81 @@ var ChatLoggerImpl = class {
|
|
|
20222
20233
|
}
|
|
20223
20234
|
};
|
|
20224
20235
|
|
|
20225
|
-
// src/plugin.ts
|
|
20226
|
-
|
|
20227
|
-
|
|
20228
|
-
|
|
20229
|
-
|
|
20230
|
-
|
|
20231
|
-
|
|
20232
|
-
|
|
20233
|
-
|
|
20236
|
+
// src/plugin/headers.ts
|
|
20237
|
+
function getSafeHeader(headers, key) {
|
|
20238
|
+
if (!headers) {
|
|
20239
|
+
return void 0;
|
|
20240
|
+
}
|
|
20241
|
+
const targetKey = key.toLowerCase();
|
|
20242
|
+
if (typeof headers.get === "function") {
|
|
20243
|
+
try {
|
|
20244
|
+
return headers.get(targetKey) || void 0;
|
|
20245
|
+
} catch {
|
|
20246
|
+
}
|
|
20247
|
+
}
|
|
20248
|
+
if (Array.isArray(headers)) {
|
|
20249
|
+
const found = headers.find((item) => {
|
|
20250
|
+
if (Array.isArray(item) && typeof item[0] === "string") {
|
|
20251
|
+
return item[0].toLowerCase() === targetKey;
|
|
20252
|
+
}
|
|
20253
|
+
return false;
|
|
20254
|
+
});
|
|
20255
|
+
return found ? String(found[1]) : void 0;
|
|
20256
|
+
}
|
|
20257
|
+
if (typeof headers === "object") {
|
|
20258
|
+
const foundKey = Object.keys(headers).find((k) => k.toLowerCase() === targetKey);
|
|
20259
|
+
return foundKey ? headers[foundKey] !== void 0 ? String(headers[foundKey]) : void 0 : void 0;
|
|
20260
|
+
}
|
|
20261
|
+
return void 0;
|
|
20262
|
+
}
|
|
20263
|
+
function setSafeHeaders(initHeaders, newHeaders) {
|
|
20264
|
+
if (typeof globalThis.Headers !== "undefined") {
|
|
20265
|
+
const headers = new globalThis.Headers(initHeaders ?? {});
|
|
20266
|
+
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20267
|
+
headers.set(k, v);
|
|
20268
|
+
}
|
|
20269
|
+
return headers;
|
|
20270
|
+
}
|
|
20271
|
+
if (Array.isArray(initHeaders)) {
|
|
20272
|
+
const nextHeaders2 = [...initHeaders];
|
|
20273
|
+
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20274
|
+
const idx = nextHeaders2.findIndex((item) => Array.isArray(item) && typeof item[0] === "string" && item[0].toLowerCase() === k.toLowerCase());
|
|
20275
|
+
if (idx !== -1) {
|
|
20276
|
+
nextHeaders2[idx] = [k, v];
|
|
20277
|
+
} else {
|
|
20278
|
+
nextHeaders2.push([k, v]);
|
|
20279
|
+
}
|
|
20280
|
+
}
|
|
20281
|
+
return nextHeaders2;
|
|
20282
|
+
}
|
|
20283
|
+
const nextHeaders = {};
|
|
20284
|
+
if (initHeaders && typeof initHeaders === "object") {
|
|
20285
|
+
for (const [k, v] of Object.entries(initHeaders)) {
|
|
20286
|
+
nextHeaders[k] = String(v);
|
|
20287
|
+
}
|
|
20288
|
+
}
|
|
20289
|
+
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20290
|
+
const existingKey = Object.keys(nextHeaders).find((key) => key.toLowerCase() === k.toLowerCase());
|
|
20291
|
+
if (existingKey) {
|
|
20292
|
+
nextHeaders[existingKey] = v;
|
|
20293
|
+
} else {
|
|
20294
|
+
nextHeaders[k] = v;
|
|
20295
|
+
}
|
|
20296
|
+
}
|
|
20297
|
+
return nextHeaders;
|
|
20298
|
+
}
|
|
20299
|
+
function toUrlString(value) {
|
|
20300
|
+
if (typeof value === "string") {
|
|
20301
|
+
return value;
|
|
20302
|
+
}
|
|
20303
|
+
const candidate = value.url;
|
|
20304
|
+
if (candidate) {
|
|
20305
|
+
return candidate;
|
|
20306
|
+
}
|
|
20307
|
+
return value.toString();
|
|
20308
|
+
}
|
|
20234
20309
|
|
|
20235
|
-
|
|
20236
|
-
Do not call other tools.
|
|
20237
|
-
`;
|
|
20238
|
-
var latestAgyAuthResolver;
|
|
20239
|
-
var latestAgyConfiguredProjectId;
|
|
20240
|
-
var latestAgyUserAgentModel;
|
|
20310
|
+
// src/plugin/tier.ts
|
|
20241
20311
|
var STATIC_MODELS_SIMPLE = {
|
|
20242
20312
|
"gemini-3.8-flash": {
|
|
20243
20313
|
name: "Gemini 3.8 Flash",
|
|
@@ -20325,6 +20395,39 @@ var TIER_MAPPING = {
|
|
|
20325
20395
|
high: "gemini-3.1-pro-high"
|
|
20326
20396
|
}
|
|
20327
20397
|
};
|
|
20398
|
+
function resolveModelTier(baseModelId, headersOrInit) {
|
|
20399
|
+
const parts = baseModelId.split("@");
|
|
20400
|
+
const base = parts[0] || "";
|
|
20401
|
+
const suffixTier = parts[1]?.toLowerCase();
|
|
20402
|
+
const mapping = TIER_MAPPING[base];
|
|
20403
|
+
if (!mapping) {
|
|
20404
|
+
return baseModelId;
|
|
20405
|
+
}
|
|
20406
|
+
const rawHeaders = headersOrInit && typeof headersOrInit === "object" && "headers" in headersOrInit ? headersOrInit.headers : headersOrInit;
|
|
20407
|
+
const headerTier = getSafeHeader(rawHeaders, "x-agy-tier")?.toLowerCase() || null;
|
|
20408
|
+
const requestedTier = headerTier || suffixTier;
|
|
20409
|
+
if (requestedTier && Object.prototype.hasOwnProperty.call(mapping, requestedTier)) {
|
|
20410
|
+
return mapping[requestedTier] || baseModelId;
|
|
20411
|
+
}
|
|
20412
|
+
return mapping["medium"] ?? mapping["high"] ?? baseModelId;
|
|
20413
|
+
}
|
|
20414
|
+
|
|
20415
|
+
// src/plugin.ts
|
|
20416
|
+
var AGY_QUOTA_COMMAND = "agyquota";
|
|
20417
|
+
var AGY_QUOTA_COMMAND_TEMPLATE = `Retrieve Agy Code Assist quota usage for the current authenticated account.
|
|
20418
|
+
|
|
20419
|
+
Immediately call \`${AGY_QUOTA_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
20420
|
+
Do not call other tools.
|
|
20421
|
+
`;
|
|
20422
|
+
var AGY_QUOTA_SUMMARY_COMMAND = "agyquotasummary";
|
|
20423
|
+
var AGY_QUOTA_SUMMARY_COMMAND_TEMPLATE = `Retrieve Agy Code Assist quota summary (weekly and 5-hour limits by model group) for the current authenticated account.
|
|
20424
|
+
|
|
20425
|
+
Immediately call \`${AGY_QUOTA_SUMMARY_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
20426
|
+
Do not call other tools.
|
|
20427
|
+
`;
|
|
20428
|
+
var latestAgyAuthResolver;
|
|
20429
|
+
var latestAgyConfiguredProjectId;
|
|
20430
|
+
var latestAgyUserAgentModel;
|
|
20328
20431
|
var buildModelFromSimple = (modelId, simple) => {
|
|
20329
20432
|
const isClaude = modelId.startsWith("claude-");
|
|
20330
20433
|
const isGpt = modelId.startsWith("gpt-");
|
|
@@ -20418,83 +20521,6 @@ var STATIC_MODELS = {};
|
|
|
20418
20521
|
for (const [modelId, simple] of Object.entries(STATIC_MODELS_SIMPLE)) {
|
|
20419
20522
|
STATIC_MODELS[modelId] = buildModelFromSimple(modelId, simple);
|
|
20420
20523
|
}
|
|
20421
|
-
function getSafeHeader(headers, key) {
|
|
20422
|
-
if (!headers) {
|
|
20423
|
-
return void 0;
|
|
20424
|
-
}
|
|
20425
|
-
const targetKey = key.toLowerCase();
|
|
20426
|
-
if (typeof headers.get === "function") {
|
|
20427
|
-
try {
|
|
20428
|
-
return headers.get(targetKey) || void 0;
|
|
20429
|
-
} catch {
|
|
20430
|
-
}
|
|
20431
|
-
}
|
|
20432
|
-
if (Array.isArray(headers)) {
|
|
20433
|
-
const found = headers.find((item) => {
|
|
20434
|
-
if (Array.isArray(item) && typeof item[0] === "string") {
|
|
20435
|
-
return item[0].toLowerCase() === targetKey;
|
|
20436
|
-
}
|
|
20437
|
-
return false;
|
|
20438
|
-
});
|
|
20439
|
-
return found ? String(found[1]) : void 0;
|
|
20440
|
-
}
|
|
20441
|
-
if (typeof headers === "object") {
|
|
20442
|
-
const foundKey = Object.keys(headers).find((k) => k.toLowerCase() === targetKey);
|
|
20443
|
-
return foundKey ? headers[foundKey] !== void 0 ? String(headers[foundKey]) : void 0 : void 0;
|
|
20444
|
-
}
|
|
20445
|
-
return void 0;
|
|
20446
|
-
}
|
|
20447
|
-
function setSafeHeaders(initHeaders, newHeaders) {
|
|
20448
|
-
if (typeof globalThis.Headers !== "undefined") {
|
|
20449
|
-
const headers = new globalThis.Headers(initHeaders ?? {});
|
|
20450
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20451
|
-
headers.set(k, v);
|
|
20452
|
-
}
|
|
20453
|
-
return headers;
|
|
20454
|
-
}
|
|
20455
|
-
if (Array.isArray(initHeaders)) {
|
|
20456
|
-
const nextHeaders2 = [...initHeaders];
|
|
20457
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20458
|
-
const idx = nextHeaders2.findIndex((item) => Array.isArray(item) && typeof item[0] === "string" && item[0].toLowerCase() === k.toLowerCase());
|
|
20459
|
-
if (idx !== -1) {
|
|
20460
|
-
nextHeaders2[idx] = [k, v];
|
|
20461
|
-
} else {
|
|
20462
|
-
nextHeaders2.push([k, v]);
|
|
20463
|
-
}
|
|
20464
|
-
}
|
|
20465
|
-
return nextHeaders2;
|
|
20466
|
-
}
|
|
20467
|
-
const nextHeaders = {};
|
|
20468
|
-
if (initHeaders && typeof initHeaders === "object") {
|
|
20469
|
-
for (const [k, v] of Object.entries(initHeaders)) {
|
|
20470
|
-
nextHeaders[k] = String(v);
|
|
20471
|
-
}
|
|
20472
|
-
}
|
|
20473
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20474
|
-
const existingKey = Object.keys(nextHeaders).find((key) => key.toLowerCase() === k.toLowerCase());
|
|
20475
|
-
if (existingKey) {
|
|
20476
|
-
nextHeaders[existingKey] = v;
|
|
20477
|
-
} else {
|
|
20478
|
-
nextHeaders[k] = v;
|
|
20479
|
-
}
|
|
20480
|
-
}
|
|
20481
|
-
return nextHeaders;
|
|
20482
|
-
}
|
|
20483
|
-
function resolveModelTier(baseModelId, init) {
|
|
20484
|
-
const parts = baseModelId.split("@");
|
|
20485
|
-
const base = parts[0] || "";
|
|
20486
|
-
const suffixTier = parts[1]?.toLowerCase();
|
|
20487
|
-
const mapping = TIER_MAPPING[base];
|
|
20488
|
-
if (!mapping) {
|
|
20489
|
-
return baseModelId;
|
|
20490
|
-
}
|
|
20491
|
-
const headerTier = getSafeHeader(init?.headers, "x-agy-tier")?.toLowerCase() || null;
|
|
20492
|
-
const requestedTier = headerTier || suffixTier;
|
|
20493
|
-
if (requestedTier && Object.prototype.hasOwnProperty.call(mapping, requestedTier)) {
|
|
20494
|
-
return mapping[requestedTier] || baseModelId;
|
|
20495
|
-
}
|
|
20496
|
-
return mapping["medium"] ?? mapping["high"];
|
|
20497
|
-
}
|
|
20498
20524
|
var AgyCLIOAuthPlugin = async ({ client }) => {
|
|
20499
20525
|
let latestConfig;
|
|
20500
20526
|
updateStaticModelsWithPricing(STATIC_MODELS);
|
|
@@ -20822,139 +20848,29 @@ async function ensureProjectContextOrThrow(authRecord, client, configuredProject
|
|
|
20822
20848
|
throw error45;
|
|
20823
20849
|
}
|
|
20824
20850
|
}
|
|
20825
|
-
function toUrlString(value) {
|
|
20826
|
-
if (typeof value === "string") {
|
|
20827
|
-
return value;
|
|
20828
|
-
}
|
|
20829
|
-
const candidate = value.url;
|
|
20830
|
-
if (candidate) {
|
|
20831
|
-
return candidate;
|
|
20832
|
-
}
|
|
20833
|
-
return value.toString();
|
|
20834
|
-
}
|
|
20835
20851
|
|
|
20836
20852
|
// src/plugin/types.ts
|
|
20837
20853
|
function defineOpenCodeV2Plugin(def) {
|
|
20838
20854
|
return def;
|
|
20839
20855
|
}
|
|
20840
20856
|
|
|
20841
|
-
// src/plugin/v2.ts
|
|
20857
|
+
// src/plugin/v2-storage.ts
|
|
20858
|
+
import { existsSync as existsSync6, mkdirSync as mkdirSync5, readFileSync as readFileSync5, writeFileSync as writeFileSync5 } from "fs";
|
|
20842
20859
|
import { homedir as homedir4 } from "os";
|
|
20843
20860
|
import { join as join6 } from "path";
|
|
20844
|
-
|
|
20845
|
-
|
|
20846
|
-
|
|
20847
|
-
|
|
20848
|
-
var AGY_V2_QUOTA_COMMAND_TEMPLATE = `Retrieve Agy Code Assist quota usage for the current authenticated account.
|
|
20849
|
-
|
|
20850
|
-
Immediately call \`${AGY_QUOTA_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
20851
|
-
Do not call other tools.
|
|
20852
|
-
`;
|
|
20853
|
-
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.
|
|
20854
|
-
|
|
20855
|
-
Immediately call \`${AGY_QUOTA_SUMMARY_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
20856
|
-
Do not call other tools.
|
|
20857
|
-
`;
|
|
20858
|
-
function getSafeHeader2(headers, key) {
|
|
20859
|
-
if (!headers) {
|
|
20860
|
-
return void 0;
|
|
20861
|
+
var storedAuthOverrideForTesting = void 0;
|
|
20862
|
+
function loadStoredAuthFromJson() {
|
|
20863
|
+
if (storedAuthOverrideForTesting !== void 0) {
|
|
20864
|
+
return storedAuthOverrideForTesting;
|
|
20861
20865
|
}
|
|
20862
|
-
const
|
|
20863
|
-
|
|
20864
|
-
|
|
20865
|
-
|
|
20866
|
-
|
|
20866
|
+
const authPath = join6(homedir4(), ".local", "share", "opencode", "auth.json");
|
|
20867
|
+
try {
|
|
20868
|
+
if (existsSync6(authPath)) {
|
|
20869
|
+
const content = readFileSync5(authPath, "utf8");
|
|
20870
|
+
const data = JSON.parse(content);
|
|
20871
|
+
return data?.[AGY_PROVIDER_ID];
|
|
20867
20872
|
}
|
|
20868
|
-
}
|
|
20869
|
-
if (Array.isArray(headers)) {
|
|
20870
|
-
const found = headers.find((item) => {
|
|
20871
|
-
if (Array.isArray(item) && typeof item[0] === "string") {
|
|
20872
|
-
return item[0].toLowerCase() === targetKey;
|
|
20873
|
-
}
|
|
20874
|
-
return false;
|
|
20875
|
-
});
|
|
20876
|
-
return found ? String(found[1]) : void 0;
|
|
20877
|
-
}
|
|
20878
|
-
if (typeof headers === "object") {
|
|
20879
|
-
const foundKey = Object.keys(headers).find((k) => k.toLowerCase() === targetKey);
|
|
20880
|
-
return foundKey ? headers[foundKey] !== void 0 ? String(headers[foundKey]) : void 0 : void 0;
|
|
20881
|
-
}
|
|
20882
|
-
return void 0;
|
|
20883
|
-
}
|
|
20884
|
-
function setSafeHeaders2(initHeaders, newHeaders) {
|
|
20885
|
-
if (typeof globalThis.Headers !== "undefined") {
|
|
20886
|
-
const headers = new globalThis.Headers(initHeaders ?? {});
|
|
20887
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20888
|
-
headers.set(k, v);
|
|
20889
|
-
}
|
|
20890
|
-
return headers;
|
|
20891
|
-
}
|
|
20892
|
-
if (Array.isArray(initHeaders)) {
|
|
20893
|
-
const nextHeaders2 = [...initHeaders];
|
|
20894
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20895
|
-
const idx = nextHeaders2.findIndex((item) => Array.isArray(item) && typeof item[0] === "string" && item[0].toLowerCase() === k.toLowerCase());
|
|
20896
|
-
if (idx !== -1) {
|
|
20897
|
-
nextHeaders2[idx] = [k, v];
|
|
20898
|
-
} else {
|
|
20899
|
-
nextHeaders2.push([k, v]);
|
|
20900
|
-
}
|
|
20901
|
-
}
|
|
20902
|
-
return nextHeaders2;
|
|
20903
|
-
}
|
|
20904
|
-
const nextHeaders = {};
|
|
20905
|
-
if (initHeaders && typeof initHeaders === "object") {
|
|
20906
|
-
for (const [k, v] of Object.entries(initHeaders)) {
|
|
20907
|
-
nextHeaders[k] = String(v);
|
|
20908
|
-
}
|
|
20909
|
-
}
|
|
20910
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20911
|
-
const existingKey = Object.keys(nextHeaders).find((key) => key.toLowerCase() === k.toLowerCase());
|
|
20912
|
-
if (existingKey) {
|
|
20913
|
-
nextHeaders[existingKey] = v;
|
|
20914
|
-
} else {
|
|
20915
|
-
nextHeaders[k] = v;
|
|
20916
|
-
}
|
|
20917
|
-
}
|
|
20918
|
-
return nextHeaders;
|
|
20919
|
-
}
|
|
20920
|
-
function toUrlString2(value) {
|
|
20921
|
-
if (typeof value === "string") {
|
|
20922
|
-
return value;
|
|
20923
|
-
}
|
|
20924
|
-
const candidate = value.url;
|
|
20925
|
-
if (candidate) {
|
|
20926
|
-
return candidate;
|
|
20927
|
-
}
|
|
20928
|
-
return value.toString();
|
|
20929
|
-
}
|
|
20930
|
-
function resolveModelTier2(baseModelId, init) {
|
|
20931
|
-
const parts = baseModelId.split("@");
|
|
20932
|
-
const base = parts[0] || "";
|
|
20933
|
-
const suffixTier = parts[1]?.toLowerCase();
|
|
20934
|
-
const mapping = TIER_MAPPING[base];
|
|
20935
|
-
if (!mapping) {
|
|
20936
|
-
return baseModelId;
|
|
20937
|
-
}
|
|
20938
|
-
const headerTier = getSafeHeader2(init?.headers, "x-agy-tier")?.toLowerCase() || null;
|
|
20939
|
-
const requestedTier = headerTier || suffixTier;
|
|
20940
|
-
if (requestedTier && Object.prototype.hasOwnProperty.call(mapping, requestedTier)) {
|
|
20941
|
-
return mapping[requestedTier] || baseModelId;
|
|
20942
|
-
}
|
|
20943
|
-
return mapping["medium"] ?? mapping["high"];
|
|
20944
|
-
}
|
|
20945
|
-
var storedAuthOverrideForTesting = void 0;
|
|
20946
|
-
function loadStoredAuthFromJson() {
|
|
20947
|
-
if (storedAuthOverrideForTesting !== void 0) {
|
|
20948
|
-
return storedAuthOverrideForTesting;
|
|
20949
|
-
}
|
|
20950
|
-
const authPath = join6(homedir4(), ".local", "share", "opencode", "auth.json");
|
|
20951
|
-
try {
|
|
20952
|
-
if (existsSync6(authPath)) {
|
|
20953
|
-
const content = readFileSync5(authPath, "utf8");
|
|
20954
|
-
const data = JSON.parse(content);
|
|
20955
|
-
return data?.[AGY_PROVIDER_ID];
|
|
20956
|
-
}
|
|
20957
|
-
} catch {
|
|
20873
|
+
} catch {
|
|
20958
20874
|
}
|
|
20959
20875
|
return void 0;
|
|
20960
20876
|
}
|
|
@@ -20986,19 +20902,21 @@ function saveStoredAuthToJson(authRecord) {
|
|
|
20986
20902
|
} catch {
|
|
20987
20903
|
}
|
|
20988
20904
|
}
|
|
20905
|
+
|
|
20906
|
+
// src/plugin/v2-fetch.ts
|
|
20989
20907
|
function createV2FetchInterceptor(getAuthSnapshot) {
|
|
20990
20908
|
return async function agyV2Fetch(input, init) {
|
|
20991
20909
|
const isGL = isGenerativeLanguageRequest(input);
|
|
20992
|
-
const isInternal =
|
|
20910
|
+
const isInternal = toUrlString(input).includes("cloudcode-pa.googleapis.com");
|
|
20993
20911
|
if (!isGL && !isInternal) {
|
|
20994
|
-
return
|
|
20912
|
+
return (globalThis.fetch || fetch)(input, init);
|
|
20995
20913
|
}
|
|
20996
20914
|
let rawAuth = getAuthSnapshot ? await getAuthSnapshot() : void 0;
|
|
20997
20915
|
if (!rawAuth) {
|
|
20998
20916
|
rawAuth = loadStoredAuthFromJson();
|
|
20999
20917
|
}
|
|
21000
20918
|
if (!rawAuth || !isOAuthAuth(rawAuth)) {
|
|
21001
|
-
return
|
|
20919
|
+
return (globalThis.fetch || fetch)(input, init);
|
|
21002
20920
|
}
|
|
21003
20921
|
let authRecord = resolveCachedAuth(rawAuth);
|
|
21004
20922
|
if (accessTokenExpired(authRecord)) {
|
|
@@ -21009,19 +20927,19 @@ function createV2FetchInterceptor(getAuthSnapshot) {
|
|
|
21009
20927
|
}
|
|
21010
20928
|
}
|
|
21011
20929
|
if (!authRecord.access) {
|
|
21012
|
-
return
|
|
20930
|
+
return (globalThis.fetch || fetch)(input, init);
|
|
21013
20931
|
}
|
|
21014
20932
|
if (isInternal) {
|
|
21015
|
-
const hasAuth =
|
|
20933
|
+
const hasAuth = getSafeHeader(init?.headers, "Authorization") !== void 0;
|
|
21016
20934
|
if (hasAuth) {
|
|
21017
|
-
return
|
|
20935
|
+
return (globalThis.fetch || fetch)(input, init);
|
|
21018
20936
|
}
|
|
21019
20937
|
const userAgent = buildAgyCliUserAgent();
|
|
21020
|
-
const headers =
|
|
20938
|
+
const headers = setSafeHeaders(init?.headers, {
|
|
21021
20939
|
Authorization: `Bearer ${authRecord.access}`,
|
|
21022
20940
|
"User-Agent": userAgent
|
|
21023
20941
|
});
|
|
21024
|
-
return
|
|
20942
|
+
return (globalThis.fetch || fetch)(input, {
|
|
21025
20943
|
...init,
|
|
21026
20944
|
headers
|
|
21027
20945
|
});
|
|
@@ -21047,7 +20965,7 @@ function createV2FetchInterceptor(getAuthSnapshot) {
|
|
|
21047
20965
|
let modifiedInput = input;
|
|
21048
20966
|
if (isGL && originalRequestedModel) {
|
|
21049
20967
|
const originalBase = originalRequestedModel.replace("google-agy/", "");
|
|
21050
|
-
const resolvedBase =
|
|
20968
|
+
const resolvedBase = resolveModelTier(originalBase, init);
|
|
21051
20969
|
if (originalBase !== resolvedBase) {
|
|
21052
20970
|
if (typeof modifiedInput === "string") {
|
|
21053
20971
|
modifiedInput = modifiedInput.replace(`models/${originalBase}`, `models/${resolvedBase}`);
|
|
@@ -21067,7 +20985,7 @@ function createV2FetchInterceptor(getAuthSnapshot) {
|
|
|
21067
20985
|
const chatLogger = createChatLogger();
|
|
21068
20986
|
if (chatLogger) {
|
|
21069
20987
|
chatLogger.logRequest(
|
|
21070
|
-
|
|
20988
|
+
toUrlString(transformed.request),
|
|
21071
20989
|
transformed.init.method || "GET",
|
|
21072
20990
|
transformed.init.headers,
|
|
21073
20991
|
transformed.init.body
|
|
@@ -21084,6 +21002,295 @@ function createV2FetchInterceptor(getAuthSnapshot) {
|
|
|
21084
21002
|
);
|
|
21085
21003
|
};
|
|
21086
21004
|
}
|
|
21005
|
+
|
|
21006
|
+
// src/plugin/v2-session.ts
|
|
21007
|
+
function createV2HttpRequestHook(state = {}) {
|
|
21008
|
+
return async (event) => {
|
|
21009
|
+
if (!event) return;
|
|
21010
|
+
const rawUrl = typeof event.url === "string" ? event.url : event.request?.url || "";
|
|
21011
|
+
const isGL = isGenerativeLanguageRequest(rawUrl);
|
|
21012
|
+
const isInternal = rawUrl.includes("cloudcode-pa.googleapis.com");
|
|
21013
|
+
if (!isGL && !isInternal) {
|
|
21014
|
+
return;
|
|
21015
|
+
}
|
|
21016
|
+
event.headers = event.headers || {};
|
|
21017
|
+
let modelName;
|
|
21018
|
+
let rawAuth = event.auth;
|
|
21019
|
+
if (rawAuth && !rawAuth.type) {
|
|
21020
|
+
const tokenVal = rawAuth.access || rawAuth.token;
|
|
21021
|
+
if (tokenVal || rawAuth.refresh) {
|
|
21022
|
+
rawAuth = { type: "oauth", access: tokenVal, ...rawAuth };
|
|
21023
|
+
}
|
|
21024
|
+
}
|
|
21025
|
+
if (!rawAuth || !isOAuthAuth(rawAuth)) {
|
|
21026
|
+
rawAuth = loadStoredAuthFromJson();
|
|
21027
|
+
}
|
|
21028
|
+
let authRecord = rawAuth && isOAuthAuth(rawAuth) ? resolveCachedAuth(rawAuth) : void 0;
|
|
21029
|
+
if (authRecord && accessTokenExpired(authRecord)) {
|
|
21030
|
+
const refreshed = await refreshAccessToken(authRecord, { auth: { set: async () => {
|
|
21031
|
+
} } });
|
|
21032
|
+
if (refreshed) {
|
|
21033
|
+
authRecord = refreshed;
|
|
21034
|
+
saveStoredAuthToJson(refreshed);
|
|
21035
|
+
}
|
|
21036
|
+
}
|
|
21037
|
+
if (isGL) {
|
|
21038
|
+
const parsed = parseGenerativeLanguageRequest(rawUrl);
|
|
21039
|
+
modelName = parsed?.effectiveModel;
|
|
21040
|
+
if (modelName) {
|
|
21041
|
+
state.lastInterceptedModel = modelName;
|
|
21042
|
+
}
|
|
21043
|
+
if (typeof event.headers.delete === "function") {
|
|
21044
|
+
event.headers.delete("x-goog-api-key");
|
|
21045
|
+
event.headers.delete("api-key");
|
|
21046
|
+
} else {
|
|
21047
|
+
for (const key of Object.keys(event.headers)) {
|
|
21048
|
+
const lower = key.toLowerCase();
|
|
21049
|
+
if (lower === "x-goog-api-key" || lower === "api-key") {
|
|
21050
|
+
delete event.headers[key];
|
|
21051
|
+
}
|
|
21052
|
+
}
|
|
21053
|
+
}
|
|
21054
|
+
if (event.request?.headers) {
|
|
21055
|
+
if (typeof event.request.headers.delete === "function") {
|
|
21056
|
+
event.request.headers.delete("x-goog-api-key");
|
|
21057
|
+
event.request.headers.delete("api-key");
|
|
21058
|
+
} else {
|
|
21059
|
+
for (const key of Object.keys(event.request.headers)) {
|
|
21060
|
+
const lower = key.toLowerCase();
|
|
21061
|
+
if (lower === "x-goog-api-key" || lower === "api-key") {
|
|
21062
|
+
delete event.request.headers[key];
|
|
21063
|
+
}
|
|
21064
|
+
}
|
|
21065
|
+
}
|
|
21066
|
+
}
|
|
21067
|
+
let cleanUrl = rawUrl;
|
|
21068
|
+
try {
|
|
21069
|
+
const parsedUrl = new URL(rawUrl);
|
|
21070
|
+
let urlChanged = false;
|
|
21071
|
+
for (const param of ["key", "x-goog-api-key", "api-key"]) {
|
|
21072
|
+
if (parsedUrl.searchParams.has(param)) {
|
|
21073
|
+
parsedUrl.searchParams.delete(param);
|
|
21074
|
+
urlChanged = true;
|
|
21075
|
+
}
|
|
21076
|
+
}
|
|
21077
|
+
if (urlChanged) {
|
|
21078
|
+
cleanUrl = parsedUrl.toString();
|
|
21079
|
+
}
|
|
21080
|
+
} catch {
|
|
21081
|
+
}
|
|
21082
|
+
if (authRecord && authRecord.access) {
|
|
21083
|
+
let projectContext;
|
|
21084
|
+
try {
|
|
21085
|
+
projectContext = await ensureProjectContext(
|
|
21086
|
+
authRecord,
|
|
21087
|
+
{ auth: { set: async () => {
|
|
21088
|
+
} } },
|
|
21089
|
+
void 0,
|
|
21090
|
+
modelName
|
|
21091
|
+
);
|
|
21092
|
+
} catch {
|
|
21093
|
+
projectContext = {
|
|
21094
|
+
effectiveProjectId: parseRefreshParts(authRecord.refresh).projectId || "antigravity",
|
|
21095
|
+
auth: authRecord
|
|
21096
|
+
};
|
|
21097
|
+
}
|
|
21098
|
+
const originalRequestedModel = modelName;
|
|
21099
|
+
let modifiedUrl = cleanUrl;
|
|
21100
|
+
if (originalRequestedModel) {
|
|
21101
|
+
const originalBase = originalRequestedModel.replace("google-agy/", "");
|
|
21102
|
+
const initHeaders = event.headers instanceof Headers ? event.headers : event.request?.headers;
|
|
21103
|
+
const resolvedBase = resolveModelTier(originalBase, { headers: initHeaders });
|
|
21104
|
+
if (originalBase !== resolvedBase) {
|
|
21105
|
+
modifiedUrl = modifiedUrl.replace(`models/${originalBase}`, `models/${resolvedBase}`);
|
|
21106
|
+
}
|
|
21107
|
+
}
|
|
21108
|
+
let bodyPayload = event.body;
|
|
21109
|
+
if (bodyPayload === void 0 && event.request) {
|
|
21110
|
+
if (typeof event.request.clone === "function") {
|
|
21111
|
+
try {
|
|
21112
|
+
bodyPayload = await event.request.clone().text();
|
|
21113
|
+
} catch {
|
|
21114
|
+
}
|
|
21115
|
+
} else if (event.request.body !== void 0) {
|
|
21116
|
+
bodyPayload = event.request.body;
|
|
21117
|
+
}
|
|
21118
|
+
}
|
|
21119
|
+
let preExistingUserAgent;
|
|
21120
|
+
if (typeof event.headers?.get === "function") {
|
|
21121
|
+
preExistingUserAgent = event.headers.get("user-agent") || event.headers.get("User-Agent") || void 0;
|
|
21122
|
+
} else if (event.headers && typeof event.headers === "object") {
|
|
21123
|
+
preExistingUserAgent = event.headers["user-agent"] || event.headers["User-Agent"] || void 0;
|
|
21124
|
+
}
|
|
21125
|
+
if (!preExistingUserAgent && typeof event.request?.headers?.get === "function") {
|
|
21126
|
+
preExistingUserAgent = event.request.headers.get("user-agent") || event.request.headers.get("User-Agent") || void 0;
|
|
21127
|
+
} else if (!preExistingUserAgent && event.request?.headers && typeof event.request.headers === "object") {
|
|
21128
|
+
preExistingUserAgent = event.request.headers["user-agent"] || event.request.headers["User-Agent"] || void 0;
|
|
21129
|
+
}
|
|
21130
|
+
const method = event.method || event.request?.method || "POST";
|
|
21131
|
+
const requestHeaders = event.headers || event.request?.headers;
|
|
21132
|
+
const transformed = prepareAgyRequest(
|
|
21133
|
+
modifiedUrl,
|
|
21134
|
+
{
|
|
21135
|
+
method,
|
|
21136
|
+
headers: requestHeaders,
|
|
21137
|
+
body: bodyPayload
|
|
21138
|
+
},
|
|
21139
|
+
authRecord.access,
|
|
21140
|
+
projectContext.effectiveProjectId
|
|
21141
|
+
);
|
|
21142
|
+
const targetUrl = toUrlString(transformed.request);
|
|
21143
|
+
if (typeof event.url === "string") {
|
|
21144
|
+
event.url = targetUrl;
|
|
21145
|
+
}
|
|
21146
|
+
if (event.request && typeof event.request === "object") {
|
|
21147
|
+
if (typeof Request !== "undefined" && event.request instanceof Request) {
|
|
21148
|
+
event.request = new Request(targetUrl, {
|
|
21149
|
+
method: transformed.init.method,
|
|
21150
|
+
headers: transformed.init.headers,
|
|
21151
|
+
body: transformed.init.body
|
|
21152
|
+
});
|
|
21153
|
+
} else if (typeof event.request.url === "string") {
|
|
21154
|
+
try {
|
|
21155
|
+
event.request.url = targetUrl;
|
|
21156
|
+
} catch {
|
|
21157
|
+
}
|
|
21158
|
+
}
|
|
21159
|
+
}
|
|
21160
|
+
const headerEntries = transformed.init.headers instanceof Headers ? Array.from(transformed.init.headers.entries()) : Object.entries(transformed.init.headers || {});
|
|
21161
|
+
for (const [k, v] of headerEntries) {
|
|
21162
|
+
const lowerK = k.toLowerCase();
|
|
21163
|
+
if (lowerK === "user-agent") {
|
|
21164
|
+
if (preExistingUserAgent) {
|
|
21165
|
+
continue;
|
|
21166
|
+
}
|
|
21167
|
+
if (typeof event.headers?.set === "function") {
|
|
21168
|
+
event.headers.set("User-Agent", v);
|
|
21169
|
+
} else if (event.headers) {
|
|
21170
|
+
event.headers["User-Agent"] = v;
|
|
21171
|
+
}
|
|
21172
|
+
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21173
|
+
event.request.headers.set("User-Agent", v);
|
|
21174
|
+
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21175
|
+
event.request.headers["User-Agent"] = v;
|
|
21176
|
+
}
|
|
21177
|
+
continue;
|
|
21178
|
+
}
|
|
21179
|
+
if (typeof event.headers?.set === "function") {
|
|
21180
|
+
event.headers.set(k, v);
|
|
21181
|
+
} else if (event.headers) {
|
|
21182
|
+
event.headers[k] = v;
|
|
21183
|
+
}
|
|
21184
|
+
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21185
|
+
event.request.headers.set(k, v);
|
|
21186
|
+
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21187
|
+
event.request.headers[k] = v;
|
|
21188
|
+
}
|
|
21189
|
+
}
|
|
21190
|
+
if (transformed.init.body !== void 0) {
|
|
21191
|
+
event.body = transformed.init.body;
|
|
21192
|
+
if (event.request && typeof event.request === "object" && !(event.request instanceof Request)) {
|
|
21193
|
+
event.request.body = transformed.init.body;
|
|
21194
|
+
}
|
|
21195
|
+
}
|
|
21196
|
+
} else {
|
|
21197
|
+
if (typeof event.url === "string") {
|
|
21198
|
+
event.url = cleanUrl;
|
|
21199
|
+
}
|
|
21200
|
+
if (event.request && typeof event.request === "object") {
|
|
21201
|
+
if (typeof event.request.url === "string") {
|
|
21202
|
+
event.request.url = cleanUrl;
|
|
21203
|
+
}
|
|
21204
|
+
}
|
|
21205
|
+
}
|
|
21206
|
+
}
|
|
21207
|
+
if (authRecord && authRecord.access) {
|
|
21208
|
+
if (typeof event.headers?.set === "function") {
|
|
21209
|
+
event.headers.set("Authorization", `Bearer ${authRecord.access}`);
|
|
21210
|
+
} else if (event.headers) {
|
|
21211
|
+
event.headers["Authorization"] = `Bearer ${authRecord.access}`;
|
|
21212
|
+
}
|
|
21213
|
+
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21214
|
+
event.request.headers.set("Authorization", `Bearer ${authRecord.access}`);
|
|
21215
|
+
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21216
|
+
event.request.headers["Authorization"] = `Bearer ${authRecord.access}`;
|
|
21217
|
+
}
|
|
21218
|
+
}
|
|
21219
|
+
const userAgent = buildAgyCliUserAgent(modelName);
|
|
21220
|
+
if (typeof event.headers?.set === "function") {
|
|
21221
|
+
if (!event.headers.get("User-Agent") && !event.headers.get("user-agent")) {
|
|
21222
|
+
event.headers.set("User-Agent", userAgent);
|
|
21223
|
+
}
|
|
21224
|
+
} else if (event.headers) {
|
|
21225
|
+
if (!event.headers["User-Agent"] && !event.headers["user-agent"]) {
|
|
21226
|
+
event.headers["User-Agent"] = userAgent;
|
|
21227
|
+
}
|
|
21228
|
+
}
|
|
21229
|
+
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21230
|
+
if (!event.request.headers.get("User-Agent") && !event.request.headers.get("user-agent")) {
|
|
21231
|
+
event.request.headers.set("User-Agent", userAgent);
|
|
21232
|
+
}
|
|
21233
|
+
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21234
|
+
if (!event.request.headers["User-Agent"] && !event.request.headers["user-agent"]) {
|
|
21235
|
+
event.request.headers["User-Agent"] = userAgent;
|
|
21236
|
+
}
|
|
21237
|
+
}
|
|
21238
|
+
};
|
|
21239
|
+
}
|
|
21240
|
+
function createV2HttpResponseHook(state = {}) {
|
|
21241
|
+
return async (event) => {
|
|
21242
|
+
if (!event || !event.response) return;
|
|
21243
|
+
const rawUrl = typeof event.url === "string" ? event.url : event.request?.url || "";
|
|
21244
|
+
const isInternal = rawUrl.includes("cloudcode-pa.googleapis.com");
|
|
21245
|
+
if (isInternal && event.response instanceof Response) {
|
|
21246
|
+
const isStreaming = rawUrl.includes(":streamGenerateCode") || event.response.headers.get("content-type")?.includes("text/event-stream");
|
|
21247
|
+
const parsedModel = parseGenerativeLanguageRequest(rawUrl)?.effectiveModel || state.lastInterceptedModel;
|
|
21248
|
+
const transformed = await transformAgyResponse(
|
|
21249
|
+
event.response,
|
|
21250
|
+
!!isStreaming,
|
|
21251
|
+
null,
|
|
21252
|
+
parsedModel,
|
|
21253
|
+
void 0,
|
|
21254
|
+
void 0
|
|
21255
|
+
);
|
|
21256
|
+
event.response = transformed;
|
|
21257
|
+
}
|
|
21258
|
+
};
|
|
21259
|
+
}
|
|
21260
|
+
function createV2RetryHook() {
|
|
21261
|
+
return async (event) => {
|
|
21262
|
+
if (!event) return;
|
|
21263
|
+
const response = event.response;
|
|
21264
|
+
if (response instanceof Response) {
|
|
21265
|
+
if (response.status === 429 || response.status === 503) {
|
|
21266
|
+
const quota = await classifyQuotaResponse(response);
|
|
21267
|
+
if (quota?.retryDelayMs) {
|
|
21268
|
+
event.retryDelayMs = quota.retryDelayMs;
|
|
21269
|
+
} else {
|
|
21270
|
+
event.retryDelayMs = await resolveRetryDelayMs(response, event.attempt || 1);
|
|
21271
|
+
}
|
|
21272
|
+
}
|
|
21273
|
+
} else if (event.details && Array.isArray(event.details)) {
|
|
21274
|
+
const retryInfo = event.details.find(
|
|
21275
|
+
(d) => d && d["@type"] === "type.googleapis.com/google.rpc.RetryInfo"
|
|
21276
|
+
);
|
|
21277
|
+
if (retryInfo?.retryDelay) {
|
|
21278
|
+
const delayMs = retryInternals.parseRetryDelayValue(retryInfo.retryDelay);
|
|
21279
|
+
if (delayMs !== null) {
|
|
21280
|
+
event.retryDelayMs = delayMs;
|
|
21281
|
+
}
|
|
21282
|
+
}
|
|
21283
|
+
}
|
|
21284
|
+
};
|
|
21285
|
+
}
|
|
21286
|
+
function registerV2SessionHooks(ctx) {
|
|
21287
|
+
const state = {};
|
|
21288
|
+
ctx.session.hook("http.request", createV2HttpRequestHook(state), { providerID: AGY_PROVIDER_ID });
|
|
21289
|
+
ctx.session.hook("http.response", createV2HttpResponseHook(state), { providerID: AGY_PROVIDER_ID });
|
|
21290
|
+
ctx.session.hook("retry", createV2RetryHook(), { providerID: AGY_PROVIDER_ID });
|
|
21291
|
+
}
|
|
21292
|
+
|
|
21293
|
+
// src/plugin/v2.ts
|
|
21087
21294
|
async function setupOpenCodeV2(ctx) {
|
|
21088
21295
|
const resolveVariants = (modelId) => {
|
|
21089
21296
|
const mapping = TIER_MAPPING[modelId];
|
|
@@ -21365,292 +21572,7 @@ async function setupOpenCodeV2(ctx) {
|
|
|
21365
21572
|
event.options.apiKey = "dummy";
|
|
21366
21573
|
event.options.fetch = createV2FetchInterceptor();
|
|
21367
21574
|
});
|
|
21368
|
-
|
|
21369
|
-
ctx.session.hook(
|
|
21370
|
-
"http.request",
|
|
21371
|
-
async (event) => {
|
|
21372
|
-
if (!event) return;
|
|
21373
|
-
const rawUrl = typeof event.url === "string" ? event.url : event.request?.url || "";
|
|
21374
|
-
const isGL = isGenerativeLanguageRequest(rawUrl);
|
|
21375
|
-
const isInternal = rawUrl.includes("cloudcode-pa.googleapis.com");
|
|
21376
|
-
if (!isGL && !isInternal) {
|
|
21377
|
-
return;
|
|
21378
|
-
}
|
|
21379
|
-
event.headers = event.headers || {};
|
|
21380
|
-
let modelName;
|
|
21381
|
-
let rawAuth = event.auth;
|
|
21382
|
-
if (rawAuth && !rawAuth.type) {
|
|
21383
|
-
const tokenVal = rawAuth.access || rawAuth.token;
|
|
21384
|
-
if (tokenVal || rawAuth.refresh) {
|
|
21385
|
-
rawAuth = { type: "oauth", access: tokenVal, ...rawAuth };
|
|
21386
|
-
}
|
|
21387
|
-
}
|
|
21388
|
-
if (!rawAuth || !isOAuthAuth(rawAuth)) {
|
|
21389
|
-
rawAuth = loadStoredAuthFromJson();
|
|
21390
|
-
}
|
|
21391
|
-
let authRecord = rawAuth && isOAuthAuth(rawAuth) ? resolveCachedAuth(rawAuth) : void 0;
|
|
21392
|
-
if (authRecord && accessTokenExpired(authRecord)) {
|
|
21393
|
-
const refreshed = await refreshAccessToken(authRecord, { auth: { set: async () => {
|
|
21394
|
-
} } });
|
|
21395
|
-
if (refreshed) {
|
|
21396
|
-
authRecord = refreshed;
|
|
21397
|
-
saveStoredAuthToJson(refreshed);
|
|
21398
|
-
}
|
|
21399
|
-
}
|
|
21400
|
-
if (isGL) {
|
|
21401
|
-
const parsed = parseGenerativeLanguageRequest(rawUrl);
|
|
21402
|
-
modelName = parsed?.effectiveModel;
|
|
21403
|
-
if (modelName) {
|
|
21404
|
-
lastInterceptedModel = modelName;
|
|
21405
|
-
}
|
|
21406
|
-
if (typeof event.headers.delete === "function") {
|
|
21407
|
-
event.headers.delete("x-goog-api-key");
|
|
21408
|
-
event.headers.delete("api-key");
|
|
21409
|
-
} else {
|
|
21410
|
-
for (const key of Object.keys(event.headers)) {
|
|
21411
|
-
const lower = key.toLowerCase();
|
|
21412
|
-
if (lower === "x-goog-api-key" || lower === "api-key") {
|
|
21413
|
-
delete event.headers[key];
|
|
21414
|
-
}
|
|
21415
|
-
}
|
|
21416
|
-
}
|
|
21417
|
-
if (event.request?.headers) {
|
|
21418
|
-
if (typeof event.request.headers.delete === "function") {
|
|
21419
|
-
event.request.headers.delete("x-goog-api-key");
|
|
21420
|
-
event.request.headers.delete("api-key");
|
|
21421
|
-
} else {
|
|
21422
|
-
for (const key of Object.keys(event.request.headers)) {
|
|
21423
|
-
const lower = key.toLowerCase();
|
|
21424
|
-
if (lower === "x-goog-api-key" || lower === "api-key") {
|
|
21425
|
-
delete event.request.headers[key];
|
|
21426
|
-
}
|
|
21427
|
-
}
|
|
21428
|
-
}
|
|
21429
|
-
}
|
|
21430
|
-
let cleanUrl = rawUrl;
|
|
21431
|
-
try {
|
|
21432
|
-
const parsedUrl = new URL(rawUrl);
|
|
21433
|
-
let urlChanged = false;
|
|
21434
|
-
for (const param of ["key", "x-goog-api-key", "api-key"]) {
|
|
21435
|
-
if (parsedUrl.searchParams.has(param)) {
|
|
21436
|
-
parsedUrl.searchParams.delete(param);
|
|
21437
|
-
urlChanged = true;
|
|
21438
|
-
}
|
|
21439
|
-
}
|
|
21440
|
-
if (urlChanged) {
|
|
21441
|
-
cleanUrl = parsedUrl.toString();
|
|
21442
|
-
}
|
|
21443
|
-
} catch {
|
|
21444
|
-
}
|
|
21445
|
-
if (authRecord && authRecord.access) {
|
|
21446
|
-
let projectContext;
|
|
21447
|
-
try {
|
|
21448
|
-
projectContext = await ensureProjectContext(
|
|
21449
|
-
authRecord,
|
|
21450
|
-
{ auth: { set: async () => {
|
|
21451
|
-
} } },
|
|
21452
|
-
void 0,
|
|
21453
|
-
modelName
|
|
21454
|
-
);
|
|
21455
|
-
} catch {
|
|
21456
|
-
projectContext = {
|
|
21457
|
-
effectiveProjectId: parseRefreshParts(authRecord.refresh).projectId || "antigravity",
|
|
21458
|
-
auth: authRecord
|
|
21459
|
-
};
|
|
21460
|
-
}
|
|
21461
|
-
const originalRequestedModel = modelName;
|
|
21462
|
-
let modifiedUrl = cleanUrl;
|
|
21463
|
-
if (originalRequestedModel) {
|
|
21464
|
-
const originalBase = originalRequestedModel.replace("google-agy/", "");
|
|
21465
|
-
const initHeaders = event.headers instanceof Headers ? event.headers : event.request?.headers;
|
|
21466
|
-
const resolvedBase = resolveModelTier2(originalBase, { headers: initHeaders });
|
|
21467
|
-
if (originalBase !== resolvedBase) {
|
|
21468
|
-
modifiedUrl = modifiedUrl.replace(`models/${originalBase}`, `models/${resolvedBase}`);
|
|
21469
|
-
}
|
|
21470
|
-
}
|
|
21471
|
-
let bodyPayload = event.body;
|
|
21472
|
-
if (bodyPayload === void 0 && event.request) {
|
|
21473
|
-
if (typeof event.request.clone === "function") {
|
|
21474
|
-
try {
|
|
21475
|
-
bodyPayload = await event.request.clone().text();
|
|
21476
|
-
} catch {
|
|
21477
|
-
}
|
|
21478
|
-
} else if (event.request.body !== void 0) {
|
|
21479
|
-
bodyPayload = event.request.body;
|
|
21480
|
-
}
|
|
21481
|
-
}
|
|
21482
|
-
let preExistingUserAgent;
|
|
21483
|
-
if (typeof event.headers?.get === "function") {
|
|
21484
|
-
preExistingUserAgent = event.headers.get("user-agent") || event.headers.get("User-Agent") || void 0;
|
|
21485
|
-
} else if (event.headers && typeof event.headers === "object") {
|
|
21486
|
-
preExistingUserAgent = event.headers["user-agent"] || event.headers["User-Agent"] || void 0;
|
|
21487
|
-
}
|
|
21488
|
-
if (!preExistingUserAgent && typeof event.request?.headers?.get === "function") {
|
|
21489
|
-
preExistingUserAgent = event.request.headers.get("user-agent") || event.request.headers.get("User-Agent") || void 0;
|
|
21490
|
-
} else if (!preExistingUserAgent && event.request?.headers && typeof event.request.headers === "object") {
|
|
21491
|
-
preExistingUserAgent = event.request.headers["user-agent"] || event.request.headers["User-Agent"] || void 0;
|
|
21492
|
-
}
|
|
21493
|
-
const method = event.method || event.request?.method || "POST";
|
|
21494
|
-
const requestHeaders = event.headers || event.request?.headers;
|
|
21495
|
-
const transformed = prepareAgyRequest(
|
|
21496
|
-
modifiedUrl,
|
|
21497
|
-
{
|
|
21498
|
-
method,
|
|
21499
|
-
headers: requestHeaders,
|
|
21500
|
-
body: bodyPayload
|
|
21501
|
-
},
|
|
21502
|
-
authRecord.access,
|
|
21503
|
-
projectContext.effectiveProjectId
|
|
21504
|
-
);
|
|
21505
|
-
const targetUrl = toUrlString2(transformed.request);
|
|
21506
|
-
if (typeof event.url === "string") {
|
|
21507
|
-
event.url = targetUrl;
|
|
21508
|
-
}
|
|
21509
|
-
if (event.request && typeof event.request === "object") {
|
|
21510
|
-
if (typeof Request !== "undefined" && event.request instanceof Request) {
|
|
21511
|
-
event.request = new Request(targetUrl, {
|
|
21512
|
-
method: transformed.init.method,
|
|
21513
|
-
headers: transformed.init.headers,
|
|
21514
|
-
body: transformed.init.body
|
|
21515
|
-
});
|
|
21516
|
-
} else if (typeof event.request.url === "string") {
|
|
21517
|
-
try {
|
|
21518
|
-
event.request.url = targetUrl;
|
|
21519
|
-
} catch {
|
|
21520
|
-
}
|
|
21521
|
-
}
|
|
21522
|
-
}
|
|
21523
|
-
const headerEntries = transformed.init.headers instanceof Headers ? Array.from(transformed.init.headers.entries()) : Object.entries(transformed.init.headers || {});
|
|
21524
|
-
for (const [k, v] of headerEntries) {
|
|
21525
|
-
const lowerK = k.toLowerCase();
|
|
21526
|
-
if (lowerK === "user-agent") {
|
|
21527
|
-
if (preExistingUserAgent) {
|
|
21528
|
-
continue;
|
|
21529
|
-
}
|
|
21530
|
-
if (typeof event.headers?.set === "function") {
|
|
21531
|
-
event.headers.set("User-Agent", v);
|
|
21532
|
-
} else if (event.headers) {
|
|
21533
|
-
event.headers["User-Agent"] = v;
|
|
21534
|
-
}
|
|
21535
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21536
|
-
event.request.headers.set("User-Agent", v);
|
|
21537
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21538
|
-
event.request.headers["User-Agent"] = v;
|
|
21539
|
-
}
|
|
21540
|
-
continue;
|
|
21541
|
-
}
|
|
21542
|
-
if (typeof event.headers?.set === "function") {
|
|
21543
|
-
event.headers.set(k, v);
|
|
21544
|
-
} else if (event.headers) {
|
|
21545
|
-
event.headers[k] = v;
|
|
21546
|
-
}
|
|
21547
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21548
|
-
event.request.headers.set(k, v);
|
|
21549
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21550
|
-
event.request.headers[k] = v;
|
|
21551
|
-
}
|
|
21552
|
-
}
|
|
21553
|
-
if (transformed.init.body !== void 0) {
|
|
21554
|
-
event.body = transformed.init.body;
|
|
21555
|
-
if (event.request && typeof event.request === "object" && !(event.request instanceof Request)) {
|
|
21556
|
-
event.request.body = transformed.init.body;
|
|
21557
|
-
}
|
|
21558
|
-
}
|
|
21559
|
-
} else {
|
|
21560
|
-
if (typeof event.url === "string") {
|
|
21561
|
-
event.url = cleanUrl;
|
|
21562
|
-
}
|
|
21563
|
-
if (event.request && typeof event.request === "object") {
|
|
21564
|
-
if (typeof event.request.url === "string") {
|
|
21565
|
-
event.request.url = cleanUrl;
|
|
21566
|
-
}
|
|
21567
|
-
}
|
|
21568
|
-
}
|
|
21569
|
-
}
|
|
21570
|
-
if (authRecord && authRecord.access) {
|
|
21571
|
-
if (typeof event.headers?.set === "function") {
|
|
21572
|
-
event.headers.set("Authorization", `Bearer ${authRecord.access}`);
|
|
21573
|
-
} else if (event.headers) {
|
|
21574
|
-
event.headers["Authorization"] = `Bearer ${authRecord.access}`;
|
|
21575
|
-
}
|
|
21576
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21577
|
-
event.request.headers.set("Authorization", `Bearer ${authRecord.access}`);
|
|
21578
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21579
|
-
event.request.headers["Authorization"] = `Bearer ${authRecord.access}`;
|
|
21580
|
-
}
|
|
21581
|
-
}
|
|
21582
|
-
const userAgent = buildAgyCliUserAgent(modelName);
|
|
21583
|
-
if (typeof event.headers?.set === "function") {
|
|
21584
|
-
if (!event.headers.get("User-Agent") && !event.headers.get("user-agent")) {
|
|
21585
|
-
event.headers.set("User-Agent", userAgent);
|
|
21586
|
-
}
|
|
21587
|
-
} else if (event.headers) {
|
|
21588
|
-
if (!event.headers["User-Agent"] && !event.headers["user-agent"]) {
|
|
21589
|
-
event.headers["User-Agent"] = userAgent;
|
|
21590
|
-
}
|
|
21591
|
-
}
|
|
21592
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21593
|
-
if (!event.request.headers.get("User-Agent") && !event.request.headers.get("user-agent")) {
|
|
21594
|
-
event.request.headers.set("User-Agent", userAgent);
|
|
21595
|
-
}
|
|
21596
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21597
|
-
if (!event.request.headers["User-Agent"] && !event.request.headers["user-agent"]) {
|
|
21598
|
-
event.request.headers["User-Agent"] = userAgent;
|
|
21599
|
-
}
|
|
21600
|
-
}
|
|
21601
|
-
},
|
|
21602
|
-
{ providerID: AGY_PROVIDER_ID }
|
|
21603
|
-
);
|
|
21604
|
-
ctx.session.hook(
|
|
21605
|
-
"http.response",
|
|
21606
|
-
async (event) => {
|
|
21607
|
-
if (!event || !event.response) return;
|
|
21608
|
-
const rawUrl = typeof event.url === "string" ? event.url : event.request?.url || "";
|
|
21609
|
-
const isInternal = rawUrl.includes("cloudcode-pa.googleapis.com");
|
|
21610
|
-
if (isInternal && event.response instanceof Response) {
|
|
21611
|
-
const isStreaming = rawUrl.includes(":streamGenerateCode") || event.response.headers.get("content-type")?.includes("text/event-stream");
|
|
21612
|
-
const parsedModel = parseGenerativeLanguageRequest(rawUrl)?.effectiveModel || lastInterceptedModel;
|
|
21613
|
-
const transformed = await transformAgyResponse(
|
|
21614
|
-
event.response,
|
|
21615
|
-
!!isStreaming,
|
|
21616
|
-
null,
|
|
21617
|
-
parsedModel,
|
|
21618
|
-
void 0,
|
|
21619
|
-
void 0
|
|
21620
|
-
);
|
|
21621
|
-
event.response = transformed;
|
|
21622
|
-
}
|
|
21623
|
-
},
|
|
21624
|
-
{ providerID: AGY_PROVIDER_ID }
|
|
21625
|
-
);
|
|
21626
|
-
ctx.session.hook(
|
|
21627
|
-
"retry",
|
|
21628
|
-
async (event) => {
|
|
21629
|
-
if (!event) return;
|
|
21630
|
-
const response = event.response;
|
|
21631
|
-
if (response instanceof Response) {
|
|
21632
|
-
if (response.status === 429 || response.status === 503) {
|
|
21633
|
-
const quota = await classifyQuotaResponse(response);
|
|
21634
|
-
if (quota?.retryDelayMs) {
|
|
21635
|
-
event.retryDelayMs = quota.retryDelayMs;
|
|
21636
|
-
} else {
|
|
21637
|
-
event.retryDelayMs = await resolveRetryDelayMs(response, event.attempt || 1);
|
|
21638
|
-
}
|
|
21639
|
-
}
|
|
21640
|
-
} else if (event.details && Array.isArray(event.details)) {
|
|
21641
|
-
const retryInfo = event.details.find(
|
|
21642
|
-
(d) => d && d["@type"] === "type.googleapis.com/google.rpc.RetryInfo"
|
|
21643
|
-
);
|
|
21644
|
-
if (retryInfo?.retryDelay) {
|
|
21645
|
-
const delayMs = retryInternals.parseRetryDelayValue(retryInfo.retryDelay);
|
|
21646
|
-
if (delayMs !== null) {
|
|
21647
|
-
event.retryDelayMs = delayMs;
|
|
21648
|
-
}
|
|
21649
|
-
}
|
|
21650
|
-
}
|
|
21651
|
-
},
|
|
21652
|
-
{ providerID: AGY_PROVIDER_ID }
|
|
21653
|
-
);
|
|
21575
|
+
registerV2SessionHooks(ctx);
|
|
21654
21576
|
}
|
|
21655
21577
|
var v2PluginDefinition = defineOpenCodeV2Plugin({
|
|
21656
21578
|
id: AGY_PROVIDER_ID,
|