@anthonyhaussman/opencode-agy-auth 1.2.12-alpha.0 → 1.2.13-alpha.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 +10 -0
- package/dist/index.js +591 -553
- package/dist/index.js.map +1 -1
- package/dist/src/plugin/quota-summary.d.ts +0 -2
- package/dist/src/plugin/quota.d.ts +0 -2
- package/dist/src/plugin/v2.d.ts +15 -7
- package/dist/src/plugin.d.ts +23 -2
- package/dist/src/sdk/agy-cli-version.d.ts +1 -1
- package/package.json +12 -1
- package/dist/src/plugin/headers.d.ts +0 -7
- package/dist/src/plugin/tier.d.ts +0 -28
- package/dist/src/plugin/v2-fetch.d.ts +0 -1
- package/dist/src/plugin/v2-session.d.ts +0 -7
- package/dist/src/plugin/v2-storage.d.ts +0 -3
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.13";
|
|
272
272
|
|
|
273
273
|
// src/sdk/user-agent.ts
|
|
274
274
|
var cachedUserAgent = null;
|
|
@@ -15337,12 +15337,6 @@ 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
|
-
`;
|
|
15346
15340
|
function createAgyQuotaTool({
|
|
15347
15341
|
client,
|
|
15348
15342
|
getAuthResolver,
|
|
@@ -15582,12 +15576,6 @@ function splitModelVariant(modelId) {
|
|
|
15582
15576
|
|
|
15583
15577
|
// src/plugin/quota-summary.ts
|
|
15584
15578
|
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
|
-
`;
|
|
15591
15579
|
function createAgyQuotaSummaryTool({
|
|
15592
15580
|
client,
|
|
15593
15581
|
getAuthResolver,
|
|
@@ -16072,13 +16060,12 @@ var models_default = {
|
|
|
16072
16060
|
}
|
|
16073
16061
|
},
|
|
16074
16062
|
experimentIds: [
|
|
16075
|
-
|
|
16063
|
+
106329237,
|
|
16076
16064
|
106760947,
|
|
16077
16065
|
106519115,
|
|
16078
16066
|
105979552,
|
|
16079
16067
|
105979574,
|
|
16080
16068
|
106015333,
|
|
16081
|
-
106705494,
|
|
16082
16069
|
106568772,
|
|
16083
16070
|
105867471,
|
|
16084
16071
|
106749606,
|
|
@@ -16178,7 +16165,7 @@ var models_default = {
|
|
|
16178
16165
|
modelProvider: "MODEL_PROVIDER_ANTHROPIC",
|
|
16179
16166
|
quotaInfo: {
|
|
16180
16167
|
remainingFraction: 1,
|
|
16181
|
-
resetTime: "2026-09-
|
|
16168
|
+
resetTime: "2026-09-29T10:26:06Z"
|
|
16182
16169
|
},
|
|
16183
16170
|
recommended: true,
|
|
16184
16171
|
supportedMimeTypes: {
|
|
@@ -16217,7 +16204,7 @@ var models_default = {
|
|
|
16217
16204
|
modelProvider: "MODEL_PROVIDER_ANTHROPIC",
|
|
16218
16205
|
quotaInfo: {
|
|
16219
16206
|
remainingFraction: 1,
|
|
16220
|
-
resetTime: "2026-09-
|
|
16207
|
+
resetTime: "2026-09-29T10:26:06Z"
|
|
16221
16208
|
},
|
|
16222
16209
|
recommended: true,
|
|
16223
16210
|
supportedMimeTypes: {
|
|
@@ -16253,8 +16240,8 @@ var models_default = {
|
|
|
16253
16240
|
},
|
|
16254
16241
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16255
16242
|
quotaInfo: {
|
|
16256
|
-
remainingFraction: 0.
|
|
16257
|
-
resetTime: "2026-09-
|
|
16243
|
+
remainingFraction: 0.9730856,
|
|
16244
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
16258
16245
|
},
|
|
16259
16246
|
recommended: true,
|
|
16260
16247
|
supportedMimeTypes: {
|
|
@@ -16336,8 +16323,8 @@ var models_default = {
|
|
|
16336
16323
|
},
|
|
16337
16324
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16338
16325
|
quotaInfo: {
|
|
16339
|
-
remainingFraction: 0.
|
|
16340
|
-
resetTime: "2026-09-
|
|
16326
|
+
remainingFraction: 0.9730856,
|
|
16327
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
16341
16328
|
},
|
|
16342
16329
|
recommended: true,
|
|
16343
16330
|
supportedMimeTypes: {
|
|
@@ -16419,8 +16406,8 @@ var models_default = {
|
|
|
16419
16406
|
},
|
|
16420
16407
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16421
16408
|
quotaInfo: {
|
|
16422
|
-
remainingFraction: 0.
|
|
16423
|
-
resetTime: "2026-09-
|
|
16409
|
+
remainingFraction: 0.9730856,
|
|
16410
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
16424
16411
|
},
|
|
16425
16412
|
recommended: true,
|
|
16426
16413
|
supportedMimeTypes: {
|
|
@@ -16499,8 +16486,8 @@ var models_default = {
|
|
|
16499
16486
|
},
|
|
16500
16487
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16501
16488
|
quotaInfo: {
|
|
16502
|
-
remainingFraction: 0.
|
|
16503
|
-
resetTime: "2026-09-
|
|
16489
|
+
remainingFraction: 0.9730856,
|
|
16490
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
16504
16491
|
},
|
|
16505
16492
|
recommended: true,
|
|
16506
16493
|
requiresImageOutputOutsideFunctionResponses: true,
|
|
@@ -16580,8 +16567,8 @@ var models_default = {
|
|
|
16580
16567
|
},
|
|
16581
16568
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16582
16569
|
quotaInfo: {
|
|
16583
|
-
remainingFraction: 0.
|
|
16584
|
-
resetTime: "2026-09-
|
|
16570
|
+
remainingFraction: 0.9730856,
|
|
16571
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
16585
16572
|
},
|
|
16586
16573
|
recommended: true,
|
|
16587
16574
|
supportedMimeTypes: {
|
|
@@ -16685,8 +16672,8 @@ var models_default = {
|
|
|
16685
16672
|
},
|
|
16686
16673
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16687
16674
|
quotaInfo: {
|
|
16688
|
-
remainingFraction: 0.
|
|
16689
|
-
resetTime: "2026-09-
|
|
16675
|
+
remainingFraction: 0.9730856,
|
|
16676
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
16690
16677
|
},
|
|
16691
16678
|
recommended: true,
|
|
16692
16679
|
supportedMimeTypes: {
|
|
@@ -16755,8 +16742,8 @@ var models_default = {
|
|
|
16755
16742
|
model: "MODEL_PLACEHOLDER_M21",
|
|
16756
16743
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16757
16744
|
quotaInfo: {
|
|
16758
|
-
remainingFraction: 0.
|
|
16759
|
-
resetTime: "2026-09-
|
|
16745
|
+
remainingFraction: 0.9730856,
|
|
16746
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
16760
16747
|
}
|
|
16761
16748
|
},
|
|
16762
16749
|
"gemini-3.1-flash-lite": {
|
|
@@ -16774,8 +16761,8 @@ var models_default = {
|
|
|
16774
16761
|
},
|
|
16775
16762
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16776
16763
|
quotaInfo: {
|
|
16777
|
-
remainingFraction: 0.
|
|
16778
|
-
resetTime: "2026-09-
|
|
16764
|
+
remainingFraction: 0.9730856,
|
|
16765
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
16779
16766
|
}
|
|
16780
16767
|
},
|
|
16781
16768
|
"gemini-3.1-pro-high": {
|
|
@@ -16806,8 +16793,8 @@ var models_default = {
|
|
|
16806
16793
|
},
|
|
16807
16794
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16808
16795
|
quotaInfo: {
|
|
16809
|
-
remainingFraction: 0.
|
|
16810
|
-
resetTime: "2026-09-
|
|
16796
|
+
remainingFraction: 0.9730856,
|
|
16797
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
16811
16798
|
},
|
|
16812
16799
|
recommended: true,
|
|
16813
16800
|
supportedMimeTypes: {
|
|
@@ -16897,8 +16884,8 @@ var models_default = {
|
|
|
16897
16884
|
},
|
|
16898
16885
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
16899
16886
|
quotaInfo: {
|
|
16900
|
-
remainingFraction: 0.
|
|
16901
|
-
resetTime: "2026-09-
|
|
16887
|
+
remainingFraction: 0.9730856,
|
|
16888
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
16902
16889
|
},
|
|
16903
16890
|
recommended: true,
|
|
16904
16891
|
supportedMimeTypes: {
|
|
@@ -17002,8 +16989,8 @@ var models_default = {
|
|
|
17002
16989
|
},
|
|
17003
16990
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17004
16991
|
quotaInfo: {
|
|
17005
|
-
remainingFraction: 0.
|
|
17006
|
-
resetTime: "2026-09-
|
|
16992
|
+
remainingFraction: 0.9730856,
|
|
16993
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
17007
16994
|
},
|
|
17008
16995
|
recommended: true,
|
|
17009
16996
|
supportedMimeTypes: {
|
|
@@ -17085,8 +17072,8 @@ var models_default = {
|
|
|
17085
17072
|
},
|
|
17086
17073
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17087
17074
|
quotaInfo: {
|
|
17088
|
-
remainingFraction: 0.
|
|
17089
|
-
resetTime: "2026-09-
|
|
17075
|
+
remainingFraction: 0.9730856,
|
|
17076
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
17090
17077
|
},
|
|
17091
17078
|
recommended: true,
|
|
17092
17079
|
supportedMimeTypes: {
|
|
@@ -17192,8 +17179,8 @@ var models_default = {
|
|
|
17192
17179
|
},
|
|
17193
17180
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17194
17181
|
quotaInfo: {
|
|
17195
|
-
remainingFraction: 0.
|
|
17196
|
-
resetTime: "2026-09-
|
|
17182
|
+
remainingFraction: 0.9730856,
|
|
17183
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
17197
17184
|
},
|
|
17198
17185
|
recommended: true,
|
|
17199
17186
|
supportedMimeTypes: {
|
|
@@ -17311,8 +17298,8 @@ var models_default = {
|
|
|
17311
17298
|
},
|
|
17312
17299
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17313
17300
|
quotaInfo: {
|
|
17314
|
-
remainingFraction: 0.
|
|
17315
|
-
resetTime: "2026-09-
|
|
17301
|
+
remainingFraction: 0.9730856,
|
|
17302
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
17316
17303
|
},
|
|
17317
17304
|
recommended: true,
|
|
17318
17305
|
supportedMimeTypes: {
|
|
@@ -17430,8 +17417,8 @@ var models_default = {
|
|
|
17430
17417
|
},
|
|
17431
17418
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17432
17419
|
quotaInfo: {
|
|
17433
|
-
remainingFraction: 0.
|
|
17434
|
-
resetTime: "2026-09-
|
|
17420
|
+
remainingFraction: 0.9730856,
|
|
17421
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
17435
17422
|
},
|
|
17436
17423
|
recommended: true,
|
|
17437
17424
|
supportedMimeTypes: {
|
|
@@ -17549,8 +17536,8 @@ var models_default = {
|
|
|
17549
17536
|
},
|
|
17550
17537
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17551
17538
|
quotaInfo: {
|
|
17552
|
-
remainingFraction: 0.
|
|
17553
|
-
resetTime: "2026-09-
|
|
17539
|
+
remainingFraction: 0.9730856,
|
|
17540
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
17554
17541
|
},
|
|
17555
17542
|
recommended: true,
|
|
17556
17543
|
supportedMimeTypes: {
|
|
@@ -17667,8 +17654,8 @@ var models_default = {
|
|
|
17667
17654
|
},
|
|
17668
17655
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17669
17656
|
quotaInfo: {
|
|
17670
|
-
remainingFraction: 0.
|
|
17671
|
-
resetTime: "2026-09-
|
|
17657
|
+
remainingFraction: 0.9730856,
|
|
17658
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
17672
17659
|
},
|
|
17673
17660
|
recommended: true,
|
|
17674
17661
|
supportedMimeTypes: {
|
|
@@ -17778,8 +17765,8 @@ var models_default = {
|
|
|
17778
17765
|
},
|
|
17779
17766
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17780
17767
|
quotaInfo: {
|
|
17781
|
-
remainingFraction: 0.
|
|
17782
|
-
resetTime: "2026-09-
|
|
17768
|
+
remainingFraction: 0.9730856,
|
|
17769
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
17783
17770
|
},
|
|
17784
17771
|
recommended: true,
|
|
17785
17772
|
supportedMimeTypes: {
|
|
@@ -17891,8 +17878,8 @@ var models_default = {
|
|
|
17891
17878
|
},
|
|
17892
17879
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
17893
17880
|
quotaInfo: {
|
|
17894
|
-
remainingFraction: 0.
|
|
17895
|
-
resetTime: "2026-09-
|
|
17881
|
+
remainingFraction: 0.9730856,
|
|
17882
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
17896
17883
|
},
|
|
17897
17884
|
recommended: true,
|
|
17898
17885
|
supportedMimeTypes: {
|
|
@@ -18004,8 +17991,8 @@ var models_default = {
|
|
|
18004
17991
|
},
|
|
18005
17992
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18006
17993
|
quotaInfo: {
|
|
18007
|
-
remainingFraction: 0.
|
|
18008
|
-
resetTime: "2026-09-
|
|
17994
|
+
remainingFraction: 0.9730856,
|
|
17995
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
18009
17996
|
},
|
|
18010
17997
|
recommended: true,
|
|
18011
17998
|
supportedMimeTypes: {
|
|
@@ -18116,8 +18103,8 @@ var models_default = {
|
|
|
18116
18103
|
},
|
|
18117
18104
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18118
18105
|
quotaInfo: {
|
|
18119
|
-
remainingFraction: 0.
|
|
18120
|
-
resetTime: "2026-09-
|
|
18106
|
+
remainingFraction: 0.9730856,
|
|
18107
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
18121
18108
|
},
|
|
18122
18109
|
recommended: true,
|
|
18123
18110
|
supportedMimeTypes: {
|
|
@@ -18227,8 +18214,8 @@ var models_default = {
|
|
|
18227
18214
|
},
|
|
18228
18215
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18229
18216
|
quotaInfo: {
|
|
18230
|
-
remainingFraction: 0.
|
|
18231
|
-
resetTime: "2026-09-
|
|
18217
|
+
remainingFraction: 0.9730856,
|
|
18218
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
18232
18219
|
},
|
|
18233
18220
|
recommended: true,
|
|
18234
18221
|
supportedMimeTypes: {
|
|
@@ -18340,8 +18327,8 @@ var models_default = {
|
|
|
18340
18327
|
},
|
|
18341
18328
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18342
18329
|
quotaInfo: {
|
|
18343
|
-
remainingFraction: 0.
|
|
18344
|
-
resetTime: "2026-09-
|
|
18330
|
+
remainingFraction: 0.9730856,
|
|
18331
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
18345
18332
|
},
|
|
18346
18333
|
recommended: true,
|
|
18347
18334
|
supportedMimeTypes: {
|
|
@@ -18453,8 +18440,8 @@ var models_default = {
|
|
|
18453
18440
|
},
|
|
18454
18441
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18455
18442
|
quotaInfo: {
|
|
18456
|
-
remainingFraction: 0.
|
|
18457
|
-
resetTime: "2026-09-
|
|
18443
|
+
remainingFraction: 0.9730856,
|
|
18444
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
18458
18445
|
},
|
|
18459
18446
|
recommended: true,
|
|
18460
18447
|
supportedMimeTypes: {
|
|
@@ -18565,8 +18552,8 @@ var models_default = {
|
|
|
18565
18552
|
},
|
|
18566
18553
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18567
18554
|
quotaInfo: {
|
|
18568
|
-
remainingFraction: 0.
|
|
18569
|
-
resetTime: "2026-09-
|
|
18555
|
+
remainingFraction: 0.9730856,
|
|
18556
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
18570
18557
|
},
|
|
18571
18558
|
recommended: true,
|
|
18572
18559
|
supportedMimeTypes: {
|
|
@@ -18655,8 +18642,8 @@ var models_default = {
|
|
|
18655
18642
|
},
|
|
18656
18643
|
modelProvider: "MODEL_PROVIDER_GOOGLE",
|
|
18657
18644
|
quotaInfo: {
|
|
18658
|
-
remainingFraction: 0.
|
|
18659
|
-
resetTime: "2026-09-
|
|
18645
|
+
remainingFraction: 0.9730856,
|
|
18646
|
+
resetTime: "2026-09-29T10:22:45Z"
|
|
18660
18647
|
},
|
|
18661
18648
|
recommended: true,
|
|
18662
18649
|
supportedMimeTypes: {
|
|
@@ -18733,7 +18720,7 @@ var models_default = {
|
|
|
18733
18720
|
modelProvider: "MODEL_PROVIDER_OPENAI",
|
|
18734
18721
|
quotaInfo: {
|
|
18735
18722
|
remainingFraction: 1,
|
|
18736
|
-
resetTime: "2026-09-
|
|
18723
|
+
resetTime: "2026-09-29T10:26:06Z"
|
|
18737
18724
|
},
|
|
18738
18725
|
recommended: true,
|
|
18739
18726
|
supportsThinking: true,
|
|
@@ -19805,14 +19792,9 @@ function normalizeToolSchemaTypes(tools, toolMapper) {
|
|
|
19805
19792
|
fn.name = toolMapper ? toolMapper.toGemini(fn.name) : sanitizeToolName(fn.name);
|
|
19806
19793
|
}
|
|
19807
19794
|
if (fn) {
|
|
19808
|
-
if (!fn.parameters) {
|
|
19809
|
-
fn.parameters = fn.parameters_json_schema ?? fn.parametersJsonSchema;
|
|
19810
|
-
}
|
|
19811
19795
|
if (!fn.parameters) {
|
|
19812
19796
|
fn.parameters = { type: "OBJECT", properties: {} };
|
|
19813
19797
|
}
|
|
19814
|
-
delete fn.parameters_json_schema;
|
|
19815
|
-
delete fn.parametersJsonSchema;
|
|
19816
19798
|
sanitizeSchema(fn.parameters);
|
|
19817
19799
|
}
|
|
19818
19800
|
}
|
|
@@ -20237,81 +20219,22 @@ var ChatLoggerImpl = class {
|
|
|
20237
20219
|
}
|
|
20238
20220
|
};
|
|
20239
20221
|
|
|
20240
|
-
// src/plugin
|
|
20241
|
-
|
|
20242
|
-
|
|
20243
|
-
|
|
20244
|
-
|
|
20245
|
-
|
|
20246
|
-
|
|
20247
|
-
|
|
20248
|
-
|
|
20249
|
-
} catch {
|
|
20250
|
-
}
|
|
20251
|
-
}
|
|
20252
|
-
if (Array.isArray(headers)) {
|
|
20253
|
-
const found = headers.find((item) => {
|
|
20254
|
-
if (Array.isArray(item) && typeof item[0] === "string") {
|
|
20255
|
-
return item[0].toLowerCase() === targetKey;
|
|
20256
|
-
}
|
|
20257
|
-
return false;
|
|
20258
|
-
});
|
|
20259
|
-
return found ? String(found[1]) : void 0;
|
|
20260
|
-
}
|
|
20261
|
-
if (typeof headers === "object") {
|
|
20262
|
-
const foundKey = Object.keys(headers).find((k) => k.toLowerCase() === targetKey);
|
|
20263
|
-
return foundKey ? headers[foundKey] !== void 0 ? String(headers[foundKey]) : void 0 : void 0;
|
|
20264
|
-
}
|
|
20265
|
-
return void 0;
|
|
20266
|
-
}
|
|
20267
|
-
function setSafeHeaders(initHeaders, newHeaders) {
|
|
20268
|
-
if (typeof globalThis.Headers !== "undefined") {
|
|
20269
|
-
const headers = new globalThis.Headers(initHeaders ?? {});
|
|
20270
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20271
|
-
headers.set(k, v);
|
|
20272
|
-
}
|
|
20273
|
-
return headers;
|
|
20274
|
-
}
|
|
20275
|
-
if (Array.isArray(initHeaders)) {
|
|
20276
|
-
const nextHeaders2 = [...initHeaders];
|
|
20277
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20278
|
-
const idx = nextHeaders2.findIndex((item) => Array.isArray(item) && typeof item[0] === "string" && item[0].toLowerCase() === k.toLowerCase());
|
|
20279
|
-
if (idx !== -1) {
|
|
20280
|
-
nextHeaders2[idx] = [k, v];
|
|
20281
|
-
} else {
|
|
20282
|
-
nextHeaders2.push([k, v]);
|
|
20283
|
-
}
|
|
20284
|
-
}
|
|
20285
|
-
return nextHeaders2;
|
|
20286
|
-
}
|
|
20287
|
-
const nextHeaders = {};
|
|
20288
|
-
if (initHeaders && typeof initHeaders === "object") {
|
|
20289
|
-
for (const [k, v] of Object.entries(initHeaders)) {
|
|
20290
|
-
nextHeaders[k] = String(v);
|
|
20291
|
-
}
|
|
20292
|
-
}
|
|
20293
|
-
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20294
|
-
const existingKey = Object.keys(nextHeaders).find((key) => key.toLowerCase() === k.toLowerCase());
|
|
20295
|
-
if (existingKey) {
|
|
20296
|
-
nextHeaders[existingKey] = v;
|
|
20297
|
-
} else {
|
|
20298
|
-
nextHeaders[k] = v;
|
|
20299
|
-
}
|
|
20300
|
-
}
|
|
20301
|
-
return nextHeaders;
|
|
20302
|
-
}
|
|
20303
|
-
function toUrlString(value) {
|
|
20304
|
-
if (typeof value === "string") {
|
|
20305
|
-
return value;
|
|
20306
|
-
}
|
|
20307
|
-
const candidate = value.url;
|
|
20308
|
-
if (candidate) {
|
|
20309
|
-
return candidate;
|
|
20310
|
-
}
|
|
20311
|
-
return value.toString();
|
|
20312
|
-
}
|
|
20222
|
+
// src/plugin.ts
|
|
20223
|
+
var AGY_QUOTA_COMMAND = "agyquota";
|
|
20224
|
+
var AGY_QUOTA_COMMAND_TEMPLATE = `Retrieve Agy Code Assist quota usage for the current authenticated account.
|
|
20225
|
+
|
|
20226
|
+
Immediately call \`${AGY_QUOTA_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
20227
|
+
Do not call other tools.
|
|
20228
|
+
`;
|
|
20229
|
+
var AGY_QUOTA_SUMMARY_COMMAND = "agyquotasummary";
|
|
20230
|
+
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.
|
|
20313
20231
|
|
|
20314
|
-
|
|
20232
|
+
Immediately call \`${AGY_QUOTA_SUMMARY_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
20233
|
+
Do not call other tools.
|
|
20234
|
+
`;
|
|
20235
|
+
var latestAgyAuthResolver;
|
|
20236
|
+
var latestAgyConfiguredProjectId;
|
|
20237
|
+
var latestAgyUserAgentModel;
|
|
20315
20238
|
var STATIC_MODELS_SIMPLE = {
|
|
20316
20239
|
"gemini-3.8-flash": {
|
|
20317
20240
|
name: "Gemini 3.8 Flash",
|
|
@@ -20399,39 +20322,6 @@ var TIER_MAPPING = {
|
|
|
20399
20322
|
high: "gemini-3.1-pro-high"
|
|
20400
20323
|
}
|
|
20401
20324
|
};
|
|
20402
|
-
function resolveModelTier(baseModelId, headersOrInit) {
|
|
20403
|
-
const parts = baseModelId.split("@");
|
|
20404
|
-
const base = parts[0] || "";
|
|
20405
|
-
const suffixTier = parts[1]?.toLowerCase();
|
|
20406
|
-
const mapping = TIER_MAPPING[base];
|
|
20407
|
-
if (!mapping) {
|
|
20408
|
-
return baseModelId;
|
|
20409
|
-
}
|
|
20410
|
-
const rawHeaders = headersOrInit && typeof headersOrInit === "object" && "headers" in headersOrInit ? headersOrInit.headers : headersOrInit;
|
|
20411
|
-
const headerTier = getSafeHeader(rawHeaders, "x-agy-tier")?.toLowerCase() || null;
|
|
20412
|
-
const requestedTier = headerTier || suffixTier;
|
|
20413
|
-
if (requestedTier && Object.prototype.hasOwnProperty.call(mapping, requestedTier)) {
|
|
20414
|
-
return mapping[requestedTier] || baseModelId;
|
|
20415
|
-
}
|
|
20416
|
-
return mapping["medium"] ?? mapping["high"] ?? baseModelId;
|
|
20417
|
-
}
|
|
20418
|
-
|
|
20419
|
-
// src/plugin.ts
|
|
20420
|
-
var AGY_QUOTA_COMMAND = "agyquota";
|
|
20421
|
-
var AGY_QUOTA_COMMAND_TEMPLATE = `Retrieve Agy Code Assist quota usage for the current authenticated account.
|
|
20422
|
-
|
|
20423
|
-
Immediately call \`${AGY_QUOTA_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
20424
|
-
Do not call other tools.
|
|
20425
|
-
`;
|
|
20426
|
-
var AGY_QUOTA_SUMMARY_COMMAND = "agyquotasummary";
|
|
20427
|
-
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.
|
|
20428
|
-
|
|
20429
|
-
Immediately call \`${AGY_QUOTA_SUMMARY_TOOL_NAME}\` with no arguments and return its output verbatim.
|
|
20430
|
-
Do not call other tools.
|
|
20431
|
-
`;
|
|
20432
|
-
var latestAgyAuthResolver;
|
|
20433
|
-
var latestAgyConfiguredProjectId;
|
|
20434
|
-
var latestAgyUserAgentModel;
|
|
20435
20325
|
var buildModelFromSimple = (modelId, simple) => {
|
|
20436
20326
|
const isClaude = modelId.startsWith("claude-");
|
|
20437
20327
|
const isGpt = modelId.startsWith("gpt-");
|
|
@@ -20525,6 +20415,83 @@ var STATIC_MODELS = {};
|
|
|
20525
20415
|
for (const [modelId, simple] of Object.entries(STATIC_MODELS_SIMPLE)) {
|
|
20526
20416
|
STATIC_MODELS[modelId] = buildModelFromSimple(modelId, simple);
|
|
20527
20417
|
}
|
|
20418
|
+
function getSafeHeader(headers, key) {
|
|
20419
|
+
if (!headers) {
|
|
20420
|
+
return void 0;
|
|
20421
|
+
}
|
|
20422
|
+
const targetKey = key.toLowerCase();
|
|
20423
|
+
if (typeof headers.get === "function") {
|
|
20424
|
+
try {
|
|
20425
|
+
return headers.get(targetKey) || void 0;
|
|
20426
|
+
} catch {
|
|
20427
|
+
}
|
|
20428
|
+
}
|
|
20429
|
+
if (Array.isArray(headers)) {
|
|
20430
|
+
const found = headers.find((item) => {
|
|
20431
|
+
if (Array.isArray(item) && typeof item[0] === "string") {
|
|
20432
|
+
return item[0].toLowerCase() === targetKey;
|
|
20433
|
+
}
|
|
20434
|
+
return false;
|
|
20435
|
+
});
|
|
20436
|
+
return found ? String(found[1]) : void 0;
|
|
20437
|
+
}
|
|
20438
|
+
if (typeof headers === "object") {
|
|
20439
|
+
const foundKey = Object.keys(headers).find((k) => k.toLowerCase() === targetKey);
|
|
20440
|
+
return foundKey ? headers[foundKey] !== void 0 ? String(headers[foundKey]) : void 0 : void 0;
|
|
20441
|
+
}
|
|
20442
|
+
return void 0;
|
|
20443
|
+
}
|
|
20444
|
+
function setSafeHeaders(initHeaders, newHeaders) {
|
|
20445
|
+
if (typeof globalThis.Headers !== "undefined") {
|
|
20446
|
+
const headers = new globalThis.Headers(initHeaders ?? {});
|
|
20447
|
+
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20448
|
+
headers.set(k, v);
|
|
20449
|
+
}
|
|
20450
|
+
return headers;
|
|
20451
|
+
}
|
|
20452
|
+
if (Array.isArray(initHeaders)) {
|
|
20453
|
+
const nextHeaders2 = [...initHeaders];
|
|
20454
|
+
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20455
|
+
const idx = nextHeaders2.findIndex((item) => Array.isArray(item) && typeof item[0] === "string" && item[0].toLowerCase() === k.toLowerCase());
|
|
20456
|
+
if (idx !== -1) {
|
|
20457
|
+
nextHeaders2[idx] = [k, v];
|
|
20458
|
+
} else {
|
|
20459
|
+
nextHeaders2.push([k, v]);
|
|
20460
|
+
}
|
|
20461
|
+
}
|
|
20462
|
+
return nextHeaders2;
|
|
20463
|
+
}
|
|
20464
|
+
const nextHeaders = {};
|
|
20465
|
+
if (initHeaders && typeof initHeaders === "object") {
|
|
20466
|
+
for (const [k, v] of Object.entries(initHeaders)) {
|
|
20467
|
+
nextHeaders[k] = String(v);
|
|
20468
|
+
}
|
|
20469
|
+
}
|
|
20470
|
+
for (const [k, v] of Object.entries(newHeaders)) {
|
|
20471
|
+
const existingKey = Object.keys(nextHeaders).find((key) => key.toLowerCase() === k.toLowerCase());
|
|
20472
|
+
if (existingKey) {
|
|
20473
|
+
nextHeaders[existingKey] = v;
|
|
20474
|
+
} else {
|
|
20475
|
+
nextHeaders[k] = v;
|
|
20476
|
+
}
|
|
20477
|
+
}
|
|
20478
|
+
return nextHeaders;
|
|
20479
|
+
}
|
|
20480
|
+
function resolveModelTier(baseModelId, init) {
|
|
20481
|
+
const parts = baseModelId.split("@");
|
|
20482
|
+
const base = parts[0] || "";
|
|
20483
|
+
const suffixTier = parts[1]?.toLowerCase();
|
|
20484
|
+
const mapping = TIER_MAPPING[base];
|
|
20485
|
+
if (!mapping) {
|
|
20486
|
+
return baseModelId;
|
|
20487
|
+
}
|
|
20488
|
+
const headerTier = getSafeHeader(init?.headers, "x-agy-tier")?.toLowerCase() || null;
|
|
20489
|
+
const requestedTier = headerTier || suffixTier;
|
|
20490
|
+
if (requestedTier && Object.prototype.hasOwnProperty.call(mapping, requestedTier)) {
|
|
20491
|
+
return mapping[requestedTier] || baseModelId;
|
|
20492
|
+
}
|
|
20493
|
+
return mapping["medium"] ?? mapping["high"];
|
|
20494
|
+
}
|
|
20528
20495
|
var AgyCLIOAuthPlugin = async ({ client }) => {
|
|
20529
20496
|
let latestConfig;
|
|
20530
20497
|
updateStaticModelsWithPricing(STATIC_MODELS);
|
|
@@ -20852,92 +20819,183 @@ async function ensureProjectContextOrThrow(authRecord, client, configuredProject
|
|
|
20852
20819
|
throw error45;
|
|
20853
20820
|
}
|
|
20854
20821
|
}
|
|
20822
|
+
function toUrlString(value) {
|
|
20823
|
+
if (typeof value === "string") {
|
|
20824
|
+
return value;
|
|
20825
|
+
}
|
|
20826
|
+
const candidate = value.url;
|
|
20827
|
+
if (candidate) {
|
|
20828
|
+
return candidate;
|
|
20829
|
+
}
|
|
20830
|
+
return value.toString();
|
|
20831
|
+
}
|
|
20855
20832
|
|
|
20856
20833
|
// src/plugin/types.ts
|
|
20857
20834
|
function defineOpenCodeV2Plugin(def) {
|
|
20858
20835
|
return def;
|
|
20859
20836
|
}
|
|
20860
20837
|
|
|
20861
|
-
// src/plugin/v2
|
|
20862
|
-
import { closeSync, existsSync as existsSync6, mkdirSync as mkdirSync5, openSync, readFileSync as readFileSync5, renameSync as renameSync4, unlinkSync as unlinkSync4, writeFileSync as writeFileSync5 } from "fs";
|
|
20863
|
-
import { randomUUID as randomUUID4 } from "crypto";
|
|
20838
|
+
// src/plugin/v2.ts
|
|
20864
20839
|
import { homedir as homedir4 } from "os";
|
|
20865
20840
|
import { join as join6 } from "path";
|
|
20866
|
-
|
|
20867
|
-
|
|
20868
|
-
|
|
20869
|
-
|
|
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;
|
|
20870
20858
|
}
|
|
20871
|
-
const
|
|
20872
|
-
|
|
20873
|
-
|
|
20874
|
-
|
|
20875
|
-
|
|
20876
|
-
return data?.[AGY_PROVIDER_ID];
|
|
20859
|
+
const targetKey = key.toLowerCase();
|
|
20860
|
+
if (typeof headers.get === "function") {
|
|
20861
|
+
try {
|
|
20862
|
+
return headers.get(targetKey) || void 0;
|
|
20863
|
+
} catch {
|
|
20877
20864
|
}
|
|
20878
|
-
} catch {
|
|
20879
|
-
}
|
|
20880
|
-
return void 0;
|
|
20881
|
-
}
|
|
20882
|
-
function saveStoredAuthToJson(authRecord) {
|
|
20883
|
-
if (process.env.NODE_ENV === "test" || process.env.VITEST || storedAuthOverrideForTesting !== void 0) {
|
|
20884
|
-
return;
|
|
20885
20865
|
}
|
|
20886
|
-
|
|
20887
|
-
|
|
20888
|
-
|
|
20889
|
-
|
|
20890
|
-
|
|
20891
|
-
|
|
20892
|
-
|
|
20893
|
-
|
|
20894
|
-
|
|
20895
|
-
|
|
20896
|
-
|
|
20897
|
-
|
|
20898
|
-
|
|
20899
|
-
|
|
20900
|
-
|
|
20901
|
-
|
|
20902
|
-
|
|
20903
|
-
|
|
20904
|
-
|
|
20905
|
-
|
|
20906
|
-
}
|
|
20907
|
-
|
|
20908
|
-
|
|
20909
|
-
|
|
20910
|
-
|
|
20911
|
-
|
|
20912
|
-
|
|
20913
|
-
|
|
20914
|
-
|
|
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]);
|
|
20915
20897
|
}
|
|
20916
20898
|
}
|
|
20917
|
-
|
|
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)) {
|
|
20918
20970
|
try {
|
|
20919
|
-
|
|
20971
|
+
data = JSON.parse(readFileSync5(authPath, "utf8")) || {};
|
|
20920
20972
|
} catch {
|
|
20973
|
+
data = {};
|
|
20921
20974
|
}
|
|
20922
20975
|
}
|
|
20923
|
-
|
|
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 {
|
|
20924
20984
|
}
|
|
20925
20985
|
}
|
|
20926
|
-
|
|
20927
|
-
// src/plugin/v2-fetch.ts
|
|
20928
20986
|
function createV2FetchInterceptor(getAuthSnapshot) {
|
|
20929
20987
|
return async function agyV2Fetch(input, init) {
|
|
20930
20988
|
const isGL = isGenerativeLanguageRequest(input);
|
|
20931
|
-
const isInternal =
|
|
20989
|
+
const isInternal = toUrlString2(input).includes("cloudcode-pa.googleapis.com");
|
|
20932
20990
|
if (!isGL && !isInternal) {
|
|
20933
|
-
return (
|
|
20991
|
+
return agyFetch(input, init);
|
|
20934
20992
|
}
|
|
20935
20993
|
let rawAuth = getAuthSnapshot ? await getAuthSnapshot() : void 0;
|
|
20936
20994
|
if (!rawAuth) {
|
|
20937
20995
|
rawAuth = loadStoredAuthFromJson();
|
|
20938
20996
|
}
|
|
20939
20997
|
if (!rawAuth || !isOAuthAuth(rawAuth)) {
|
|
20940
|
-
return (
|
|
20998
|
+
return agyFetch(input, init);
|
|
20941
20999
|
}
|
|
20942
21000
|
let authRecord = resolveCachedAuth(rawAuth);
|
|
20943
21001
|
if (accessTokenExpired(authRecord)) {
|
|
@@ -20948,19 +21006,19 @@ function createV2FetchInterceptor(getAuthSnapshot) {
|
|
|
20948
21006
|
}
|
|
20949
21007
|
}
|
|
20950
21008
|
if (!authRecord.access) {
|
|
20951
|
-
return (
|
|
21009
|
+
return agyFetch(input, init);
|
|
20952
21010
|
}
|
|
20953
21011
|
if (isInternal) {
|
|
20954
|
-
const hasAuth =
|
|
21012
|
+
const hasAuth = getSafeHeader2(init?.headers, "Authorization") !== void 0;
|
|
20955
21013
|
if (hasAuth) {
|
|
20956
|
-
return (
|
|
21014
|
+
return agyFetch(input, init);
|
|
20957
21015
|
}
|
|
20958
21016
|
const userAgent = buildAgyCliUserAgent();
|
|
20959
|
-
const headers =
|
|
21017
|
+
const headers = setSafeHeaders2(init?.headers, {
|
|
20960
21018
|
Authorization: `Bearer ${authRecord.access}`,
|
|
20961
21019
|
"User-Agent": userAgent
|
|
20962
21020
|
});
|
|
20963
|
-
return (
|
|
21021
|
+
return agyFetch(input, {
|
|
20964
21022
|
...init,
|
|
20965
21023
|
headers
|
|
20966
21024
|
});
|
|
@@ -20986,7 +21044,7 @@ function createV2FetchInterceptor(getAuthSnapshot) {
|
|
|
20986
21044
|
let modifiedInput = input;
|
|
20987
21045
|
if (isGL && originalRequestedModel) {
|
|
20988
21046
|
const originalBase = originalRequestedModel.replace("google-agy/", "");
|
|
20989
|
-
const resolvedBase =
|
|
21047
|
+
const resolvedBase = resolveModelTier2(originalBase, init);
|
|
20990
21048
|
if (originalBase !== resolvedBase) {
|
|
20991
21049
|
if (typeof modifiedInput === "string") {
|
|
20992
21050
|
modifiedInput = modifiedInput.replace(`models/${originalBase}`, `models/${resolvedBase}`);
|
|
@@ -21006,7 +21064,7 @@ function createV2FetchInterceptor(getAuthSnapshot) {
|
|
|
21006
21064
|
const chatLogger = createChatLogger();
|
|
21007
21065
|
if (chatLogger) {
|
|
21008
21066
|
chatLogger.logRequest(
|
|
21009
|
-
|
|
21067
|
+
toUrlString2(transformed.request),
|
|
21010
21068
|
transformed.init.method || "GET",
|
|
21011
21069
|
transformed.init.headers,
|
|
21012
21070
|
transformed.init.body
|
|
@@ -21023,304 +21081,6 @@ function createV2FetchInterceptor(getAuthSnapshot) {
|
|
|
21023
21081
|
);
|
|
21024
21082
|
};
|
|
21025
21083
|
}
|
|
21026
|
-
|
|
21027
|
-
// src/plugin/v2-session.ts
|
|
21028
|
-
function createV2HttpRequestHook(state = {}) {
|
|
21029
|
-
return async (event) => {
|
|
21030
|
-
if (!event) return;
|
|
21031
|
-
const rawUrl = typeof event.url === "string" ? event.url : event.request?.url || "";
|
|
21032
|
-
const isGL = isGenerativeLanguageRequest(rawUrl);
|
|
21033
|
-
const isInternal = rawUrl.includes("cloudcode-pa.googleapis.com");
|
|
21034
|
-
if (!isGL && !isInternal) {
|
|
21035
|
-
return;
|
|
21036
|
-
}
|
|
21037
|
-
event.headers = event.headers || {};
|
|
21038
|
-
let modelName;
|
|
21039
|
-
let rawAuth = event.auth;
|
|
21040
|
-
if (rawAuth && !rawAuth.type) {
|
|
21041
|
-
const tokenVal = rawAuth.access || rawAuth.token;
|
|
21042
|
-
if (tokenVal || rawAuth.refresh) {
|
|
21043
|
-
rawAuth = { type: "oauth", access: tokenVal, ...rawAuth };
|
|
21044
|
-
}
|
|
21045
|
-
}
|
|
21046
|
-
if (!rawAuth || !isOAuthAuth(rawAuth)) {
|
|
21047
|
-
rawAuth = loadStoredAuthFromJson();
|
|
21048
|
-
}
|
|
21049
|
-
let authRecord = rawAuth && isOAuthAuth(rawAuth) ? resolveCachedAuth(rawAuth) : void 0;
|
|
21050
|
-
if (authRecord && accessTokenExpired(authRecord)) {
|
|
21051
|
-
const refreshed = await refreshAccessToken(authRecord, { auth: { set: async () => {
|
|
21052
|
-
} } });
|
|
21053
|
-
if (refreshed) {
|
|
21054
|
-
authRecord = refreshed;
|
|
21055
|
-
try {
|
|
21056
|
-
saveStoredAuthToJson(refreshed);
|
|
21057
|
-
} catch {
|
|
21058
|
-
console.warn("[Agy Auth] Refreshed credentials could not be persisted; the current request will continue.");
|
|
21059
|
-
}
|
|
21060
|
-
}
|
|
21061
|
-
}
|
|
21062
|
-
if (isGL) {
|
|
21063
|
-
const parsed = parseGenerativeLanguageRequest(rawUrl);
|
|
21064
|
-
modelName = parsed?.effectiveModel;
|
|
21065
|
-
if (modelName) {
|
|
21066
|
-
state.lastInterceptedModel = modelName;
|
|
21067
|
-
}
|
|
21068
|
-
if (typeof event.headers.delete === "function") {
|
|
21069
|
-
event.headers.delete("x-goog-api-key");
|
|
21070
|
-
event.headers.delete("api-key");
|
|
21071
|
-
} else {
|
|
21072
|
-
for (const key of Object.keys(event.headers)) {
|
|
21073
|
-
const lower = key.toLowerCase();
|
|
21074
|
-
if (lower === "x-goog-api-key" || lower === "api-key") {
|
|
21075
|
-
delete event.headers[key];
|
|
21076
|
-
}
|
|
21077
|
-
}
|
|
21078
|
-
}
|
|
21079
|
-
if (event.request?.headers) {
|
|
21080
|
-
if (typeof event.request.headers.delete === "function") {
|
|
21081
|
-
event.request.headers.delete("x-goog-api-key");
|
|
21082
|
-
event.request.headers.delete("api-key");
|
|
21083
|
-
} else {
|
|
21084
|
-
for (const key of Object.keys(event.request.headers)) {
|
|
21085
|
-
const lower = key.toLowerCase();
|
|
21086
|
-
if (lower === "x-goog-api-key" || lower === "api-key") {
|
|
21087
|
-
delete event.request.headers[key];
|
|
21088
|
-
}
|
|
21089
|
-
}
|
|
21090
|
-
}
|
|
21091
|
-
}
|
|
21092
|
-
let cleanUrl = rawUrl;
|
|
21093
|
-
try {
|
|
21094
|
-
const parsedUrl = new URL(rawUrl);
|
|
21095
|
-
let urlChanged = false;
|
|
21096
|
-
for (const param of ["key", "x-goog-api-key", "api-key"]) {
|
|
21097
|
-
if (parsedUrl.searchParams.has(param)) {
|
|
21098
|
-
parsedUrl.searchParams.delete(param);
|
|
21099
|
-
urlChanged = true;
|
|
21100
|
-
}
|
|
21101
|
-
}
|
|
21102
|
-
if (urlChanged) {
|
|
21103
|
-
cleanUrl = parsedUrl.toString();
|
|
21104
|
-
}
|
|
21105
|
-
} catch {
|
|
21106
|
-
}
|
|
21107
|
-
if (authRecord && authRecord.access) {
|
|
21108
|
-
let projectContext;
|
|
21109
|
-
try {
|
|
21110
|
-
projectContext = await ensureProjectContext(
|
|
21111
|
-
authRecord,
|
|
21112
|
-
{ auth: { set: async () => {
|
|
21113
|
-
} } },
|
|
21114
|
-
void 0,
|
|
21115
|
-
modelName
|
|
21116
|
-
);
|
|
21117
|
-
} catch {
|
|
21118
|
-
projectContext = {
|
|
21119
|
-
effectiveProjectId: parseRefreshParts(authRecord.refresh).projectId || "antigravity",
|
|
21120
|
-
auth: authRecord
|
|
21121
|
-
};
|
|
21122
|
-
}
|
|
21123
|
-
const originalRequestedModel = modelName;
|
|
21124
|
-
let modifiedUrl = cleanUrl;
|
|
21125
|
-
if (originalRequestedModel) {
|
|
21126
|
-
const originalBase = originalRequestedModel.replace("google-agy/", "");
|
|
21127
|
-
const initHeaders = event.headers instanceof Headers ? event.headers : event.request?.headers;
|
|
21128
|
-
const resolvedBase = resolveModelTier(originalBase, { headers: initHeaders });
|
|
21129
|
-
if (originalBase !== resolvedBase) {
|
|
21130
|
-
modifiedUrl = modifiedUrl.replace(`models/${originalBase}`, `models/${resolvedBase}`);
|
|
21131
|
-
}
|
|
21132
|
-
}
|
|
21133
|
-
let bodyPayload = event.body;
|
|
21134
|
-
if (bodyPayload === void 0 && event.request) {
|
|
21135
|
-
if (typeof event.request.clone === "function") {
|
|
21136
|
-
try {
|
|
21137
|
-
bodyPayload = await event.request.clone().text();
|
|
21138
|
-
} catch {
|
|
21139
|
-
}
|
|
21140
|
-
} else if (event.request.body !== void 0) {
|
|
21141
|
-
bodyPayload = event.request.body;
|
|
21142
|
-
}
|
|
21143
|
-
}
|
|
21144
|
-
let preExistingUserAgent;
|
|
21145
|
-
if (typeof event.headers?.get === "function") {
|
|
21146
|
-
preExistingUserAgent = event.headers.get("user-agent") || event.headers.get("User-Agent") || void 0;
|
|
21147
|
-
} else if (event.headers && typeof event.headers === "object") {
|
|
21148
|
-
preExistingUserAgent = event.headers["user-agent"] || event.headers["User-Agent"] || void 0;
|
|
21149
|
-
}
|
|
21150
|
-
if (!preExistingUserAgent && typeof event.request?.headers?.get === "function") {
|
|
21151
|
-
preExistingUserAgent = event.request.headers.get("user-agent") || event.request.headers.get("User-Agent") || void 0;
|
|
21152
|
-
} else if (!preExistingUserAgent && event.request?.headers && typeof event.request.headers === "object") {
|
|
21153
|
-
preExistingUserAgent = event.request.headers["user-agent"] || event.request.headers["User-Agent"] || void 0;
|
|
21154
|
-
}
|
|
21155
|
-
const method = event.method || event.request?.method || "POST";
|
|
21156
|
-
const requestHeaders = event.headers || event.request?.headers;
|
|
21157
|
-
const transformed = prepareAgyRequest(
|
|
21158
|
-
modifiedUrl,
|
|
21159
|
-
{
|
|
21160
|
-
method,
|
|
21161
|
-
headers: requestHeaders,
|
|
21162
|
-
body: bodyPayload
|
|
21163
|
-
},
|
|
21164
|
-
authRecord.access,
|
|
21165
|
-
projectContext.effectiveProjectId
|
|
21166
|
-
);
|
|
21167
|
-
const targetUrl = toUrlString(transformed.request);
|
|
21168
|
-
if (typeof event.url === "string") {
|
|
21169
|
-
event.url = targetUrl;
|
|
21170
|
-
}
|
|
21171
|
-
if (event.request && typeof event.request === "object") {
|
|
21172
|
-
if (typeof Request !== "undefined" && event.request instanceof Request) {
|
|
21173
|
-
event.request = new Request(targetUrl, {
|
|
21174
|
-
method: transformed.init.method,
|
|
21175
|
-
headers: transformed.init.headers,
|
|
21176
|
-
body: transformed.init.body
|
|
21177
|
-
});
|
|
21178
|
-
} else if (typeof event.request.url === "string") {
|
|
21179
|
-
try {
|
|
21180
|
-
event.request.url = targetUrl;
|
|
21181
|
-
} catch {
|
|
21182
|
-
}
|
|
21183
|
-
}
|
|
21184
|
-
}
|
|
21185
|
-
const headerEntries = transformed.init.headers instanceof Headers ? Array.from(transformed.init.headers.entries()) : Object.entries(transformed.init.headers || {});
|
|
21186
|
-
for (const [k, v] of headerEntries) {
|
|
21187
|
-
const lowerK = k.toLowerCase();
|
|
21188
|
-
if (lowerK === "user-agent") {
|
|
21189
|
-
if (preExistingUserAgent) {
|
|
21190
|
-
continue;
|
|
21191
|
-
}
|
|
21192
|
-
if (typeof event.headers?.set === "function") {
|
|
21193
|
-
event.headers.set("User-Agent", v);
|
|
21194
|
-
} else if (event.headers) {
|
|
21195
|
-
event.headers["User-Agent"] = v;
|
|
21196
|
-
}
|
|
21197
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21198
|
-
event.request.headers.set("User-Agent", v);
|
|
21199
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21200
|
-
event.request.headers["User-Agent"] = v;
|
|
21201
|
-
}
|
|
21202
|
-
continue;
|
|
21203
|
-
}
|
|
21204
|
-
if (typeof event.headers?.set === "function") {
|
|
21205
|
-
event.headers.set(k, v);
|
|
21206
|
-
} else if (event.headers) {
|
|
21207
|
-
event.headers[k] = v;
|
|
21208
|
-
}
|
|
21209
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21210
|
-
event.request.headers.set(k, v);
|
|
21211
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21212
|
-
event.request.headers[k] = v;
|
|
21213
|
-
}
|
|
21214
|
-
}
|
|
21215
|
-
if (transformed.init.body !== void 0) {
|
|
21216
|
-
event.body = transformed.init.body;
|
|
21217
|
-
if (event.request && typeof event.request === "object" && !(event.request instanceof Request)) {
|
|
21218
|
-
event.request.body = transformed.init.body;
|
|
21219
|
-
}
|
|
21220
|
-
}
|
|
21221
|
-
} else {
|
|
21222
|
-
if (typeof event.url === "string") {
|
|
21223
|
-
event.url = cleanUrl;
|
|
21224
|
-
}
|
|
21225
|
-
if (event.request && typeof event.request === "object") {
|
|
21226
|
-
if (typeof Request !== "undefined" && event.request instanceof Request) {
|
|
21227
|
-
event.request = new Request(cleanUrl, event.request);
|
|
21228
|
-
} else if (typeof event.request.url === "string") {
|
|
21229
|
-
try {
|
|
21230
|
-
event.request.url = cleanUrl;
|
|
21231
|
-
} catch {
|
|
21232
|
-
}
|
|
21233
|
-
}
|
|
21234
|
-
}
|
|
21235
|
-
}
|
|
21236
|
-
}
|
|
21237
|
-
if (authRecord && authRecord.access) {
|
|
21238
|
-
if (typeof event.headers?.set === "function") {
|
|
21239
|
-
event.headers.set("Authorization", `Bearer ${authRecord.access}`);
|
|
21240
|
-
} else if (event.headers) {
|
|
21241
|
-
event.headers["Authorization"] = `Bearer ${authRecord.access}`;
|
|
21242
|
-
}
|
|
21243
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21244
|
-
event.request.headers.set("Authorization", `Bearer ${authRecord.access}`);
|
|
21245
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21246
|
-
event.request.headers["Authorization"] = `Bearer ${authRecord.access}`;
|
|
21247
|
-
}
|
|
21248
|
-
}
|
|
21249
|
-
const userAgent = buildAgyCliUserAgent(modelName);
|
|
21250
|
-
if (typeof event.headers?.set === "function") {
|
|
21251
|
-
if (!event.headers.get("User-Agent") && !event.headers.get("user-agent")) {
|
|
21252
|
-
event.headers.set("User-Agent", userAgent);
|
|
21253
|
-
}
|
|
21254
|
-
} else if (event.headers) {
|
|
21255
|
-
if (!event.headers["User-Agent"] && !event.headers["user-agent"]) {
|
|
21256
|
-
event.headers["User-Agent"] = userAgent;
|
|
21257
|
-
}
|
|
21258
|
-
}
|
|
21259
|
-
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21260
|
-
if (!event.request.headers.get("User-Agent") && !event.request.headers.get("user-agent")) {
|
|
21261
|
-
event.request.headers.set("User-Agent", userAgent);
|
|
21262
|
-
}
|
|
21263
|
-
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21264
|
-
if (!event.request.headers["User-Agent"] && !event.request.headers["user-agent"]) {
|
|
21265
|
-
event.request.headers["User-Agent"] = userAgent;
|
|
21266
|
-
}
|
|
21267
|
-
}
|
|
21268
|
-
};
|
|
21269
|
-
}
|
|
21270
|
-
function createV2HttpResponseHook(state = {}) {
|
|
21271
|
-
return async (event) => {
|
|
21272
|
-
if (!event || !event.response) return;
|
|
21273
|
-
const rawUrl = typeof event.url === "string" ? event.url : event.request?.url || "";
|
|
21274
|
-
const isInternal = rawUrl.includes("cloudcode-pa.googleapis.com");
|
|
21275
|
-
if (isInternal && event.response instanceof Response) {
|
|
21276
|
-
const isStreaming = rawUrl.includes(":streamGenerateCode") || event.response.headers.get("content-type")?.includes("text/event-stream");
|
|
21277
|
-
const parsedModel = parseGenerativeLanguageRequest(rawUrl)?.effectiveModel || state.lastInterceptedModel;
|
|
21278
|
-
const transformed = await transformAgyResponse(
|
|
21279
|
-
event.response,
|
|
21280
|
-
!!isStreaming,
|
|
21281
|
-
null,
|
|
21282
|
-
parsedModel,
|
|
21283
|
-
void 0,
|
|
21284
|
-
void 0
|
|
21285
|
-
);
|
|
21286
|
-
event.response = transformed;
|
|
21287
|
-
}
|
|
21288
|
-
};
|
|
21289
|
-
}
|
|
21290
|
-
function createV2RetryHook() {
|
|
21291
|
-
return async (event) => {
|
|
21292
|
-
if (!event) return;
|
|
21293
|
-
const response = event.response;
|
|
21294
|
-
if (response instanceof Response) {
|
|
21295
|
-
if (response.status === 429 || response.status === 503) {
|
|
21296
|
-
const quota = await classifyQuotaResponse(response);
|
|
21297
|
-
if (quota?.retryDelayMs) {
|
|
21298
|
-
event.retryDelayMs = quota.retryDelayMs;
|
|
21299
|
-
} else {
|
|
21300
|
-
event.retryDelayMs = await resolveRetryDelayMs(response, event.attempt || 1);
|
|
21301
|
-
}
|
|
21302
|
-
}
|
|
21303
|
-
} else if (event.details && Array.isArray(event.details)) {
|
|
21304
|
-
const retryInfo = event.details.find(
|
|
21305
|
-
(d) => d && d["@type"] === "type.googleapis.com/google.rpc.RetryInfo"
|
|
21306
|
-
);
|
|
21307
|
-
if (retryInfo?.retryDelay) {
|
|
21308
|
-
const delayMs = retryInternals.parseRetryDelayValue(retryInfo.retryDelay);
|
|
21309
|
-
if (delayMs !== null) {
|
|
21310
|
-
event.retryDelayMs = delayMs;
|
|
21311
|
-
}
|
|
21312
|
-
}
|
|
21313
|
-
}
|
|
21314
|
-
};
|
|
21315
|
-
}
|
|
21316
|
-
function registerV2SessionHooks(ctx) {
|
|
21317
|
-
const state = {};
|
|
21318
|
-
ctx.session.hook("http.request", createV2HttpRequestHook(state), { providerID: AGY_PROVIDER_ID });
|
|
21319
|
-
ctx.session.hook("http.response", createV2HttpResponseHook(state), { providerID: AGY_PROVIDER_ID });
|
|
21320
|
-
ctx.session.hook("retry", createV2RetryHook(), { providerID: AGY_PROVIDER_ID });
|
|
21321
|
-
}
|
|
21322
|
-
|
|
21323
|
-
// src/plugin/v2.ts
|
|
21324
21084
|
async function setupOpenCodeV2(ctx) {
|
|
21325
21085
|
const resolveVariants = (modelId) => {
|
|
21326
21086
|
const mapping = TIER_MAPPING[modelId];
|
|
@@ -21581,14 +21341,7 @@ async function setupOpenCodeV2(ctx) {
|
|
|
21581
21341
|
};
|
|
21582
21342
|
} catch {
|
|
21583
21343
|
}
|
|
21584
|
-
|
|
21585
|
-
saveStoredAuthToJson(authRecord);
|
|
21586
|
-
} catch {
|
|
21587
|
-
return {
|
|
21588
|
-
type: "failed",
|
|
21589
|
-
error: "Google authentication succeeded but AGY credentials could not be stored. Check filesystem access and retry."
|
|
21590
|
-
};
|
|
21591
|
-
}
|
|
21344
|
+
saveStoredAuthToJson(authRecord);
|
|
21592
21345
|
return {
|
|
21593
21346
|
type: "oauth",
|
|
21594
21347
|
methodID: "oauth",
|
|
@@ -21609,7 +21362,292 @@ async function setupOpenCodeV2(ctx) {
|
|
|
21609
21362
|
event.options.apiKey = "dummy";
|
|
21610
21363
|
event.options.fetch = createV2FetchInterceptor();
|
|
21611
21364
|
});
|
|
21612
|
-
|
|
21365
|
+
let lastInterceptedModel;
|
|
21366
|
+
ctx.session.hook(
|
|
21367
|
+
"http.request",
|
|
21368
|
+
async (event) => {
|
|
21369
|
+
if (!event) return;
|
|
21370
|
+
const rawUrl = typeof event.url === "string" ? event.url : event.request?.url || "";
|
|
21371
|
+
const isGL = isGenerativeLanguageRequest(rawUrl);
|
|
21372
|
+
const isInternal = rawUrl.includes("cloudcode-pa.googleapis.com");
|
|
21373
|
+
if (!isGL && !isInternal) {
|
|
21374
|
+
return;
|
|
21375
|
+
}
|
|
21376
|
+
event.headers = event.headers || {};
|
|
21377
|
+
let modelName;
|
|
21378
|
+
let rawAuth = event.auth;
|
|
21379
|
+
if (rawAuth && !rawAuth.type) {
|
|
21380
|
+
const tokenVal = rawAuth.access || rawAuth.token;
|
|
21381
|
+
if (tokenVal || rawAuth.refresh) {
|
|
21382
|
+
rawAuth = { type: "oauth", access: tokenVal, ...rawAuth };
|
|
21383
|
+
}
|
|
21384
|
+
}
|
|
21385
|
+
if (!rawAuth || !isOAuthAuth(rawAuth)) {
|
|
21386
|
+
rawAuth = loadStoredAuthFromJson();
|
|
21387
|
+
}
|
|
21388
|
+
let authRecord = rawAuth && isOAuthAuth(rawAuth) ? resolveCachedAuth(rawAuth) : void 0;
|
|
21389
|
+
if (authRecord && accessTokenExpired(authRecord)) {
|
|
21390
|
+
const refreshed = await refreshAccessToken(authRecord, { auth: { set: async () => {
|
|
21391
|
+
} } });
|
|
21392
|
+
if (refreshed) {
|
|
21393
|
+
authRecord = refreshed;
|
|
21394
|
+
saveStoredAuthToJson(refreshed);
|
|
21395
|
+
}
|
|
21396
|
+
}
|
|
21397
|
+
if (isGL) {
|
|
21398
|
+
const parsed = parseGenerativeLanguageRequest(rawUrl);
|
|
21399
|
+
modelName = parsed?.effectiveModel;
|
|
21400
|
+
if (modelName) {
|
|
21401
|
+
lastInterceptedModel = modelName;
|
|
21402
|
+
}
|
|
21403
|
+
if (typeof event.headers.delete === "function") {
|
|
21404
|
+
event.headers.delete("x-goog-api-key");
|
|
21405
|
+
event.headers.delete("api-key");
|
|
21406
|
+
} else {
|
|
21407
|
+
for (const key of Object.keys(event.headers)) {
|
|
21408
|
+
const lower = key.toLowerCase();
|
|
21409
|
+
if (lower === "x-goog-api-key" || lower === "api-key") {
|
|
21410
|
+
delete event.headers[key];
|
|
21411
|
+
}
|
|
21412
|
+
}
|
|
21413
|
+
}
|
|
21414
|
+
if (event.request?.headers) {
|
|
21415
|
+
if (typeof event.request.headers.delete === "function") {
|
|
21416
|
+
event.request.headers.delete("x-goog-api-key");
|
|
21417
|
+
event.request.headers.delete("api-key");
|
|
21418
|
+
} else {
|
|
21419
|
+
for (const key of Object.keys(event.request.headers)) {
|
|
21420
|
+
const lower = key.toLowerCase();
|
|
21421
|
+
if (lower === "x-goog-api-key" || lower === "api-key") {
|
|
21422
|
+
delete event.request.headers[key];
|
|
21423
|
+
}
|
|
21424
|
+
}
|
|
21425
|
+
}
|
|
21426
|
+
}
|
|
21427
|
+
let cleanUrl = rawUrl;
|
|
21428
|
+
try {
|
|
21429
|
+
const parsedUrl = new URL(rawUrl);
|
|
21430
|
+
let urlChanged = false;
|
|
21431
|
+
for (const param of ["key", "x-goog-api-key", "api-key"]) {
|
|
21432
|
+
if (parsedUrl.searchParams.has(param)) {
|
|
21433
|
+
parsedUrl.searchParams.delete(param);
|
|
21434
|
+
urlChanged = true;
|
|
21435
|
+
}
|
|
21436
|
+
}
|
|
21437
|
+
if (urlChanged) {
|
|
21438
|
+
cleanUrl = parsedUrl.toString();
|
|
21439
|
+
}
|
|
21440
|
+
} catch {
|
|
21441
|
+
}
|
|
21442
|
+
if (authRecord && authRecord.access) {
|
|
21443
|
+
let projectContext;
|
|
21444
|
+
try {
|
|
21445
|
+
projectContext = await ensureProjectContext(
|
|
21446
|
+
authRecord,
|
|
21447
|
+
{ auth: { set: async () => {
|
|
21448
|
+
} } },
|
|
21449
|
+
void 0,
|
|
21450
|
+
modelName
|
|
21451
|
+
);
|
|
21452
|
+
} catch {
|
|
21453
|
+
projectContext = {
|
|
21454
|
+
effectiveProjectId: parseRefreshParts(authRecord.refresh).projectId || "antigravity",
|
|
21455
|
+
auth: authRecord
|
|
21456
|
+
};
|
|
21457
|
+
}
|
|
21458
|
+
const originalRequestedModel = modelName;
|
|
21459
|
+
let modifiedUrl = cleanUrl;
|
|
21460
|
+
if (originalRequestedModel) {
|
|
21461
|
+
const originalBase = originalRequestedModel.replace("google-agy/", "");
|
|
21462
|
+
const initHeaders = event.headers instanceof Headers ? event.headers : event.request?.headers;
|
|
21463
|
+
const resolvedBase = resolveModelTier2(originalBase, { headers: initHeaders });
|
|
21464
|
+
if (originalBase !== resolvedBase) {
|
|
21465
|
+
modifiedUrl = modifiedUrl.replace(`models/${originalBase}`, `models/${resolvedBase}`);
|
|
21466
|
+
}
|
|
21467
|
+
}
|
|
21468
|
+
let bodyPayload = event.body;
|
|
21469
|
+
if (bodyPayload === void 0 && event.request) {
|
|
21470
|
+
if (typeof event.request.clone === "function") {
|
|
21471
|
+
try {
|
|
21472
|
+
bodyPayload = await event.request.clone().text();
|
|
21473
|
+
} catch {
|
|
21474
|
+
}
|
|
21475
|
+
} else if (event.request.body !== void 0) {
|
|
21476
|
+
bodyPayload = event.request.body;
|
|
21477
|
+
}
|
|
21478
|
+
}
|
|
21479
|
+
let preExistingUserAgent;
|
|
21480
|
+
if (typeof event.headers?.get === "function") {
|
|
21481
|
+
preExistingUserAgent = event.headers.get("user-agent") || event.headers.get("User-Agent") || void 0;
|
|
21482
|
+
} else if (event.headers && typeof event.headers === "object") {
|
|
21483
|
+
preExistingUserAgent = event.headers["user-agent"] || event.headers["User-Agent"] || void 0;
|
|
21484
|
+
}
|
|
21485
|
+
if (!preExistingUserAgent && typeof event.request?.headers?.get === "function") {
|
|
21486
|
+
preExistingUserAgent = event.request.headers.get("user-agent") || event.request.headers.get("User-Agent") || void 0;
|
|
21487
|
+
} else if (!preExistingUserAgent && event.request?.headers && typeof event.request.headers === "object") {
|
|
21488
|
+
preExistingUserAgent = event.request.headers["user-agent"] || event.request.headers["User-Agent"] || void 0;
|
|
21489
|
+
}
|
|
21490
|
+
const method = event.method || event.request?.method || "POST";
|
|
21491
|
+
const requestHeaders = event.headers || event.request?.headers;
|
|
21492
|
+
const transformed = prepareAgyRequest(
|
|
21493
|
+
modifiedUrl,
|
|
21494
|
+
{
|
|
21495
|
+
method,
|
|
21496
|
+
headers: requestHeaders,
|
|
21497
|
+
body: bodyPayload
|
|
21498
|
+
},
|
|
21499
|
+
authRecord.access,
|
|
21500
|
+
projectContext.effectiveProjectId
|
|
21501
|
+
);
|
|
21502
|
+
const targetUrl = toUrlString2(transformed.request);
|
|
21503
|
+
if (typeof event.url === "string") {
|
|
21504
|
+
event.url = targetUrl;
|
|
21505
|
+
}
|
|
21506
|
+
if (event.request && typeof event.request === "object") {
|
|
21507
|
+
if (typeof Request !== "undefined" && event.request instanceof Request) {
|
|
21508
|
+
event.request = new Request(targetUrl, {
|
|
21509
|
+
method: transformed.init.method,
|
|
21510
|
+
headers: transformed.init.headers,
|
|
21511
|
+
body: transformed.init.body
|
|
21512
|
+
});
|
|
21513
|
+
} else if (typeof event.request.url === "string") {
|
|
21514
|
+
try {
|
|
21515
|
+
event.request.url = targetUrl;
|
|
21516
|
+
} catch {
|
|
21517
|
+
}
|
|
21518
|
+
}
|
|
21519
|
+
}
|
|
21520
|
+
const headerEntries = transformed.init.headers instanceof Headers ? Array.from(transformed.init.headers.entries()) : Object.entries(transformed.init.headers || {});
|
|
21521
|
+
for (const [k, v] of headerEntries) {
|
|
21522
|
+
const lowerK = k.toLowerCase();
|
|
21523
|
+
if (lowerK === "user-agent") {
|
|
21524
|
+
if (preExistingUserAgent) {
|
|
21525
|
+
continue;
|
|
21526
|
+
}
|
|
21527
|
+
if (typeof event.headers?.set === "function") {
|
|
21528
|
+
event.headers.set("User-Agent", v);
|
|
21529
|
+
} else if (event.headers) {
|
|
21530
|
+
event.headers["User-Agent"] = v;
|
|
21531
|
+
}
|
|
21532
|
+
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21533
|
+
event.request.headers.set("User-Agent", v);
|
|
21534
|
+
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21535
|
+
event.request.headers["User-Agent"] = v;
|
|
21536
|
+
}
|
|
21537
|
+
continue;
|
|
21538
|
+
}
|
|
21539
|
+
if (typeof event.headers?.set === "function") {
|
|
21540
|
+
event.headers.set(k, v);
|
|
21541
|
+
} else if (event.headers) {
|
|
21542
|
+
event.headers[k] = v;
|
|
21543
|
+
}
|
|
21544
|
+
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21545
|
+
event.request.headers.set(k, v);
|
|
21546
|
+
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21547
|
+
event.request.headers[k] = v;
|
|
21548
|
+
}
|
|
21549
|
+
}
|
|
21550
|
+
if (transformed.init.body !== void 0) {
|
|
21551
|
+
event.body = transformed.init.body;
|
|
21552
|
+
if (event.request && typeof event.request === "object" && !(event.request instanceof Request)) {
|
|
21553
|
+
event.request.body = transformed.init.body;
|
|
21554
|
+
}
|
|
21555
|
+
}
|
|
21556
|
+
} else {
|
|
21557
|
+
if (typeof event.url === "string") {
|
|
21558
|
+
event.url = cleanUrl;
|
|
21559
|
+
}
|
|
21560
|
+
if (event.request && typeof event.request === "object") {
|
|
21561
|
+
if (typeof event.request.url === "string") {
|
|
21562
|
+
event.request.url = cleanUrl;
|
|
21563
|
+
}
|
|
21564
|
+
}
|
|
21565
|
+
}
|
|
21566
|
+
}
|
|
21567
|
+
if (authRecord && authRecord.access) {
|
|
21568
|
+
if (typeof event.headers?.set === "function") {
|
|
21569
|
+
event.headers.set("Authorization", `Bearer ${authRecord.access}`);
|
|
21570
|
+
} else if (event.headers) {
|
|
21571
|
+
event.headers["Authorization"] = `Bearer ${authRecord.access}`;
|
|
21572
|
+
}
|
|
21573
|
+
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21574
|
+
event.request.headers.set("Authorization", `Bearer ${authRecord.access}`);
|
|
21575
|
+
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21576
|
+
event.request.headers["Authorization"] = `Bearer ${authRecord.access}`;
|
|
21577
|
+
}
|
|
21578
|
+
}
|
|
21579
|
+
const userAgent = buildAgyCliUserAgent(modelName);
|
|
21580
|
+
if (typeof event.headers?.set === "function") {
|
|
21581
|
+
if (!event.headers.get("User-Agent") && !event.headers.get("user-agent")) {
|
|
21582
|
+
event.headers.set("User-Agent", userAgent);
|
|
21583
|
+
}
|
|
21584
|
+
} else if (event.headers) {
|
|
21585
|
+
if (!event.headers["User-Agent"] && !event.headers["user-agent"]) {
|
|
21586
|
+
event.headers["User-Agent"] = userAgent;
|
|
21587
|
+
}
|
|
21588
|
+
}
|
|
21589
|
+
if (event.request?.headers && typeof event.request.headers.set === "function") {
|
|
21590
|
+
if (!event.request.headers.get("User-Agent") && !event.request.headers.get("user-agent")) {
|
|
21591
|
+
event.request.headers.set("User-Agent", userAgent);
|
|
21592
|
+
}
|
|
21593
|
+
} else if (event.request?.headers && typeof event.request.headers === "object") {
|
|
21594
|
+
if (!event.request.headers["User-Agent"] && !event.request.headers["user-agent"]) {
|
|
21595
|
+
event.request.headers["User-Agent"] = userAgent;
|
|
21596
|
+
}
|
|
21597
|
+
}
|
|
21598
|
+
},
|
|
21599
|
+
{ providerID: AGY_PROVIDER_ID }
|
|
21600
|
+
);
|
|
21601
|
+
ctx.session.hook(
|
|
21602
|
+
"http.response",
|
|
21603
|
+
async (event) => {
|
|
21604
|
+
if (!event || !event.response) return;
|
|
21605
|
+
const rawUrl = typeof event.url === "string" ? event.url : event.request?.url || "";
|
|
21606
|
+
const isInternal = rawUrl.includes("cloudcode-pa.googleapis.com");
|
|
21607
|
+
if (isInternal && event.response instanceof Response) {
|
|
21608
|
+
const isStreaming = rawUrl.includes(":streamGenerateCode") || event.response.headers.get("content-type")?.includes("text/event-stream");
|
|
21609
|
+
const parsedModel = parseGenerativeLanguageRequest(rawUrl)?.effectiveModel || lastInterceptedModel;
|
|
21610
|
+
const transformed = await transformAgyResponse(
|
|
21611
|
+
event.response,
|
|
21612
|
+
!!isStreaming,
|
|
21613
|
+
null,
|
|
21614
|
+
parsedModel,
|
|
21615
|
+
void 0,
|
|
21616
|
+
void 0
|
|
21617
|
+
);
|
|
21618
|
+
event.response = transformed;
|
|
21619
|
+
}
|
|
21620
|
+
},
|
|
21621
|
+
{ providerID: AGY_PROVIDER_ID }
|
|
21622
|
+
);
|
|
21623
|
+
ctx.session.hook(
|
|
21624
|
+
"retry",
|
|
21625
|
+
async (event) => {
|
|
21626
|
+
if (!event) return;
|
|
21627
|
+
const response = event.response;
|
|
21628
|
+
if (response instanceof Response) {
|
|
21629
|
+
if (response.status === 429 || response.status === 503) {
|
|
21630
|
+
const quota = await classifyQuotaResponse(response);
|
|
21631
|
+
if (quota?.retryDelayMs) {
|
|
21632
|
+
event.retryDelayMs = quota.retryDelayMs;
|
|
21633
|
+
} else {
|
|
21634
|
+
event.retryDelayMs = await resolveRetryDelayMs(response, event.attempt || 1);
|
|
21635
|
+
}
|
|
21636
|
+
}
|
|
21637
|
+
} else if (event.details && Array.isArray(event.details)) {
|
|
21638
|
+
const retryInfo = event.details.find(
|
|
21639
|
+
(d) => d && d["@type"] === "type.googleapis.com/google.rpc.RetryInfo"
|
|
21640
|
+
);
|
|
21641
|
+
if (retryInfo?.retryDelay) {
|
|
21642
|
+
const delayMs = retryInternals.parseRetryDelayValue(retryInfo.retryDelay);
|
|
21643
|
+
if (delayMs !== null) {
|
|
21644
|
+
event.retryDelayMs = delayMs;
|
|
21645
|
+
}
|
|
21646
|
+
}
|
|
21647
|
+
}
|
|
21648
|
+
},
|
|
21649
|
+
{ providerID: AGY_PROVIDER_ID }
|
|
21650
|
+
);
|
|
21613
21651
|
}
|
|
21614
21652
|
var v2PluginDefinition = defineOpenCodeV2Plugin({
|
|
21615
21653
|
id: AGY_PROVIDER_ID,
|