freecodego 0.1.6-alpha.2.4 → 0.1.7-alpha.2.2
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.i18n.yaml +2 -2
- package/README.md +19 -9
- package/README.zh.md +19 -9
- package/cordis.patch.yml +42 -6
- package/dist/agent-team.js +13 -74
- package/dist/assets/presets/augmentcode/agent.cordis.yml +3 -2
- package/dist/assets/presets/freecodego/agent.cordis.yml +3 -2
- package/dist/auto-review.js +8 -11
- package/dist/bootstrap.js +1284 -739
- package/dist/client.cjs +1584 -302
- package/dist/harness-plugin.js +5 -0
- package/dist/schedule.js +78 -26
- package/dist/tool-agent-team.js +38 -97
- package/package.json +76 -43
- package/presets/augmentcode.patch.yml +273 -0
- package/presets/freecodego.patch.yml +255 -0
package/dist/client.cjs
CHANGED
|
@@ -4552,6 +4552,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4552
4552
|
"revoked": boolean().readonly()
|
|
4553
4553
|
})).readonly()
|
|
4554
4554
|
});
|
|
4555
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountForgotPassword_parameter_0$schema$value;
|
|
4556
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountForgotPassword_parameter_0$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountForgotPassword_parameter_0$schema$value ??= string();
|
|
4557
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountForgotPassword_result$schema$value;
|
|
4558
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountForgotPassword_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountForgotPassword_result$schema$value ??= object$1({ "sent": literal(true).readonly() });
|
|
4555
4559
|
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountLogin_parameter_0$schema$value;
|
|
4556
4560
|
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountLogin_parameter_0$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountLogin_parameter_0$schema$value ??= object$1({
|
|
4557
4561
|
"email": string().readonly(),
|
|
@@ -4787,6 +4791,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
4787
4791
|
]);
|
|
4788
4792
|
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountRememberedPassword_result$schema$value;
|
|
4789
4793
|
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountRememberedPassword_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountRememberedPassword_result$schema$value ??= object$1({ "password": string().readonly().optional() });
|
|
4794
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountResetPassword_parameter_0$schema$value;
|
|
4795
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountResetPassword_parameter_0$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountResetPassword_parameter_0$schema$value ??= object$1({
|
|
4796
|
+
"email": string().readonly(),
|
|
4797
|
+
"verifyCode": string().readonly(),
|
|
4798
|
+
"newPassword": string().readonly()
|
|
4799
|
+
});
|
|
4800
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountResetPassword_result$schema$value;
|
|
4801
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountResetPassword_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountResetPassword_result$schema$value ??= object$1({ "reset": literal(true).readonly() });
|
|
4790
4802
|
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountRevokeAllSessions_result$schema$value;
|
|
4791
4803
|
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountRevokeAllSessions_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountRevokeAllSessions_result$schema$value ??= number();
|
|
4792
4804
|
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountRevokeDeviceSession_parameter_0$schema$value;
|
|
@@ -8936,6 +8948,20 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8936
8948
|
"scope": union([literal("project"), literal("user")]).readonly()
|
|
8937
8949
|
})]).readonly().optional()
|
|
8938
8950
|
});
|
|
8951
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationSetEnabled_parameter_0$schema$value;
|
|
8952
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationSetEnabled_parameter_0$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationSetEnabled_parameter_0$schema$value ??= boolean();
|
|
8953
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationSetEnabled_result$schema$value;
|
|
8954
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationSetEnabled_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationSetEnabled_result$schema$value ??= object$1({
|
|
8955
|
+
"enabled": boolean().readonly(),
|
|
8956
|
+
"gated": array(string()).readonly(),
|
|
8957
|
+
"registered": array(string()).readonly()
|
|
8958
|
+
});
|
|
8959
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationStatus_result$schema$value;
|
|
8960
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationStatus_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationStatus_result$schema$value ??= object$1({
|
|
8961
|
+
"enabled": boolean().readonly(),
|
|
8962
|
+
"gated": array(string()).readonly(),
|
|
8963
|
+
"registered": array(string()).readonly()
|
|
8964
|
+
});
|
|
8939
8965
|
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_modelAvailability_result$schema$value;
|
|
8940
8966
|
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_modelAvailability_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_modelAvailability_result$schema$value ??= array(object$1({
|
|
8941
8967
|
"provider": string().readonly(),
|
|
@@ -11795,6 +11821,34 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11795
11821
|
"name": string().readonly()
|
|
11796
11822
|
})).readonly()
|
|
11797
11823
|
});
|
|
11824
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBind_parameter_0$schema$value;
|
|
11825
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBind_parameter_0$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBind_parameter_0$schema$value ??= object$1({
|
|
11826
|
+
"provider": string().readonly().optional(),
|
|
11827
|
+
"model": string().readonly().optional()
|
|
11828
|
+
});
|
|
11829
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBind_result$schema$value;
|
|
11830
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBind_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBind_result$schema$value ??= object$1({
|
|
11831
|
+
"provider": string().readonly(),
|
|
11832
|
+
"model": string().readonly(),
|
|
11833
|
+
"baseURL": string().readonly(),
|
|
11834
|
+
"apiKeyEnv": string().readonly(),
|
|
11835
|
+
"apiKey": string().readonly(),
|
|
11836
|
+
"durable": boolean().readonly()
|
|
11837
|
+
});
|
|
11838
|
+
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBindingStatus_result$schema$value;
|
|
11839
|
+
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBindingStatus_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBindingStatus_result$schema$value ??= object$1({
|
|
11840
|
+
"state": union([
|
|
11841
|
+
literal("other"),
|
|
11842
|
+
literal("bridge"),
|
|
11843
|
+
literal("none"),
|
|
11844
|
+
literal("durable")
|
|
11845
|
+
]).readonly(),
|
|
11846
|
+
"alive": boolean().readonly(),
|
|
11847
|
+
"remembered": object$1({
|
|
11848
|
+
"provider": string().readonly(),
|
|
11849
|
+
"model": string().readonly()
|
|
11850
|
+
}).readonly().optional()
|
|
11851
|
+
});
|
|
11798
11852
|
let _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_workbuddyImportDesktopLogin_result$schema$value;
|
|
11799
11853
|
const _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_workbuddyImportDesktopLogin_result$schema = () => _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_workbuddyImportDesktopLogin_result$schema$value ??= object$1({
|
|
11800
11854
|
"configured": boolean().readonly(),
|
|
@@ -12219,7 +12273,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12219
12273
|
},
|
|
12220
12274
|
sourceLocation: {
|
|
12221
12275
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12222
|
-
"line":
|
|
12276
|
+
"line": 5926,
|
|
12223
12277
|
"column": 9
|
|
12224
12278
|
}
|
|
12225
12279
|
},
|
|
@@ -12238,7 +12292,35 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12238
12292
|
},
|
|
12239
12293
|
sourceLocation: {
|
|
12240
12294
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12241
|
-
"line":
|
|
12295
|
+
"line": 6070,
|
|
12296
|
+
"column": 9
|
|
12297
|
+
}
|
|
12298
|
+
},
|
|
12299
|
+
{
|
|
12300
|
+
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountForgotPassword",
|
|
12301
|
+
service: "freeCodeGoHarness",
|
|
12302
|
+
namespace: "freeCodeGoHarness",
|
|
12303
|
+
method: "accountForgotPassword",
|
|
12304
|
+
implementation: "forgotPassword",
|
|
12305
|
+
invocation: { kind: "direct" },
|
|
12306
|
+
parameters: [{
|
|
12307
|
+
name: "email",
|
|
12308
|
+
wire: "email",
|
|
12309
|
+
source: "json",
|
|
12310
|
+
codec: {
|
|
12311
|
+
mode: "strict",
|
|
12312
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountForgotPassword:email",
|
|
12313
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountForgotPassword_parameter_0$schema
|
|
12314
|
+
}
|
|
12315
|
+
}],
|
|
12316
|
+
result: {
|
|
12317
|
+
mode: "strict",
|
|
12318
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountForgotPassword:result",
|
|
12319
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountForgotPassword_result$schema
|
|
12320
|
+
},
|
|
12321
|
+
sourceLocation: {
|
|
12322
|
+
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12323
|
+
"line": 5956,
|
|
12242
12324
|
"column": 9
|
|
12243
12325
|
}
|
|
12244
12326
|
},
|
|
@@ -12266,7 +12348,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12266
12348
|
},
|
|
12267
12349
|
sourceLocation: {
|
|
12268
12350
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12269
|
-
"line":
|
|
12351
|
+
"line": 5976,
|
|
12270
12352
|
"column": 9
|
|
12271
12353
|
}
|
|
12272
12354
|
},
|
|
@@ -12285,7 +12367,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12285
12367
|
},
|
|
12286
12368
|
sourceLocation: {
|
|
12287
12369
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12288
|
-
"line":
|
|
12370
|
+
"line": 6062,
|
|
12289
12371
|
"column": 9
|
|
12290
12372
|
}
|
|
12291
12373
|
},
|
|
@@ -12323,7 +12405,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12323
12405
|
},
|
|
12324
12406
|
sourceLocation: {
|
|
12325
12407
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12326
|
-
"line":
|
|
12408
|
+
"line": 6043,
|
|
12327
12409
|
"column": 9
|
|
12328
12410
|
}
|
|
12329
12411
|
},
|
|
@@ -12351,7 +12433,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12351
12433
|
},
|
|
12352
12434
|
sourceLocation: {
|
|
12353
12435
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12354
|
-
"line":
|
|
12436
|
+
"line": 5997,
|
|
12355
12437
|
"column": 9
|
|
12356
12438
|
}
|
|
12357
12439
|
},
|
|
@@ -12379,7 +12461,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12379
12461
|
},
|
|
12380
12462
|
sourceLocation: {
|
|
12381
12463
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12382
|
-
"line":
|
|
12464
|
+
"line": 6023,
|
|
12383
12465
|
"column": 9
|
|
12384
12466
|
}
|
|
12385
12467
|
},
|
|
@@ -12407,7 +12489,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12407
12489
|
},
|
|
12408
12490
|
sourceLocation: {
|
|
12409
12491
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12410
|
-
"line":
|
|
12492
|
+
"line": 6032,
|
|
12411
12493
|
"column": 9
|
|
12412
12494
|
}
|
|
12413
12495
|
},
|
|
@@ -12435,7 +12517,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12435
12517
|
},
|
|
12436
12518
|
sourceLocation: {
|
|
12437
12519
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12438
|
-
"line":
|
|
12520
|
+
"line": 6014,
|
|
12439
12521
|
"column": 9
|
|
12440
12522
|
}
|
|
12441
12523
|
},
|
|
@@ -12454,7 +12536,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12454
12536
|
},
|
|
12455
12537
|
sourceLocation: {
|
|
12456
12538
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12457
|
-
"line":
|
|
12539
|
+
"line": 6005,
|
|
12458
12540
|
"column": 9
|
|
12459
12541
|
}
|
|
12460
12542
|
},
|
|
@@ -12483,7 +12565,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12483
12565
|
},
|
|
12484
12566
|
sourceLocation: {
|
|
12485
12567
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12486
|
-
"line":
|
|
12568
|
+
"line": 6053,
|
|
12487
12569
|
"column": 9
|
|
12488
12570
|
}
|
|
12489
12571
|
},
|
|
@@ -12511,7 +12593,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12511
12593
|
},
|
|
12512
12594
|
sourceLocation: {
|
|
12513
12595
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12514
|
-
"line":
|
|
12596
|
+
"line": 5936,
|
|
12515
12597
|
"column": 9
|
|
12516
12598
|
}
|
|
12517
12599
|
},
|
|
@@ -12530,7 +12612,35 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12530
12612
|
},
|
|
12531
12613
|
sourceLocation: {
|
|
12532
12614
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12533
|
-
"line":
|
|
12615
|
+
"line": 5985,
|
|
12616
|
+
"column": 9
|
|
12617
|
+
}
|
|
12618
|
+
},
|
|
12619
|
+
{
|
|
12620
|
+
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountResetPassword",
|
|
12621
|
+
service: "freeCodeGoHarness",
|
|
12622
|
+
namespace: "freeCodeGoHarness",
|
|
12623
|
+
method: "accountResetPassword",
|
|
12624
|
+
implementation: "resetPassword",
|
|
12625
|
+
invocation: { kind: "direct" },
|
|
12626
|
+
parameters: [{
|
|
12627
|
+
name: "input",
|
|
12628
|
+
wire: "input",
|
|
12629
|
+
source: "json",
|
|
12630
|
+
codec: {
|
|
12631
|
+
mode: "strict",
|
|
12632
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin/types#FreeCodeGoPasswordResetRequest",
|
|
12633
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountResetPassword_parameter_0$schema
|
|
12634
|
+
}
|
|
12635
|
+
}],
|
|
12636
|
+
result: {
|
|
12637
|
+
mode: "strict",
|
|
12638
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/accountResetPassword:result",
|
|
12639
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_accountResetPassword_result$schema
|
|
12640
|
+
},
|
|
12641
|
+
sourceLocation: {
|
|
12642
|
+
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12643
|
+
"line": 5966,
|
|
12534
12644
|
"column": 9
|
|
12535
12645
|
}
|
|
12536
12646
|
},
|
|
@@ -12549,7 +12659,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12549
12659
|
},
|
|
12550
12660
|
sourceLocation: {
|
|
12551
12661
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12552
|
-
"line":
|
|
12662
|
+
"line": 6088,
|
|
12553
12663
|
"column": 9
|
|
12554
12664
|
}
|
|
12555
12665
|
},
|
|
@@ -12577,7 +12687,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12577
12687
|
},
|
|
12578
12688
|
sourceLocation: {
|
|
12579
12689
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12580
|
-
"line":
|
|
12690
|
+
"line": 6080,
|
|
12581
12691
|
"column": 9
|
|
12582
12692
|
}
|
|
12583
12693
|
},
|
|
@@ -12605,7 +12715,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12605
12715
|
},
|
|
12606
12716
|
sourceLocation: {
|
|
12607
12717
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12608
|
-
"line":
|
|
12718
|
+
"line": 5946,
|
|
12609
12719
|
"column": 9
|
|
12610
12720
|
}
|
|
12611
12721
|
},
|
|
@@ -12623,7 +12733,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12623
12733
|
},
|
|
12624
12734
|
sourceLocation: {
|
|
12625
12735
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12626
|
-
"line":
|
|
12736
|
+
"line": 5917,
|
|
12627
12737
|
"column": 9
|
|
12628
12738
|
}
|
|
12629
12739
|
},
|
|
@@ -12641,7 +12751,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12641
12751
|
},
|
|
12642
12752
|
sourceLocation: {
|
|
12643
12753
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12644
|
-
"line":
|
|
12754
|
+
"line": 2255,
|
|
12645
12755
|
"column": 9
|
|
12646
12756
|
}
|
|
12647
12757
|
},
|
|
@@ -12659,7 +12769,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12659
12769
|
},
|
|
12660
12770
|
sourceLocation: {
|
|
12661
12771
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12662
|
-
"line":
|
|
12772
|
+
"line": 2263,
|
|
12663
12773
|
"column": 3
|
|
12664
12774
|
}
|
|
12665
12775
|
},
|
|
@@ -12686,7 +12796,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12686
12796
|
},
|
|
12687
12797
|
sourceLocation: {
|
|
12688
12798
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12689
|
-
"line":
|
|
12799
|
+
"line": 2276,
|
|
12690
12800
|
"column": 3
|
|
12691
12801
|
}
|
|
12692
12802
|
},
|
|
@@ -12704,7 +12814,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12704
12814
|
},
|
|
12705
12815
|
sourceLocation: {
|
|
12706
12816
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12707
|
-
"line":
|
|
12817
|
+
"line": 2238,
|
|
12708
12818
|
"column": 3
|
|
12709
12819
|
}
|
|
12710
12820
|
},
|
|
@@ -12731,7 +12841,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12731
12841
|
},
|
|
12732
12842
|
sourceLocation: {
|
|
12733
12843
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12734
|
-
"line":
|
|
12844
|
+
"line": 2247,
|
|
12735
12845
|
"column": 9
|
|
12736
12846
|
}
|
|
12737
12847
|
},
|
|
@@ -12759,7 +12869,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12759
12869
|
},
|
|
12760
12870
|
sourceLocation: {
|
|
12761
12871
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12762
|
-
"line":
|
|
12872
|
+
"line": 6678,
|
|
12763
12873
|
"column": 9
|
|
12764
12874
|
}
|
|
12765
12875
|
},
|
|
@@ -12795,7 +12905,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12795
12905
|
},
|
|
12796
12906
|
sourceLocation: {
|
|
12797
12907
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12798
|
-
"line":
|
|
12908
|
+
"line": 6660,
|
|
12799
12909
|
"column": 9
|
|
12800
12910
|
}
|
|
12801
12911
|
},
|
|
@@ -12823,7 +12933,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12823
12933
|
},
|
|
12824
12934
|
sourceLocation: {
|
|
12825
12935
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12826
|
-
"line":
|
|
12936
|
+
"line": 6702,
|
|
12827
12937
|
"column": 9
|
|
12828
12938
|
}
|
|
12829
12939
|
},
|
|
@@ -12851,7 +12961,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12851
12961
|
},
|
|
12852
12962
|
sourceLocation: {
|
|
12853
12963
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12854
|
-
"line":
|
|
12964
|
+
"line": 6694,
|
|
12855
12965
|
"column": 9
|
|
12856
12966
|
}
|
|
12857
12967
|
},
|
|
@@ -12900,7 +13010,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12900
13010
|
},
|
|
12901
13011
|
sourceLocation: {
|
|
12902
13012
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12903
|
-
"line":
|
|
13013
|
+
"line": 6670,
|
|
12904
13014
|
"column": 9
|
|
12905
13015
|
}
|
|
12906
13016
|
},
|
|
@@ -12927,7 +13037,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12927
13037
|
},
|
|
12928
13038
|
sourceLocation: {
|
|
12929
13039
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12930
|
-
"line":
|
|
13040
|
+
"line": 6686,
|
|
12931
13041
|
"column": 9
|
|
12932
13042
|
}
|
|
12933
13043
|
},
|
|
@@ -12976,7 +13086,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12976
13086
|
},
|
|
12977
13087
|
sourceLocation: {
|
|
12978
13088
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
12979
|
-
"line":
|
|
13089
|
+
"line": 6651,
|
|
12980
13090
|
"column": 9
|
|
12981
13091
|
}
|
|
12982
13092
|
},
|
|
@@ -13003,7 +13113,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13003
13113
|
},
|
|
13004
13114
|
sourceLocation: {
|
|
13005
13115
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13006
|
-
"line":
|
|
13116
|
+
"line": 6641,
|
|
13007
13117
|
"column": 9
|
|
13008
13118
|
}
|
|
13009
13119
|
},
|
|
@@ -13030,7 +13140,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13030
13140
|
},
|
|
13031
13141
|
sourceLocation: {
|
|
13032
13142
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13033
|
-
"line":
|
|
13143
|
+
"line": 6633,
|
|
13034
13144
|
"column": 9
|
|
13035
13145
|
}
|
|
13036
13146
|
},
|
|
@@ -13048,7 +13158,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13048
13158
|
},
|
|
13049
13159
|
sourceLocation: {
|
|
13050
13160
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13051
|
-
"line":
|
|
13161
|
+
"line": 6625,
|
|
13052
13162
|
"column": 9
|
|
13053
13163
|
}
|
|
13054
13164
|
},
|
|
@@ -13066,7 +13176,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13066
13176
|
},
|
|
13067
13177
|
sourceLocation: {
|
|
13068
13178
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13069
|
-
"line":
|
|
13179
|
+
"line": 5041,
|
|
13070
13180
|
"column": 9
|
|
13071
13181
|
}
|
|
13072
13182
|
},
|
|
@@ -13093,7 +13203,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13093
13203
|
},
|
|
13094
13204
|
sourceLocation: {
|
|
13095
13205
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13096
|
-
"line":
|
|
13206
|
+
"line": 5068,
|
|
13097
13207
|
"column": 9
|
|
13098
13208
|
}
|
|
13099
13209
|
},
|
|
@@ -13111,7 +13221,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13111
13221
|
},
|
|
13112
13222
|
sourceLocation: {
|
|
13113
13223
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13114
|
-
"line":
|
|
13224
|
+
"line": 6560,
|
|
13115
13225
|
"column": 9
|
|
13116
13226
|
}
|
|
13117
13227
|
},
|
|
@@ -13129,7 +13239,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13129
13239
|
},
|
|
13130
13240
|
sourceLocation: {
|
|
13131
13241
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13132
|
-
"line":
|
|
13242
|
+
"line": 6101,
|
|
13133
13243
|
"column": 9
|
|
13134
13244
|
}
|
|
13135
13245
|
},
|
|
@@ -13147,7 +13257,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13147
13257
|
},
|
|
13148
13258
|
sourceLocation: {
|
|
13149
13259
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13150
|
-
"line":
|
|
13260
|
+
"line": 6568,
|
|
13151
13261
|
"column": 9
|
|
13152
13262
|
}
|
|
13153
13263
|
},
|
|
@@ -13165,7 +13275,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13165
13275
|
},
|
|
13166
13276
|
sourceLocation: {
|
|
13167
13277
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13168
|
-
"line":
|
|
13278
|
+
"line": 6576,
|
|
13169
13279
|
"column": 9
|
|
13170
13280
|
}
|
|
13171
13281
|
},
|
|
@@ -13192,7 +13302,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13192
13302
|
},
|
|
13193
13303
|
sourceLocation: {
|
|
13194
13304
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13195
|
-
"line":
|
|
13305
|
+
"line": 6586,
|
|
13196
13306
|
"column": 9
|
|
13197
13307
|
}
|
|
13198
13308
|
},
|
|
@@ -13211,7 +13321,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13211
13321
|
},
|
|
13212
13322
|
sourceLocation: {
|
|
13213
13323
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13214
|
-
"line":
|
|
13324
|
+
"line": 5410,
|
|
13215
13325
|
"column": 9
|
|
13216
13326
|
}
|
|
13217
13327
|
},
|
|
@@ -13238,7 +13348,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13238
13348
|
},
|
|
13239
13349
|
sourceLocation: {
|
|
13240
13350
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13241
|
-
"line":
|
|
13351
|
+
"line": 5419,
|
|
13242
13352
|
"column": 9
|
|
13243
13353
|
}
|
|
13244
13354
|
},
|
|
@@ -13265,7 +13375,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13265
13375
|
},
|
|
13266
13376
|
sourceLocation: {
|
|
13267
13377
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13268
|
-
"line":
|
|
13378
|
+
"line": 5515,
|
|
13269
13379
|
"column": 9
|
|
13270
13380
|
}
|
|
13271
13381
|
},
|
|
@@ -13283,7 +13393,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13283
13393
|
},
|
|
13284
13394
|
sourceLocation: {
|
|
13285
13395
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13286
|
-
"line":
|
|
13396
|
+
"line": 5792,
|
|
13287
13397
|
"column": 3
|
|
13288
13398
|
}
|
|
13289
13399
|
},
|
|
@@ -13311,7 +13421,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13311
13421
|
},
|
|
13312
13422
|
sourceLocation: {
|
|
13313
13423
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13314
|
-
"line":
|
|
13424
|
+
"line": 5863,
|
|
13315
13425
|
"column": 9
|
|
13316
13426
|
}
|
|
13317
13427
|
},
|
|
@@ -13329,7 +13439,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13329
13439
|
},
|
|
13330
13440
|
sourceLocation: {
|
|
13331
13441
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13332
|
-
"line":
|
|
13442
|
+
"line": 5872,
|
|
13333
13443
|
"column": 3
|
|
13334
13444
|
}
|
|
13335
13445
|
},
|
|
@@ -13347,7 +13457,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13347
13457
|
},
|
|
13348
13458
|
sourceLocation: {
|
|
13349
13459
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13350
|
-
"line":
|
|
13460
|
+
"line": 5879,
|
|
13351
13461
|
"column": 9
|
|
13352
13462
|
}
|
|
13353
13463
|
},
|
|
@@ -13365,7 +13475,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13365
13475
|
},
|
|
13366
13476
|
sourceLocation: {
|
|
13367
13477
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13368
|
-
"line":
|
|
13478
|
+
"line": 5855,
|
|
13369
13479
|
"column": 3
|
|
13370
13480
|
}
|
|
13371
13481
|
},
|
|
@@ -13392,7 +13502,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13392
13502
|
},
|
|
13393
13503
|
sourceLocation: {
|
|
13394
13504
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13395
|
-
"line":
|
|
13505
|
+
"line": 6523,
|
|
13396
13506
|
"column": 9
|
|
13397
13507
|
}
|
|
13398
13508
|
},
|
|
@@ -13410,7 +13520,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13410
13520
|
},
|
|
13411
13521
|
sourceLocation: {
|
|
13412
13522
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13413
|
-
"line":
|
|
13523
|
+
"line": 6552,
|
|
13414
13524
|
"column": 9
|
|
13415
13525
|
}
|
|
13416
13526
|
},
|
|
@@ -13437,7 +13547,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13437
13547
|
},
|
|
13438
13548
|
sourceLocation: {
|
|
13439
13549
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13440
|
-
"line":
|
|
13550
|
+
"line": 6513,
|
|
13441
13551
|
"column": 9
|
|
13442
13552
|
}
|
|
13443
13553
|
},
|
|
@@ -13465,7 +13575,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13465
13575
|
},
|
|
13466
13576
|
sourceLocation: {
|
|
13467
13577
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13468
|
-
"line":
|
|
13578
|
+
"line": 6543,
|
|
13469
13579
|
"column": 9
|
|
13470
13580
|
}
|
|
13471
13581
|
},
|
|
@@ -13492,7 +13602,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13492
13602
|
},
|
|
13493
13603
|
sourceLocation: {
|
|
13494
13604
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13495
|
-
"line":
|
|
13605
|
+
"line": 6533,
|
|
13496
13606
|
"column": 9
|
|
13497
13607
|
}
|
|
13498
13608
|
},
|
|
@@ -13510,7 +13620,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13510
13620
|
},
|
|
13511
13621
|
sourceLocation: {
|
|
13512
13622
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13513
|
-
"line":
|
|
13623
|
+
"line": 6503,
|
|
13514
13624
|
"column": 9
|
|
13515
13625
|
}
|
|
13516
13626
|
},
|
|
@@ -13528,7 +13638,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13528
13638
|
},
|
|
13529
13639
|
sourceLocation: {
|
|
13530
13640
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13531
|
-
"line":
|
|
13641
|
+
"line": 6494,
|
|
13532
13642
|
"column": 9
|
|
13533
13643
|
}
|
|
13534
13644
|
},
|
|
@@ -13556,7 +13666,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13556
13666
|
},
|
|
13557
13667
|
sourceLocation: {
|
|
13558
13668
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13559
|
-
"line":
|
|
13669
|
+
"line": 5830,
|
|
13560
13670
|
"column": 9
|
|
13561
13671
|
}
|
|
13562
13672
|
},
|
|
@@ -13574,7 +13684,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13574
13684
|
},
|
|
13575
13685
|
sourceLocation: {
|
|
13576
13686
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13577
|
-
"line":
|
|
13687
|
+
"line": 5839,
|
|
13578
13688
|
"column": 9
|
|
13579
13689
|
}
|
|
13580
13690
|
},
|
|
@@ -13592,7 +13702,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13592
13702
|
},
|
|
13593
13703
|
sourceLocation: {
|
|
13594
13704
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13595
|
-
"line":
|
|
13705
|
+
"line": 5846,
|
|
13596
13706
|
"column": 9
|
|
13597
13707
|
}
|
|
13598
13708
|
},
|
|
@@ -13610,7 +13720,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13610
13720
|
},
|
|
13611
13721
|
sourceLocation: {
|
|
13612
13722
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13613
|
-
"line":
|
|
13723
|
+
"line": 5822,
|
|
13614
13724
|
"column": 3
|
|
13615
13725
|
}
|
|
13616
13726
|
},
|
|
@@ -13628,7 +13738,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13628
13738
|
},
|
|
13629
13739
|
sourceLocation: {
|
|
13630
13740
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13631
|
-
"line":
|
|
13741
|
+
"line": 5655,
|
|
13632
13742
|
"column": 9
|
|
13633
13743
|
}
|
|
13634
13744
|
},
|
|
@@ -13655,7 +13765,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13655
13765
|
},
|
|
13656
13766
|
sourceLocation: {
|
|
13657
13767
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13658
|
-
"line":
|
|
13768
|
+
"line": 5664,
|
|
13659
13769
|
"column": 9
|
|
13660
13770
|
}
|
|
13661
13771
|
},
|
|
@@ -13673,7 +13783,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13673
13783
|
},
|
|
13674
13784
|
sourceLocation: {
|
|
13675
13785
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13676
|
-
"line":
|
|
13786
|
+
"line": 5673,
|
|
13677
13787
|
"column": 9
|
|
13678
13788
|
}
|
|
13679
13789
|
},
|
|
@@ -13700,7 +13810,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13700
13810
|
},
|
|
13701
13811
|
sourceLocation: {
|
|
13702
13812
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13703
|
-
"line":
|
|
13813
|
+
"line": 5692,
|
|
13704
13814
|
"column": 9
|
|
13705
13815
|
}
|
|
13706
13816
|
},
|
|
@@ -13718,7 +13828,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13718
13828
|
},
|
|
13719
13829
|
sourceLocation: {
|
|
13720
13830
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13721
|
-
"line":
|
|
13831
|
+
"line": 5682,
|
|
13722
13832
|
"column": 9
|
|
13723
13833
|
}
|
|
13724
13834
|
},
|
|
@@ -13745,7 +13855,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13745
13855
|
},
|
|
13746
13856
|
sourceLocation: {
|
|
13747
13857
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13748
|
-
"line":
|
|
13858
|
+
"line": 5701,
|
|
13749
13859
|
"column": 9
|
|
13750
13860
|
}
|
|
13751
13861
|
},
|
|
@@ -13772,7 +13882,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13772
13882
|
},
|
|
13773
13883
|
sourceLocation: {
|
|
13774
13884
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13775
|
-
"line":
|
|
13885
|
+
"line": 2787,
|
|
13776
13886
|
"column": 9
|
|
13777
13887
|
}
|
|
13778
13888
|
},
|
|
@@ -13790,7 +13900,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13790
13900
|
},
|
|
13791
13901
|
sourceLocation: {
|
|
13792
13902
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13793
|
-
"line":
|
|
13903
|
+
"line": 2778,
|
|
13794
13904
|
"column": 3
|
|
13795
13905
|
}
|
|
13796
13906
|
},
|
|
@@ -13826,7 +13936,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13826
13936
|
},
|
|
13827
13937
|
sourceLocation: {
|
|
13828
13938
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13829
|
-
"line":
|
|
13939
|
+
"line": 2668,
|
|
13830
13940
|
"column": 9
|
|
13831
13941
|
}
|
|
13832
13942
|
},
|
|
@@ -13862,7 +13972,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13862
13972
|
},
|
|
13863
13973
|
sourceLocation: {
|
|
13864
13974
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13865
|
-
"line":
|
|
13975
|
+
"line": 2707,
|
|
13866
13976
|
"column": 3
|
|
13867
13977
|
}
|
|
13868
13978
|
},
|
|
@@ -13889,7 +13999,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13889
13999
|
},
|
|
13890
14000
|
sourceLocation: {
|
|
13891
14001
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13892
|
-
"line":
|
|
14002
|
+
"line": 2677,
|
|
13893
14003
|
"column": 3
|
|
13894
14004
|
}
|
|
13895
14005
|
},
|
|
@@ -13925,7 +14035,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13925
14035
|
},
|
|
13926
14036
|
sourceLocation: {
|
|
13927
14037
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13928
|
-
"line":
|
|
14038
|
+
"line": 2697,
|
|
13929
14039
|
"column": 3
|
|
13930
14040
|
}
|
|
13931
14041
|
},
|
|
@@ -13961,7 +14071,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13961
14071
|
},
|
|
13962
14072
|
sourceLocation: {
|
|
13963
14073
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
13964
|
-
"line":
|
|
14074
|
+
"line": 2687,
|
|
13965
14075
|
"column": 9
|
|
13966
14076
|
}
|
|
13967
14077
|
},
|
|
@@ -13997,7 +14107,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
13997
14107
|
},
|
|
13998
14108
|
sourceLocation: {
|
|
13999
14109
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14000
|
-
"line":
|
|
14110
|
+
"line": 2717,
|
|
14001
14111
|
"column": 3
|
|
14002
14112
|
}
|
|
14003
14113
|
},
|
|
@@ -14034,7 +14144,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14034
14144
|
},
|
|
14035
14145
|
sourceLocation: {
|
|
14036
14146
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14037
|
-
"line":
|
|
14147
|
+
"line": 5346,
|
|
14038
14148
|
"column": 3
|
|
14039
14149
|
}
|
|
14040
14150
|
},
|
|
@@ -14061,7 +14171,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14061
14171
|
},
|
|
14062
14172
|
sourceLocation: {
|
|
14063
14173
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14064
|
-
"line":
|
|
14174
|
+
"line": 5366,
|
|
14065
14175
|
"column": 3
|
|
14066
14176
|
}
|
|
14067
14177
|
},
|
|
@@ -14088,7 +14198,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14088
14198
|
},
|
|
14089
14199
|
sourceLocation: {
|
|
14090
14200
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14091
|
-
"line":
|
|
14201
|
+
"line": 5376,
|
|
14092
14202
|
"column": 3
|
|
14093
14203
|
}
|
|
14094
14204
|
},
|
|
@@ -14115,7 +14225,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14115
14225
|
},
|
|
14116
14226
|
sourceLocation: {
|
|
14117
14227
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14118
|
-
"line":
|
|
14228
|
+
"line": 5336,
|
|
14119
14229
|
"column": 3
|
|
14120
14230
|
}
|
|
14121
14231
|
},
|
|
@@ -14133,7 +14243,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14133
14243
|
},
|
|
14134
14244
|
sourceLocation: {
|
|
14135
14245
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14136
|
-
"line":
|
|
14246
|
+
"line": 5319,
|
|
14137
14247
|
"column": 3
|
|
14138
14248
|
}
|
|
14139
14249
|
},
|
|
@@ -14151,7 +14261,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14151
14261
|
},
|
|
14152
14262
|
sourceLocation: {
|
|
14153
14263
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14154
|
-
"line":
|
|
14264
|
+
"line": 5311,
|
|
14155
14265
|
"column": 3
|
|
14156
14266
|
}
|
|
14157
14267
|
},
|
|
@@ -14169,7 +14279,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14169
14279
|
},
|
|
14170
14280
|
sourceLocation: {
|
|
14171
14281
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14172
|
-
"line":
|
|
14282
|
+
"line": 5327,
|
|
14173
14283
|
"column": 3
|
|
14174
14284
|
}
|
|
14175
14285
|
},
|
|
@@ -14187,7 +14297,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14187
14297
|
},
|
|
14188
14298
|
sourceLocation: {
|
|
14189
14299
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14190
|
-
"line":
|
|
14300
|
+
"line": 5303,
|
|
14191
14301
|
"column": 3
|
|
14192
14302
|
}
|
|
14193
14303
|
},
|
|
@@ -14214,7 +14324,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14214
14324
|
},
|
|
14215
14325
|
sourceLocation: {
|
|
14216
14326
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14217
|
-
"line":
|
|
14327
|
+
"line": 5356,
|
|
14218
14328
|
"column": 3
|
|
14219
14329
|
}
|
|
14220
14330
|
},
|
|
@@ -14241,7 +14351,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14241
14351
|
},
|
|
14242
14352
|
sourceLocation: {
|
|
14243
14353
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14244
|
-
"line":
|
|
14354
|
+
"line": 2323,
|
|
14245
14355
|
"column": 9
|
|
14246
14356
|
}
|
|
14247
14357
|
},
|
|
@@ -14268,7 +14378,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14268
14378
|
},
|
|
14269
14379
|
sourceLocation: {
|
|
14270
14380
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14271
|
-
"line":
|
|
14381
|
+
"line": 2314,
|
|
14272
14382
|
"column": 3
|
|
14273
14383
|
}
|
|
14274
14384
|
},
|
|
@@ -14286,7 +14396,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14286
14396
|
},
|
|
14287
14397
|
sourceLocation: {
|
|
14288
14398
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14289
|
-
"line":
|
|
14399
|
+
"line": 2762,
|
|
14290
14400
|
"column": 9
|
|
14291
14401
|
}
|
|
14292
14402
|
},
|
|
@@ -14323,7 +14433,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14323
14433
|
},
|
|
14324
14434
|
sourceLocation: {
|
|
14325
14435
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14326
|
-
"line":
|
|
14436
|
+
"line": 5256,
|
|
14327
14437
|
"column": 3
|
|
14328
14438
|
}
|
|
14329
14439
|
},
|
|
@@ -14350,7 +14460,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14350
14460
|
},
|
|
14351
14461
|
sourceLocation: {
|
|
14352
14462
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14353
|
-
"line":
|
|
14463
|
+
"line": 5275,
|
|
14354
14464
|
"column": 3
|
|
14355
14465
|
}
|
|
14356
14466
|
},
|
|
@@ -14387,7 +14497,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14387
14497
|
},
|
|
14388
14498
|
sourceLocation: {
|
|
14389
14499
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14390
|
-
"line":
|
|
14500
|
+
"line": 5285,
|
|
14391
14501
|
"column": 3
|
|
14392
14502
|
}
|
|
14393
14503
|
},
|
|
@@ -14414,7 +14524,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14414
14524
|
},
|
|
14415
14525
|
sourceLocation: {
|
|
14416
14526
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14417
|
-
"line":
|
|
14527
|
+
"line": 5295,
|
|
14418
14528
|
"column": 3
|
|
14419
14529
|
}
|
|
14420
14530
|
},
|
|
@@ -14441,7 +14551,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14441
14551
|
},
|
|
14442
14552
|
sourceLocation: {
|
|
14443
14553
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14444
|
-
"line":
|
|
14554
|
+
"line": 5246,
|
|
14445
14555
|
"column": 3
|
|
14446
14556
|
}
|
|
14447
14557
|
},
|
|
@@ -14468,7 +14578,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14468
14578
|
},
|
|
14469
14579
|
sourceLocation: {
|
|
14470
14580
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14471
|
-
"line":
|
|
14581
|
+
"line": 5229,
|
|
14472
14582
|
"column": 3
|
|
14473
14583
|
}
|
|
14474
14584
|
},
|
|
@@ -14486,7 +14596,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14486
14596
|
},
|
|
14487
14597
|
sourceLocation: {
|
|
14488
14598
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14489
|
-
"line":
|
|
14599
|
+
"line": 5220,
|
|
14490
14600
|
"column": 3
|
|
14491
14601
|
}
|
|
14492
14602
|
},
|
|
@@ -14504,7 +14614,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14504
14614
|
},
|
|
14505
14615
|
sourceLocation: {
|
|
14506
14616
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14507
|
-
"line":
|
|
14617
|
+
"line": 5237,
|
|
14508
14618
|
"column": 3
|
|
14509
14619
|
}
|
|
14510
14620
|
},
|
|
@@ -14522,7 +14632,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14522
14632
|
},
|
|
14523
14633
|
sourceLocation: {
|
|
14524
14634
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14525
|
-
"line":
|
|
14635
|
+
"line": 5212,
|
|
14526
14636
|
"column": 3
|
|
14527
14637
|
}
|
|
14528
14638
|
},
|
|
@@ -14549,7 +14659,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14549
14659
|
},
|
|
14550
14660
|
sourceLocation: {
|
|
14551
14661
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14552
|
-
"line":
|
|
14662
|
+
"line": 5266,
|
|
14553
14663
|
"column": 3
|
|
14554
14664
|
}
|
|
14555
14665
|
},
|
|
@@ -14576,7 +14686,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14576
14686
|
},
|
|
14577
14687
|
sourceLocation: {
|
|
14578
14688
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14579
|
-
"line":
|
|
14689
|
+
"line": 2454,
|
|
14580
14690
|
"column": 9
|
|
14581
14691
|
}
|
|
14582
14692
|
},
|
|
@@ -14603,7 +14713,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14603
14713
|
},
|
|
14604
14714
|
sourceLocation: {
|
|
14605
14715
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14606
|
-
"line":
|
|
14716
|
+
"line": 2445,
|
|
14607
14717
|
"column": 9
|
|
14608
14718
|
}
|
|
14609
14719
|
},
|
|
@@ -14630,7 +14740,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14630
14740
|
},
|
|
14631
14741
|
sourceLocation: {
|
|
14632
14742
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14633
|
-
"line":
|
|
14743
|
+
"line": 2463,
|
|
14634
14744
|
"column": 9
|
|
14635
14745
|
}
|
|
14636
14746
|
},
|
|
@@ -14657,7 +14767,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14657
14767
|
},
|
|
14658
14768
|
sourceLocation: {
|
|
14659
14769
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14660
|
-
"line":
|
|
14770
|
+
"line": 2572,
|
|
14661
14771
|
"column": 3
|
|
14662
14772
|
}
|
|
14663
14773
|
},
|
|
@@ -14684,7 +14794,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14684
14794
|
},
|
|
14685
14795
|
sourceLocation: {
|
|
14686
14796
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14687
|
-
"line":
|
|
14797
|
+
"line": 2609,
|
|
14688
14798
|
"column": 9
|
|
14689
14799
|
}
|
|
14690
14800
|
},
|
|
@@ -14720,7 +14830,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14720
14830
|
},
|
|
14721
14831
|
sourceLocation: {
|
|
14722
14832
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14723
|
-
"line":
|
|
14833
|
+
"line": 2544,
|
|
14724
14834
|
"column": 3
|
|
14725
14835
|
}
|
|
14726
14836
|
},
|
|
@@ -14747,7 +14857,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14747
14857
|
},
|
|
14748
14858
|
sourceLocation: {
|
|
14749
14859
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14750
|
-
"line":
|
|
14860
|
+
"line": 2563,
|
|
14751
14861
|
"column": 3
|
|
14752
14862
|
}
|
|
14753
14863
|
},
|
|
@@ -14784,7 +14894,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14784
14894
|
},
|
|
14785
14895
|
sourceLocation: {
|
|
14786
14896
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14787
|
-
"line":
|
|
14897
|
+
"line": 2648,
|
|
14788
14898
|
"column": 3
|
|
14789
14899
|
}
|
|
14790
14900
|
},
|
|
@@ -14820,7 +14930,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14820
14930
|
},
|
|
14821
14931
|
sourceLocation: {
|
|
14822
14932
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14823
|
-
"line":
|
|
14933
|
+
"line": 2524,
|
|
14824
14934
|
"column": 3
|
|
14825
14935
|
}
|
|
14826
14936
|
},
|
|
@@ -14857,7 +14967,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14857
14967
|
},
|
|
14858
14968
|
sourceLocation: {
|
|
14859
14969
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14860
|
-
"line":
|
|
14970
|
+
"line": 2473,
|
|
14861
14971
|
"column": 3
|
|
14862
14972
|
}
|
|
14863
14973
|
},
|
|
@@ -14884,7 +14994,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14884
14994
|
},
|
|
14885
14995
|
sourceLocation: {
|
|
14886
14996
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14887
|
-
"line":
|
|
14997
|
+
"line": 2627,
|
|
14888
14998
|
"column": 3
|
|
14889
14999
|
}
|
|
14890
15000
|
},
|
|
@@ -14921,7 +15031,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14921
15031
|
},
|
|
14922
15032
|
sourceLocation: {
|
|
14923
15033
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14924
|
-
"line":
|
|
15034
|
+
"line": 2554,
|
|
14925
15035
|
"column": 3
|
|
14926
15036
|
}
|
|
14927
15037
|
},
|
|
@@ -14948,7 +15058,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14948
15058
|
},
|
|
14949
15059
|
sourceLocation: {
|
|
14950
15060
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14951
|
-
"line":
|
|
15061
|
+
"line": 2493,
|
|
14952
15062
|
"column": 3
|
|
14953
15063
|
}
|
|
14954
15064
|
},
|
|
@@ -14985,7 +15095,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
14985
15095
|
},
|
|
14986
15096
|
sourceLocation: {
|
|
14987
15097
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
14988
|
-
"line":
|
|
15098
|
+
"line": 2582,
|
|
14989
15099
|
"column": 3
|
|
14990
15100
|
}
|
|
14991
15101
|
},
|
|
@@ -15021,7 +15131,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15021
15131
|
},
|
|
15022
15132
|
sourceLocation: {
|
|
15023
15133
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15024
|
-
"line":
|
|
15134
|
+
"line": 2534,
|
|
15025
15135
|
"column": 3
|
|
15026
15136
|
}
|
|
15027
15137
|
},
|
|
@@ -15072,7 +15182,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15072
15182
|
},
|
|
15073
15183
|
sourceLocation: {
|
|
15074
15184
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15075
|
-
"line":
|
|
15185
|
+
"line": 2484,
|
|
15076
15186
|
"column": 3
|
|
15077
15187
|
}
|
|
15078
15188
|
},
|
|
@@ -15108,7 +15218,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15108
15218
|
},
|
|
15109
15219
|
sourceLocation: {
|
|
15110
15220
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15111
|
-
"line":
|
|
15221
|
+
"line": 2514,
|
|
15112
15222
|
"column": 3
|
|
15113
15223
|
}
|
|
15114
15224
|
},
|
|
@@ -15135,7 +15245,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15135
15245
|
},
|
|
15136
15246
|
sourceLocation: {
|
|
15137
15247
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15138
|
-
"line":
|
|
15248
|
+
"line": 2427,
|
|
15139
15249
|
"column": 9
|
|
15140
15250
|
}
|
|
15141
15251
|
},
|
|
@@ -15162,7 +15272,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15162
15272
|
},
|
|
15163
15273
|
sourceLocation: {
|
|
15164
15274
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15165
|
-
"line":
|
|
15275
|
+
"line": 2436,
|
|
15166
15276
|
"column": 9
|
|
15167
15277
|
}
|
|
15168
15278
|
},
|
|
@@ -15189,7 +15299,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15189
15299
|
},
|
|
15190
15300
|
sourceLocation: {
|
|
15191
15301
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15192
|
-
"line":
|
|
15302
|
+
"line": 2731,
|
|
15193
15303
|
"column": 9
|
|
15194
15304
|
}
|
|
15195
15305
|
},
|
|
@@ -15225,7 +15335,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15225
15335
|
},
|
|
15226
15336
|
sourceLocation: {
|
|
15227
15337
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15228
|
-
"line":
|
|
15338
|
+
"line": 2747,
|
|
15229
15339
|
"column": 9
|
|
15230
15340
|
}
|
|
15231
15341
|
},
|
|
@@ -15243,7 +15353,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15243
15353
|
},
|
|
15244
15354
|
sourceLocation: {
|
|
15245
15355
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15246
|
-
"line":
|
|
15356
|
+
"line": 2418,
|
|
15247
15357
|
"column": 9
|
|
15248
15358
|
}
|
|
15249
15359
|
},
|
|
@@ -15270,7 +15380,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15270
15380
|
},
|
|
15271
15381
|
sourceLocation: {
|
|
15272
15382
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15273
|
-
"line":
|
|
15383
|
+
"line": 2364,
|
|
15274
15384
|
"column": 3
|
|
15275
15385
|
}
|
|
15276
15386
|
},
|
|
@@ -15306,7 +15416,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15306
15416
|
},
|
|
15307
15417
|
sourceLocation: {
|
|
15308
15418
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15309
|
-
"line":
|
|
15419
|
+
"line": 2384,
|
|
15310
15420
|
"column": 9
|
|
15311
15421
|
}
|
|
15312
15422
|
},
|
|
@@ -15342,7 +15452,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15342
15452
|
},
|
|
15343
15453
|
sourceLocation: {
|
|
15344
15454
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15345
|
-
"line":
|
|
15455
|
+
"line": 2410,
|
|
15346
15456
|
"column": 9
|
|
15347
15457
|
}
|
|
15348
15458
|
},
|
|
@@ -15369,7 +15479,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15369
15479
|
},
|
|
15370
15480
|
sourceLocation: {
|
|
15371
15481
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15372
|
-
"line":
|
|
15482
|
+
"line": 2355,
|
|
15373
15483
|
"column": 9
|
|
15374
15484
|
}
|
|
15375
15485
|
},
|
|
@@ -15396,7 +15506,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15396
15506
|
},
|
|
15397
15507
|
sourceLocation: {
|
|
15398
15508
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15399
|
-
"line":
|
|
15509
|
+
"line": 2374,
|
|
15400
15510
|
"column": 9
|
|
15401
15511
|
}
|
|
15402
15512
|
},
|
|
@@ -15432,7 +15542,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15432
15542
|
},
|
|
15433
15543
|
sourceLocation: {
|
|
15434
15544
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15435
|
-
"line":
|
|
15545
|
+
"line": 2346,
|
|
15436
15546
|
"column": 3
|
|
15437
15547
|
}
|
|
15438
15548
|
},
|
|
@@ -15468,7 +15578,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15468
15578
|
},
|
|
15469
15579
|
sourceLocation: {
|
|
15470
15580
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15471
|
-
"line":
|
|
15581
|
+
"line": 2397,
|
|
15472
15582
|
"column": 9
|
|
15473
15583
|
}
|
|
15474
15584
|
},
|
|
@@ -15495,7 +15605,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15495
15605
|
},
|
|
15496
15606
|
sourceLocation: {
|
|
15497
15607
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15498
|
-
"line":
|
|
15608
|
+
"line": 6736,
|
|
15499
15609
|
"column": 9
|
|
15500
15610
|
}
|
|
15501
15611
|
},
|
|
@@ -15545,7 +15655,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15545
15655
|
},
|
|
15546
15656
|
sourceLocation: {
|
|
15547
15657
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15548
|
-
"line":
|
|
15658
|
+
"line": 6132,
|
|
15549
15659
|
"column": 9
|
|
15550
15660
|
}
|
|
15551
15661
|
},
|
|
@@ -15563,7 +15673,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15563
15673
|
},
|
|
15564
15674
|
sourceLocation: {
|
|
15565
15675
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15566
|
-
"line":
|
|
15676
|
+
"line": 3347,
|
|
15567
15677
|
"column": 9
|
|
15568
15678
|
}
|
|
15569
15679
|
},
|
|
@@ -15590,7 +15700,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15590
15700
|
},
|
|
15591
15701
|
sourceLocation: {
|
|
15592
15702
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15593
|
-
"line":
|
|
15703
|
+
"line": 5081,
|
|
15594
15704
|
"column": 9
|
|
15595
15705
|
}
|
|
15596
15706
|
},
|
|
@@ -15617,7 +15727,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15617
15727
|
},
|
|
15618
15728
|
sourceLocation: {
|
|
15619
15729
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15620
|
-
"line":
|
|
15730
|
+
"line": 5098,
|
|
15621
15731
|
"column": 9
|
|
15622
15732
|
}
|
|
15623
15733
|
},
|
|
@@ -15635,7 +15745,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15635
15745
|
},
|
|
15636
15746
|
sourceLocation: {
|
|
15637
15747
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15638
|
-
"line":
|
|
15748
|
+
"line": 2770,
|
|
15639
15749
|
"column": 3
|
|
15640
15750
|
}
|
|
15641
15751
|
},
|
|
@@ -15662,7 +15772,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15662
15772
|
},
|
|
15663
15773
|
sourceLocation: {
|
|
15664
15774
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15665
|
-
"line":
|
|
15775
|
+
"line": 5110,
|
|
15666
15776
|
"column": 9
|
|
15667
15777
|
}
|
|
15668
15778
|
},
|
|
@@ -15680,7 +15790,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15680
15790
|
},
|
|
15681
15791
|
sourceLocation: {
|
|
15682
15792
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15683
|
-
"line":
|
|
15793
|
+
"line": 3991,
|
|
15684
15794
|
"column": 9
|
|
15685
15795
|
}
|
|
15686
15796
|
},
|
|
@@ -15707,7 +15817,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15707
15817
|
},
|
|
15708
15818
|
sourceLocation: {
|
|
15709
15819
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15710
|
-
"line":
|
|
15820
|
+
"line": 6161,
|
|
15711
15821
|
"column": 9
|
|
15712
15822
|
}
|
|
15713
15823
|
},
|
|
@@ -15734,7 +15844,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15734
15844
|
},
|
|
15735
15845
|
sourceLocation: {
|
|
15736
15846
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15737
|
-
"line":
|
|
15847
|
+
"line": 6151,
|
|
15738
15848
|
"column": 9
|
|
15739
15849
|
}
|
|
15740
15850
|
},
|
|
@@ -15761,7 +15871,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15761
15871
|
},
|
|
15762
15872
|
sourceLocation: {
|
|
15763
15873
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15764
|
-
"line":
|
|
15874
|
+
"line": 6171,
|
|
15765
15875
|
"column": 9
|
|
15766
15876
|
}
|
|
15767
15877
|
},
|
|
@@ -15779,7 +15889,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15779
15889
|
},
|
|
15780
15890
|
sourceLocation: {
|
|
15781
15891
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15782
|
-
"line":
|
|
15892
|
+
"line": 6141,
|
|
15783
15893
|
"column": 9
|
|
15784
15894
|
}
|
|
15785
15895
|
},
|
|
@@ -15797,7 +15907,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15797
15907
|
},
|
|
15798
15908
|
sourceLocation: {
|
|
15799
15909
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15800
|
-
"line":
|
|
15910
|
+
"line": 2828,
|
|
15801
15911
|
"column": 9
|
|
15802
15912
|
}
|
|
15803
15913
|
},
|
|
@@ -15824,7 +15934,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15824
15934
|
},
|
|
15825
15935
|
sourceLocation: {
|
|
15826
15936
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15827
|
-
"line":
|
|
15937
|
+
"line": 5524,
|
|
15828
15938
|
"column": 9
|
|
15829
15939
|
}
|
|
15830
15940
|
},
|
|
@@ -15851,7 +15961,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15851
15961
|
},
|
|
15852
15962
|
sourceLocation: {
|
|
15853
15963
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15854
|
-
"line":
|
|
15964
|
+
"line": 5463,
|
|
15855
15965
|
"column": 9
|
|
15856
15966
|
}
|
|
15857
15967
|
},
|
|
@@ -15878,10 +15988,55 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15878
15988
|
},
|
|
15879
15989
|
sourceLocation: {
|
|
15880
15990
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15881
|
-
"line":
|
|
15991
|
+
"line": 5454,
|
|
15992
|
+
"column": 9
|
|
15993
|
+
}
|
|
15994
|
+
},
|
|
15995
|
+
{
|
|
15996
|
+
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/mediaGenerationSetEnabled",
|
|
15997
|
+
service: "freeCodeGoHarness",
|
|
15998
|
+
namespace: "freeCodeGoHarness",
|
|
15999
|
+
method: "mediaGenerationSetEnabled",
|
|
16000
|
+
invocation: { kind: "direct" },
|
|
16001
|
+
parameters: [{
|
|
16002
|
+
name: "enabled",
|
|
16003
|
+
wire: "enabled",
|
|
16004
|
+
source: "json",
|
|
16005
|
+
codec: {
|
|
16006
|
+
mode: "strict",
|
|
16007
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/mediaGenerationSetEnabled:enabled",
|
|
16008
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationSetEnabled_parameter_0$schema
|
|
16009
|
+
}
|
|
16010
|
+
}],
|
|
16011
|
+
result: {
|
|
16012
|
+
mode: "strict",
|
|
16013
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin/types#FreeCodeGoMediaToolStatus",
|
|
16014
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationSetEnabled_result$schema
|
|
16015
|
+
},
|
|
16016
|
+
sourceLocation: {
|
|
16017
|
+
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16018
|
+
"line": 2818,
|
|
15882
16019
|
"column": 9
|
|
15883
16020
|
}
|
|
15884
16021
|
},
|
|
16022
|
+
{
|
|
16023
|
+
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/mediaGenerationStatus",
|
|
16024
|
+
service: "freeCodeGoHarness",
|
|
16025
|
+
namespace: "freeCodeGoHarness",
|
|
16026
|
+
method: "mediaGenerationStatus",
|
|
16027
|
+
invocation: { kind: "direct" },
|
|
16028
|
+
parameters: [],
|
|
16029
|
+
result: {
|
|
16030
|
+
mode: "strict",
|
|
16031
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin/types#FreeCodeGoMediaToolStatus",
|
|
16032
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_mediaGenerationStatus_result$schema
|
|
16033
|
+
},
|
|
16034
|
+
sourceLocation: {
|
|
16035
|
+
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16036
|
+
"line": 2804,
|
|
16037
|
+
"column": 3
|
|
16038
|
+
}
|
|
16039
|
+
},
|
|
15885
16040
|
{
|
|
15886
16041
|
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/modelAvailability",
|
|
15887
16042
|
service: "freeCodeGoHarness",
|
|
@@ -15896,7 +16051,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15896
16051
|
},
|
|
15897
16052
|
sourceLocation: {
|
|
15898
16053
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15899
|
-
"line":
|
|
16054
|
+
"line": 5803,
|
|
15900
16055
|
"column": 9
|
|
15901
16056
|
}
|
|
15902
16057
|
},
|
|
@@ -15923,7 +16078,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15923
16078
|
},
|
|
15924
16079
|
sourceLocation: {
|
|
15925
16080
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15926
|
-
"line":
|
|
16081
|
+
"line": 5428,
|
|
15927
16082
|
"column": 9
|
|
15928
16083
|
}
|
|
15929
16084
|
},
|
|
@@ -15950,7 +16105,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15950
16105
|
},
|
|
15951
16106
|
sourceLocation: {
|
|
15952
16107
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15953
|
-
"line":
|
|
16108
|
+
"line": 6209,
|
|
15954
16109
|
"column": 9
|
|
15955
16110
|
}
|
|
15956
16111
|
},
|
|
@@ -15968,7 +16123,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15968
16123
|
},
|
|
15969
16124
|
sourceLocation: {
|
|
15970
16125
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15971
|
-
"line":
|
|
16126
|
+
"line": 6199,
|
|
15972
16127
|
"column": 9
|
|
15973
16128
|
}
|
|
15974
16129
|
},
|
|
@@ -15995,7 +16150,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
15995
16150
|
},
|
|
15996
16151
|
sourceLocation: {
|
|
15997
16152
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
15998
|
-
"line":
|
|
16153
|
+
"line": 6794,
|
|
15999
16154
|
"column": 9
|
|
16000
16155
|
}
|
|
16001
16156
|
},
|
|
@@ -16013,7 +16168,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16013
16168
|
},
|
|
16014
16169
|
sourceLocation: {
|
|
16015
16170
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16016
|
-
"line":
|
|
16171
|
+
"line": 6718,
|
|
16017
16172
|
"column": 9
|
|
16018
16173
|
}
|
|
16019
16174
|
},
|
|
@@ -16073,7 +16228,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16073
16228
|
},
|
|
16074
16229
|
sourceLocation: {
|
|
16075
16230
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16076
|
-
"line":
|
|
16231
|
+
"line": 6765,
|
|
16077
16232
|
"column": 9
|
|
16078
16233
|
}
|
|
16079
16234
|
},
|
|
@@ -16091,7 +16246,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16091
16246
|
},
|
|
16092
16247
|
sourceLocation: {
|
|
16093
16248
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16094
|
-
"line":
|
|
16249
|
+
"line": 6726,
|
|
16095
16250
|
"column": 9
|
|
16096
16251
|
}
|
|
16097
16252
|
},
|
|
@@ -16118,7 +16273,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16118
16273
|
},
|
|
16119
16274
|
sourceLocation: {
|
|
16120
16275
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16121
|
-
"line":
|
|
16276
|
+
"line": 6774,
|
|
16122
16277
|
"column": 9
|
|
16123
16278
|
}
|
|
16124
16279
|
},
|
|
@@ -16136,7 +16291,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16136
16291
|
},
|
|
16137
16292
|
sourceLocation: {
|
|
16138
16293
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16139
|
-
"line":
|
|
16294
|
+
"line": 6753,
|
|
16140
16295
|
"column": 9
|
|
16141
16296
|
}
|
|
16142
16297
|
},
|
|
@@ -16154,7 +16309,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16154
16309
|
},
|
|
16155
16310
|
sourceLocation: {
|
|
16156
16311
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16157
|
-
"line":
|
|
16312
|
+
"line": 6709,
|
|
16158
16313
|
"column": 9
|
|
16159
16314
|
}
|
|
16160
16315
|
},
|
|
@@ -16181,7 +16336,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16181
16336
|
},
|
|
16182
16337
|
sourceLocation: {
|
|
16183
16338
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16184
|
-
"line":
|
|
16339
|
+
"line": 6814,
|
|
16185
16340
|
"column": 9
|
|
16186
16341
|
}
|
|
16187
16342
|
},
|
|
@@ -16208,7 +16363,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16208
16363
|
},
|
|
16209
16364
|
sourceLocation: {
|
|
16210
16365
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16211
|
-
"line":
|
|
16366
|
+
"line": 6804,
|
|
16212
16367
|
"column": 9
|
|
16213
16368
|
}
|
|
16214
16369
|
},
|
|
@@ -16235,7 +16390,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16235
16390
|
},
|
|
16236
16391
|
sourceLocation: {
|
|
16237
16392
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16238
|
-
"line":
|
|
16393
|
+
"line": 6829,
|
|
16239
16394
|
"column": 9
|
|
16240
16395
|
}
|
|
16241
16396
|
},
|
|
@@ -16262,7 +16417,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16262
16417
|
},
|
|
16263
16418
|
sourceLocation: {
|
|
16264
16419
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16265
|
-
"line":
|
|
16420
|
+
"line": 6784,
|
|
16266
16421
|
"column": 9
|
|
16267
16422
|
}
|
|
16268
16423
|
},
|
|
@@ -16289,7 +16444,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16289
16444
|
},
|
|
16290
16445
|
sourceLocation: {
|
|
16291
16446
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16292
|
-
"line":
|
|
16447
|
+
"line": 3536,
|
|
16293
16448
|
"column": 3
|
|
16294
16449
|
}
|
|
16295
16450
|
},
|
|
@@ -16316,7 +16471,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16316
16471
|
},
|
|
16317
16472
|
sourceLocation: {
|
|
16318
16473
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16319
|
-
"line":
|
|
16474
|
+
"line": 3509,
|
|
16320
16475
|
"column": 9
|
|
16321
16476
|
}
|
|
16322
16477
|
},
|
|
@@ -16343,7 +16498,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16343
16498
|
},
|
|
16344
16499
|
sourceLocation: {
|
|
16345
16500
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16346
|
-
"line":
|
|
16501
|
+
"line": 5445,
|
|
16347
16502
|
"column": 9
|
|
16348
16503
|
}
|
|
16349
16504
|
},
|
|
@@ -16361,7 +16516,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16361
16516
|
},
|
|
16362
16517
|
sourceLocation: {
|
|
16363
16518
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16364
|
-
"line":
|
|
16519
|
+
"line": 5436,
|
|
16365
16520
|
"column": 3
|
|
16366
16521
|
}
|
|
16367
16522
|
},
|
|
@@ -16379,7 +16534,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16379
16534
|
},
|
|
16380
16535
|
sourceLocation: {
|
|
16381
16536
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16382
|
-
"line":
|
|
16537
|
+
"line": 5891,
|
|
16383
16538
|
"column": 9
|
|
16384
16539
|
}
|
|
16385
16540
|
},
|
|
@@ -16397,7 +16552,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16397
16552
|
},
|
|
16398
16553
|
sourceLocation: {
|
|
16399
16554
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16400
|
-
"line":
|
|
16555
|
+
"line": 5910,
|
|
16401
16556
|
"column": 9
|
|
16402
16557
|
}
|
|
16403
16558
|
},
|
|
@@ -16415,7 +16570,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16415
16570
|
},
|
|
16416
16571
|
sourceLocation: {
|
|
16417
16572
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16418
|
-
"line":
|
|
16573
|
+
"line": 5904,
|
|
16419
16574
|
"column": 9
|
|
16420
16575
|
}
|
|
16421
16576
|
},
|
|
@@ -16442,7 +16597,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16442
16597
|
},
|
|
16443
16598
|
sourceLocation: {
|
|
16444
16599
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16445
|
-
"line":
|
|
16600
|
+
"line": 5898,
|
|
16446
16601
|
"column": 9
|
|
16447
16602
|
}
|
|
16448
16603
|
},
|
|
@@ -16460,7 +16615,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16460
16615
|
},
|
|
16461
16616
|
sourceLocation: {
|
|
16462
16617
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16463
|
-
"line":
|
|
16618
|
+
"line": 5885,
|
|
16464
16619
|
"column": 3
|
|
16465
16620
|
}
|
|
16466
16621
|
},
|
|
@@ -16488,7 +16643,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16488
16643
|
},
|
|
16489
16644
|
sourceLocation: {
|
|
16490
16645
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16491
|
-
"line":
|
|
16646
|
+
"line": 3058,
|
|
16492
16647
|
"column": 9
|
|
16493
16648
|
}
|
|
16494
16649
|
},
|
|
@@ -16506,7 +16661,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16506
16661
|
},
|
|
16507
16662
|
sourceLocation: {
|
|
16508
16663
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16509
|
-
"line":
|
|
16664
|
+
"line": 6384,
|
|
16510
16665
|
"column": 9
|
|
16511
16666
|
}
|
|
16512
16667
|
},
|
|
@@ -16524,7 +16679,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16524
16679
|
},
|
|
16525
16680
|
sourceLocation: {
|
|
16526
16681
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16527
|
-
"line":
|
|
16682
|
+
"line": 6346,
|
|
16528
16683
|
"column": 9
|
|
16529
16684
|
}
|
|
16530
16685
|
},
|
|
@@ -16551,7 +16706,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16551
16706
|
},
|
|
16552
16707
|
sourceLocation: {
|
|
16553
16708
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16554
|
-
"line":
|
|
16709
|
+
"line": 6337,
|
|
16555
16710
|
"column": 9
|
|
16556
16711
|
}
|
|
16557
16712
|
},
|
|
@@ -16569,7 +16724,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16569
16724
|
},
|
|
16570
16725
|
sourceLocation: {
|
|
16571
16726
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16572
|
-
"line":
|
|
16727
|
+
"line": 6375,
|
|
16573
16728
|
"column": 9
|
|
16574
16729
|
}
|
|
16575
16730
|
},
|
|
@@ -16596,7 +16751,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16596
16751
|
},
|
|
16597
16752
|
sourceLocation: {
|
|
16598
16753
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16599
|
-
"line":
|
|
16754
|
+
"line": 6356,
|
|
16600
16755
|
"column": 9
|
|
16601
16756
|
}
|
|
16602
16757
|
},
|
|
@@ -16623,7 +16778,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16623
16778
|
},
|
|
16624
16779
|
sourceLocation: {
|
|
16625
16780
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16626
|
-
"line":
|
|
16781
|
+
"line": 6366,
|
|
16627
16782
|
"column": 9
|
|
16628
16783
|
}
|
|
16629
16784
|
},
|
|
@@ -16641,7 +16796,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16641
16796
|
},
|
|
16642
16797
|
sourceLocation: {
|
|
16643
16798
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16644
|
-
"line":
|
|
16799
|
+
"line": 6327,
|
|
16645
16800
|
"column": 9
|
|
16646
16801
|
}
|
|
16647
16802
|
},
|
|
@@ -16659,7 +16814,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16659
16814
|
},
|
|
16660
16815
|
sourceLocation: {
|
|
16661
16816
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16662
|
-
"line":
|
|
16817
|
+
"line": 6318,
|
|
16663
16818
|
"column": 9
|
|
16664
16819
|
}
|
|
16665
16820
|
},
|
|
@@ -16695,7 +16850,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16695
16850
|
},
|
|
16696
16851
|
sourceLocation: {
|
|
16697
16852
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16698
|
-
"line":
|
|
16853
|
+
"line": 2295,
|
|
16699
16854
|
"column": 9
|
|
16700
16855
|
}
|
|
16701
16856
|
},
|
|
@@ -16722,7 +16877,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16722
16877
|
},
|
|
16723
16878
|
sourceLocation: {
|
|
16724
16879
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16725
|
-
"line":
|
|
16880
|
+
"line": 2285,
|
|
16726
16881
|
"column": 9
|
|
16727
16882
|
}
|
|
16728
16883
|
},
|
|
@@ -16758,7 +16913,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16758
16913
|
},
|
|
16759
16914
|
sourceLocation: {
|
|
16760
16915
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16761
|
-
"line":
|
|
16916
|
+
"line": 2305,
|
|
16762
16917
|
"column": 9
|
|
16763
16918
|
}
|
|
16764
16919
|
},
|
|
@@ -16794,7 +16949,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16794
16949
|
},
|
|
16795
16950
|
sourceLocation: {
|
|
16796
16951
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16797
|
-
"line":
|
|
16952
|
+
"line": 2886,
|
|
16798
16953
|
"column": 9
|
|
16799
16954
|
}
|
|
16800
16955
|
},
|
|
@@ -16821,7 +16976,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16821
16976
|
},
|
|
16822
16977
|
sourceLocation: {
|
|
16823
16978
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16824
|
-
"line":
|
|
16979
|
+
"line": 2845,
|
|
16825
16980
|
"column": 9
|
|
16826
16981
|
}
|
|
16827
16982
|
},
|
|
@@ -16848,7 +17003,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16848
17003
|
},
|
|
16849
17004
|
sourceLocation: {
|
|
16850
17005
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16851
|
-
"line":
|
|
17006
|
+
"line": 6190,
|
|
16852
17007
|
"column": 9
|
|
16853
17008
|
}
|
|
16854
17009
|
},
|
|
@@ -16866,7 +17021,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16866
17021
|
},
|
|
16867
17022
|
sourceLocation: {
|
|
16868
17023
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16869
|
-
"line":
|
|
17024
|
+
"line": 6180,
|
|
16870
17025
|
"column": 9
|
|
16871
17026
|
}
|
|
16872
17027
|
},
|
|
@@ -16893,7 +17048,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16893
17048
|
},
|
|
16894
17049
|
sourceLocation: {
|
|
16895
17050
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16896
|
-
"line":
|
|
17051
|
+
"line": 5385,
|
|
16897
17052
|
"column": 9
|
|
16898
17053
|
}
|
|
16899
17054
|
},
|
|
@@ -16920,7 +17075,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16920
17075
|
},
|
|
16921
17076
|
sourceLocation: {
|
|
16922
17077
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16923
|
-
"line":
|
|
17078
|
+
"line": 5813,
|
|
16924
17079
|
"column": 9
|
|
16925
17080
|
}
|
|
16926
17081
|
},
|
|
@@ -16947,7 +17102,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16947
17102
|
},
|
|
16948
17103
|
sourceLocation: {
|
|
16949
17104
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16950
|
-
"line":
|
|
17105
|
+
"line": 2221,
|
|
16951
17106
|
"column": 9
|
|
16952
17107
|
}
|
|
16953
17108
|
},
|
|
@@ -16974,7 +17129,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
16974
17129
|
},
|
|
16975
17130
|
sourceLocation: {
|
|
16976
17131
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
16977
|
-
"line":
|
|
17132
|
+
"line": 2230,
|
|
16978
17133
|
"column": 9
|
|
16979
17134
|
}
|
|
16980
17135
|
},
|
|
@@ -17001,7 +17156,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17001
17156
|
},
|
|
17002
17157
|
sourceLocation: {
|
|
17003
17158
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17004
|
-
"line":
|
|
17159
|
+
"line": 5506,
|
|
17005
17160
|
"column": 9
|
|
17006
17161
|
}
|
|
17007
17162
|
},
|
|
@@ -17028,7 +17183,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17028
17183
|
},
|
|
17029
17184
|
sourceLocation: {
|
|
17030
17185
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17031
|
-
"line":
|
|
17186
|
+
"line": 5491,
|
|
17032
17187
|
"column": 9
|
|
17033
17188
|
}
|
|
17034
17189
|
},
|
|
@@ -17056,7 +17211,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17056
17211
|
},
|
|
17057
17212
|
sourceLocation: {
|
|
17058
17213
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17059
|
-
"line":
|
|
17214
|
+
"line": 5561,
|
|
17060
17215
|
"column": 9
|
|
17061
17216
|
}
|
|
17062
17217
|
},
|
|
@@ -17074,7 +17229,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17074
17229
|
},
|
|
17075
17230
|
sourceLocation: {
|
|
17076
17231
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17077
|
-
"line":
|
|
17232
|
+
"line": 5547,
|
|
17078
17233
|
"column": 9
|
|
17079
17234
|
}
|
|
17080
17235
|
},
|
|
@@ -17111,7 +17266,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17111
17266
|
},
|
|
17112
17267
|
sourceLocation: {
|
|
17113
17268
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17114
|
-
"line":
|
|
17269
|
+
"line": 5533,
|
|
17115
17270
|
"column": 9
|
|
17116
17271
|
}
|
|
17117
17272
|
},
|
|
@@ -17138,7 +17293,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17138
17293
|
},
|
|
17139
17294
|
sourceLocation: {
|
|
17140
17295
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17141
|
-
"line":
|
|
17296
|
+
"line": 5573,
|
|
17142
17297
|
"column": 9
|
|
17143
17298
|
}
|
|
17144
17299
|
},
|
|
@@ -17165,7 +17320,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17165
17320
|
},
|
|
17166
17321
|
sourceLocation: {
|
|
17167
17322
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17168
|
-
"line":
|
|
17323
|
+
"line": 5481,
|
|
17169
17324
|
"column": 9
|
|
17170
17325
|
}
|
|
17171
17326
|
},
|
|
@@ -17192,7 +17347,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17192
17347
|
},
|
|
17193
17348
|
sourceLocation: {
|
|
17194
17349
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17195
|
-
"line":
|
|
17350
|
+
"line": 5472,
|
|
17196
17351
|
"column": 9
|
|
17197
17352
|
}
|
|
17198
17353
|
},
|
|
@@ -17219,7 +17374,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17219
17374
|
},
|
|
17220
17375
|
sourceLocation: {
|
|
17221
17376
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17222
|
-
"line":
|
|
17377
|
+
"line": 6616,
|
|
17223
17378
|
"column": 9
|
|
17224
17379
|
}
|
|
17225
17380
|
},
|
|
@@ -17246,7 +17401,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17246
17401
|
},
|
|
17247
17402
|
sourceLocation: {
|
|
17248
17403
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17249
|
-
"line":
|
|
17404
|
+
"line": 6606,
|
|
17250
17405
|
"column": 9
|
|
17251
17406
|
}
|
|
17252
17407
|
},
|
|
@@ -17273,7 +17428,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17273
17428
|
},
|
|
17274
17429
|
sourceLocation: {
|
|
17275
17430
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17276
|
-
"line":
|
|
17431
|
+
"line": 6596,
|
|
17277
17432
|
"column": 9
|
|
17278
17433
|
}
|
|
17279
17434
|
},
|
|
@@ -17291,7 +17446,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17291
17446
|
},
|
|
17292
17447
|
sourceLocation: {
|
|
17293
17448
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17294
|
-
"line":
|
|
17449
|
+
"line": 6436,
|
|
17295
17450
|
"column": 9
|
|
17296
17451
|
}
|
|
17297
17452
|
},
|
|
@@ -17309,7 +17464,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17309
17464
|
},
|
|
17310
17465
|
sourceLocation: {
|
|
17311
17466
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17312
|
-
"line":
|
|
17467
|
+
"line": 6483,
|
|
17313
17468
|
"column": 9
|
|
17314
17469
|
}
|
|
17315
17470
|
},
|
|
@@ -17327,7 +17482,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17327
17482
|
},
|
|
17328
17483
|
sourceLocation: {
|
|
17329
17484
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17330
|
-
"line":
|
|
17485
|
+
"line": 6454,
|
|
17331
17486
|
"column": 9
|
|
17332
17487
|
}
|
|
17333
17488
|
},
|
|
@@ -17345,7 +17500,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17345
17500
|
},
|
|
17346
17501
|
sourceLocation: {
|
|
17347
17502
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17348
|
-
"line":
|
|
17503
|
+
"line": 6445,
|
|
17349
17504
|
"column": 9
|
|
17350
17505
|
}
|
|
17351
17506
|
},
|
|
@@ -17363,7 +17518,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17363
17518
|
},
|
|
17364
17519
|
sourceLocation: {
|
|
17365
17520
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17366
|
-
"line":
|
|
17521
|
+
"line": 6417,
|
|
17367
17522
|
"column": 9
|
|
17368
17523
|
}
|
|
17369
17524
|
},
|
|
@@ -17390,7 +17545,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17390
17545
|
},
|
|
17391
17546
|
sourceLocation: {
|
|
17392
17547
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17393
|
-
"line":
|
|
17548
|
+
"line": 6464,
|
|
17394
17549
|
"column": 9
|
|
17395
17550
|
}
|
|
17396
17551
|
},
|
|
@@ -17417,7 +17572,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17417
17572
|
},
|
|
17418
17573
|
sourceLocation: {
|
|
17419
17574
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17420
|
-
"line":
|
|
17575
|
+
"line": 6474,
|
|
17421
17576
|
"column": 9
|
|
17422
17577
|
}
|
|
17423
17578
|
},
|
|
@@ -17445,7 +17600,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17445
17600
|
},
|
|
17446
17601
|
sourceLocation: {
|
|
17447
17602
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17448
|
-
"line":
|
|
17603
|
+
"line": 6407,
|
|
17449
17604
|
"column": 9
|
|
17450
17605
|
}
|
|
17451
17606
|
},
|
|
@@ -17463,7 +17618,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17463
17618
|
},
|
|
17464
17619
|
sourceLocation: {
|
|
17465
17620
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17466
|
-
"line":
|
|
17621
|
+
"line": 6397,
|
|
17467
17622
|
"column": 9
|
|
17468
17623
|
}
|
|
17469
17624
|
},
|
|
@@ -17490,7 +17645,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17490
17645
|
},
|
|
17491
17646
|
sourceLocation: {
|
|
17492
17647
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17493
|
-
"line":
|
|
17648
|
+
"line": 6427,
|
|
17494
17649
|
"column": 9
|
|
17495
17650
|
}
|
|
17496
17651
|
},
|
|
@@ -17517,7 +17672,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17517
17672
|
},
|
|
17518
17673
|
sourceLocation: {
|
|
17519
17674
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17520
|
-
"line":
|
|
17675
|
+
"line": 2939,
|
|
17521
17676
|
"column": 9
|
|
17522
17677
|
}
|
|
17523
17678
|
},
|
|
@@ -17544,7 +17699,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17544
17699
|
},
|
|
17545
17700
|
sourceLocation: {
|
|
17546
17701
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17547
|
-
"line":
|
|
17702
|
+
"line": 2974,
|
|
17548
17703
|
"column": 9
|
|
17549
17704
|
}
|
|
17550
17705
|
},
|
|
@@ -17572,7 +17727,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17572
17727
|
},
|
|
17573
17728
|
sourceLocation: {
|
|
17574
17729
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17575
|
-
"line":
|
|
17730
|
+
"line": 2917,
|
|
17576
17731
|
"column": 9
|
|
17577
17732
|
}
|
|
17578
17733
|
},
|
|
@@ -17599,7 +17754,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17599
17754
|
},
|
|
17600
17755
|
sourceLocation: {
|
|
17601
17756
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17602
|
-
"line":
|
|
17757
|
+
"line": 6120,
|
|
17603
17758
|
"column": 9
|
|
17604
17759
|
}
|
|
17605
17760
|
},
|
|
@@ -17617,7 +17772,52 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17617
17772
|
},
|
|
17618
17773
|
sourceLocation: {
|
|
17619
17774
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17620
|
-
"line":
|
|
17775
|
+
"line": 6110,
|
|
17776
|
+
"column": 9
|
|
17777
|
+
}
|
|
17778
|
+
},
|
|
17779
|
+
{
|
|
17780
|
+
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/webSearchBind",
|
|
17781
|
+
service: "freeCodeGoHarness",
|
|
17782
|
+
namespace: "freeCodeGoHarness",
|
|
17783
|
+
method: "webSearchBind",
|
|
17784
|
+
invocation: { kind: "direct" },
|
|
17785
|
+
parameters: [{
|
|
17786
|
+
name: "input",
|
|
17787
|
+
wire: "input",
|
|
17788
|
+
source: "json",
|
|
17789
|
+
codec: {
|
|
17790
|
+
mode: "strict",
|
|
17791
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/webSearchBind:input",
|
|
17792
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBind_parameter_0$schema
|
|
17793
|
+
}
|
|
17794
|
+
}],
|
|
17795
|
+
result: {
|
|
17796
|
+
mode: "strict",
|
|
17797
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin/types#FreeCodeGoWebSearchBinding",
|
|
17798
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBind_result$schema
|
|
17799
|
+
},
|
|
17800
|
+
sourceLocation: {
|
|
17801
|
+
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17802
|
+
"line": 5394,
|
|
17803
|
+
"column": 9
|
|
17804
|
+
}
|
|
17805
|
+
},
|
|
17806
|
+
{
|
|
17807
|
+
id: "@deepseek-ai/dsh-freecodego-harness-plugin#freeCodeGoHarness/webSearchBindingStatus",
|
|
17808
|
+
service: "freeCodeGoHarness",
|
|
17809
|
+
namespace: "freeCodeGoHarness",
|
|
17810
|
+
method: "webSearchBindingStatus",
|
|
17811
|
+
invocation: { kind: "direct" },
|
|
17812
|
+
parameters: [],
|
|
17813
|
+
result: {
|
|
17814
|
+
mode: "strict",
|
|
17815
|
+
typeSymbol: "@deepseek-ai/dsh-freecodego-harness-plugin/types#FreeCodeGoWebSearchBindingStatus",
|
|
17816
|
+
create: _deepseek_ai_dsh_freecodego_harness_plugin_freeCodeGoHarness_webSearchBindingStatus_result$schema
|
|
17817
|
+
},
|
|
17818
|
+
sourceLocation: {
|
|
17819
|
+
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17820
|
+
"line": 5402,
|
|
17621
17821
|
"column": 9
|
|
17622
17822
|
}
|
|
17623
17823
|
},
|
|
@@ -17635,7 +17835,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17635
17835
|
},
|
|
17636
17836
|
sourceLocation: {
|
|
17637
17837
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17638
|
-
"line":
|
|
17838
|
+
"line": 6231,
|
|
17639
17839
|
"column": 9
|
|
17640
17840
|
}
|
|
17641
17841
|
},
|
|
@@ -17653,7 +17853,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17653
17853
|
},
|
|
17654
17854
|
sourceLocation: {
|
|
17655
17855
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17656
|
-
"line":
|
|
17856
|
+
"line": 6268,
|
|
17657
17857
|
"column": 9
|
|
17658
17858
|
}
|
|
17659
17859
|
},
|
|
@@ -17671,7 +17871,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17671
17871
|
},
|
|
17672
17872
|
sourceLocation: {
|
|
17673
17873
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17674
|
-
"line":
|
|
17874
|
+
"line": 6240,
|
|
17675
17875
|
"column": 9
|
|
17676
17876
|
}
|
|
17677
17877
|
},
|
|
@@ -17698,7 +17898,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17698
17898
|
},
|
|
17699
17899
|
sourceLocation: {
|
|
17700
17900
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17701
|
-
"line":
|
|
17901
|
+
"line": 6259,
|
|
17702
17902
|
"column": 9
|
|
17703
17903
|
}
|
|
17704
17904
|
},
|
|
@@ -17716,7 +17916,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17716
17916
|
},
|
|
17717
17917
|
sourceLocation: {
|
|
17718
17918
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17719
|
-
"line":
|
|
17919
|
+
"line": 6307,
|
|
17720
17920
|
"column": 9
|
|
17721
17921
|
}
|
|
17722
17922
|
},
|
|
@@ -17743,7 +17943,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17743
17943
|
},
|
|
17744
17944
|
sourceLocation: {
|
|
17745
17945
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17746
|
-
"line":
|
|
17946
|
+
"line": 6298,
|
|
17747
17947
|
"column": 9
|
|
17748
17948
|
}
|
|
17749
17949
|
},
|
|
@@ -17770,7 +17970,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17770
17970
|
},
|
|
17771
17971
|
sourceLocation: {
|
|
17772
17972
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17773
|
-
"line":
|
|
17973
|
+
"line": 6278,
|
|
17774
17974
|
"column": 9
|
|
17775
17975
|
}
|
|
17776
17976
|
},
|
|
@@ -17797,7 +17997,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17797
17997
|
},
|
|
17798
17998
|
sourceLocation: {
|
|
17799
17999
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17800
|
-
"line":
|
|
18000
|
+
"line": 6288,
|
|
17801
18001
|
"column": 9
|
|
17802
18002
|
}
|
|
17803
18003
|
},
|
|
@@ -17815,7 +18015,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17815
18015
|
},
|
|
17816
18016
|
sourceLocation: {
|
|
17817
18017
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17818
|
-
"line":
|
|
18018
|
+
"line": 6249,
|
|
17819
18019
|
"column": 9
|
|
17820
18020
|
}
|
|
17821
18021
|
},
|
|
@@ -17833,7 +18033,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
17833
18033
|
},
|
|
17834
18034
|
sourceLocation: {
|
|
17835
18035
|
"file": "packages/freecodego/harness-plugin/src/index.ts",
|
|
17836
|
-
"line":
|
|
18036
|
+
"line": 6222,
|
|
17837
18037
|
"column": 9
|
|
17838
18038
|
}
|
|
17839
18039
|
}
|
|
@@ -18064,13 +18264,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18064
18264
|
}
|
|
18065
18265
|
//#endregion
|
|
18066
18266
|
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/settings-tab.module.css.mjs
|
|
18067
|
-
const css$5 = ".fnB0BW_root{box-sizing:border-box;width:100%;min-width:0;max-width:100%;color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);overflow:hidden}.fnB0BW_toolbar{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:0 0 12px;display:flex}.fnB0BW_toolbarTitle{min-width:0}.fnB0BW_kicker{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.08em;text-transform:uppercase;font-weight:600;line-height:18px}.fnB0BW_title{font-size:var(--fcg-font-section);margin:1px 0 0;font-weight:600;line-height:24px}.fnB0BW_toolbarAction,.fnB0BW_button{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:32px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);justify-content:center;align-items:center;padding:5px 13px;line-height:18px;text-decoration:none;display:inline-flex}.fnB0BW_toolbarAction:hover,.fnB0BW_button:hover{background:var(--fcg-bg-hover)}.fnB0BW_button:disabled{cursor:not-allowed;opacity:.45}.fnB0BW_button:focus-visible,.fnB0BW_toolbarAction:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_buttonPrimary:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-btn-primary-fill) 30%, transparent)}.fnB0BW_buttonPrimary{background:var(--fcg-btn-primary-fill);color:var(--fcg-text-on-brand);border-color:#0000}.fnB0BW_buttonPrimary:hover:not(:disabled){background:var(--fcg-btn-primary-hover);border-color:#0000}.fnB0BW_buttonPrimary:hover{background:var(--fcg-btn-primary-hover)}.fnB0BW_buttonDanger{color:var(--fcg-danger)}.fnB0BW_loading,.fnB0BW_error{color:var(--fcg-text-tertiary);padding:18px 0}.fnB0BW_error{color:var(--fcg-danger)}.fnB0BW_syncNotice{border:1px solid color-mix(in srgb, var(--fcg-brand) 24%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 6%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:10px;margin:14px 0 0;padding:10px 14px;line-height:18px;display:flex}.fnB0BW_syncNoticeOffline{border-color:color-mix(in srgb, var(--fcg-warn-label) 34%, var(--fcg-line));background:color-mix(in srgb, var(--fcg-warn-label) 7%, var(--fcg-bg-layer-1));color:var(--fcg-warn-label)}.fnB0BW_syncDot{border-radius:var(--fcg-radius-full);background:var(--fcg-brand);flex:none;width:7px;height:7px;animation:1.25s ease-in-out infinite fnB0BW_sync-pulse}.fnB0BW_syncNoticeOffline .fnB0BW_syncDot{background:var(--fcg-warn-label);animation:none}@keyframes fnB0BW_sync-pulse{50%{opacity:.38;transform:scale(.8)}}.fnB0BW_sections{gap:0;display:grid}.fnB0BW_pageTabs{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-tip);gap:4px;margin:0 0 14px;padding:3px;display:flex}.fnB0BW_pageTab{min-height:30px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);background:0 0;border:0;border-radius:5px;flex:1;padding:5px 10px}.fnB0BW_pageTabActive{background:var(--fcg-bg-layer-2);color:var(--fcg-text-primary);box-shadow:var(--fcg-shadow-1);font-weight:600}.fnB0BW_modelCategoryActions{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;margin-top:8px;display:grid}.fnB0BW_modelCategoryActions .fnB0BW_select{width:100%;min-width:0}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions){align-items:start}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_pageTabs{box-sizing:border-box;grid-column:2;width:100%;margin:0}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_select{grid-area:2/1;width:100%}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_modelCategoryActions{grid-area:2/2;margin-top:0}.fnB0BW_modelCategoryActions .fnB0BW_button{min-height:42px}.fnB0BW_community{min-width:0;padding:4px 0 17px}.fnB0BW_communityHeader{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:flex-start;gap:12px;padding:13px 0 14px;display:flex}.fnB0BW_communityIntro{max-width:520px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin:5px 0 0;line-height:18px}.fnB0BW_communityFilterBar{justify-content:space-between;align-items:center;gap:12px;padding:12px 0 2px;display:flex}.fnB0BW_communityFilters{scrollbar-width:none;gap:6px;min-width:0;display:flex;overflow-x:auto}.fnB0BW_communityFilter{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;padding:4px 10px}.fnB0BW_communityFilter:hover{background:var(--fcg-bg-hover)}.fnB0BW_communityFilterActive{border-color:var(--fcg-text-primary);background:var(--fcg-text-primary);color:var(--fcg-bg-layer-2)}.fnB0BW_communityInstalledEntry{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:30px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;flex:none;padding:5px 10px;font-weight:600}.fnB0BW_communityInstalledEntry:hover{background:var(--fcg-bg-hover)}.fnB0BW_communityInstalledEntryActive{border-color:var(--fcg-text-primary);background:var(--fcg-text-primary);color:var(--fcg-bg-layer-2)}.fnB0BW_capabilityCommunity{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);margin-top:12px;padding:14px}.fnB0BW_capabilityCommunityHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fnB0BW_capabilityCommunityGrid{grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:9px;margin-top:11px;display:grid}.fnB0BW_marketplaceGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin-top:13px;display:grid}.fnB0BW_capabilityCommunityCard{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:8px;min-width:0;padding:12px 14px;display:grid}.fnB0BW_capabilityCommunityCard strong{font-size:var(--fcg-font-body)}.fnB0BW_capabilityCommunityCard p{min-height:36px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.fnB0BW_capabilityCommunityCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_capabilityCommunityCard .fnB0BW_button{width:100%;margin-top:2px}.fnB0BW_capabilityCommunityTop{justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_capabilityCommunityKind{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.07em;font-weight:700}.fnB0BW_marketplaceIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.fnB0BW_capabilityIcon{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);width:28px;height:28px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);object-fit:cover;flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex;overflow:hidden}.fnB0BW_capabilityIconMcp{border-color:color-mix(in srgb, var(--fcg-brand) 35%, var(--fcg-line));background:color-mix(in srgb, var(--fcg-brand) 11%, var(--fcg-bg-layer-1));color:var(--fcg-brand)}.fnB0BW_marketplaceControls{grid-template-columns:minmax(0,1fr) minmax(140px,.4fr);gap:8px;margin-top:12px;display:grid}.fnB0BW_marketplaceLink{appearance:none;cursor:pointer;font:inherit;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0;text-decoration:none}.fnB0BW_marketplaceLink:hover{color:var(--fcg-text-primary);text-decoration:underline}.fnB0BW_marketplacePagination{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:center;align-items:center;gap:10px;margin-top:13px;display:flex}.fnB0BW_communitySearch{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;margin-top:12px;display:grid}.fnB0BW_communityGrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;padding-top:14px;display:grid}.fnB0BW_communityCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;min-width:0;transition:border-color var(--fcg-fast) var(--fcg-ease), transform var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);flex-direction:column;gap:9px;padding:12px;display:flex}.fnB0BW_communityCard:hover,.fnB0BW_communityCard:focus-visible{border-color:var(--fcg-line-strong);box-shadow:var(--fcg-shadow-2);outline:none;transform:translateY(-1px)}.fnB0BW_communityCardTop{align-items:center;gap:8px;min-width:0;display:flex}img.fnB0BW_communityPluginIcon{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);object-fit:cover;flex:none;width:34px;height:34px;display:block;overflow:hidden}.fnB0BW_communityIdentity{gap:1px;min-width:0;display:grid}.fnB0BW_communityIdentity strong{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body);overflow:hidden}.fnB0BW_communityIdentity small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityCategory{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-left:auto;padding:2px 6px}.fnB0BW_communityDescription{min-height:54px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;line-height:18px;display:-webkit-box;overflow:hidden}.fnB0BW_communityFeatures,.fnB0BW_communityFeatureList{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_communityStats{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);gap:10px;display:flex}.fnB0BW_communityState{color:var(--fcg-success);font-size:var(--fcg-font-caption);font-weight:600}.fnB0BW_communityIncompatible{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);min-height:30px;color:var(--fcg-warn-label);font-size:var(--fcg-font-caption);padding:5px 8px;line-height:18px}.fnB0BW_communityInstall{width:100%;margin-top:auto}.fnB0BW_communityProgress{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityRestart{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 6%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding:10px 11px;line-height:18px;display:flex}.fnB0BW_communityFootnote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:13px;line-height:18px;display:block}.fnB0BW_communityModalBackdrop{z-index:20;background:#0f172a61;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.fnB0BW_communityModal{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-2);width:min(760px,100%);min-width:0;max-height:min(820px,92vh);box-shadow:var(--fcg-shadow-pop);flex-direction:column;gap:12px;padding:18px;display:flex;overflow:hidden}.fnB0BW_communityModalHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fnB0BW_communityModalTitle{font-size:var(--fcg-font-section);margin:2px 0 0;line-height:25px}.fnB0BW_communityModalOwner{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityModalSummary{color:var(--fcg-text-secondary);font-size:var(--fcg-font-body);margin:0;line-height:20px}.fnB0BW_communityModalHeader img.fnB0BW_communityPluginIcon{width:40px;height:40px;margin-top:8px}.fnB0BW_communityModalStats{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:12px;display:flex}.fnB0BW_communityModalStats a{color:var(--fcg-text-primary)}.fnB0BW_communityReadme{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);min-height:180px;overflow:auto}.fnB0BW_communityReadme pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/19px var(--fcg-font-mono);margin:0;padding:13px}.fnB0BW_communityModalFooter{justify-content:flex-end;gap:8px;display:flex}.fnB0BW_section{border-bottom:1px solid var(--fcg-line-subtle);min-width:0;padding:24px 0}.fnB0BW_section:last-child{border-bottom:0}.fnB0BW_sectionHeader{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.fnB0BW_sectionName{font-size:var(--fcg-font-body-lg);letter-spacing:-.01em;font-weight:650;line-height:20px}.fnB0BW_sectionMeta{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_badge{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 8px;line-height:18px}.fnB0BW_badgeLive{color:var(--fcg-success)}.fnB0BW_badgeDanger{color:var(--fcg-danger)}.fnB0BW_inspectStatus{background:0 0;align-self:start}.fnB0BW_diagnosticsDump{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);max-height:240px;color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);font-size:var(--fcg-font-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0 0;padding:8px 10px;line-height:18px;overflow:auto}.fnB0BW_grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.fnB0BW_routingGrid{grid-template-columns:1fr;gap:8px}.fnB0BW_routingCell{grid-template-columns:minmax(150px,.7fr) minmax(0,1fr);align-items:center;gap:18px;min-height:0;padding:12px 14px;display:grid}.fnB0BW_routingCell.fnB0BW_selectCell{grid-template-rows:none;align-content:normal}.fnB0BW_routingCell .fnB0BW_select{min-height:42px}.fnB0BW_routingCopy{gap:2px;min-width:0;display:grid}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_routingCopy{grid-column:1/-1;grid-template-columns:minmax(150px,.7fr) auto minmax(0,1fr);align-items:center;gap:10px}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_cellHint{margin-top:0}.fnB0BW_infoCell{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);min-width:0;padding:14px}.fnB0BW_cellLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-bottom:4px;display:block}.fnB0BW_cellValue{text-overflow:ellipsis;white-space:nowrap;font-weight:500;display:block;overflow:hidden}.fnB0BW_cellHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block}.fnB0BW_feedbackRow{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 18px;display:flex}.fnB0BW_feedbackRow>.fnB0BW_routingCopy{flex:220px}.fnB0BW_telegramLink{flex:none;gap:7px;text-decoration:none}.fnB0BW_telegramIcon{flex:none;display:block}.fnB0BW_selectCell{gap:5px;display:grid}.fnB0BW_select,.fnB0BW_input{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);width:100%;min-width:0;color:var(--fcg-text-primary);font:inherit;font-size:var(--fcg-font-body);transition:border-color var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);outline:none;padding:8px 11px}.fnB0BW_select:hover,.fnB0BW_input:hover{border-color:var(--fcg-line-strong)}.fnB0BW_select:focus,.fnB0BW_input:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_accountList{flex-direction:column;gap:8px;display:flex}.fnB0BW_accountManager{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:10px;margin-top:10px;padding:14px;display:grid}.fnB0BW_extensionList{gap:6px;margin-top:14px;display:grid}.fnB0BW_extensionRow{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:11px 12px;display:flex}.fnB0BW_extensionRow span{gap:3px;min-width:0;display:grid}.fnB0BW_extensionRow small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_engineSelect{cursor:pointer;flex:none;width:216px}.fnB0BW_switch{-webkit-appearance:none;appearance:none;border:1px solid var(--fcg-line-strong);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);cursor:pointer;width:36px;height:20px;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease);outline:none;flex:none;margin:0;position:relative}.fnB0BW_switch:before{content:\"\";corner-shape:round;background:var(--fcg-bg-layer-2);width:14px;height:14px;box-shadow:var(--fcg-shadow-1);transition:transform var(--fcg-fast) var(--fcg-ease);border-radius:50%;position:absolute;top:2px;left:2px}.fnB0BW_switch:checked{border-color:var(--fcg-brand);background:var(--fcg-brand)}.fnB0BW_switch:checked:before{transform:translate(16px)}.fnB0BW_switch:hover:not(:disabled){border-color:var(--fcg-brand)}.fnB0BW_switch:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent)}.fnB0BW_switch:disabled{cursor:not-allowed;opacity:.45}.fnB0BW_capabilityForm{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px;padding:14px;display:grid}.fnB0BW_capabilityForm label{min-width:0;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_capabilityFormHead{grid-column:1/-1;justify-content:space-between;align-items:center;gap:10px;display:flex}.fnB0BW_capabilityFull{grid-column:1/-1}.fnB0BW_skillList{gap:8px;margin-top:12px;display:grid}.fnB0BW_capabilityStats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_capabilityStats div{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);gap:2px;padding:12px 14px;display:grid}.fnB0BW_capabilityStats strong{font-size:var(--fcg-font-section);line-height:21px}.fnB0BW_capabilityStats small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_advisorStandalone{padding-top:2px}.fnB0BW_engineeringSection .fnB0BW_capabilityStats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.fnB0BW_advisorStats{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_advisorStats div{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);gap:3px;min-width:0;padding:12px 14px;display:grid}.fnB0BW_advisorStats strong{font-size:var(--fcg-font-body-lg);text-overflow:ellipsis;white-space:nowrap;line-height:20px;overflow:hidden}.fnB0BW_advisorStats small,.fnB0BW_advisorEvidence small{overflow-wrap:anywhere;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_advisorWarning{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 6%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin-top:10px;padding:9px 11px;line-height:18px}.fnB0BW_advisorEvidence{border-left:2px solid var(--fcg-text-primary);background:var(--fcg-bg-layer-1);gap:3px;margin-top:12px;padding:10px 11px;display:grid}.fnB0BW_advisorEvidence strong{font-size:var(--fcg-font-caption)}.fnB0BW_advisorEvidence span{color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/16px var(--fcg-font-mono)}.fnB0BW_advisorModelField{min-width:0;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_advisorModelTrigger{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:100%;min-height:42px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;gap:2px;padding:8px 9px;display:grid;overflow:hidden}.fnB0BW_advisorModelTrigger:hover{border-color:var(--fcg-line-strong)}.fnB0BW_advisorModelTrigger:disabled{cursor:not-allowed;opacity:.55}.fnB0BW_advisorModelTrigger small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_advisorPickerBackdrop{z-index:30;background:#0f172a61;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.fnB0BW_advisorPicker{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-2);width:min(680px,100%);height:min(720px,92vh);box-shadow:var(--fcg-shadow-pop);grid-template-rows:auto auto minmax(0,1fr) auto;gap:11px;padding:17px;display:grid;overflow:hidden}.fnB0BW_advisorPickerHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fnB0BW_advisorPickerHeader>div{gap:3px;display:grid}.fnB0BW_advisorPickerHeader strong{font-size:16px}.fnB0BW_advisorPickerHeader small,.fnB0BW_advisorManual>small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_advisorModelList{overscroll-behavior:contain;scrollbar-gutter:stable;gap:7px;min-height:0;padding-right:6px;display:grid;overflow:hidden auto}.fnB0BW_advisorModelOption{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);width:100%;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;justify-content:space-between;align-items:center;gap:14px;padding:11px 12px;display:flex}.fnB0BW_advisorModelOption:hover{border-color:var(--fcg-line-strong);background:var(--fcg-bg-layer-2)}.fnB0BW_advisorModelSelected{border-color:var(--fcg-brand);background:var(--fcg-bg-layer-2);box-shadow:inset 0 0 0 1px var(--fcg-brand)}.fnB0BW_advisorModelOption>span{gap:2px;min-width:0;display:grid}.fnB0BW_advisorModelOption small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_advisorModelOption code{max-width:45%;color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/16px var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_advisorManual{border-top:1px solid var(--fcg-line);gap:6px;padding-top:10px;display:grid}.fnB0BW_advisorManual summary{cursor:pointer;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_advisorNotes{gap:8px;margin-top:12px;display:grid}.fnB0BW_advisorNote{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:7px;padding:14px;display:grid}.fnB0BW_advisorNoteHeader{justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_advisorNoteHeader small,.fnB0BW_advisorNote footer{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_advisorNote p{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:18px}.fnB0BW_advisorSeverity{border-radius:var(--fcg-radius-full);width:fit-content;font-size:var(--fcg-font-caption);letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;font-weight:700;display:inline-flex}.fnB0BW_advisorSeverityNit{background:var(--fcg-bg-hover);color:var(--fcg-text-secondary)}.fnB0BW_advisorSeverityConcern{background:color-mix(in srgb, var(--fcg-warn) 13%, var(--fcg-bg-layer-2));color:var(--fcg-warn-label)}.fnB0BW_advisorSeverityBlocker{background:color-mix(in srgb, var(--fcg-danger) 11%, var(--fcg-bg-layer-2));color:var(--fcg-danger)}.fnB0BW_memoryPanel{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:12px;margin-top:16px;padding:14px;display:grid}.fnB0BW_memoryHeader,.fnB0BW_memoryDetailHeader{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.fnB0BW_memoryHeader>div:first-child,.fnB0BW_memoryDetailHeader>div{gap:3px;min-width:0;display:grid}.fnB0BW_memoryHeader strong,.fnB0BW_memoryDetailHeader strong{font-size:var(--fcg-font-body)}.fnB0BW_memoryHeader small,.fnB0BW_memoryDetailHeader small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_memoryActions,.fnB0BW_memoryRecordActions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:6px;display:flex}.fnB0BW_memoryActions .fnB0BW_button,.fnB0BW_memoryRecordActions .fnB0BW_button{min-height:26px;font-size:var(--fcg-font-caption);padding:3px 8px}.fnB0BW_memorySearchRow{align-items:center;gap:7px;display:flex}.fnB0BW_memorySearchRow .fnB0BW_input{flex:auto}.fnB0BW_memorySearchRow .fnB0BW_button{min-height:30px;font-size:var(--fcg-font-caption);flex:none;padding:4px 10px}.fnB0BW_memoryRecall{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:6px;padding:9px 11px;display:grid}.fnB0BW_memoryRecallHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.fnB0BW_memoryRecallHead span{gap:2px;min-width:0;display:grid}.fnB0BW_memoryRecallHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_memoryRecallHead .fnB0BW_button{min-height:24px;font-size:var(--fcg-font-caption);flex:none;padding:2px 8px}.fnB0BW_memoryRecallList{flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_memoryRecallList span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 9px}.fnB0BW_memoryList{gap:7px;max-height:360px;padding-right:3px;display:grid;overflow:auto}.fnB0BW_memoryRecord{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px 12px;display:grid}.fnB0BW_memoryRecordSelected{box-shadow:inset 0 0 0 1px var(--fcg-brand)}.fnB0BW_memoryRecordSelect{min-width:0;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:8px;padding:0;display:flex}.fnB0BW_memoryRecordSelect:disabled{cursor:not-allowed;opacity:.6}.fnB0BW_memoryRecordSelect>span{gap:3px;min-width:0;display:grid}.fnB0BW_memoryRecordSelect strong,.fnB0BW_memoryRecordSelect small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_memoryRecordSelect strong{font-size:var(--fcg-font-caption)}.fnB0BW_memoryRecordSelect small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_memoryTrust{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex:none;padding:2px 6px;font-weight:600}.fnB0BW_memoryTrustReviewed{background:color-mix(in srgb, var(--fcg-success) 12%, var(--fcg-bg-layer-2));color:var(--fcg-success)}.fnB0BW_memoryTrustDraft{background:color-mix(in srgb, var(--fcg-warn) 13%, var(--fcg-bg-layer-2));color:var(--fcg-warn-label)}.fnB0BW_memoryDetail{border:1px solid color-mix(in srgb, var(--fcg-text-primary) 18%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:9px;padding:11px;display:grid}.fnB0BW_memoryDetail p{max-height:240px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;line-height:19px;overflow:auto}.fnB0BW_memoryTags{flex-wrap:wrap;gap:5px;display:flex}.fnB0BW_memoryTags span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);padding:2px 6px}.fnB0BW_memoryTimeline{border-top:1px solid var(--fcg-line);gap:5px;padding-top:9px;display:grid}.fnB0BW_memoryTimeline strong{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_memoryTimeline button{color:var(--fcg-text-tertiary);cursor:pointer;font:var(--fcg-font-caption)/16px var(--fcg-font-mono);text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;padding:0;overflow:hidden}.fnB0BW_memoryTimeline button:hover,.fnB0BW_memoryTimelineCurrent{color:var(--fcg-text-primary)!important}.fnB0BW_graphPanel{border:1px solid color-mix(in srgb, var(--fcg-brand) 24%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, color-mix(in srgb, var(--fcg-brand) 5%, var(--fcg-bg-layer-2)), var(--fcg-bg-layer-1));gap:10px;margin-top:14px;padding:12px;display:grid}.fnB0BW_graphState{border-left:2px solid var(--fcg-brand);background:var(--fcg-bg-layer-2);gap:3px;padding:10px 11px;display:grid}.fnB0BW_graphState strong{font-size:var(--fcg-font-caption)}.fnB0BW_graphState small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_graphInstallList{gap:8px;display:grid}.fnB0BW_graphInstallRow{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.fnB0BW_graphInstallRow>div{flex:1;gap:4px;min-width:0;display:grid}.fnB0BW_graphInstallRow strong{font-size:var(--fcg-font-caption)}.fnB0BW_graphInstallRow small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_graphInstallRow .fnB0BW_input{margin-top:4px}.fnB0BW_verificationGrid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:7px;display:grid}.fnB0BW_verificationGrid article{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:4px;min-width:0;padding:10px 12px;display:grid}.fnB0BW_verificationGrid strong{font-size:var(--fcg-font-caption);text-transform:uppercase}.fnB0BW_verificationGrid small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_verificationGrid pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:120px;color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/19px var(--fcg-font-mono);margin:0;overflow:auto}.fnB0BW_mcpTemplateBar{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:7px;margin-top:12px;display:flex}.fnB0BW_templateButton{border:1px dashed var(--fcg-line-strong);border-radius:var(--fcg-radius-sm);min-height:26px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;align-items:center;gap:4px;padding:3px 8px;display:inline-flex}.fnB0BW_templateButton:hover{border-style:solid;border-color:var(--fcg-text-primary);color:var(--fcg-text-primary)}.fnB0BW_mcpPresetHeading{justify-content:space-between;align-items:baseline;gap:10px;margin-top:14px;display:flex}.fnB0BW_mcpPresetHeading strong{font-size:var(--fcg-font-caption)}.fnB0BW_mcpPresetHeading small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_mcpPresetGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpPresetCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));min-width:0;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px;display:grid}.fnB0BW_mcpPresetCard:hover{border-color:var(--fcg-line-strong);box-shadow:var(--fcg-shadow-1);transform:translateY(-1px)}.fnB0BW_mcpPresetCard:disabled{cursor:not-allowed;opacity:.55;transform:none}.fnB0BW_mcpPresetCard>span:not(.fnB0BW_mcpPresetIcon){gap:2px;min-width:0;display:grid}.fnB0BW_mcpPresetCard strong{font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpPresetCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:18px;overflow:hidden}.fnB0BW_mcpPresetCard b{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:nowrap;font-weight:500}.fnB0BW_mcpPresetIcon,.fnB0BW_mcpServerIcon{border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 12%, var(--fcg-bg-layer-2));width:30px;height:30px;color:var(--fcg-brand);flex:none;place-items:center;display:grid}.fnB0BW_mcpServerIcon{width:32px;height:32px}.fnB0BW_mcpMarketplaceGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpMarketplaceCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));grid-template-columns:auto minmax(0,1fr);gap:9px;min-width:0;padding:10px;display:grid}.fnB0BW_mcpMarketplaceIcon{object-fit:cover;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);flex:none;width:30px;height:30px}.fnB0BW_mcpMarketplaceCopy{gap:3px;min-width:0;display:grid}.fnB0BW_mcpMarketplaceCopy>div{justify-content:space-between;align-items:center;gap:6px;display:flex}.fnB0BW_mcpMarketplaceCopy strong,.fnB0BW_mcpMarketplaceCopy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpMarketplaceCopy strong{font-size:var(--fcg-font-caption)}.fnB0BW_mcpMarketplaceCopy span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);flex:none;padding:2px 6px}.fnB0BW_mcpMarketplaceCopy small,.fnB0BW_mcpMarketplaceCopy em{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);font-style:normal;line-height:18px}.fnB0BW_mcpMarketplaceActions{grid-column:1/-1;justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_mcpMarketplaceActions a{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-decoration:none}.fnB0BW_mcpMarketplaceActions a:hover{color:var(--fcg-text-primary);text-decoration:underline}.fnB0BW_mcpMarketplaceActions .fnB0BW_button{min-height:27px;font-size:var(--fcg-font-caption);padding:3px 8px}.fnB0BW_mcpJsonPanel{border:1px solid color-mix(in srgb, var(--fcg-brand) 32%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:color-mix(in srgb, var(--fcg-brand) 4%, var(--fcg-bg-layer-1));gap:9px;margin-top:12px;padding:11px;display:grid}.fnB0BW_mcpJsonPanel .fnB0BW_capabilityFormHead{grid-template-columns:1fr auto;align-items:start;gap:4px 10px;display:grid}.fnB0BW_mcpJsonPanel .fnB0BW_capabilityFormHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);grid-column:1/-1;line-height:18px}.fnB0BW_mcpJsonInput{box-sizing:border-box;resize:vertical;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:100%;min-height:170px;color:var(--fcg-text-primary);font:var(--fcg-font-caption)/18px var(--fcg-font-mono);outline:none;padding:10px}.fnB0BW_mcpJsonInput:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_mcpServerList{gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpServerCard{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:12px 14px;display:flex}.fnB0BW_mcpServerMain{gap:4px;min-width:0;display:grid}.fnB0BW_mcpServerMain>small{color:var(--fcg-text-tertiary);font:var(--fcg-font-caption)/16px var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpServerTitle{align-items:center;gap:7px;min-width:0;display:flex}.fnB0BW_mcpServerTitle strong{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body);overflow:hidden}.fnB0BW_mcpServerActions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:7px;display:flex}.fnB0BW_inlineSwitch{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:4px;display:inline-flex}.fnB0BW_inlineSwitch input{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_emptyCapability{border:1px dashed var(--fcg-line-strong);border-radius:var(--fcg-radius-md);color:var(--fcg-text-secondary);text-align:center;gap:4px;margin-top:12px;padding:18px 14px;display:grid}.fnB0BW_emptyCapability small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_skillPanel{gap:8px;margin-top:14px;padding-top:1px;display:grid}.fnB0BW_skillPanelHeader{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.fnB0BW_skillPanelHeader small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_skillCard{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);border:1px solid #0000;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.fnB0BW_skillCard:hover{border-color:var(--fcg-line);background:var(--fcg-bg-layer-2)}.fnB0BW_skillCardBody{min-width:0;color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;flex:1;gap:4px;padding:0;display:grid}.fnB0BW_skillCardBody:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_skillCardControl{flex:none;justify-items:end;gap:2px;padding-top:2px;display:grid}.fnB0BW_skillCardToggle{color:var(--fcg-text-tertiary);cursor:pointer;font-size:var(--fcg-font-caption);white-space:nowrap;align-items:center;gap:6px;display:flex}.fnB0BW_skillCardToggle input{margin:0}.fnB0BW_skillCardClear{color:var(--fcg-brand);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0}.fnB0BW_skillCardClear:disabled{opacity:.5;cursor:default}.fnB0BW_skillDetailControl{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);flex-wrap:wrap;align-items:center;gap:4px 12px;margin-top:10px;padding:9px 12px;display:flex}.fnB0BW_skillDetailControl>small{flex-basis:100%}.fnB0BW_skillForward{margin-top:12px}.fnB0BW_skillForwardHead{gap:2px;margin-bottom:6px;display:grid}.fnB0BW_skillForwardHead strong{font-size:var(--fcg-font-caption)}.fnB0BW_skillForwardHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_skillCardHead{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_skillCard strong{font-size:var(--fcg-font-caption)}.fnB0BW_skillCard p{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.fnB0BW_skillCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_skillFileBar{flex-wrap:wrap;gap:6px;margin:12px 0 0;display:flex}.fnB0BW_skillFileChip{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);max-width:100%;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;padding:4px 9px;overflow:hidden}.fnB0BW_skillFileChip:hover{background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_skillFileChipActive{border-color:var(--fcg-brand);color:var(--fcg-text-primary)}.fnB0BW_skillFileChip:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_workbuddyHeaderActions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.fnB0BW_accountManagerButton{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;padding:4px 9px}.fnB0BW_accountManagerButton:hover{background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_accountRow{justify-content:space-between;align-items:center;gap:14px;min-width:0;display:flex}.fnB0BW_accountIdentity{min-width:0}.fnB0BW_accountIdentityWithAvatar{align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_accountText{min-width:0}.fnB0BW_accountAvatar{border-radius:var(--fcg-radius-md);border:1px solid #0000;flex:none;place-items:center;width:42px;height:42px;display:inline-grid;overflow:hidden;box-shadow:0 2px 8px #0f172a1a}.fnB0BW_accountAvatarRemote{border-color:var(--fcg-line);background:#fff}.fnB0BW_accountAvatarRemote img{object-fit:cover;width:100%;height:100%}.fnB0BW_accountAvatarMonogram{font-size:var(--fcg-font-section);letter-spacing:-.04em;font-weight:800;line-height:1}.fnB0BW_accountAvatarQq{color:#fff;background:linear-gradient(145deg,#38bdf8,#1263bd);border-color:#1688d8}.fnB0BW_accountAvatarGoogle{background:linear-gradient(145deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));color:#4285f4;text-shadow:1px 0 #ea4335,0 1px #34a853,-1px 0 #fbbc05;border-color:#d8dce5}.fnB0BW_accountAvatarGeneric{border-color:var(--fcg-line);background:var(--fcg-bg-layer-1);color:var(--fcg-text-tertiary)}.fnB0BW_accountAvatarGeneric svg{fill:currentColor;width:22px;height:22px}.fnB0BW_accountName{text-overflow:ellipsis;white-space:nowrap;font-weight:600;display:block;overflow:hidden}.fnB0BW_accountEmail{text-overflow:ellipsis;white-space:nowrap;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block;overflow:hidden}.fnB0BW_accountActions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;display:flex}.fnB0BW_clineUsage{gap:7px;margin-top:4px;display:grid}.fnB0BW_clineUsageHead{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_clineUsageRow{grid-template-columns:84px minmax(0,1fr) 44px;align-items:center;gap:10px;display:grid}.fnB0BW_clineUsageLabel{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-caption);overflow:hidden}.fnB0BW_clineUsageValue{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;text-align:right}.fnB0BW_clineUsageMeter{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);height:4px;overflow:hidden}.fnB0BW_clineUsageFill{border-radius:inherit;background:var(--fcg-brand);height:100%;transition:width .3s}.fnB0BW_clineUsageFillHigh{background:var(--fcg-warn)}.fnB0BW_balance{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-success);font-size:var(--fcg-font-body-lg);font-variant-numeric:tabular-nums;align-items:baseline;gap:7px;padding:5px 11px;font-weight:600;display:inline-flex}.fnB0BW_balanceLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);font-weight:500}.fnB0BW_authForm{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px;display:grid}.fnB0BW_authPanel{box-sizing:border-box;border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-1);width:100%;box-shadow:var(--fcg-shadow-2);gap:16px;padding:26px 24px 22px;display:grid}.fnB0BW_authLayout{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:20px;margin-top:6px;display:grid}.fnB0BW_authHead{text-align:center;justify-items:center;gap:6px;display:grid}.fnB0BW_authTitle{color:var(--fcg-text-primary);letter-spacing:-.01em;font-size:17px;font-weight:650;line-height:24px}.fnB0BW_authSubtitle{max-width:300px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_authTabs{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-tip);grid-template-columns:1fr 1fr;gap:2px;padding:3px;display:grid}.fnB0BW_authTab{min-height:32px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);background:0 0;border:0;border-radius:8px}.fnB0BW_authTab:hover{color:var(--fcg-text-primary)}.fnB0BW_authTab:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authTabActive{background:var(--fcg-bg-layer-1);box-shadow:var(--fcg-shadow-1);color:var(--fcg-text-primary);font-weight:600}.fnB0BW_authStack{gap:11px;display:grid}.fnB0BW_authPanel .fnB0BW_input{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-tip);min-height:42px;font-size:var(--fcg-font-body);border-color:#0000;padding:10px 13px}.fnB0BW_authPanel .fnB0BW_input::placeholder{color:var(--fcg-text-tertiary)}.fnB0BW_authPanel .fnB0BW_input:hover:not(:focus){border-color:var(--fcg-line)}.fnB0BW_authPanel .fnB0BW_input:focus{border-color:var(--fcg-brand);background:var(--fcg-bg-layer-1);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill,.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill:hover,.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill:focus{-webkit-text-fill-color:var(--fcg-text-primary);box-shadow:0 0 0 60px var(--fcg-bg-tip) inset}.fnB0BW_authCodeRow{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.fnB0BW_authCodeSend{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);min-height:42px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;white-space:nowrap;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);padding:0 14px}.fnB0BW_authCodeSend:hover:not(:disabled){border-color:var(--fcg-line-strong);background:var(--fcg-bg-hover)}.fnB0BW_authCodeSend:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authCodeSend:disabled{cursor:not-allowed;color:var(--fcg-text-tertiary)}.fnB0BW_authSubmit{border-radius:var(--fcg-radius-md);background:var(--fcg-brand);width:100%;min-height:42px;color:var(--fcg-text-on-brand-fixed);cursor:pointer;font:inherit;font-size:var(--fcg-font-body);letter-spacing:.01em;transition:background var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease), transform var(--fcg-fast) var(--fcg-ease);border:1px solid #0000;font-weight:600}.fnB0BW_authSubmit:hover:not(:disabled){background:var(--fcg-brand-strong)}.fnB0BW_authSubmit:active:not(:disabled){transform:translateY(1px)}.fnB0BW_authSubmit:disabled{cursor:not-allowed;opacity:.5}.fnB0BW_authSubmit:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 30%, transparent);outline:none}.fnB0BW_authNote,.fnB0BW_authStep{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-align:center;line-height:18px}.fnB0BW_authStep{color:var(--fcg-text-secondary)}.fnB0BW_authSocialRow{grid-template-columns:1fr 1fr;gap:9px;display:grid}.fnB0BW_authSocialButton{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);min-height:42px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-body);transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);justify-content:center;align-items:center;gap:8px;font-weight:550;display:inline-flex}.fnB0BW_authSocialButton svg{flex:none;width:16px;height:16px}.fnB0BW_authSocialButton:hover:not(:disabled){border-color:var(--fcg-line-strong);background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_authSocialButton:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authSocialButton:disabled{cursor:progress;opacity:.6}.fnB0BW_authDivider{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:10px;display:flex}.fnB0BW_authDivider:before,.fnB0BW_authDivider:after{background:var(--fcg-line);content:\"\";flex:1;height:1px}.fnB0BW_authNotice{border:1px solid color-mix(in srgb, var(--fcg-brand) 26%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 6%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-align:center;padding:9px 11px;line-height:18px}.fnB0BW_authFull{grid-column:1/-1}.fnB0BW_remember{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);align-items:center;gap:8px;display:flex}.fnB0BW_remember input{width:15px;height:15px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_rememberRow{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.fnB0BW_passwordField{min-width:0;display:flex;position:relative}.fnB0BW_authPanel .fnB0BW_passwordField .fnB0BW_input{width:100%;padding-right:64px}.fnB0BW_passwordToggle{border-radius:var(--fcg-radius-sm);color:var(--fcg-text-tertiary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:4px 6px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.fnB0BW_passwordToggle:hover{color:var(--fcg-text-primary)}.fnB0BW_paymentBar{border-bottom:1px solid var(--fcg-line-subtle);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px 16px;margin-bottom:18px;padding-bottom:16px;display:grid}.fnB0BW_paymentBarDetail{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;grid-column:1/-1;line-height:17px}.fnB0BW_paymentPicker{justify-items:end;gap:6px;min-width:0;display:grid}.fnB0BW_paymentHeading{font-size:var(--fcg-font-title);letter-spacing:-.01em;color:var(--fcg-text-primary);margin-bottom:3px;font-weight:600;display:block}.fnB0BW_paymentMethod{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:8px;display:inline-flex}.fnB0BW_paymentMethod>span{white-space:nowrap;flex:none}.fnB0BW_paymentMethod .fnB0BW_select{width:auto;min-width:176px;max-width:100%}.fnB0BW_alert{border:1px solid color-mix(in srgb, var(--fcg-danger) 28%, transparent);border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-danger) 7%, var(--fcg-bg-layer-2));color:var(--fcg-danger);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin-bottom:10px;padding:9px 11px;line-height:18px}.fnB0BW_alert button{color:inherit;font-size:var(--fcg-font-caption);cursor:pointer;white-space:nowrap;background:0 0;border:0;margin-left:10px;padding:0;text-decoration:underline}.fnB0BW_pending{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 6%, var(--fcg-bg-layer-2));gap:8px;margin-bottom:12px;padding:10px 11px;display:grid}.fnB0BW_pendingTitle{font-weight:600}.fnB0BW_pendingHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_pendingRow{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_pendingText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.fnB0BW_plans,.fnB0BW_planShared,.fnB0BW_payDialog{--pixel-ink:color-mix(in srgb, var(--fcg-brand) 58%, var(--fcg-text-primary));--pixel-face:var(--fcg-bg-layer-1);--pixel-recess:color-mix(in srgb, var(--fcg-text-primary) 4%, var(--fcg-bg-layer-1));--pixel-recess-edge:color-mix(in srgb, var(--pixel-ink) 26%, transparent);--pixel-recess-rule:color-mix(in srgb, var(--pixel-ink) 22%, transparent);--pixel-rule:color-mix(in srgb, var(--pixel-ink) 18%, transparent);--pixel-notch:polygon(0 8px, 4px 8px, 4px 4px, 8px 4px, 8px 0, calc(100% - 8px) 0, calc(100% - 8px) 4px, calc(100% - 4px) 4px, calc(100% - 4px) 8px, 100% 8px, 100% calc(100% - 8px), calc(100% - 4px) calc(100% - 8px), calc(100% - 4px) calc(100% - 4px), calc(100% - 8px) calc(100% - 4px), calc(100% - 8px) 100%, 8px 100%, 8px calc(100% - 4px), 4px calc(100% - 4px), 4px calc(100% - 8px), 0 calc(100% - 8px));--pixel-chip:polygon(0 3px, 3px 3px, 3px 0, calc(100% - 3px) 0, calc(100% - 3px) 3px, 100% 3px, 100% calc(100% - 3px), calc(100% - 3px) calc(100% - 3px), calc(100% - 3px) 100%, 3px 100%, 3px calc(100% - 3px), 0 calc(100% - 3px))}.fnB0BW_plans{grid-template-columns:repeat(auto-fit,minmax(236px,1fr));gap:16px;padding:0 6px 6px 0;display:grid}.fnB0BW_planShell{display:flex;position:relative}.fnB0BW_planShell:before{background:var(--pixel-ink);clip-path:var(--pixel-notch);content:\"\";transition:transform var(--fcg-fast) var(--fcg-ease);position:absolute;inset:0;transform:translate(6px,6px)}.fnB0BW_planShell:hover:before{transform:translate(8px,8px)}.fnB0BW_plan{border:2px solid var(--pixel-ink);background:var(--pixel-face);min-width:0;clip-path:var(--pixel-notch);transition:transform var(--fcg-fast) var(--fcg-ease);flex-direction:column;flex:1;gap:11px;padding:16px 16px 14px;display:flex;position:relative}.fnB0BW_plan:hover{transform:translate(-2px,-2px)}.fnB0BW_planTop{border-bottom:2px solid var(--pixel-rule);align-items:center;gap:8px;padding-bottom:9px;display:flex}.fnB0BW_planDot{border:1px solid var(--pixel-ink);background:var(--fcg-brand);width:9px;height:9px;box-shadow:1px 1px 0 0 var(--pixel-ink);flex:none}.fnB0BW_planName{min-width:0;color:var(--fcg-text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body-lg);letter-spacing:-.012em;flex:1;font-weight:800;overflow:hidden}.fnB0BW_planTag{border:1px solid var(--pixel-ink);background:var(--fcg-brand);color:var(--fcg-text-on-brand-fixed);font-family:var(--fcg-font-mono);letter-spacing:.06em;white-space:nowrap;clip-path:var(--pixel-chip);flex:none;padding:2px 8px;font-size:10px;font-weight:700}.fnB0BW_planSave{border:1px solid color-mix(in srgb, var(--fcg-success) 52%, var(--pixel-ink));background:color-mix(in srgb, var(--fcg-success) 13%, transparent);color:var(--fcg-success);letter-spacing:.04em;white-space:nowrap;clip-path:var(--pixel-chip);flex:none;padding:2px 7px;font-size:10px;font-weight:700}.fnB0BW_planFeatured .fnB0BW_planRecess{background:color-mix(in srgb, var(--fcg-brand) 8%, var(--pixel-recess))}.fnB0BW_planShared{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex-wrap:wrap;align-items:center;gap:14px;margin-top:16px;padding:10px 12px;display:flex}.fnB0BW_planShared small{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);letter-spacing:.1em;font-size:10px;font-weight:700}.fnB0BW_planShared span{align-items:center;gap:6px;display:inline-flex}.fnB0BW_planRecess{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);align-items:stretch;padding:10px 12px;display:flex}.fnB0BW_planCreditBlock{flex:auto;gap:3px;min-width:0;display:grid}.fnB0BW_planPriceLabel{color:var(--fcg-brand);letter-spacing:.08em;align-items:center;gap:5px;font-size:10px;font-weight:700;display:flex}.fnB0BW_planRecessCode{font-family:var(--fcg-font-mono);letter-spacing:.14em}.fnB0BW_planPriceRow{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.fnB0BW_planPrice{color:var(--fcg-text-primary);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:26px;font-weight:800;line-height:1}.fnB0BW_planOriginalPrice{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-decoration:line-through}.fnB0BW_planPayBlock{border-left:2px solid var(--pixel-recess-rule);align-content:center;justify-items:end;gap:3px;margin-left:12px;padding-left:12px;display:grid}.fnB0BW_planPayLabel{color:var(--fcg-text-tertiary);font-size:10px;font-weight:600}.fnB0BW_planPayable{color:var(--fcg-brand);font-size:var(--fcg-font-title);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-weight:800}.fnB0BW_features{border-top:2px solid var(--pixel-rule);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:6px;padding-top:10px;line-height:17px;display:grid}.fnB0BW_features>span{grid-template-columns:12px minmax(0,1fr);align-items:start;gap:8px;display:grid}.fnB0BW_planCheck{border:1px solid var(--pixel-ink);background:var(--fcg-brand);width:7px;height:7px;margin-top:5px;display:block}.fnB0BW_planFeatureText{min-width:0}.fnB0BW_planButton{border:2px solid var(--pixel-ink);background:var(--fcg-brand);width:100%;min-height:40px;color:var(--fcg-text-on-brand-fixed);letter-spacing:.04em;box-shadow:inset 0 2px 0 0 #ffffff61, 0 3px 0 0 var(--pixel-ink);transition:background var(--fcg-fast) var(--fcg-ease), box-shadow 60ms linear, transform 60ms linear;border-radius:0;margin-top:auto;font-weight:700}.fnB0BW_planButton:hover:not(:disabled){background:var(--fcg-brand-strong);box-shadow:inset 0 2px 0 0 #ffffff7a, 0 4px 0 0 var(--pixel-ink)}.fnB0BW_planButton:active:not(:disabled){box-shadow:inset 0 1px 0 0 #0000002e, 0 0 0 0 var(--pixel-ink);transform:translateY(3px)}.fnB0BW_planBlurb{gap:3px;display:grid}.fnB0BW_planPerk{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_planLead{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_planFootnote{color:var(--fcg-text-tertiary);align-items:center;gap:6px;font-size:11px;display:flex}.fnB0BW_planDotOk{background:var(--fcg-success);flex:none;width:6px;height:6px}.fnB0BW_planBrandMark{color:var(--fcg-brand);font-family:var(--fcg-font-mono);letter-spacing:.05em;margin-left:auto;font-size:10px;font-weight:700}.fnB0BW_pricingSection{border-top:1px solid var(--fcg-line);gap:10px;margin-top:20px;padding-top:18px;display:grid}.fnB0BW_pricingHeader{justify-content:space-between;align-items:end;gap:14px;display:flex}.fnB0BW_pricingHeader>div{gap:3px;display:grid}.fnB0BW_pricingSearch{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:min(250px,100%);min-height:32px;color:var(--fcg-text-primary);font:inherit;font-size:var(--fcg-font-caption);outline:none;padding:6px 10px}.fnB0BW_pricingSearch:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_pricingNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:8px 10px}.fnB0BW_pricingTableWrap{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);width:100%;overflow:auto hidden}.fnB0BW_pricingTable{table-layout:fixed;border-collapse:collapse;width:100%;min-width:660px;font-size:var(--fcg-font-caption)}.fnB0BW_pricingTable th{border-bottom:1px solid var(--fcg-line-subtle);background:var(--fcg-bg-layer-1);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.02em;text-align:left;white-space:nowrap;padding:10px 14px;font-weight:600}.fnB0BW_pricingTable td{border-bottom:1px solid var(--fcg-line-subtle);color:var(--fcg-text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;padding:10px 12px}.fnB0BW_pricingTable tbody tr:last-child td{border-bottom:0}.fnB0BW_pricingTable tbody tr:hover{background:var(--fcg-bg-hover)}.fnB0BW_pricingFreeSection{border-top:1px dashed var(--fcg-line-subtle);gap:8px;margin-top:6px;padding-top:14px;display:grid}.fnB0BW_pricingFreeHeader{gap:2px;display:grid}.fnB0BW_pricingFreeHeader strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-weight:650}.fnB0BW_paymentMethods{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;margin-top:0;display:flex}.fnB0BW_paymentMethodChip{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.01em;white-space:nowrap;padding:2px 9px;font-weight:550}@media (width<=520px){.fnB0BW_paymentBar{grid-template-columns:minmax(0,1fr)}.fnB0BW_paymentPicker{justify-items:stretch}.fnB0BW_paymentMethod .fnB0BW_select{width:100%}.fnB0BW_paymentMethods{justify-content:flex-start}}.fnB0BW_pricingTable th:first-child,.fnB0BW_pricingTable td:first-child{width:34%}.fnB0BW_pricingTable td:first-child{white-space:normal}.fnB0BW_pricingSection .fnB0BW_pricingTable th:first-child,.fnB0BW_pricingSection .fnB0BW_pricingTable td:first-child{width:26%}.fnB0BW_pricingSection .fnB0BW_pricingTable th:nth-child(2),.fnB0BW_pricingSection .fnB0BW_pricingTable td:nth-child(2){width:22%}.fnB0BW_pricingSection .fnB0BW_pricingTable td.fnB0BW_pricingGroup{white-space:normal}.fnB0BW_pricingTable strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:600;display:block}.fnB0BW_pricingTable code{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;display:block;overflow:hidden}.fnB0BW_pricingTable small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block}.fnB0BW_tokenHero{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:flex-end;gap:16px;margin:-2px 0 14px;padding:10px 0 14px;display:flex}.fnB0BW_tokenEyebrow{color:var(--fcg-brand);font-weight:650;font-size:var(--fcg-font-caption);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:8px;display:flex}.fnB0BW_tokenPulse{corner-shape:round;background:var(--fcg-success);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-success) 18%, transparent);border-radius:50%}.fnB0BW_tokenTitle{font-size:var(--fcg-font-display);letter-spacing:-.03em;margin:3px 0 0;line-height:31px}.fnB0BW_tokenSourceTabs{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);gap:2px;padding:3px;display:inline-flex}.fnB0BW_tokenSourceTabs button{min-height:30px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;border-radius:5px;padding:5px 14px}.fnB0BW_tokenSourceTabs button:hover{background:var(--fcg-bg-hover)}.fnB0BW_tokenSourceTabs .fnB0BW_tokenSourceActive{background:var(--fcg-bg-layer-2);color:var(--fcg-text-primary);box-shadow:var(--fcg-shadow-1);font-weight:600}.fnB0BW_tokenBalRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);align-items:center;gap:10px;margin-top:14px;padding:12px 16px;display:flex}.fnB0BW_tokenBalDot{corner-shape:round;background:var(--fcg-success);width:8px;height:8px;box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-success) 18%, transparent);border-radius:50%;flex:none}.fnB0BW_tokenBalDot[data-level=low]{background:var(--fcg-warn);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-warn) 18%, transparent)}.fnB0BW_tokenBalDot[data-level=danger]{background:var(--fcg-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-danger) 18%, transparent)}.fnB0BW_tokenBalAmount{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:20px;font-weight:700}.fnB0BW_tokenBalBadge{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 12%, transparent);color:var(--fcg-success);font-size:var(--fcg-font-caption);white-space:nowrap;padding:2px 9px;line-height:18px}.fnB0BW_tokenBalBadge[data-level=low]{background:color-mix(in srgb, var(--fcg-warn) 13%, transparent);color:var(--fcg-warn-label)}.fnB0BW_tokenBalBadge[data-level=danger]{background:color-mix(in srgb, var(--fcg-danger) 12%, transparent);color:var(--fcg-danger)}.fnB0BW_tokenBalUpdated{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenBalHint{min-width:0;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.fnB0BW_tokenBalRefresh{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:color var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease);background:0 0;margin-left:auto;padding:4px 12px}.fnB0BW_tokenBalRefresh:hover{border-color:var(--fcg-line-strong);color:var(--fcg-text-primary)}.fnB0BW_tokenSessionRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:10px;margin-top:8px;padding:10px 16px;display:flex}.fnB0BW_tokenSessionRow strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWaste{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);flex-direction:column;gap:10px;margin-top:10px;padding:14px 16px;display:flex}.fnB0BW_tokenCacheWasteHead{align-items:baseline;gap:8px;display:flex}.fnB0BW_tokenCacheWasteHead strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body)}.fnB0BW_tokenCacheWasteClean{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_tokenCacheWasteStats{flex-wrap:wrap;gap:8px;display:flex}.fnB0BW_tokenCacheWasteStat{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);flex-direction:column;flex:120px;gap:2px;padding:8px 10px;display:flex}.fnB0BW_tokenCacheWasteStat span{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_tokenCacheWasteStat b{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteStat[data-tone=warn] b{color:var(--fcg-warn-label)}.fnB0BW_tokenCacheWasteCauses{flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_tokenCacheWasteCause{border-radius:var(--fcg-radius-full);font-size:var(--fcg-font-caption);background:color-mix(in srgb, var(--fcg-warn) 10%, transparent);color:var(--fcg-text-secondary);padding:2px 9px;line-height:18px}.fnB0BW_tokenCacheWasteCause[data-cause=idle-gap]{background:color-mix(in srgb, var(--fcg-warn) 10%, transparent)}.fnB0BW_tokenCacheWasteCause[data-cause=model-changed]{background:color-mix(in srgb, var(--fcg-danger) 10%, transparent)}.fnB0BW_tokenCacheWasteCause[data-cause=prefix-changed]{background:color-mix(in srgb, var(--fcg-text-tertiary) 12%, transparent)}.fnB0BW_tokenCacheWasteCause b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteWorst{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.fnB0BW_tokenCacheWasteWorst li{font-size:var(--fcg-font-caption);color:var(--fcg-text-secondary);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:baseline;gap:10px;display:grid}.fnB0BW_tokenCacheWasteWorstHead{color:var(--fcg-text-tertiary);text-transform:uppercase;letter-spacing:.04em}.fnB0BW_tokenCacheWasteWorstModel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenCacheWasteWorstTokens{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteWorstCause{text-align:right;color:var(--fcg-text-tertiary)}.fnB0BW_tokenCacheWasteFoot{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin:0;line-height:1.5}.fnB0BW_tokenSummaryGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:9px;display:grid}.fnB0BW_tokenMetric{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:4px;min-width:0;padding:12px 14px;display:grid}.fnB0BW_tokenMetric span{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenMetric strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;font-size:22px;font-weight:700;line-height:26px;overflow:hidden}.fnB0BW_tokenMetric small{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:18px;overflow:hidden}.fnB0BW_tokenPanel{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);margin-top:12px;padding:14px 16px}.fnB0BW_tokenPanelHeader{justify-content:space-between;align-items:center;gap:10px;min-height:30px;margin-bottom:10px;display:flex}.fnB0BW_tokenPanelTitle{gap:2px;min-width:0;display:grid}.fnB0BW_tokenPanelHeader strong{font-size:15px}.fnB0BW_tokenPanelKicker{color:var(--fcg-brand);font:700 var(--fcg-font-caption)/16px var(--fcg-font-mono);letter-spacing:.11em}.fnB0BW_tokenRangePills{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);scrollbar-width:none;flex-wrap:nowrap;flex:0 auto;gap:2px;max-width:100%;padding:2px;display:inline-flex;overflow-x:auto}.fnB0BW_tokenRangePills::-webkit-scrollbar{display:none}.fnB0BW_tokenRangePills button{min-height:22px;color:var(--fcg-text-tertiary);cursor:pointer;font:var(--fcg-font-caption)/16px var(--fcg-font-mono);white-space:nowrap;background:0 0;border:0;border-radius:5px;flex:none;padding:2px 8px}.fnB0BW_tokenRangePills .fnB0BW_tokenRangeActive{background:var(--fcg-brand-subtle);color:var(--fcg-brand);font-weight:650}.fnB0BW_tokenHeatFilter{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:10px;display:flex}.fnB0BW_tokenHeatFilterLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-right:2px}.fnB0BW_tokenHeatFilterBtn{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);max-width:150px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;background:0 0;align-items:center;gap:6px;padding:2px 9px;line-height:18px;display:inline-flex;overflow:hidden}.fnB0BW_tokenHeatFilterBtn:hover{border-color:var(--fcg-line-strong);color:var(--fcg-text-primary)}.fnB0BW_tokenHeatFilterBtnActive{background:color-mix(in srgb, var(--model-color,var(--fcg-brand)) 14%, transparent);color:var(--model-color,var(--fcg-brand));border-color:#0000;font-weight:600}.fnB0BW_tokenPillDot{corner-shape:round;background:var(--model-color,var(--fcg-text-tertiary));border-radius:50%;flex:none;width:7px;height:7px}.fnB0BW_tokenChartHead{align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.fnB0BW_tokenChartTitle{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-weight:600}.fnB0BW_tokenChartTotal{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-weight:650}.fnB0BW_tokenChartModel{color:var(--model-color,var(--fcg-brand));font:600 var(--fcg-font-caption)/18px var(--fcg-font-mono);margin-left:auto}.fnB0BW_tokenChartWrap{--fcg-chart-hit:#bcd7f8;--fcg-chart-miss:#7aaff0;--fcg-chart-out:#2f6fe0;--fcg-chart-tip-bg:#fff;--fcg-chart-tip-fg:#1a1a1c;--fcg-chart-tip-muted:#6b7280;min-width:0;position:relative}body[data-ds-dark-theme] .fnB0BW_tokenChartWrap{--fcg-chart-hit:#a9c8f0;--fcg-chart-miss:#5f97e8;--fcg-chart-out:#3d7ef0;--fcg-chart-tip-bg:#1f1f21;--fcg-chart-tip-fg:#f5f6f8;--fcg-chart-tip-muted:#a1a1a8}.fnB0BW_tokenChartPlot{position:relative}.fnB0BW_tokenChartGrid{background:var(--fcg-line-subtle);opacity:.8;pointer-events:none;height:1px;position:absolute;left:0;right:0}.fnB0BW_tokenChartGrid span{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:1;position:absolute;bottom:3px;left:0}.fnB0BW_tokenChartBar{background:var(--fcg-chart-out);transition:filter 90ms var(--fcg-ease);cursor:pointer;border-radius:3px 3px 0 0;position:absolute;bottom:0;overflow:hidden}.fnB0BW_tokenChartBar[data-active]{filter:brightness(1.14)}.fnB0BW_tokenChartBar[data-empty]{background:var(--fcg-line-subtle);opacity:.3}.fnB0BW_tokenChartCross{pointer-events:none;border-left:1px solid color-mix(in srgb, var(--fcg-text-tertiary) 40%, transparent);position:absolute;top:0;bottom:0}.fnB0BW_tokenChartSeg{width:100%;position:absolute;left:0}.fnB0BW_tokenChartSeg[data-top]{border-radius:3px 3px 0 0}.fnB0BW_tokenChartLegend{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 16px;margin-top:6px;line-height:18px;display:flex}.fnB0BW_tokenChartLegend span{align-items:center;gap:6px;min-width:0;display:inline-flex}.fnB0BW_tokenChartLegend i{border-radius:2px;flex:none;width:8px;height:8px}.fnB0BW_tokenChartTip{z-index:5;background:var(--fcg-chart-tip-bg);color:var(--fcg-chart-tip-muted);pointer-events:none;font-size:var(--fcg-font-caption);border-radius:8px;gap:3px;padding:8px 10px;line-height:14px;display:grid;position:absolute;box-shadow:0 10px 30px #00000047}.fnB0BW_tokenChartTipHead{color:var(--fcg-chart-tip-fg);justify-content:space-between;gap:14px;margin-bottom:2px;font-size:13px;display:flex}.fnB0BW_tokenChartTipHead b{font-variant-numeric:tabular-nums}.fnB0BW_tokenChartTipRow{align-items:center;gap:7px;min-width:0;display:flex}.fnB0BW_tokenChartTipRow b{color:var(--fcg-chart-tip-fg);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.fnB0BW_tokenChartSwatch{background:var(--fcg-line-strong);border-radius:2px;flex:none;width:8px;height:8px}.fnB0BW_tokenChartSwatch[data-tone=hit]{background:var(--fcg-chart-hit)}.fnB0BW_tokenChartSwatch[data-tone=miss]{background:var(--fcg-chart-miss)}.fnB0BW_tokenChartSwatch[data-tone=out]{background:var(--fcg-chart-out)}.fnB0BW_tokenChartSwatch[data-tone=req]{corner-shape:round;background:var(--fcg-chart-tip-muted);border-radius:50%}.fnB0BW_tokenChartAxis{height:18px;margin-top:2px;padding-left:46px;position:relative}.fnB0BW_tokenChartAxis span{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px;position:absolute;transform:translate(-50%)}.fnB0BW_tokenChartAxis span:first-child{transform:none}.fnB0BW_tokenChartAxis span:last-child{transform:translate(-100%)}.fnB0BW_tokenHeatTotals{border-top:1px solid var(--fcg-line-subtle);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin-top:10px;padding-top:9px;display:flex}.fnB0BW_tokenHeatTotals b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;margin-right:3px;font-weight:650}.fnB0BW_tokenHeatDaily{margin-left:auto}.fnB0BW_tokenModelBars{gap:6px;margin-bottom:12px;display:grid}.fnB0BW_tokenModelBarRow{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;grid-template-columns:minmax(90px,180px) minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.fnB0BW_tokenModelBarName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenModelBarTrack{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);height:4px;overflow:hidden}.fnB0BW_tokenModelBarTrack i{border-radius:inherit;background:var(--model-color,var(--fcg-brand));height:100%;display:block}.fnB0BW_tokenModelBarRow b{color:var(--fcg-text-primary);font-weight:600}.fnB0BW_tokenModelDot{corner-shape:round;background:var(--model-color,var(--fcg-text-tertiary));border-radius:50%;flex:none;width:7px;height:7px;margin-right:6px;display:inline-block}.fnB0BW_tokenNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line-subtle));border-radius:var(--fcg-radius-md);background:color-mix(in srgb, var(--fcg-warn) 8%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin-top:10px;padding:10px 14px}.fnB0BW_tokenGatewayTable{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);overflow-x:auto}.fnB0BW_tokenGatewayTable .fnB0BW_pricingTable{min-width:560px}.fnB0BW_tokenEmpty{min-height:90px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);place-items:center;display:grid}@media (width<=700px){.fnB0BW_tokenSummaryGrid{grid-template-columns:1fr 1fr}}@media (width<=520px){.fnB0BW_tokenHero{flex-direction:column;align-items:flex-start}.fnB0BW_tokenTitle{font-size:22px}.fnB0BW_tokenSummaryGrid{grid-template-columns:1fr}.fnB0BW_tokenPanelHeader{gap:6px}.fnB0BW_tokenChartTip{width:190px}.fnB0BW_tokenHeatTotals{gap:4px 10px}.fnB0BW_tokenHeatDaily{margin-left:0}.fnB0BW_tokenModelBarRow{grid-template-columns:minmax(70px,110px) minmax(0,1fr) auto}}.fnB0BW_pricePair{gap:1px;min-width:0;line-height:18px;display:grid}.fnB0BW_priceOriginal{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;text-decoration:line-through;overflow:hidden}.fnB0BW_pricingTable .fnB0BW_priceCurrent,.fnB0BW_pricingTable .fnB0BW_priceCurrentDiscount{color:var(--fcg-brand);font-size:var(--fcg-font-body);letter-spacing:-.01em;font-weight:650;display:block}.fnB0BW_pricingTable .fnB0BW_priceCurrentDiscount{color:var(--fcg-success)}.fnB0BW_pricingRequest{font-weight:600;color:var(--fcg-text-primary)!important}.fnB0BW_imageTiers{flex-wrap:wrap;align-items:start;gap:4px 18px;display:inline-flex}.fnB0BW_imageTier{gap:1px;min-width:0;display:grid}.fnB0BW_imageTierLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.02em;font-style:normal;font-weight:600}.fnB0BW_pricingEmpty{text-align:center;color:var(--fcg-text-tertiary)!important;padding:28px!important}.fnB0BW_order{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-1);gap:10px;margin-top:20px;padding:18px;display:grid}.fnB0BW_orderTitle{font-size:var(--fcg-font-body);letter-spacing:-.01em;font-weight:600}.fnB0BW_orderActions{flex-wrap:wrap;gap:7px;display:flex}.fnB0BW_qr{object-fit:contain;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:#fff;width:160px;max-width:100%;height:160px}.fnB0BW_qrWrap{justify-items:start;gap:8px;display:grid}.fnB0BW_textarea{resize:vertical;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);width:100%;min-height:72px;color:var(--fcg-text-primary);font:inherit;transition:border-color var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);outline:none;padding:10px 12px;line-height:1.5}.fnB0BW_textarea:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_qrText{overflow-wrap:anywhere;max-width:min(100%,520px);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}@media (width<=800px){.fnB0BW_marketplaceGrid,.fnB0BW_mcpMarketplaceGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}.fnB0BW_poolManager{gap:12px;display:grid}.fnB0BW_poolToolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.fnB0BW_poolToolbarNote{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_poolToolbarActions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.fnB0BW_poolToggle{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);align-items:center;gap:7px;display:inline-flex}.fnB0BW_poolToggle input{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_poolList{gap:10px;display:grid}.fnB0BW_poolAccount{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease);gap:10px;padding:12px;display:grid}.fnB0BW_poolAccount:hover{border-color:var(--fcg-line-strong);background:var(--fcg-bg-layer-2)}.fnB0BW_poolAccountHead{align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_poolIdentity{flex:auto;align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_poolMonogram{background:var(--fcg-brand-subtle);width:30px;height:30px;color:var(--fcg-brand);font:650 11px/1 var(--fcg-font-mono);letter-spacing:.02em;text-transform:uppercase;border-radius:9px;flex:none;place-items:center;display:grid}.fnB0BW_poolIdentityText{min-width:0}.fnB0BW_poolName{text-overflow:ellipsis;white-space:nowrap;color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-weight:600;display:block;overflow:hidden}.fnB0BW_poolSub{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;margin-top:2px;display:block;overflow:hidden}.fnB0BW_poolChips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fnB0BW_poolChip{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);white-space:nowrap;padding:2px 8px;font-size:11px;line-height:16px}.fnB0BW_poolChipLive{background:color-mix(in srgb, var(--fcg-success) 14%, transparent);color:var(--fcg-success)}.fnB0BW_poolChipWarn{background:color-mix(in srgb, var(--fcg-warn) 16%, transparent);color:var(--fcg-warn)}.fnB0BW_poolChipDanger{background:color-mix(in srgb, var(--fcg-danger) 14%, transparent);color:var(--fcg-danger)}.fnB0BW_poolMeterRow{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.fnB0BW_poolMeterTrack{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);height:5px;display:block;overflow:hidden}.fnB0BW_poolMeterFill{border-radius:inherit;background:var(--fcg-brand);height:100%;transition:width .3s var(--fcg-ease);display:block}.fnB0BW_poolMeterFillWarn{background:var(--fcg-warn)}.fnB0BW_poolMeterFillDanger{background:var(--fcg-danger)}.fnB0BW_poolMetric{color:var(--fcg-text-secondary);font:600 var(--fcg-font-caption)/1 var(--fcg-font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.fnB0BW_poolActions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fnB0BW_poolFootnote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}@media (width<=520px){.fnB0BW_poolAccountHead{flex-wrap:wrap;align-items:flex-start}.fnB0BW_poolIdentity{flex-basis:100%}.fnB0BW_poolActions{justify-content:flex-start}.fnB0BW_mcpServerCard{flex-direction:column;align-items:flex-start}.fnB0BW_mcpServerActions{justify-content:flex-start}.fnB0BW_skillPanelHeader,.fnB0BW_pricingHeader{flex-direction:column;align-items:flex-start;gap:7px}.fnB0BW_pricingSearch{width:100%}.fnB0BW_marketplaceControls,.fnB0BW_mcpMarketplaceGrid,.fnB0BW_marketplaceGrid{grid-template-columns:1fr}.fnB0BW_communityGrid,.fnB0BW_capabilityCommunityGrid{grid-template-columns:1fr}.fnB0BW_capabilityCommunityHeader{flex-direction:column;align-items:flex-start}.fnB0BW_communityFilterBar{gap:8px}.fnB0BW_communityInstalledEntry{padding-inline:8px}.fnB0BW_communityRestart,.fnB0BW_advisorPickerHeader{flex-direction:column;align-items:flex-start}.fnB0BW_communityModalBackdrop,.fnB0BW_advisorPickerBackdrop{padding:10px}.fnB0BW_advisorPicker{height:95vh;padding:14px}.fnB0BW_communityModalStats,.fnB0BW_advisorModelOption{flex-direction:column;align-items:flex-start;gap:4px}.fnB0BW_advisorModelOption code{max-width:100%}.fnB0BW_routingCell{grid-template-columns:1fr;gap:8px}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_routingCopy{grid-template-columns:1fr;gap:2px}.fnB0BW_authForm,.fnB0BW_capabilityForm{grid-template-columns:1fr}.fnB0BW_authFull,.fnB0BW_capabilityFull{grid-column:auto}.fnB0BW_capabilityStats,.fnB0BW_advisorStats{grid-template-columns:1fr}.fnB0BW_accountRow{flex-direction:column;align-items:flex-start}.fnB0BW_accountActions{justify-content:flex-start}.fnB0BW_plans{grid-template-columns:repeat(2,minmax(0,1fr))}.fnB0BW_communityGrid,.fnB0BW_capabilityCommunityGrid{grid-template-columns:1fr}.fnB0BW_communityRestart{flex-direction:column;align-items:flex-start}.fnB0BW_communityModalBackdrop{padding:10px}.fnB0BW_communityModal{max-height:95vh;padding:14px}.fnB0BW_communityModalStats{flex-direction:column;align-items:flex-start;gap:4px}}@media (width<=360px){.fnB0BW_plans{grid-template-columns:1fr}}.fnB0BW_statGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);grid-template-columns:repeat(auto-fit,minmax(112px,1fr));display:grid}.fnB0BW_statCell{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:2px;min-width:0;padding:10px 12px;display:grid}.fnB0BW_statLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:16px;overflow:hidden}.fnB0BW_statValue{color:var(--fcg-text-primary);font-size:var(--fcg-font-title);font-variant-numeric:tabular-nums;letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-weight:650;line-height:20px;overflow:hidden}.fnB0BW_details{margin-top:var(--fcg-space-2)}.fnB0BW_detailsSummary{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);padding:5px 0;line-height:18px}.fnB0BW_detailsSummary:hover{color:var(--fcg-text-primary)}.fnB0BW_detailsSummary:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);border-radius:var(--fcg-radius-sm);outline:none}.fnB0BW_chipGrid{padding:var(--fcg-space-1) 0 var(--fcg-space-2);flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_statChip{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:nowrap;align-items:center;gap:6px;padding:3px 9px;line-height:18px;display:inline-flex}.fnB0BW_statChip b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;font-weight:650}.fnB0BW_statChipIdle{color:var(--fcg-text-tertiary);opacity:.62}.fnB0BW_statChipIdle b{color:var(--fcg-text-tertiary)}@media (width<=520px){.fnB0BW_statGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}.fnB0BW_toggleGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-2);grid-template-columns:repeat(auto-fit,minmax(168px,1fr));display:grid}.fnB0BW_toggleCard{justify-content:space-between;align-items:center;gap:var(--fcg-space-2);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;min-width:0;transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease);padding:9px 11px;display:flex}.fnB0BW_toggleCard:hover{border-color:var(--fcg-line);background:var(--fcg-bg-layer-2)}.fnB0BW_toggleCardDisabled{cursor:not-allowed;opacity:.55}.fnB0BW_toggleCardDisabled:hover{border-color:var(--fcg-line-subtle);background:var(--fcg-bg-layer-1)}.fnB0BW_toggleCardText{gap:1px;min-width:0;display:grid}.fnB0BW_toggleCardText strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:18px;overflow:hidden}.fnB0BW_toggleCardText small{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px;overflow:hidden}.fnB0BW_toggleCardNote{color:var(--fcg-warn-label);font-size:11px;line-height:15px}.fnB0BW_tuningGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);grid-template-columns:repeat(auto-fit,minmax(132px,1fr));display:grid}.fnB0BW_tuningCell{gap:4px;min-width:0;display:grid}.fnB0BW_tuningLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:16px;overflow:hidden}.fnB0BW_tuningHint{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px;overflow:hidden}.fnB0BW_tuningCell .fnB0BW_select{min-height:32px;padding:5px 9px}.fnB0BW_subGroup{gap:var(--fcg-space-2);margin-top:var(--fcg-space-4);display:grid}.fnB0BW_subGroupLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.02em;font-weight:600;line-height:18px}.fnB0BW_councilJob{gap:var(--fcg-space-3);display:grid}.fnB0BW_councilJobHead{align-items:baseline;gap:var(--fcg-space-2);flex-wrap:wrap;min-width:0;display:flex}.fnB0BW_councilJobId{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.fnB0BW_councilReport{gap:var(--fcg-space-2);min-width:0;display:grid}.fnB0BW_councilReportTurn{font-size:var(--fcg-font-body)}.fnB0BW_councilState{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;font-weight:600;line-height:18px}.fnB0BW_councilStateOk{background:var(--fcg-success-subtle);color:var(--fcg-success)}.fnB0BW_councilStateBlocked{background:var(--fcg-danger-subtle);color:var(--fcg-danger)}.fnB0BW_councilStateNowrap{white-space:nowrap;word-break:keep-all;flex:none;max-width:none}.fnB0BW_councilCallout{border-left:2px solid var(--fcg-line-strong);border-radius:0 var(--fcg-radius-sm) var(--fcg-radius-sm) 0;background:var(--fcg-bg-layer-2);gap:2px;padding:9px 11px;display:grid}.fnB0BW_councilCallout p{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:18px}.fnB0BW_councilCalloutBlocked{border-left-color:var(--fcg-danger);background:color-mix(in srgb, var(--fcg-danger) 6%, var(--fcg-bg-layer-2))}.fnB0BW_findingList{gap:6px;margin:0;padding:0;list-style:none;display:grid}.fnB0BW_findingRow{align-items:start;gap:var(--fcg-space-2);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);grid-template-columns:auto minmax(0,1fr) auto;padding:8px 10px;display:grid}.fnB0BW_findingBody{gap:2px;min-width:0;display:grid}.fnB0BW_findingTitle{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:600;line-height:18px}.fnB0BW_findingEvidence{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:17px}.fnB0BW_findingEngine{color:var(--fcg-text-tertiary);white-space:nowrap;flex:none;font-size:11px;line-height:18px}.fnB0BW_findingSeverity{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);color:var(--fcg-text-secondary);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;flex:none;padding:1px 7px;font-size:10px;font-weight:600;line-height:16px}.fnB0BW_findingSeverity_blocker{background:var(--fcg-danger-subtle);color:var(--fcg-danger)}.fnB0BW_findingSeverity_warning{background:var(--fcg-warn-subtle);color:var(--fcg-warn-label)}.fnB0BW_findingSeverity_info{background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary)}.fnB0BW_findingSeverity_unknown{background:var(--fcg-bg-tip);color:var(--fcg-text-tertiary)}@media (width<=520px){.fnB0BW_toggleGrid,.fnB0BW_tuningGrid{grid-template-columns:1fr}.fnB0BW_findingRow{grid-template-columns:auto minmax(0,1fr)}.fnB0BW_findingEngine{grid-column:2}}.fnB0BW_advisorFormGrid{gap:var(--fcg-space-3);margin-top:var(--fcg-space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.fnB0BW_advisorField{min-width:0;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_advisorField>span{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:16px}.fnB0BW_advisorField .fnB0BW_advisorModelTrigger{height:100%}.fnB0BW_advisorModelTrigger{align-content:center;gap:2px;display:grid}.fnB0BW_advisorModelTrigger strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:18px;overflow:hidden}.fnB0BW_advisorFoot{justify-content:space-between;align-items:flex-end;gap:var(--fcg-space-3);margin-top:var(--fcg-space-4);flex-wrap:wrap;display:flex}.fnB0BW_advisorFoot .fnB0BW_advisorEvidence{flex:320px;margin-top:0}.fnB0BW_advisorFoot .fnB0BW_buttonPrimary{flex:none}@media (width<=520px){.fnB0BW_advisorFormGrid{grid-template-columns:1fr}.fnB0BW_advisorFoot{flex-direction:column;align-items:stretch}.fnB0BW_advisorFoot .fnB0BW_buttonPrimary{width:100%}}.fnB0BW_engineeringHeader{justify-content:space-between;align-items:flex-start;gap:var(--fcg-space-3);display:flex}.fnB0BW_engineeringHeader>div:first-child{gap:3px;min-width:0;display:grid}.fnB0BW_engineeringHeader strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg)}.fnB0BW_engineeringHeader small{max-width:620px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_engineeringKicker{color:var(--fcg-text-tertiary);letter-spacing:.08em;font-size:11px;font-weight:650}.fnB0BW_engineeringSummary{margin-top:var(--fcg-space-2);flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_engineeringSummary span{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 9px}.fnB0BW_engineeringSummary b{color:var(--fcg-text-primary)}.fnB0BW_actionMenu{position:relative}.fnB0BW_actionMenu summary{list-style:none}.fnB0BW_actionMenu summary::-webkit-details-marker{display:none}.fnB0BW_actionMenuPop{z-index:4;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);min-width:150px;box-shadow:var(--fcg-shadow-2);gap:4px;padding:6px;display:grid;position:absolute;top:calc(100% + 5px);right:0}.fnB0BW_actionMenuPop .fnB0BW_button{background:0 0;border-color:#0000;justify-content:flex-start}.fnB0BW_actionMenuPop .fnB0BW_button:hover{background:var(--fcg-bg-hover)}.fnB0BW_engineeringComposer{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);padding:var(--fcg-space-3);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);grid-template-columns:minmax(0,1fr) auto;display:grid}.fnB0BW_engineeringComposer .fnB0BW_input{min-width:0}@media (width<=520px){.fnB0BW_engineeringHeader{flex-direction:column}.fnB0BW_engineeringComposer{grid-template-columns:1fr}}.fnB0BW_composerLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin-bottom:5px;font-weight:600;line-height:16px;display:block}.fnB0BW_engineeringComposer>div{min-width:0}.fnB0BW_engineeringComposer>div:first-child,.fnB0BW_engineeringComposer>div:nth-child(2){align-content:start;display:grid}.fnB0BW_pricingTable .fnB0BW_priceFree{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 14%, transparent);color:var(--fcg-success);font-size:var(--fcg-font-caption);letter-spacing:.04em;padding:1px 7px;font-weight:700}.fnB0BW_paymentNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:flex-start;gap:10px;margin-top:14px;padding:10px 12px;line-height:19px;display:flex}.fnB0BW_invoicePanel{border-top:1px solid var(--fcg-line);gap:12px;margin-top:20px;padding-top:18px;display:grid}.fnB0BW_invoiceHead{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.fnB0BW_invoiceOrders{gap:6px;display:grid}.fnB0BW_invoiceOrderRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.fnB0BW_invoiceOrderText{gap:2px;min-width:0;display:grid}.fnB0BW_invoiceOrderText small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_invoiceForm{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.fnB0BW_invoiceForm label{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_invoiceForm .fnB0BW_input{min-width:0}.fnB0BW_invoiceActions{flex-wrap:wrap;gap:8px;display:flex}.fnB0BW_invoiceNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:8px 10px}.fnB0BW_invoicePreview{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:100%;color:var(--fcg-text-primary);font-family:var(--fcg-font-mono);font-size:var(--fcg-font-caption);resize:vertical;padding:10px 12px;line-height:18px}.fnB0BW_invoicePanel>.fnB0BW_sectionMeta{line-height:18px}body .fnB0BW_payDialog{border:2px solid var(--pixel-ink);background:var(--pixel-face);width:min(392px,100vw - 36px);box-shadow:6px 6px 0 0 var(--pixel-ink);border-radius:0;padding-bottom:20px}.fnB0BW_payDialog h2{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);letter-spacing:-.012em;margin:0;font-weight:800}.fnB0BW_payDialog h2+button{border:1px solid var(--pixel-ink);color:var(--pixel-ink);border-radius:0}.fnB0BW_payDialog h2+button:hover{background:var(--pixel-recess)}.fnB0BW_payDialogBody{gap:12px;display:grid}.fnB0BW_payDialogHead{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);gap:3px;padding:12px;display:grid}.fnB0BW_payDialogLabel{color:var(--fcg-brand);font-family:var(--fcg-font-mono);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:700}.fnB0BW_payDialogAmount{color:var(--fcg-text-primary);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:27px;font-weight:800;line-height:34px}.fnB0BW_payDialogMeta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:5px;display:flex}.fnB0BW_payDialogCredit{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_payDialogCredit strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;font-weight:700}.fnB0BW_payDialogState{border:1px solid var(--pixel-ink);background:var(--pixel-face);color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);letter-spacing:.06em;white-space:nowrap;clip-path:var(--pixel-chip);margin-left:auto;padding:2px 9px;font-size:10px;font-weight:700}.fnB0BW_payDialogSlot{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);justify-items:start;gap:10px;padding:12px;display:grid}.fnB0BW_payDialogQr{text-align:center;justify-items:center}.fnB0BW_payDialogSlot .fnB0BW_paymentNotice{border-width:2px;border-radius:0;margin-top:0}.fnB0BW_payDialogSlot .fnB0BW_payDialogElement{width:100%;min-height:0}.fnB0BW_payDialogPaid{border:2px solid color-mix(in srgb, var(--fcg-success) 42%, var(--pixel-ink));background:color-mix(in srgb, var(--fcg-success) 10%, var(--pixel-face));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:10px 12px}.fnB0BW_payDialogNote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px;display:block}.fnB0BW_payDialogFooter{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.fnB0BW_payDialogFooter .fnB0BW_button,.fnB0BW_payDialogSlot .fnB0BW_button{border:2px solid var(--pixel-ink);background:var(--pixel-face);min-height:40px;color:var(--fcg-text-primary);letter-spacing:.04em;box-shadow:0 3px 0 0 var(--pixel-ink);transition:background var(--fcg-fast) var(--fcg-ease), box-shadow 60ms linear, transform 60ms linear;border-radius:0;font-weight:700}.fnB0BW_payDialogFooter .fnB0BW_button:hover:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_button:hover:not(:disabled){background:var(--pixel-recess)}.fnB0BW_payDialogFooter .fnB0BW_button:active:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_button:active:not(:disabled){box-shadow:0 0 0 0 var(--pixel-ink);transform:translateY(3px)}.fnB0BW_payDialogFooter .fnB0BW_buttonPrimary,.fnB0BW_payDialogSlot .fnB0BW_buttonPrimary{border-color:var(--pixel-ink);background:var(--fcg-brand);color:var(--fcg-text-on-brand-fixed);box-shadow:inset 0 2px 0 0 #ffffff61, 0 3px 0 0 var(--pixel-ink)}.fnB0BW_payDialogFooter .fnB0BW_buttonPrimary:hover:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_buttonPrimary:hover:not(:disabled){border-color:var(--pixel-ink);background:var(--fcg-brand-strong);box-shadow:inset 0 2px 0 0 #ffffff7a, 0 4px 0 0 var(--pixel-ink)}.fnB0BW_payDialogFooter .fnB0BW_buttonDanger{color:var(--fcg-danger)}.fnB0BW_payDialogFooter .fnB0BW_button:focus-visible,.fnB0BW_payDialogSlot .fnB0BW_button:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 26%, transparent), 0 3px 0 0 var(--pixel-ink);outline:none}.fnB0BW_planReviewBody{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);max-height:300px;display:grid;overflow:auto}.fnB0BW_planReviewLine{width:100%;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-align:left;background:0 0;border:0;grid-template-columns:44px minmax(0,1fr);gap:8px;padding:2px 10px;line-height:18px;display:grid}.fnB0BW_planReviewLine:hover{background:var(--fcg-bg-hover)}.fnB0BW_planReviewLineSelected{background:var(--fcg-bg-active)}.fnB0BW_planReviewLineNumber{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);text-align:right}.fnB0BW_planReviewLineText{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.fnB0BW_planReviewRemark{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:8px;padding:10px 11px;display:grid}.fnB0BW_pickerVisibilityPanel{gap:var(--fcg-space-2);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);padding:12px;display:grid}.fnB0BW_pickerVisibilityPanel[data-open=false]{padding:9px 12px}.fnB0BW_pickerVisibilityToggle{width:100%;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:0;display:flex}.fnB0BW_pickerVisibilityToggle:hover{color:var(--fcg-text-primary)}.fnB0BW_pickerVisibilityToggle:focus-visible{border-radius:var(--fcg-radius-sm);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_pickerVisibilityGear{flex:none;align-items:center;display:inline-flex}.fnB0BW_pickerVisibilityToggleLabel{min-width:0;font-size:var(--fcg-font-caption);flex:auto;font-weight:620;line-height:18px}.fnB0BW_pickerVisibilityBadge{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-text-tertiary);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:600;line-height:16px}.fnB0BW_pickerVisibilityChevron{flex:none;align-items:center;transition:transform .12s;display:inline-flex}.fnB0BW_pickerVisibilityToggle[aria-expanded=true] .fnB0BW_pickerVisibilityChevron{transform:rotate(180deg)}.fnB0BW_pickerVisibilityMaster{cursor:pointer;align-items:center;gap:10px;display:flex}.fnB0BW_pickerVisibilityText{gap:2px;min-width:0;display:grid}.fnB0BW_pickerVisibilityText strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:620;line-height:18px}.fnB0BW_pickerVisibilityText small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_pickerVisibilityHead{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.fnB0BW_pickerVisibilityLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_pickerVisibilityActions{align-items:center;gap:10px;display:flex}.fnB0BW_pickerVisibilityLink{color:var(--fcg-brand);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0;line-height:18px}.fnB0BW_pickerVisibilityLink:hover{text-decoration:underline}.fnB0BW_pickerVisibilityLink:focus-visible{border-radius:var(--fcg-radius-sm);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_pickerVisibilityList{scrollbar-color:var(--fcg-line-strong) transparent;scrollbar-width:thin;gap:2px;max-height:224px;display:grid;overflow-y:auto}.fnB0BW_pickerVisibilityList[data-visible=false]{opacity:.5}.fnB0BW_pickerVisibilityRow{border-radius:var(--fcg-radius-sm);cursor:pointer;align-items:center;gap:8px;min-width:0;padding:4px 6px;display:flex}.fnB0BW_pickerVisibilityRow:hover{background:var(--fcg-bg-layer-2)}.fnB0BW_pickerVisibilityCheck{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;flex:none;margin:0}.fnB0BW_pickerVisibilityName{min-width:0;color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:11px;line-height:18px;overflow:hidden}.fnB0BW_pickerVisibilityPaid{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-danger) 12%, transparent);color:var(--fcg-danger);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:700;line-height:16px}.fnB0BW_pickerVisibilityFree{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 12%, transparent);color:var(--fcg-success);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:700;line-height:16px}.fnB0BW_pickerVisibilityEmpty{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}";
|
|
18068
|
-
const tagId$
|
|
18069
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
18267
|
+
const css$6 = ".fnB0BW_root{box-sizing:border-box;width:100%;min-width:0;max-width:100%;color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);overflow:hidden}.fnB0BW_toolbar{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:center;gap:12px;min-height:44px;padding:0 0 12px;display:flex}.fnB0BW_toolbarTitle{min-width:0}.fnB0BW_kicker{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.08em;text-transform:uppercase;font-weight:600;line-height:18px}.fnB0BW_title{font-size:var(--fcg-font-section);margin:1px 0 0;font-weight:600;line-height:24px}.fnB0BW_toolbarAction,.fnB0BW_button{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:32px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);justify-content:center;align-items:center;padding:5px 13px;line-height:18px;text-decoration:none;display:inline-flex}.fnB0BW_toolbarAction:hover,.fnB0BW_button:hover{background:var(--fcg-bg-hover)}.fnB0BW_button:disabled{cursor:not-allowed;opacity:.45}.fnB0BW_button:focus-visible,.fnB0BW_toolbarAction:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_buttonPrimary:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-btn-primary-fill) 30%, transparent)}.fnB0BW_buttonPrimary{background:var(--fcg-btn-primary-fill);color:var(--fcg-text-on-brand);border-color:#0000}.fnB0BW_buttonPrimary:hover:not(:disabled){background:var(--fcg-btn-primary-hover);border-color:#0000}.fnB0BW_buttonPrimary:hover{background:var(--fcg-btn-primary-hover)}.fnB0BW_buttonDanger{color:var(--fcg-danger)}.fnB0BW_loading,.fnB0BW_error{color:var(--fcg-text-tertiary);padding:18px 0}.fnB0BW_error{color:var(--fcg-danger)}.fnB0BW_syncNotice{border:1px solid color-mix(in srgb, var(--fcg-brand) 24%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 6%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:10px;margin:14px 0 0;padding:10px 14px;line-height:18px;display:flex}.fnB0BW_syncNoticeOffline{border-color:color-mix(in srgb, var(--fcg-warn-label) 34%, var(--fcg-line));background:color-mix(in srgb, var(--fcg-warn-label) 7%, var(--fcg-bg-layer-1));color:var(--fcg-warn-label)}.fnB0BW_syncDot{border-radius:var(--fcg-radius-full);background:var(--fcg-brand);flex:none;width:7px;height:7px;animation:1.25s ease-in-out infinite fnB0BW_sync-pulse}.fnB0BW_syncNoticeOffline .fnB0BW_syncDot{background:var(--fcg-warn-label);animation:none}@keyframes fnB0BW_sync-pulse{50%{opacity:.38;transform:scale(.8)}}.fnB0BW_sections{gap:0;display:grid}.fnB0BW_pageTabs{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-tip);gap:4px;margin:0 0 14px;padding:3px;display:flex}.fnB0BW_pageTab{min-height:30px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);background:0 0;border:0;border-radius:5px;flex:1;padding:5px 10px}.fnB0BW_pageTabActive{background:var(--fcg-bg-layer-2);color:var(--fcg-text-primary);box-shadow:var(--fcg-shadow-1);font-weight:600}.fnB0BW_modelCategoryActions{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px;width:100%;margin-top:8px;display:grid}.fnB0BW_modelCategoryActions .fnB0BW_select{width:100%;min-width:0}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions){align-items:start}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_pageTabs{box-sizing:border-box;grid-column:2;width:100%;margin:0}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_select{grid-area:2/1;width:100%}.fnB0BW_routingCell:has(.fnB0BW_modelCategoryActions)>.fnB0BW_modelCategoryActions{grid-area:2/2;margin-top:0}.fnB0BW_modelCategoryActions .fnB0BW_button{min-height:42px}.fnB0BW_community{min-width:0;padding:4px 0 17px}.fnB0BW_communityHeader{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:flex-start;gap:12px;padding:13px 0 14px;display:flex}.fnB0BW_communityIntro{max-width:520px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin:5px 0 0;line-height:18px}.fnB0BW_communityFilterBar{justify-content:space-between;align-items:center;gap:12px;padding:12px 0 2px;display:flex}.fnB0BW_communityFilters{scrollbar-width:none;gap:6px;min-width:0;display:flex;overflow-x:auto}.fnB0BW_communityFilter{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;padding:4px 10px}.fnB0BW_communityFilter:hover{background:var(--fcg-bg-hover)}.fnB0BW_communityFilterActive{border-color:var(--fcg-text-primary);background:var(--fcg-text-primary);color:var(--fcg-bg-layer-2)}.fnB0BW_communityInstalledEntry{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:30px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;flex:none;padding:5px 10px;font-weight:600}.fnB0BW_communityInstalledEntry:hover{background:var(--fcg-bg-hover)}.fnB0BW_communityInstalledEntryActive{border-color:var(--fcg-text-primary);background:var(--fcg-text-primary);color:var(--fcg-bg-layer-2)}.fnB0BW_capabilityCommunity{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);margin-top:12px;padding:14px}.fnB0BW_capabilityCommunityHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fnB0BW_capabilityCommunityGrid{grid-template-columns:repeat(auto-fit,minmax(185px,1fr));gap:9px;margin-top:11px;display:grid}.fnB0BW_marketplaceGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:11px;margin-top:13px;display:grid}.fnB0BW_capabilityCommunityCard{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:8px;min-width:0;padding:12px 14px;display:grid}.fnB0BW_capabilityCommunityCard strong{font-size:var(--fcg-font-body)}.fnB0BW_capabilityCommunityCard p{min-height:36px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.fnB0BW_capabilityCommunityCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_capabilityCommunityCard .fnB0BW_button{width:100%;margin-top:2px}.fnB0BW_capabilityCommunityTop{justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_capabilityCommunityKind{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.07em;font-weight:700}.fnB0BW_marketplaceIdentity{align-items:center;gap:6px;min-width:0;display:inline-flex}.fnB0BW_capabilityIcon{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);width:28px;height:28px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);object-fit:cover;flex:none;justify-content:center;align-items:center;font-weight:700;display:inline-flex;overflow:hidden}.fnB0BW_capabilityIconMcp{border-color:color-mix(in srgb, var(--fcg-brand) 35%, var(--fcg-line));background:color-mix(in srgb, var(--fcg-brand) 11%, var(--fcg-bg-layer-1));color:var(--fcg-brand)}.fnB0BW_marketplaceControls{grid-template-columns:minmax(0,1fr) minmax(140px,.4fr);gap:8px;margin-top:12px;display:grid}.fnB0BW_marketplaceLink{appearance:none;cursor:pointer;font:inherit;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0;text-decoration:none}.fnB0BW_marketplaceLink:hover{color:var(--fcg-text-primary);text-decoration:underline}.fnB0BW_marketplacePagination{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:center;align-items:center;gap:10px;margin-top:13px;display:flex}.fnB0BW_communitySearch{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;margin-top:12px;display:grid}.fnB0BW_communityGrid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;padding-top:14px;display:grid}.fnB0BW_communityCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;min-width:0;transition:border-color var(--fcg-fast) var(--fcg-ease), transform var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);flex-direction:column;gap:9px;padding:12px;display:flex}.fnB0BW_communityCard:hover,.fnB0BW_communityCard:focus-visible{border-color:var(--fcg-line-strong);box-shadow:var(--fcg-shadow-2);outline:none;transform:translateY(-1px)}.fnB0BW_communityCardTop{align-items:center;gap:8px;min-width:0;display:flex}img.fnB0BW_communityPluginIcon{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);object-fit:cover;flex:none;width:34px;height:34px;display:block;overflow:hidden}.fnB0BW_communityIdentity{gap:1px;min-width:0;display:grid}.fnB0BW_communityIdentity strong{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body);overflow:hidden}.fnB0BW_communityIdentity small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityCategory{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-left:auto;padding:2px 6px}.fnB0BW_communityDescription{min-height:54px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);-webkit-line-clamp:3;-webkit-box-orient:vertical;margin:0;line-height:18px;display:-webkit-box;overflow:hidden}.fnB0BW_communityFeatures,.fnB0BW_communityFeatureList{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_communityStats{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);gap:10px;display:flex}.fnB0BW_communityState{color:var(--fcg-success);font-size:var(--fcg-font-caption);font-weight:600}.fnB0BW_communityIncompatible{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);min-height:30px;color:var(--fcg-warn-label);font-size:var(--fcg-font-caption);padding:5px 8px;line-height:18px}.fnB0BW_communityInstall{width:100%;margin-top:auto}.fnB0BW_communityProgress{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityRestart{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 6%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:10px;margin-top:12px;padding:10px 11px;line-height:18px;display:flex}.fnB0BW_communityFootnote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:13px;line-height:18px;display:block}.fnB0BW_communityModalBackdrop{z-index:20;background:#0f172a61;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.fnB0BW_communityModal{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-2);width:min(760px,100%);min-width:0;max-height:min(820px,92vh);box-shadow:var(--fcg-shadow-pop);flex-direction:column;gap:12px;padding:18px;display:flex;overflow:hidden}.fnB0BW_communityModalHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fnB0BW_communityModalTitle{font-size:var(--fcg-font-section);margin:2px 0 0;line-height:25px}.fnB0BW_communityModalOwner{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_communityModalSummary{color:var(--fcg-text-secondary);font-size:var(--fcg-font-body);margin:0;line-height:20px}.fnB0BW_communityModalHeader img.fnB0BW_communityPluginIcon{width:40px;height:40px;margin-top:8px}.fnB0BW_communityModalStats{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:12px;display:flex}.fnB0BW_communityModalStats a{color:var(--fcg-text-primary)}.fnB0BW_communityReadme{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);min-height:180px;overflow:auto}.fnB0BW_communityReadme pre{white-space:pre-wrap;overflow-wrap:anywhere;color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/19px var(--fcg-font-mono);margin:0;padding:13px}.fnB0BW_communityModalFooter{justify-content:flex-end;gap:8px;display:flex}.fnB0BW_section{border-bottom:1px solid var(--fcg-line-subtle);min-width:0;padding:24px 0}.fnB0BW_section:last-child{border-bottom:0}.fnB0BW_sectionHeader{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.fnB0BW_sectionName{font-size:var(--fcg-font-body-lg);letter-spacing:-.01em;font-weight:650;line-height:20px}.fnB0BW_sectionMeta{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_badge{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 8px;line-height:18px}.fnB0BW_badgeLive{color:var(--fcg-success)}.fnB0BW_badgeDanger{color:var(--fcg-danger)}.fnB0BW_inspectStatus{background:0 0;align-self:start}.fnB0BW_diagnosticsDump{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);max-height:240px;color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);font-size:var(--fcg-font-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:4px 0 0;padding:8px 10px;line-height:18px;overflow:auto}.fnB0BW_grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;display:grid}.fnB0BW_routingGrid{grid-template-columns:1fr;gap:8px}.fnB0BW_routingCell{grid-template-columns:minmax(150px,.7fr) minmax(0,1fr);align-items:center;gap:18px;min-height:0;padding:12px 14px;display:grid}.fnB0BW_routingCell.fnB0BW_selectCell{grid-template-rows:none;align-content:normal}.fnB0BW_routingCell .fnB0BW_select{min-height:42px}.fnB0BW_routingCopy{gap:2px;min-width:0;display:grid}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_routingCopy{grid-column:1/-1;grid-template-columns:minmax(150px,.7fr) auto minmax(0,1fr);align-items:center;gap:10px}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_cellHint{margin-top:0}.fnB0BW_infoCell{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);min-width:0;padding:14px}.fnB0BW_cellLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-bottom:4px;display:block}.fnB0BW_cellValue{text-overflow:ellipsis;white-space:nowrap;font-weight:500;display:block;overflow:hidden}.fnB0BW_cellHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block}.fnB0BW_feedbackRow{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px 18px;display:flex}.fnB0BW_feedbackRow>.fnB0BW_routingCopy{flex:220px}.fnB0BW_telegramLink{flex:none;gap:7px;text-decoration:none}.fnB0BW_telegramIcon{flex:none;display:block}.fnB0BW_selectCell{gap:5px;display:grid}.fnB0BW_select,.fnB0BW_input{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);width:100%;min-width:0;color:var(--fcg-text-primary);font:inherit;font-size:var(--fcg-font-body);transition:border-color var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);outline:none;padding:8px 11px}.fnB0BW_select:hover,.fnB0BW_input:hover{border-color:var(--fcg-line-strong)}.fnB0BW_select:focus,.fnB0BW_input:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_accountList{flex-direction:column;gap:8px;display:flex}.fnB0BW_accountManager{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:10px;margin-top:10px;padding:14px;display:grid}.fnB0BW_extensionList{gap:6px;margin-top:14px;display:grid}.fnB0BW_extensionRow{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;justify-content:space-between;align-items:center;gap:16px;padding:11px 12px;display:flex}.fnB0BW_extensionRow span{gap:3px;min-width:0;display:grid}.fnB0BW_extensionRow small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_engineSelect{cursor:pointer;flex:none;width:216px}.fnB0BW_switch{-webkit-appearance:none;appearance:none;border:1px solid var(--fcg-line-strong);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);cursor:pointer;width:36px;height:20px;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease);outline:none;flex:none;margin:0;position:relative}.fnB0BW_switch:before{content:\"\";corner-shape:round;background:var(--fcg-bg-layer-2);width:14px;height:14px;box-shadow:var(--fcg-shadow-1);transition:transform var(--fcg-fast) var(--fcg-ease);border-radius:50%;position:absolute;top:2px;left:2px}.fnB0BW_switch:checked{border-color:var(--fcg-brand);background:var(--fcg-brand)}.fnB0BW_switch:checked:before{transform:translate(16px)}.fnB0BW_switch:hover:not(:disabled){border-color:var(--fcg-brand)}.fnB0BW_switch:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent)}.fnB0BW_switch:disabled{cursor:not-allowed;opacity:.45}.fnB0BW_capabilityForm{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-top:12px;padding:14px;display:grid}.fnB0BW_capabilityForm label{min-width:0;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_capabilityFormHead{grid-column:1/-1;justify-content:space-between;align-items:center;gap:10px;display:flex}.fnB0BW_capabilityFull{grid-column:1/-1}.fnB0BW_skillList{gap:8px;margin-top:12px;display:grid}.fnB0BW_capabilityStats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_capabilityStats div{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);gap:2px;padding:12px 14px;display:grid}.fnB0BW_capabilityStats strong{font-size:var(--fcg-font-section);line-height:21px}.fnB0BW_capabilityStats small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_advisorStandalone{padding-top:2px}.fnB0BW_engineeringSection .fnB0BW_capabilityStats{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.fnB0BW_advisorStats{grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_advisorStats div{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);gap:3px;min-width:0;padding:12px 14px;display:grid}.fnB0BW_advisorStats strong{font-size:var(--fcg-font-body-lg);text-overflow:ellipsis;white-space:nowrap;line-height:20px;overflow:hidden}.fnB0BW_advisorStats small,.fnB0BW_advisorEvidence small{overflow-wrap:anywhere;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_advisorWarning{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 6%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin-top:10px;padding:9px 11px;line-height:18px}.fnB0BW_advisorEvidence{border-left:2px solid var(--fcg-text-primary);background:var(--fcg-bg-layer-1);gap:3px;margin-top:12px;padding:10px 11px;display:grid}.fnB0BW_advisorEvidence strong{font-size:var(--fcg-font-caption)}.fnB0BW_advisorEvidence span{color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/16px var(--fcg-font-mono)}.fnB0BW_advisorModelField{min-width:0;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_advisorModelTrigger{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:100%;min-height:42px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;gap:2px;padding:8px 9px;display:grid;overflow:hidden}.fnB0BW_advisorModelTrigger:hover{border-color:var(--fcg-line-strong)}.fnB0BW_advisorModelTrigger:disabled{cursor:not-allowed;opacity:.55}.fnB0BW_advisorModelTrigger small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_advisorPickerBackdrop{z-index:30;background:#0f172a61;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.fnB0BW_advisorPicker{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-2);width:min(680px,100%);height:min(720px,92vh);box-shadow:var(--fcg-shadow-pop);grid-template-rows:auto auto minmax(0,1fr) auto;gap:11px;padding:17px;display:grid;overflow:hidden}.fnB0BW_advisorPickerHeader{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.fnB0BW_advisorPickerHeader>div{gap:3px;display:grid}.fnB0BW_advisorPickerHeader strong{font-size:16px}.fnB0BW_advisorPickerHeader small,.fnB0BW_advisorManual>small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_advisorModelList{overscroll-behavior:contain;scrollbar-gutter:stable;gap:7px;min-height:0;padding-right:6px;display:grid;overflow:hidden auto}.fnB0BW_advisorModelOption{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);width:100%;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;justify-content:space-between;align-items:center;gap:14px;padding:11px 12px;display:flex}.fnB0BW_advisorModelOption:hover{border-color:var(--fcg-line-strong);background:var(--fcg-bg-layer-2)}.fnB0BW_advisorModelSelected{border-color:var(--fcg-brand);background:var(--fcg-bg-layer-2);box-shadow:inset 0 0 0 1px var(--fcg-brand)}.fnB0BW_advisorModelOption>span{gap:2px;min-width:0;display:grid}.fnB0BW_advisorModelOption small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_advisorModelOption code{max-width:45%;color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/16px var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_advisorManual{border-top:1px solid var(--fcg-line);gap:6px;padding-top:10px;display:grid}.fnB0BW_advisorManual summary{cursor:pointer;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_advisorNotes{gap:8px;margin-top:12px;display:grid}.fnB0BW_advisorNote{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:7px;padding:14px;display:grid}.fnB0BW_advisorNoteHeader{justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_advisorNoteHeader small,.fnB0BW_advisorNote footer{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_advisorNote p{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:18px}.fnB0BW_advisorSeverity{border-radius:var(--fcg-radius-full);width:fit-content;font-size:var(--fcg-font-caption);letter-spacing:.04em;text-transform:uppercase;padding:2px 7px;font-weight:700;display:inline-flex}.fnB0BW_advisorSeverityNit{background:var(--fcg-bg-hover);color:var(--fcg-text-secondary)}.fnB0BW_advisorSeverityConcern{background:color-mix(in srgb, var(--fcg-warn) 13%, var(--fcg-bg-layer-2));color:var(--fcg-warn-label)}.fnB0BW_advisorSeverityBlocker{background:color-mix(in srgb, var(--fcg-danger) 11%, var(--fcg-bg-layer-2));color:var(--fcg-danger)}.fnB0BW_memoryPanel{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:12px;margin-top:16px;padding:14px;display:grid}.fnB0BW_memoryHeader,.fnB0BW_memoryDetailHeader{justify-content:space-between;align-items:flex-start;gap:10px;display:flex}.fnB0BW_memoryHeader>div:first-child,.fnB0BW_memoryDetailHeader>div{gap:3px;min-width:0;display:grid}.fnB0BW_memoryHeader strong,.fnB0BW_memoryDetailHeader strong{font-size:var(--fcg-font-body)}.fnB0BW_memoryHeader small,.fnB0BW_memoryDetailHeader small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_memoryActions,.fnB0BW_memoryRecordActions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:6px;display:flex}.fnB0BW_memoryActions .fnB0BW_button,.fnB0BW_memoryRecordActions .fnB0BW_button{min-height:26px;font-size:var(--fcg-font-caption);padding:3px 8px}.fnB0BW_memorySearchRow{align-items:center;gap:7px;display:flex}.fnB0BW_memorySearchRow .fnB0BW_input{flex:auto}.fnB0BW_memorySearchRow .fnB0BW_button{min-height:30px;font-size:var(--fcg-font-caption);flex:none;padding:4px 10px}.fnB0BW_memoryRecall{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:6px;padding:9px 11px;display:grid}.fnB0BW_memoryRecallHead{justify-content:space-between;align-items:center;gap:12px;display:flex}.fnB0BW_memoryRecallHead span{gap:2px;min-width:0;display:grid}.fnB0BW_memoryRecallHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_memoryRecallHead .fnB0BW_button{min-height:24px;font-size:var(--fcg-font-caption);flex:none;padding:2px 8px}.fnB0BW_memoryRecallList{flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_memoryRecallList span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 9px}.fnB0BW_memoryList{gap:7px;max-height:360px;padding-right:3px;display:grid;overflow:auto}.fnB0BW_memoryRecord{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px 12px;display:grid}.fnB0BW_memoryRecordSelected{box-shadow:inset 0 0 0 1px var(--fcg-brand)}.fnB0BW_memoryRecordSelect{min-width:0;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;justify-content:space-between;align-items:center;gap:8px;padding:0;display:flex}.fnB0BW_memoryRecordSelect:disabled{cursor:not-allowed;opacity:.6}.fnB0BW_memoryRecordSelect>span{gap:3px;min-width:0;display:grid}.fnB0BW_memoryRecordSelect strong,.fnB0BW_memoryRecordSelect small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_memoryRecordSelect strong{font-size:var(--fcg-font-caption)}.fnB0BW_memoryRecordSelect small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_memoryTrust{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex:none;padding:2px 6px;font-weight:600}.fnB0BW_memoryTrustReviewed{background:color-mix(in srgb, var(--fcg-success) 12%, var(--fcg-bg-layer-2));color:var(--fcg-success)}.fnB0BW_memoryTrustDraft{background:color-mix(in srgb, var(--fcg-warn) 13%, var(--fcg-bg-layer-2));color:var(--fcg-warn-label)}.fnB0BW_memoryDetail{border:1px solid color-mix(in srgb, var(--fcg-text-primary) 18%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:9px;padding:11px;display:grid}.fnB0BW_memoryDetail p{max-height:240px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:pre-wrap;overflow-wrap:anywhere;margin:0;line-height:19px;overflow:auto}.fnB0BW_memoryTags{flex-wrap:wrap;gap:5px;display:flex}.fnB0BW_memoryTags span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);padding:2px 6px}.fnB0BW_memoryTimeline{border-top:1px solid var(--fcg-line);gap:5px;padding-top:9px;display:grid}.fnB0BW_memoryTimeline strong{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_memoryTimeline button{color:var(--fcg-text-tertiary);cursor:pointer;font:var(--fcg-font-caption)/16px var(--fcg-font-mono);text-align:left;text-overflow:ellipsis;white-space:nowrap;background:0 0;border:0;padding:0;overflow:hidden}.fnB0BW_memoryTimeline button:hover,.fnB0BW_memoryTimelineCurrent{color:var(--fcg-text-primary)!important}.fnB0BW_graphPanel{border:1px solid color-mix(in srgb, var(--fcg-brand) 24%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, color-mix(in srgb, var(--fcg-brand) 5%, var(--fcg-bg-layer-2)), var(--fcg-bg-layer-1));gap:10px;margin-top:14px;padding:12px;display:grid}.fnB0BW_graphState{border-left:2px solid var(--fcg-brand);background:var(--fcg-bg-layer-2);gap:3px;padding:10px 11px;display:grid}.fnB0BW_graphState strong{font-size:var(--fcg-font-caption)}.fnB0BW_graphState small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_graphInstallList{gap:8px;display:grid}.fnB0BW_graphInstallRow{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.fnB0BW_graphInstallRow>div{flex:1;gap:4px;min-width:0;display:grid}.fnB0BW_graphInstallRow strong{font-size:var(--fcg-font-caption)}.fnB0BW_graphInstallRow small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_graphInstallRow .fnB0BW_input{margin-top:4px}.fnB0BW_verificationGrid{grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:7px;display:grid}.fnB0BW_verificationGrid article{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:4px;min-width:0;padding:10px 12px;display:grid}.fnB0BW_verificationGrid strong{font-size:var(--fcg-font-caption);text-transform:uppercase}.fnB0BW_verificationGrid small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_verificationGrid pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:120px;color:var(--fcg-text-secondary);font:var(--fcg-font-caption)/19px var(--fcg-font-mono);margin:0;overflow:auto}.fnB0BW_mcpTemplateBar{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:7px;margin-top:12px;display:flex}.fnB0BW_templateButton{border:1px dashed var(--fcg-line-strong);border-radius:var(--fcg-radius-sm);min-height:26px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;align-items:center;gap:4px;padding:3px 8px;display:inline-flex}.fnB0BW_templateButton:hover{border-style:solid;border-color:var(--fcg-text-primary);color:var(--fcg-text-primary)}.fnB0BW_mcpPresetHeading{justify-content:space-between;align-items:baseline;gap:10px;margin-top:14px;display:flex}.fnB0BW_mcpPresetHeading strong{font-size:var(--fcg-font-caption)}.fnB0BW_mcpPresetHeading small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_mcpPresetGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpPresetCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));min-width:0;color:var(--fcg-text-primary);cursor:pointer;font:inherit;text-align:left;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;padding:10px;display:grid}.fnB0BW_mcpPresetCard:hover{border-color:var(--fcg-line-strong);box-shadow:var(--fcg-shadow-1);transform:translateY(-1px)}.fnB0BW_mcpPresetCard:disabled{cursor:not-allowed;opacity:.55;transform:none}.fnB0BW_mcpPresetCard>span:not(.fnB0BW_mcpPresetIcon){gap:2px;min-width:0;display:grid}.fnB0BW_mcpPresetCard strong{font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpPresetCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:18px;overflow:hidden}.fnB0BW_mcpPresetCard b{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:nowrap;font-weight:500}.fnB0BW_mcpPresetIcon,.fnB0BW_mcpServerIcon{border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 12%, var(--fcg-bg-layer-2));width:30px;height:30px;color:var(--fcg-brand);flex:none;place-items:center;display:grid}.fnB0BW_mcpServerIcon{width:32px;height:32px}.fnB0BW_mcpMarketplaceGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpMarketplaceCard{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:linear-gradient(135deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));grid-template-columns:auto minmax(0,1fr);gap:9px;min-width:0;padding:10px;display:grid}.fnB0BW_mcpMarketplaceIcon{object-fit:cover;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);flex:none;width:30px;height:30px}.fnB0BW_mcpMarketplaceCopy{gap:3px;min-width:0;display:grid}.fnB0BW_mcpMarketplaceCopy>div{justify-content:space-between;align-items:center;gap:6px;display:flex}.fnB0BW_mcpMarketplaceCopy strong,.fnB0BW_mcpMarketplaceCopy small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpMarketplaceCopy strong{font-size:var(--fcg-font-caption)}.fnB0BW_mcpMarketplaceCopy span{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);flex:none;padding:2px 6px}.fnB0BW_mcpMarketplaceCopy small,.fnB0BW_mcpMarketplaceCopy em{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);font-style:normal;line-height:18px}.fnB0BW_mcpMarketplaceActions{grid-column:1/-1;justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_mcpMarketplaceActions a{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-decoration:none}.fnB0BW_mcpMarketplaceActions a:hover{color:var(--fcg-text-primary);text-decoration:underline}.fnB0BW_mcpMarketplaceActions .fnB0BW_button{min-height:27px;font-size:var(--fcg-font-caption);padding:3px 8px}.fnB0BW_mcpJsonPanel{border:1px solid color-mix(in srgb, var(--fcg-brand) 32%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:color-mix(in srgb, var(--fcg-brand) 4%, var(--fcg-bg-layer-1));gap:9px;margin-top:12px;padding:11px;display:grid}.fnB0BW_mcpJsonPanel .fnB0BW_capabilityFormHead{grid-template-columns:1fr auto;align-items:start;gap:4px 10px;display:grid}.fnB0BW_mcpJsonPanel .fnB0BW_capabilityFormHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);grid-column:1/-1;line-height:18px}.fnB0BW_mcpJsonInput{box-sizing:border-box;resize:vertical;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:100%;min-height:170px;color:var(--fcg-text-primary);font:var(--fcg-font-caption)/18px var(--fcg-font-mono);outline:none;padding:10px}.fnB0BW_mcpJsonInput:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_mcpServerList{gap:8px;margin-top:12px;display:grid}.fnB0BW_mcpServerCard{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);justify-content:space-between;align-items:center;gap:10px;min-width:0;padding:12px 14px;display:flex}.fnB0BW_mcpServerMain{gap:4px;min-width:0;display:grid}.fnB0BW_mcpServerMain>small{color:var(--fcg-text-tertiary);font:var(--fcg-font-caption)/16px var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_mcpServerTitle{align-items:center;gap:7px;min-width:0;display:flex}.fnB0BW_mcpServerTitle strong{text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body);overflow:hidden}.fnB0BW_mcpServerActions{flex-wrap:wrap;flex:none;justify-content:flex-end;align-items:center;gap:7px;display:flex}.fnB0BW_inlineSwitch{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:4px;display:inline-flex}.fnB0BW_inlineSwitch input{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_emptyCapability{border:1px dashed var(--fcg-line-strong);border-radius:var(--fcg-radius-md);color:var(--fcg-text-secondary);text-align:center;gap:4px;margin-top:12px;padding:18px 14px;display:grid}.fnB0BW_emptyCapability small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_skillPanel{gap:8px;margin-top:14px;padding-top:1px;display:grid}.fnB0BW_skillPanelHeader{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.fnB0BW_skillPanelHeader small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_skillCard{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);border:1px solid #0000;align-items:flex-start;gap:10px;padding:12px 14px;display:flex}.fnB0BW_skillCard:hover{border-color:var(--fcg-line);background:var(--fcg-bg-layer-2)}.fnB0BW_skillCardBody{min-width:0;color:inherit;cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;flex:1;gap:4px;padding:0;display:grid}.fnB0BW_skillCardBody:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_skillCardControl{flex:none;justify-items:end;gap:2px;padding-top:2px;display:grid}.fnB0BW_skillCardToggle{color:var(--fcg-text-tertiary);cursor:pointer;font-size:var(--fcg-font-caption);white-space:nowrap;align-items:center;gap:6px;display:flex}.fnB0BW_skillCardToggle input{margin:0}.fnB0BW_skillCardClear{color:var(--fcg-brand);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0}.fnB0BW_skillCardClear:disabled{opacity:.5;cursor:default}.fnB0BW_skillDetailControl{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);flex-wrap:wrap;align-items:center;gap:4px 12px;margin-top:10px;padding:9px 12px;display:flex}.fnB0BW_skillDetailControl>small{flex-basis:100%}.fnB0BW_skillForward{margin-top:12px}.fnB0BW_skillForwardHead{gap:2px;margin-bottom:6px;display:grid}.fnB0BW_skillForwardHead strong{font-size:var(--fcg-font-caption)}.fnB0BW_skillForwardHead small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_skillCardHead{justify-content:space-between;align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_skillCard strong{font-size:var(--fcg-font-caption)}.fnB0BW_skillCard p{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.fnB0BW_skillCard small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_skillFileBar{flex-wrap:wrap;gap:6px;margin:12px 0 0;display:flex}.fnB0BW_skillFileChip{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);max-width:100%;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;padding:4px 9px;overflow:hidden}.fnB0BW_skillFileChip:hover{background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_skillFileChipActive{border-color:var(--fcg-brand);color:var(--fcg-text-primary)}.fnB0BW_skillFileChip:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_workbuddyHeaderActions{justify-content:flex-end;align-items:center;gap:8px;display:flex}.fnB0BW_accountManagerButton{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);white-space:nowrap;padding:4px 9px}.fnB0BW_accountManagerButton:hover{background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_accountRow{justify-content:space-between;align-items:center;gap:14px;min-width:0;display:flex}.fnB0BW_accountIdentity{min-width:0}.fnB0BW_accountIdentityWithAvatar{align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_accountText{min-width:0}.fnB0BW_accountAvatar{border-radius:var(--fcg-radius-md);border:1px solid #0000;flex:none;place-items:center;width:42px;height:42px;display:inline-grid;overflow:hidden;box-shadow:0 2px 8px #0f172a1a}.fnB0BW_accountAvatarRemote{border-color:var(--fcg-line);background:#fff}.fnB0BW_accountAvatarRemote img{object-fit:cover;width:100%;height:100%}.fnB0BW_accountAvatarMonogram{font-size:var(--fcg-font-section);letter-spacing:-.04em;font-weight:800;line-height:1}.fnB0BW_accountAvatarQq{color:#fff;background:linear-gradient(145deg,#38bdf8,#1263bd);border-color:#1688d8}.fnB0BW_accountAvatarGoogle{background:linear-gradient(145deg, var(--fcg-bg-layer-2), var(--fcg-bg-layer-1));color:#4285f4;text-shadow:1px 0 #ea4335,0 1px #34a853,-1px 0 #fbbc05;border-color:#d8dce5}.fnB0BW_accountAvatarGeneric{border-color:var(--fcg-line);background:var(--fcg-bg-layer-1);color:var(--fcg-text-tertiary)}.fnB0BW_accountAvatarGeneric svg{fill:currentColor;width:22px;height:22px}.fnB0BW_accountName{text-overflow:ellipsis;white-space:nowrap;font-weight:600;display:block;overflow:hidden}.fnB0BW_accountEmail{text-overflow:ellipsis;white-space:nowrap;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block;overflow:hidden}.fnB0BW_accountActions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:9px;display:flex}.fnB0BW_clineUsage{gap:7px;margin-top:4px;display:grid}.fnB0BW_clineUsageHead{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_clineUsageRow{grid-template-columns:84px minmax(0,1fr) 44px;align-items:center;gap:10px;display:grid}.fnB0BW_clineUsageLabel{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-caption);overflow:hidden}.fnB0BW_clineUsageValue{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;text-align:right}.fnB0BW_clineUsageMeter{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);height:4px;overflow:hidden}.fnB0BW_clineUsageFill{border-radius:inherit;background:var(--fcg-brand);height:100%;transition:width .3s}.fnB0BW_clineUsageFillHigh{background:var(--fcg-warn)}.fnB0BW_balance{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-success);font-size:var(--fcg-font-body-lg);font-variant-numeric:tabular-nums;align-items:baseline;gap:7px;padding:5px 11px;font-weight:600;display:inline-flex}.fnB0BW_balanceLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);font-weight:500}.fnB0BW_authForm{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:12px;display:grid}.fnB0BW_authPanel{box-sizing:border-box;border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-1);width:100%;box-shadow:var(--fcg-shadow-2);gap:16px;padding:26px 24px 22px;display:grid}.fnB0BW_authLayout{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:20px;margin-top:6px;display:grid}.fnB0BW_authHead{text-align:center;justify-items:center;gap:6px;display:grid}.fnB0BW_authTitle{color:var(--fcg-text-primary);letter-spacing:-.01em;font-size:17px;font-weight:650;line-height:24px}.fnB0BW_authSubtitle{max-width:300px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_authTabs{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-tip);grid-template-columns:1fr 1fr;gap:2px;padding:3px;display:grid}.fnB0BW_authTab{min-height:32px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);background:0 0;border:0;border-radius:8px}.fnB0BW_authTab:hover{color:var(--fcg-text-primary)}.fnB0BW_authTab:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authTabActive{background:var(--fcg-bg-layer-1);box-shadow:var(--fcg-shadow-1);color:var(--fcg-text-primary);font-weight:600}.fnB0BW_authStack{gap:11px;display:grid}.fnB0BW_authPanel .fnB0BW_input{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-tip);min-height:42px;font-size:var(--fcg-font-body);border-color:#0000;padding:10px 13px}.fnB0BW_authPanel .fnB0BW_input::placeholder{color:var(--fcg-text-tertiary)}.fnB0BW_authPanel .fnB0BW_input:hover:not(:focus){border-color:var(--fcg-line)}.fnB0BW_authPanel .fnB0BW_input:focus{border-color:var(--fcg-brand);background:var(--fcg-bg-layer-1);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill,.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill:hover,.fnB0BW_authPanel .fnB0BW_input:-webkit-autofill:focus{-webkit-text-fill-color:var(--fcg-text-primary);box-shadow:0 0 0 60px var(--fcg-bg-tip) inset}.fnB0BW_authCodeRow{grid-template-columns:minmax(0,1fr) auto;gap:8px;display:grid}.fnB0BW_authCodeSend{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);min-height:42px;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;white-space:nowrap;transition:background var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);padding:0 14px}.fnB0BW_authCodeSend:hover:not(:disabled){border-color:var(--fcg-line-strong);background:var(--fcg-bg-hover)}.fnB0BW_authCodeSend:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authCodeSend:disabled{cursor:not-allowed;color:var(--fcg-text-tertiary)}.fnB0BW_authSubmit{border-radius:var(--fcg-radius-md);background:var(--fcg-brand);width:100%;min-height:42px;color:var(--fcg-text-on-brand-fixed);cursor:pointer;font:inherit;font-size:var(--fcg-font-body);letter-spacing:.01em;transition:background var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease), transform var(--fcg-fast) var(--fcg-ease);border:1px solid #0000;font-weight:600}.fnB0BW_authSubmit:hover:not(:disabled){background:var(--fcg-brand-strong)}.fnB0BW_authSubmit:active:not(:disabled){transform:translateY(1px)}.fnB0BW_authSubmit:disabled{cursor:not-allowed;opacity:.5}.fnB0BW_authSubmit:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 30%, transparent);outline:none}.fnB0BW_authNote,.fnB0BW_authStep{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-align:center;line-height:18px}.fnB0BW_authStep{color:var(--fcg-text-secondary)}.fnB0BW_authSocialRow{grid-template-columns:1fr 1fr;gap:9px;display:grid}.fnB0BW_authSocialButton{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);min-height:42px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-body);transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease), color var(--fcg-fast) var(--fcg-ease);justify-content:center;align-items:center;gap:8px;font-weight:550;display:inline-flex}.fnB0BW_authSocialButton svg{flex:none;width:16px;height:16px}.fnB0BW_authSocialButton:hover:not(:disabled){border-color:var(--fcg-line-strong);background:var(--fcg-bg-hover);color:var(--fcg-text-primary)}.fnB0BW_authSocialButton:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_authSocialButton:disabled{cursor:progress;opacity:.6}.fnB0BW_authDivider{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);align-items:center;gap:10px;display:flex}.fnB0BW_authDivider:before,.fnB0BW_authDivider:after{background:var(--fcg-line);content:\"\";flex:1;height:1px}.fnB0BW_authNotice{border:1px solid color-mix(in srgb, var(--fcg-brand) 26%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-brand) 6%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-align:center;padding:9px 11px;line-height:18px}.fnB0BW_authNoticeAlert{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-align:left;grid-column:1/-1;justify-content:space-between;align-items:flex-start;gap:10px;padding:9px 11px;line-height:19px;display:flex}.fnB0BW_authNoticeAlert button{flex:none}.fnB0BW_authFull{grid-column:1/-1}.fnB0BW_remember{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);align-items:center;gap:8px;display:flex}.fnB0BW_remember input{width:15px;height:15px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_rememberRow{flex-wrap:wrap;align-items:center;gap:18px;display:flex}.fnB0BW_passwordField{min-width:0;display:flex;position:relative}.fnB0BW_authPanel .fnB0BW_passwordField .fnB0BW_input{width:100%;padding-right:64px}.fnB0BW_passwordToggle{border-radius:var(--fcg-radius-sm);color:var(--fcg-text-tertiary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:4px 6px;position:absolute;top:50%;right:6px;transform:translateY(-50%)}.fnB0BW_passwordToggle:hover{color:var(--fcg-text-primary)}.fnB0BW_paymentBar{border-bottom:1px solid var(--fcg-line-subtle);grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:12px 16px;margin-bottom:18px;padding-bottom:16px;display:grid}.fnB0BW_paymentBarDetail{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;grid-column:1/-1;line-height:17px}.fnB0BW_paymentPicker{justify-items:end;gap:6px;min-width:0;display:grid}.fnB0BW_paymentHeading{font-size:var(--fcg-font-title);letter-spacing:-.01em;color:var(--fcg-text-primary);margin-bottom:3px;font-weight:600;display:block}.fnB0BW_paymentMethod{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:8px;display:inline-flex}.fnB0BW_paymentMethod>span{white-space:nowrap;flex:none}.fnB0BW_paymentMethod .fnB0BW_select{width:auto;min-width:176px;max-width:100%}.fnB0BW_alert{border:1px solid color-mix(in srgb, var(--fcg-danger) 28%, transparent);border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-danger) 7%, var(--fcg-bg-layer-2));color:var(--fcg-danger);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin-bottom:10px;padding:9px 11px;line-height:18px}.fnB0BW_alert button{color:inherit;font-size:var(--fcg-font-caption);cursor:pointer;white-space:nowrap;background:0 0;border:0;margin-left:10px;padding:0;text-decoration:underline}.fnB0BW_pending{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 6%, var(--fcg-bg-layer-2));gap:8px;margin-bottom:12px;padding:10px 11px;display:grid}.fnB0BW_pendingTitle{font-weight:600}.fnB0BW_pendingHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_pendingRow{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:8px;display:flex}.fnB0BW_pendingText{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.fnB0BW_plans,.fnB0BW_planShared,.fnB0BW_payDialog{--pixel-ink:color-mix(in srgb, var(--fcg-brand) 58%, var(--fcg-text-primary));--pixel-face:var(--fcg-bg-layer-1);--pixel-recess:color-mix(in srgb, var(--fcg-text-primary) 4%, var(--fcg-bg-layer-1));--pixel-recess-edge:color-mix(in srgb, var(--pixel-ink) 26%, transparent);--pixel-recess-rule:color-mix(in srgb, var(--pixel-ink) 22%, transparent);--pixel-rule:color-mix(in srgb, var(--pixel-ink) 18%, transparent);--pixel-notch:polygon(0 8px, 4px 8px, 4px 4px, 8px 4px, 8px 0, calc(100% - 8px) 0, calc(100% - 8px) 4px, calc(100% - 4px) 4px, calc(100% - 4px) 8px, 100% 8px, 100% calc(100% - 8px), calc(100% - 4px) calc(100% - 8px), calc(100% - 4px) calc(100% - 4px), calc(100% - 8px) calc(100% - 4px), calc(100% - 8px) 100%, 8px 100%, 8px calc(100% - 4px), 4px calc(100% - 4px), 4px calc(100% - 8px), 0 calc(100% - 8px));--pixel-chip:polygon(0 3px, 3px 3px, 3px 0, calc(100% - 3px) 0, calc(100% - 3px) 3px, 100% 3px, 100% calc(100% - 3px), calc(100% - 3px) calc(100% - 3px), calc(100% - 3px) 100%, 3px 100%, 3px calc(100% - 3px), 0 calc(100% - 3px))}.fnB0BW_plans{grid-template-columns:repeat(auto-fit,minmax(236px,1fr));gap:16px;padding:0 6px 6px 0;display:grid}.fnB0BW_planShell{display:flex;position:relative}.fnB0BW_planShell:before{background:var(--pixel-ink);clip-path:var(--pixel-notch);content:\"\";transition:transform var(--fcg-fast) var(--fcg-ease);position:absolute;inset:0;transform:translate(6px,6px)}.fnB0BW_planShell:hover:before{transform:translate(8px,8px)}.fnB0BW_plan{border:2px solid var(--pixel-ink);background:var(--pixel-face);min-width:0;clip-path:var(--pixel-notch);transition:transform var(--fcg-fast) var(--fcg-ease);flex-direction:column;flex:1;gap:11px;padding:16px 16px 14px;display:flex;position:relative}.fnB0BW_plan:hover{transform:translate(-2px,-2px)}.fnB0BW_planTop{border-bottom:2px solid var(--pixel-rule);align-items:center;gap:8px;padding-bottom:9px;display:flex}.fnB0BW_planDot{border:1px solid var(--pixel-ink);background:var(--fcg-brand);width:9px;height:9px;box-shadow:1px 1px 0 0 var(--pixel-ink);flex:none}.fnB0BW_planName{min-width:0;color:var(--fcg-text-primary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-body-lg);letter-spacing:-.012em;flex:1;font-weight:800;overflow:hidden}.fnB0BW_planTag{border:1px solid var(--pixel-ink);background:var(--fcg-brand);color:var(--fcg-text-on-brand-fixed);font-family:var(--fcg-font-mono);letter-spacing:.06em;white-space:nowrap;clip-path:var(--pixel-chip);flex:none;padding:2px 8px;font-size:10px;font-weight:700}.fnB0BW_planSave{border:1px solid color-mix(in srgb, var(--fcg-success) 52%, var(--pixel-ink));background:color-mix(in srgb, var(--fcg-success) 13%, transparent);color:var(--fcg-success);letter-spacing:.04em;white-space:nowrap;clip-path:var(--pixel-chip);flex:none;padding:2px 7px;font-size:10px;font-weight:700}.fnB0BW_planFeatured .fnB0BW_planRecess{background:color-mix(in srgb, var(--fcg-brand) 8%, var(--pixel-recess))}.fnB0BW_planShared{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex-wrap:wrap;align-items:center;gap:14px;margin-top:16px;padding:10px 12px;display:flex}.fnB0BW_planShared small{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);letter-spacing:.1em;font-size:10px;font-weight:700}.fnB0BW_planShared span{align-items:center;gap:6px;display:inline-flex}.fnB0BW_planRecess{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);align-items:stretch;padding:10px 12px;display:flex}.fnB0BW_planCreditBlock{flex:auto;gap:3px;min-width:0;display:grid}.fnB0BW_planPriceLabel{color:var(--fcg-brand);letter-spacing:.08em;align-items:center;gap:5px;font-size:10px;font-weight:700;display:flex}.fnB0BW_planRecessCode{font-family:var(--fcg-font-mono);letter-spacing:.14em}.fnB0BW_planPriceRow{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}.fnB0BW_planPrice{color:var(--fcg-text-primary);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:26px;font-weight:800;line-height:1}.fnB0BW_planOriginalPrice{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-decoration:line-through}.fnB0BW_planPayBlock{border-left:2px solid var(--pixel-recess-rule);align-content:center;justify-items:end;gap:3px;margin-left:12px;padding-left:12px;display:grid}.fnB0BW_planPayLabel{color:var(--fcg-text-tertiary);font-size:10px;font-weight:600}.fnB0BW_planPayable{color:var(--fcg-brand);font-size:var(--fcg-font-title);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-weight:800}.fnB0BW_features{border-top:2px solid var(--pixel-rule);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:6px;padding-top:10px;line-height:17px;display:grid}.fnB0BW_features>span{grid-template-columns:12px minmax(0,1fr);align-items:start;gap:8px;display:grid}.fnB0BW_planCheck{border:1px solid var(--pixel-ink);background:var(--fcg-brand);width:7px;height:7px;margin-top:5px;display:block}.fnB0BW_planFeatureText{min-width:0}.fnB0BW_planButton{border:2px solid var(--pixel-ink);background:var(--fcg-brand);width:100%;min-height:40px;color:var(--fcg-text-on-brand-fixed);letter-spacing:.04em;box-shadow:inset 0 2px 0 0 #ffffff61, 0 3px 0 0 var(--pixel-ink);transition:background var(--fcg-fast) var(--fcg-ease), box-shadow 60ms linear, transform 60ms linear;border-radius:0;margin-top:auto;font-weight:700}.fnB0BW_planButton:hover:not(:disabled){background:var(--fcg-brand-strong);box-shadow:inset 0 2px 0 0 #ffffff7a, 0 4px 0 0 var(--pixel-ink)}.fnB0BW_planButton:active:not(:disabled){box-shadow:inset 0 1px 0 0 #0000002e, 0 0 0 0 var(--pixel-ink);transform:translateY(3px)}.fnB0BW_planBlurb{gap:3px;display:grid}.fnB0BW_planPerk{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_planLead{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_planFootnote{color:var(--fcg-text-tertiary);align-items:center;gap:6px;font-size:11px;display:flex}.fnB0BW_planDotOk{background:var(--fcg-success);flex:none;width:6px;height:6px}.fnB0BW_planBrandMark{color:var(--fcg-brand);font-family:var(--fcg-font-mono);letter-spacing:.05em;margin-left:auto;font-size:10px;font-weight:700}.fnB0BW_pricingSection{border-top:1px solid var(--fcg-line);gap:10px;margin-top:20px;padding-top:18px;display:grid}.fnB0BW_pricingHeader{justify-content:space-between;align-items:end;gap:14px;display:flex}.fnB0BW_pricingHeader>div{gap:3px;display:grid}.fnB0BW_pricingSearch{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:min(250px,100%);min-height:32px;color:var(--fcg-text-primary);font:inherit;font-size:var(--fcg-font-caption);outline:none;padding:6px 10px}.fnB0BW_pricingSearch:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_pricingNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:8px 10px}.fnB0BW_pricingTableWrap{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);width:100%;overflow:auto hidden}.fnB0BW_pricingTable{table-layout:fixed;border-collapse:collapse;width:100%;min-width:660px;font-size:var(--fcg-font-caption)}.fnB0BW_pricingTable th{border-bottom:1px solid var(--fcg-line-subtle);background:var(--fcg-bg-layer-1);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.02em;text-align:left;white-space:nowrap;padding:10px 14px;font-weight:600}.fnB0BW_pricingTable td{border-bottom:1px solid var(--fcg-line-subtle);color:var(--fcg-text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;padding:10px 12px}.fnB0BW_pricingTable tbody tr:last-child td{border-bottom:0}.fnB0BW_pricingTable tbody tr:hover{background:var(--fcg-bg-hover)}.fnB0BW_pricingFreeSection{border-top:1px dashed var(--fcg-line-subtle);gap:8px;margin-top:6px;padding-top:14px;display:grid}.fnB0BW_pricingFreeHeader{gap:2px;display:grid}.fnB0BW_pricingFreeHeader strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-weight:650}.fnB0BW_paymentMethods{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;margin-top:0;display:flex}.fnB0BW_paymentMethodChip{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.01em;white-space:nowrap;padding:2px 9px;font-weight:550}@media (width<=520px){.fnB0BW_paymentBar{grid-template-columns:minmax(0,1fr)}.fnB0BW_paymentPicker{justify-items:stretch}.fnB0BW_paymentMethod .fnB0BW_select{width:100%}.fnB0BW_paymentMethods{justify-content:flex-start}}.fnB0BW_pricingTable th:first-child,.fnB0BW_pricingTable td:first-child{width:34%}.fnB0BW_pricingTable td:first-child{white-space:normal}.fnB0BW_pricingSection .fnB0BW_pricingTable th:first-child,.fnB0BW_pricingSection .fnB0BW_pricingTable td:first-child{width:26%}.fnB0BW_pricingSection .fnB0BW_pricingTable th:nth-child(2),.fnB0BW_pricingSection .fnB0BW_pricingTable td:nth-child(2){width:22%}.fnB0BW_pricingSection .fnB0BW_pricingTable td.fnB0BW_pricingGroup{white-space:normal}.fnB0BW_pricingTable strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:600;display:block}.fnB0BW_pricingTable code{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;margin-top:2px;display:block;overflow:hidden}.fnB0BW_pricingTable small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-top:3px;display:block}.fnB0BW_tokenHero{border-bottom:1px solid var(--fcg-line);justify-content:space-between;align-items:flex-end;gap:16px;margin:-2px 0 14px;padding:10px 0 14px;display:flex}.fnB0BW_tokenEyebrow{color:var(--fcg-brand);font-weight:650;font-size:var(--fcg-font-caption);letter-spacing:.06em;text-transform:uppercase;align-items:center;gap:8px;display:flex}.fnB0BW_tokenPulse{corner-shape:round;background:var(--fcg-success);width:7px;height:7px;box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-success) 18%, transparent);border-radius:50%}.fnB0BW_tokenTitle{font-size:var(--fcg-font-display);letter-spacing:-.03em;margin:3px 0 0;line-height:31px}.fnB0BW_tokenSourceTabs{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);gap:2px;padding:3px;display:inline-flex}.fnB0BW_tokenSourceTabs button{min-height:30px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;border-radius:5px;padding:5px 14px}.fnB0BW_tokenSourceTabs button:hover{background:var(--fcg-bg-hover)}.fnB0BW_tokenSourceTabs .fnB0BW_tokenSourceActive{background:var(--fcg-bg-layer-2);color:var(--fcg-text-primary);box-shadow:var(--fcg-shadow-1);font-weight:600}.fnB0BW_tokenBalRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);align-items:center;gap:10px;margin-top:14px;padding:12px 16px;display:flex}.fnB0BW_tokenBalDot{corner-shape:round;background:var(--fcg-success);width:8px;height:8px;box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-success) 18%, transparent);border-radius:50%;flex:none}.fnB0BW_tokenBalDot[data-level=low]{background:var(--fcg-warn);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-warn) 18%, transparent)}.fnB0BW_tokenBalDot[data-level=danger]{background:var(--fcg-danger);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-danger) 18%, transparent)}.fnB0BW_tokenBalAmount{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-size:20px;font-weight:700}.fnB0BW_tokenBalBadge{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 12%, transparent);color:var(--fcg-success);font-size:var(--fcg-font-caption);white-space:nowrap;padding:2px 9px;line-height:18px}.fnB0BW_tokenBalBadge[data-level=low]{background:color-mix(in srgb, var(--fcg-warn) 13%, transparent);color:var(--fcg-warn-label)}.fnB0BW_tokenBalBadge[data-level=danger]{background:color-mix(in srgb, var(--fcg-danger) 12%, transparent);color:var(--fcg-danger)}.fnB0BW_tokenBalUpdated{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenBalHint{min-width:0;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.fnB0BW_tokenBalRefresh{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);min-height:28px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);transition:color var(--fcg-fast) var(--fcg-ease), border-color var(--fcg-fast) var(--fcg-ease);background:0 0;margin-left:auto;padding:4px 12px}.fnB0BW_tokenBalRefresh:hover{border-color:var(--fcg-line-strong);color:var(--fcg-text-primary)}.fnB0BW_tokenSessionRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:center;gap:10px;margin-top:8px;padding:10px 16px;display:flex}.fnB0BW_tokenSessionRow strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWaste{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);flex-direction:column;gap:10px;margin-top:10px;padding:14px 16px;display:flex}.fnB0BW_tokenCacheWasteHead{align-items:baseline;gap:8px;display:flex}.fnB0BW_tokenCacheWasteHead strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body)}.fnB0BW_tokenCacheWasteClean{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_tokenCacheWasteStats{flex-wrap:wrap;gap:8px;display:flex}.fnB0BW_tokenCacheWasteStat{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);flex-direction:column;flex:120px;gap:2px;padding:8px 10px;display:flex}.fnB0BW_tokenCacheWasteStat span{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_tokenCacheWasteStat b{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteStat[data-tone=warn] b{color:var(--fcg-warn-label)}.fnB0BW_tokenCacheWasteCauses{flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_tokenCacheWasteCause{border-radius:var(--fcg-radius-full);font-size:var(--fcg-font-caption);background:color-mix(in srgb, var(--fcg-warn) 10%, transparent);color:var(--fcg-text-secondary);padding:2px 9px;line-height:18px}.fnB0BW_tokenCacheWasteCause[data-cause=idle-gap]{background:color-mix(in srgb, var(--fcg-warn) 10%, transparent)}.fnB0BW_tokenCacheWasteCause[data-cause=model-changed]{background:color-mix(in srgb, var(--fcg-danger) 10%, transparent)}.fnB0BW_tokenCacheWasteCause[data-cause=prefix-changed]{background:color-mix(in srgb, var(--fcg-text-tertiary) 12%, transparent)}.fnB0BW_tokenCacheWasteCause b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteWorst{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.fnB0BW_tokenCacheWasteWorst li{font-size:var(--fcg-font-caption);color:var(--fcg-text-secondary);grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:baseline;gap:10px;display:grid}.fnB0BW_tokenCacheWasteWorstHead{color:var(--fcg-text-tertiary);text-transform:uppercase;letter-spacing:.04em}.fnB0BW_tokenCacheWasteWorstModel{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenCacheWasteWorstTokens{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteWorstCause{text-align:right;color:var(--fcg-text-tertiary)}.fnB0BW_tokenCacheWasteFoot{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums}.fnB0BW_tokenCacheWasteHint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin:0;line-height:1.5}.fnB0BW_tokenSummaryGrid{grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-top:9px;display:grid}.fnB0BW_tokenMetric{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:4px;min-width:0;padding:12px 14px;display:grid}.fnB0BW_tokenMetric span{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenMetric strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;font-size:22px;font-weight:700;line-height:26px;overflow:hidden}.fnB0BW_tokenMetric small{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:18px;overflow:hidden}.fnB0BW_tokenPanel{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);margin-top:12px;padding:14px 16px}.fnB0BW_tokenPanelHeader{justify-content:space-between;align-items:center;gap:10px;min-height:30px;margin-bottom:10px;display:flex}.fnB0BW_tokenPanelTitle{gap:2px;min-width:0;display:grid}.fnB0BW_tokenPanelHeader strong{font-size:15px}.fnB0BW_tokenPanelKicker{color:var(--fcg-brand);font:700 var(--fcg-font-caption)/16px var(--fcg-font-mono);letter-spacing:.11em}.fnB0BW_tokenRangePills{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);scrollbar-width:none;flex-wrap:nowrap;flex:0 auto;gap:2px;max-width:100%;padding:2px;display:inline-flex;overflow-x:auto}.fnB0BW_tokenRangePills::-webkit-scrollbar{display:none}.fnB0BW_tokenRangePills button{min-height:22px;color:var(--fcg-text-tertiary);cursor:pointer;font:var(--fcg-font-caption)/16px var(--fcg-font-mono);white-space:nowrap;background:0 0;border:0;border-radius:5px;flex:none;padding:2px 8px}.fnB0BW_tokenRangePills .fnB0BW_tokenRangeActive{background:var(--fcg-brand-subtle);color:var(--fcg-brand);font-weight:650}.fnB0BW_tokenHeatFilter{flex-wrap:wrap;align-items:center;gap:4px;margin-bottom:10px;display:flex}.fnB0BW_tokenHeatFilterLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin-right:2px}.fnB0BW_tokenHeatFilterBtn{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);max-width:150px;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;background:0 0;align-items:center;gap:6px;padding:2px 9px;line-height:18px;display:inline-flex;overflow:hidden}.fnB0BW_tokenHeatFilterBtn:hover{border-color:var(--fcg-line-strong);color:var(--fcg-text-primary)}.fnB0BW_tokenHeatFilterBtnActive{background:color-mix(in srgb, var(--model-color,var(--fcg-brand)) 14%, transparent);color:var(--model-color,var(--fcg-brand));border-color:#0000;font-weight:600}.fnB0BW_tokenPillDot{corner-shape:round;background:var(--model-color,var(--fcg-text-tertiary));border-radius:50%;flex:none;width:7px;height:7px}.fnB0BW_tokenChartHead{align-items:baseline;gap:8px;margin-bottom:8px;display:flex}.fnB0BW_tokenChartTitle{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-weight:600}.fnB0BW_tokenChartTotal{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-variant-numeric:tabular-nums;letter-spacing:-.01em;font-weight:650}.fnB0BW_tokenChartModel{color:var(--model-color,var(--fcg-brand));font:600 var(--fcg-font-caption)/18px var(--fcg-font-mono);margin-left:auto}.fnB0BW_tokenChartWrap{--fcg-chart-hit:#bcd7f8;--fcg-chart-miss:#7aaff0;--fcg-chart-out:#2f6fe0;--fcg-chart-tip-bg:#fff;--fcg-chart-tip-fg:#1a1a1c;--fcg-chart-tip-muted:#6b7280;min-width:0;position:relative}body[data-ds-dark-theme] .fnB0BW_tokenChartWrap{--fcg-chart-hit:#a9c8f0;--fcg-chart-miss:#5f97e8;--fcg-chart-out:#3d7ef0;--fcg-chart-tip-bg:#1f1f21;--fcg-chart-tip-fg:#f5f6f8;--fcg-chart-tip-muted:#a1a1a8}.fnB0BW_tokenChartPlot{position:relative}.fnB0BW_tokenChartGrid{background:var(--fcg-line-subtle);opacity:.8;pointer-events:none;height:1px;position:absolute;left:0;right:0}.fnB0BW_tokenChartGrid span{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;font-size:11px;line-height:1;position:absolute;bottom:3px;left:0}.fnB0BW_tokenChartBar{background:var(--fcg-chart-out);transition:filter 90ms var(--fcg-ease);cursor:pointer;border-radius:3px 3px 0 0;position:absolute;bottom:0;overflow:hidden}.fnB0BW_tokenChartBar[data-active]{filter:brightness(1.14)}.fnB0BW_tokenChartBar[data-empty]{background:var(--fcg-line-subtle);opacity:.3}.fnB0BW_tokenChartCross{pointer-events:none;border-left:1px solid color-mix(in srgb, var(--fcg-text-tertiary) 40%, transparent);position:absolute;top:0;bottom:0}.fnB0BW_tokenChartSeg{width:100%;position:absolute;left:0}.fnB0BW_tokenChartSeg[data-top]{border-radius:3px 3px 0 0}.fnB0BW_tokenChartLegend{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 16px;margin-top:6px;line-height:18px;display:flex}.fnB0BW_tokenChartLegend span{align-items:center;gap:6px;min-width:0;display:inline-flex}.fnB0BW_tokenChartLegend i{border-radius:2px;flex:none;width:8px;height:8px}.fnB0BW_tokenChartTip{z-index:5;background:var(--fcg-chart-tip-bg);color:var(--fcg-chart-tip-muted);pointer-events:none;font-size:var(--fcg-font-caption);border-radius:8px;gap:3px;padding:8px 10px;line-height:14px;display:grid;position:absolute;box-shadow:0 10px 30px #00000047}.fnB0BW_tokenChartTipHead{color:var(--fcg-chart-tip-fg);justify-content:space-between;gap:14px;margin-bottom:2px;font-size:13px;display:flex}.fnB0BW_tokenChartTipHead b{font-variant-numeric:tabular-nums}.fnB0BW_tokenChartTipRow{align-items:center;gap:7px;min-width:0;display:flex}.fnB0BW_tokenChartTipRow b{color:var(--fcg-chart-tip-fg);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:600}.fnB0BW_tokenChartSwatch{background:var(--fcg-line-strong);border-radius:2px;flex:none;width:8px;height:8px}.fnB0BW_tokenChartSwatch[data-tone=hit]{background:var(--fcg-chart-hit)}.fnB0BW_tokenChartSwatch[data-tone=miss]{background:var(--fcg-chart-miss)}.fnB0BW_tokenChartSwatch[data-tone=out]{background:var(--fcg-chart-out)}.fnB0BW_tokenChartSwatch[data-tone=req]{corner-shape:round;background:var(--fcg-chart-tip-muted);border-radius:50%}.fnB0BW_tokenChartAxis{height:18px;margin-top:2px;padding-left:46px;position:relative}.fnB0BW_tokenChartAxis span{color:var(--fcg-text-tertiary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px;position:absolute;transform:translate(-50%)}.fnB0BW_tokenChartAxis span:first-child{transform:none}.fnB0BW_tokenChartAxis span:last-child{transform:translate(-100%)}.fnB0BW_tokenHeatTotals{border-top:1px solid var(--fcg-line-subtle);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);flex-wrap:wrap;align-items:baseline;gap:6px 16px;margin-top:10px;padding-top:9px;display:flex}.fnB0BW_tokenHeatTotals b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;margin-right:3px;font-weight:650}.fnB0BW_tokenHeatDaily{margin-left:auto}.fnB0BW_tokenModelBars{gap:6px;margin-bottom:12px;display:grid}.fnB0BW_tokenModelBarRow{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;grid-template-columns:minmax(90px,180px) minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.fnB0BW_tokenModelBarName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.fnB0BW_tokenModelBarTrack{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);height:4px;overflow:hidden}.fnB0BW_tokenModelBarTrack i{border-radius:inherit;background:var(--model-color,var(--fcg-brand));height:100%;display:block}.fnB0BW_tokenModelBarRow b{color:var(--fcg-text-primary);font-weight:600}.fnB0BW_tokenModelDot{corner-shape:round;background:var(--model-color,var(--fcg-text-tertiary));border-radius:50%;flex:none;width:7px;height:7px;margin-right:6px;display:inline-block}.fnB0BW_tokenNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 35%, var(--fcg-line-subtle));border-radius:var(--fcg-radius-md);background:color-mix(in srgb, var(--fcg-warn) 8%, var(--fcg-bg-layer-1));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin-top:10px;padding:10px 14px}.fnB0BW_tokenGatewayTable{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);overflow-x:auto}.fnB0BW_tokenGatewayTable .fnB0BW_pricingTable{min-width:560px}.fnB0BW_tokenEmpty{min-height:90px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);place-items:center;display:grid}@media (width<=700px){.fnB0BW_tokenSummaryGrid{grid-template-columns:1fr 1fr}}@media (width<=520px){.fnB0BW_tokenHero{flex-direction:column;align-items:flex-start}.fnB0BW_tokenTitle{font-size:22px}.fnB0BW_tokenSummaryGrid{grid-template-columns:1fr}.fnB0BW_tokenPanelHeader{gap:6px}.fnB0BW_tokenChartTip{width:190px}.fnB0BW_tokenHeatTotals{gap:4px 10px}.fnB0BW_tokenHeatDaily{margin-left:0}.fnB0BW_tokenModelBarRow{grid-template-columns:minmax(70px,110px) minmax(0,1fr) auto}}.fnB0BW_pricePair{gap:1px;min-width:0;line-height:18px;display:grid}.fnB0BW_priceOriginal{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;text-decoration:line-through;overflow:hidden}.fnB0BW_pricingTable .fnB0BW_priceCurrent,.fnB0BW_pricingTable .fnB0BW_priceCurrentDiscount{color:var(--fcg-brand);font-size:var(--fcg-font-body);letter-spacing:-.01em;font-weight:650;display:block}.fnB0BW_pricingTable .fnB0BW_priceCurrentDiscount{color:var(--fcg-success)}.fnB0BW_pricingRequest{font-weight:600;color:var(--fcg-text-primary)!important}.fnB0BW_imageTiers{flex-wrap:wrap;align-items:start;gap:4px 18px;display:inline-flex}.fnB0BW_imageTier{gap:1px;min-width:0;display:grid}.fnB0BW_imageTierLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);letter-spacing:.02em;font-style:normal;font-weight:600}.fnB0BW_pricingEmpty{text-align:center;color:var(--fcg-text-tertiary)!important;padding:28px!important}.fnB0BW_order{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-1);gap:10px;margin-top:20px;padding:18px;display:grid}.fnB0BW_orderTitle{font-size:var(--fcg-font-body);letter-spacing:-.01em;font-weight:600}.fnB0BW_orderActions{flex-wrap:wrap;gap:7px;display:flex}.fnB0BW_qr{object-fit:contain;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:#fff;width:160px;max-width:100%;height:160px}.fnB0BW_qrWrap{justify-items:start;gap:8px;display:grid}.fnB0BW_textarea{resize:vertical;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);width:100%;min-height:72px;color:var(--fcg-text-primary);font:inherit;transition:border-color var(--fcg-fast) var(--fcg-ease), box-shadow var(--fcg-fast) var(--fcg-ease);outline:none;padding:10px 12px;line-height:1.5}.fnB0BW_textarea:focus{border-color:var(--fcg-brand);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 16%, transparent)}.fnB0BW_qrText{overflow-wrap:anywhere;max-width:min(100%,520px);color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}@media (width<=800px){.fnB0BW_marketplaceGrid,.fnB0BW_mcpMarketplaceGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}.fnB0BW_poolManager{gap:12px;display:grid}.fnB0BW_poolToolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.fnB0BW_poolToolbarNote{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_poolToolbarActions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.fnB0BW_poolToggle{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);align-items:center;gap:7px;display:inline-flex}.fnB0BW_poolToggle input{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;margin:0}.fnB0BW_poolList{gap:10px;display:grid}.fnB0BW_poolAccount{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease);gap:10px;padding:12px;display:grid}.fnB0BW_poolAccount:hover{border-color:var(--fcg-line-strong);background:var(--fcg-bg-layer-2)}.fnB0BW_poolAccountHead{align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_poolIdentity{flex:auto;align-items:center;gap:10px;min-width:0;display:flex}.fnB0BW_poolMonogram{background:var(--fcg-brand-subtle);width:30px;height:30px;color:var(--fcg-brand);font:650 11px/1 var(--fcg-font-mono);letter-spacing:.02em;text-transform:uppercase;border-radius:9px;flex:none;place-items:center;display:grid}.fnB0BW_poolIdentityText{min-width:0}.fnB0BW_poolName{text-overflow:ellipsis;white-space:nowrap;color:var(--fcg-text-primary);font-size:var(--fcg-font-body);font-weight:600;display:block;overflow:hidden}.fnB0BW_poolSub{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:var(--fcg-font-caption);font-variant-numeric:tabular-nums;margin-top:2px;display:block;overflow:hidden}.fnB0BW_poolChips{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fnB0BW_poolChip{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);white-space:nowrap;padding:2px 8px;font-size:11px;line-height:16px}.fnB0BW_poolChipLive{background:color-mix(in srgb, var(--fcg-success) 14%, transparent);color:var(--fcg-success)}.fnB0BW_poolChipWarn{background:color-mix(in srgb, var(--fcg-warn) 16%, transparent);color:var(--fcg-warn)}.fnB0BW_poolChipDanger{background:color-mix(in srgb, var(--fcg-danger) 14%, transparent);color:var(--fcg-danger)}.fnB0BW_poolMeterRow{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;display:grid}.fnB0BW_poolMeterTrack{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);height:5px;display:block;overflow:hidden}.fnB0BW_poolMeterFill{border-radius:inherit;background:var(--fcg-brand);height:100%;transition:width .3s var(--fcg-ease);display:block}.fnB0BW_poolMeterFillWarn{background:var(--fcg-warn)}.fnB0BW_poolMeterFillDanger{background:var(--fcg-danger)}.fnB0BW_poolMetric{color:var(--fcg-text-secondary);font:600 var(--fcg-font-caption)/1 var(--fcg-font-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.fnB0BW_poolActions{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.fnB0BW_poolFootnote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}@media (width<=520px){.fnB0BW_poolAccountHead{flex-wrap:wrap;align-items:flex-start}.fnB0BW_poolIdentity{flex-basis:100%}.fnB0BW_poolActions{justify-content:flex-start}.fnB0BW_mcpServerCard{flex-direction:column;align-items:flex-start}.fnB0BW_mcpServerActions{justify-content:flex-start}.fnB0BW_skillPanelHeader,.fnB0BW_pricingHeader{flex-direction:column;align-items:flex-start;gap:7px}.fnB0BW_pricingSearch{width:100%}.fnB0BW_marketplaceControls,.fnB0BW_mcpMarketplaceGrid,.fnB0BW_marketplaceGrid{grid-template-columns:1fr}.fnB0BW_communityGrid,.fnB0BW_capabilityCommunityGrid{grid-template-columns:1fr}.fnB0BW_capabilityCommunityHeader{flex-direction:column;align-items:flex-start}.fnB0BW_communityFilterBar{gap:8px}.fnB0BW_communityInstalledEntry{padding-inline:8px}.fnB0BW_communityRestart,.fnB0BW_advisorPickerHeader{flex-direction:column;align-items:flex-start}.fnB0BW_communityModalBackdrop,.fnB0BW_advisorPickerBackdrop{padding:10px}.fnB0BW_advisorPicker{height:95vh;padding:14px}.fnB0BW_communityModalStats,.fnB0BW_advisorModelOption{flex-direction:column;align-items:flex-start;gap:4px}.fnB0BW_advisorModelOption code{max-width:100%}.fnB0BW_routingCell{grid-template-columns:1fr;gap:8px}.fnB0BW_routingCell:not(.fnB0BW_selectCell) .fnB0BW_routingCopy{grid-template-columns:1fr;gap:2px}.fnB0BW_authForm,.fnB0BW_capabilityForm{grid-template-columns:1fr}.fnB0BW_authFull,.fnB0BW_capabilityFull{grid-column:auto}.fnB0BW_capabilityStats,.fnB0BW_advisorStats{grid-template-columns:1fr}.fnB0BW_accountRow{flex-direction:column;align-items:flex-start}.fnB0BW_accountActions{justify-content:flex-start}.fnB0BW_plans{grid-template-columns:repeat(2,minmax(0,1fr))}.fnB0BW_communityGrid,.fnB0BW_capabilityCommunityGrid{grid-template-columns:1fr}.fnB0BW_communityRestart{flex-direction:column;align-items:flex-start}.fnB0BW_communityModalBackdrop{padding:10px}.fnB0BW_communityModal{max-height:95vh;padding:14px}.fnB0BW_communityModalStats{flex-direction:column;align-items:flex-start;gap:4px}}@media (width<=360px){.fnB0BW_plans{grid-template-columns:1fr}}.fnB0BW_statGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);grid-template-columns:repeat(auto-fit,minmax(112px,1fr));display:grid}.fnB0BW_statCell{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);gap:2px;min-width:0;padding:10px 12px;display:grid}.fnB0BW_statLabel{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:16px;overflow:hidden}.fnB0BW_statValue{color:var(--fcg-text-primary);font-size:var(--fcg-font-title);font-variant-numeric:tabular-nums;letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-weight:650;line-height:20px;overflow:hidden}.fnB0BW_details{margin-top:var(--fcg-space-2)}.fnB0BW_detailsSummary{color:var(--fcg-text-secondary);cursor:pointer;font-size:var(--fcg-font-caption);padding:5px 0;line-height:18px}.fnB0BW_detailsSummary:hover{color:var(--fcg-text-primary)}.fnB0BW_detailsSummary:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);border-radius:var(--fcg-radius-sm);outline:none}.fnB0BW_chipGrid{padding:var(--fcg-space-1) 0 var(--fcg-space-2);flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_statChip{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:nowrap;align-items:center;gap:6px;padding:3px 9px;line-height:18px;display:inline-flex}.fnB0BW_statChip b{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;font-weight:650}.fnB0BW_statChipIdle{color:var(--fcg-text-tertiary);opacity:.62}.fnB0BW_statChipIdle b{color:var(--fcg-text-tertiary)}@media (width<=520px){.fnB0BW_statGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}.fnB0BW_toggleGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-2);grid-template-columns:repeat(auto-fit,minmax(168px,1fr));display:grid}.fnB0BW_toggleCard{justify-content:space-between;align-items:center;gap:var(--fcg-space-2);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);cursor:pointer;min-width:0;transition:border-color var(--fcg-fast) var(--fcg-ease), background var(--fcg-fast) var(--fcg-ease);padding:9px 11px;display:flex}.fnB0BW_toggleCard:hover{border-color:var(--fcg-line);background:var(--fcg-bg-layer-2)}.fnB0BW_toggleCardDisabled{cursor:not-allowed;opacity:.55}.fnB0BW_toggleCardDisabled:hover{border-color:var(--fcg-line-subtle);background:var(--fcg-bg-layer-1)}.fnB0BW_toggleCardText{gap:1px;min-width:0;display:grid}.fnB0BW_toggleCardText strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:18px;overflow:hidden}.fnB0BW_toggleCardText small{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px;overflow:hidden}.fnB0BW_toggleCardNote{color:var(--fcg-warn-label);font-size:11px;line-height:15px}.fnB0BW_tuningGrid{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);grid-template-columns:repeat(auto-fit,minmax(132px,1fr));display:grid}.fnB0BW_tuningCell{gap:4px;min-width:0;display:grid}.fnB0BW_tuningLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:16px;overflow:hidden}.fnB0BW_tuningHint{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px;overflow:hidden}.fnB0BW_tuningCell .fnB0BW_select{min-height:32px;padding:5px 9px}.fnB0BW_subGroup{gap:var(--fcg-space-2);margin-top:var(--fcg-space-4);display:grid}.fnB0BW_subGroupLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);letter-spacing:.02em;font-weight:600;line-height:18px}.fnB0BW_councilJob{gap:var(--fcg-space-3);display:grid}.fnB0BW_councilJobHead{align-items:baseline;gap:var(--fcg-space-2);flex-wrap:wrap;min-width:0;display:flex}.fnB0BW_councilJobId{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.fnB0BW_councilReport{gap:var(--fcg-space-2);min-width:0;display:grid}.fnB0BW_councilReportTurn{font-size:var(--fcg-font-body)}.fnB0BW_councilState{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-hover);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-transform:uppercase;letter-spacing:.04em;padding:2px 8px;font-weight:600;line-height:18px}.fnB0BW_councilStateOk{background:var(--fcg-success-subtle);color:var(--fcg-success)}.fnB0BW_councilStateBlocked{background:var(--fcg-danger-subtle);color:var(--fcg-danger)}.fnB0BW_councilStateNowrap{white-space:nowrap;word-break:keep-all;flex:none;max-width:none}.fnB0BW_councilCallout{border-left:2px solid var(--fcg-line-strong);border-radius:0 var(--fcg-radius-sm) var(--fcg-radius-sm) 0;background:var(--fcg-bg-layer-2);gap:2px;padding:9px 11px;display:grid}.fnB0BW_councilCallout p{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:18px}.fnB0BW_councilCalloutBlocked{border-left-color:var(--fcg-danger);background:color-mix(in srgb, var(--fcg-danger) 6%, var(--fcg-bg-layer-2))}.fnB0BW_findingList{gap:6px;margin:0;padding:0;list-style:none;display:grid}.fnB0BW_findingRow{align-items:start;gap:var(--fcg-space-2);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);grid-template-columns:auto minmax(0,1fr) auto;padding:8px 10px;display:grid}.fnB0BW_findingBody{gap:2px;min-width:0;display:grid}.fnB0BW_findingTitle{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:600;line-height:18px}.fnB0BW_findingEvidence{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:17px}.fnB0BW_findingEngine{color:var(--fcg-text-tertiary);white-space:nowrap;flex:none;font-size:11px;line-height:18px}.fnB0BW_findingSeverity{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-tip);color:var(--fcg-text-secondary);letter-spacing:.03em;text-transform:uppercase;white-space:nowrap;flex:none;padding:1px 7px;font-size:10px;font-weight:600;line-height:16px}.fnB0BW_findingSeverity_blocker{background:var(--fcg-danger-subtle);color:var(--fcg-danger)}.fnB0BW_findingSeverity_warning{background:var(--fcg-warn-subtle);color:var(--fcg-warn-label)}.fnB0BW_findingSeverity_info{background:var(--fcg-bg-hover);color:var(--fcg-text-tertiary)}.fnB0BW_findingSeverity_unknown{background:var(--fcg-bg-tip);color:var(--fcg-text-tertiary)}@media (width<=520px){.fnB0BW_toggleGrid,.fnB0BW_tuningGrid{grid-template-columns:1fr}.fnB0BW_findingRow{grid-template-columns:auto minmax(0,1fr)}.fnB0BW_findingEngine{grid-column:2}}.fnB0BW_advisorFormGrid{gap:var(--fcg-space-3);margin-top:var(--fcg-space-3);grid-template-columns:repeat(auto-fit,minmax(180px,1fr));display:grid}.fnB0BW_advisorField{min-width:0;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_advisorField>span{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:16px}.fnB0BW_advisorField .fnB0BW_advisorModelTrigger{height:100%}.fnB0BW_advisorModelTrigger{align-content:center;gap:2px;display:grid}.fnB0BW_advisorModelTrigger strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body);text-overflow:ellipsis;white-space:nowrap;font-weight:600;line-height:18px;overflow:hidden}.fnB0BW_advisorFoot{justify-content:space-between;align-items:flex-end;gap:var(--fcg-space-3);margin-top:var(--fcg-space-4);flex-wrap:wrap;display:flex}.fnB0BW_advisorFoot .fnB0BW_advisorEvidence{flex:320px;margin-top:0}.fnB0BW_advisorFoot .fnB0BW_buttonPrimary{flex:none}@media (width<=520px){.fnB0BW_advisorFormGrid{grid-template-columns:1fr}.fnB0BW_advisorFoot{flex-direction:column;align-items:stretch}.fnB0BW_advisorFoot .fnB0BW_buttonPrimary{width:100%}}.fnB0BW_engineeringHeader{justify-content:space-between;align-items:flex-start;gap:var(--fcg-space-3);display:flex}.fnB0BW_engineeringHeader>div:first-child{gap:3px;min-width:0;display:grid}.fnB0BW_engineeringHeader strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg)}.fnB0BW_engineeringHeader small{max-width:620px;color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_engineeringKicker{color:var(--fcg-text-tertiary);letter-spacing:.08em;font-size:11px;font-weight:650}.fnB0BW_engineeringSummary{margin-top:var(--fcg-space-2);flex-wrap:wrap;gap:6px;display:flex}.fnB0BW_engineeringSummary span{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:3px 9px}.fnB0BW_engineeringSummary b{color:var(--fcg-text-primary)}.fnB0BW_actionMenu{position:relative}.fnB0BW_actionMenu summary{list-style:none}.fnB0BW_actionMenu summary::-webkit-details-marker{display:none}.fnB0BW_actionMenuPop{z-index:4;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);min-width:150px;box-shadow:var(--fcg-shadow-2);gap:4px;padding:6px;display:grid;position:absolute;top:calc(100% + 5px);right:0}.fnB0BW_actionMenuPop .fnB0BW_button{background:0 0;border-color:#0000;justify-content:flex-start}.fnB0BW_actionMenuPop .fnB0BW_button:hover{background:var(--fcg-bg-hover)}.fnB0BW_engineeringComposer{gap:var(--fcg-space-2);margin-top:var(--fcg-space-3);padding:var(--fcg-space-3);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);grid-template-columns:minmax(0,1fr) auto;display:grid}.fnB0BW_engineeringComposer .fnB0BW_input{min-width:0}@media (width<=520px){.fnB0BW_engineeringHeader{flex-direction:column}.fnB0BW_engineeringComposer{grid-template-columns:1fr}}.fnB0BW_composerLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);margin-bottom:5px;font-weight:600;line-height:16px;display:block}.fnB0BW_engineeringComposer>div{min-width:0}.fnB0BW_engineeringComposer>div:first-child,.fnB0BW_engineeringComposer>div:nth-child(2){align-content:start;display:grid}.fnB0BW_pricingTable .fnB0BW_priceFree{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 14%, transparent);color:var(--fcg-success);font-size:var(--fcg-font-caption);letter-spacing:.04em;padding:1px 7px;font-weight:700}.fnB0BW_paymentNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);justify-content:space-between;align-items:flex-start;gap:10px;margin-top:14px;padding:10px 12px;line-height:19px;display:flex}.fnB0BW_invoicePanel{border-top:1px solid var(--fcg-line);gap:12px;margin-top:20px;padding-top:18px;display:grid}.fnB0BW_invoiceHead{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.fnB0BW_invoiceOrders{gap:6px;display:grid}.fnB0BW_invoiceOrderRow{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);cursor:pointer;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;display:grid}.fnB0BW_invoiceOrderText{gap:2px;min-width:0;display:grid}.fnB0BW_invoiceOrderText small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption)}.fnB0BW_invoiceForm{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;display:grid}.fnB0BW_invoiceForm label{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);gap:5px;display:grid}.fnB0BW_invoiceForm .fnB0BW_input{min-width:0}.fnB0BW_invoiceActions{flex-wrap:wrap;gap:8px;display:flex}.fnB0BW_invoiceNotice{border:1px solid color-mix(in srgb, var(--fcg-warn) 38%, var(--fcg-line));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-warn) 7%, var(--fcg-bg-layer-2));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:8px 10px}.fnB0BW_invoicePreview{box-sizing:border-box;border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);width:100%;color:var(--fcg-text-primary);font-family:var(--fcg-font-mono);font-size:var(--fcg-font-caption);resize:vertical;padding:10px 12px;line-height:18px}.fnB0BW_invoicePanel>.fnB0BW_sectionMeta{line-height:18px}body .fnB0BW_payDialog{border:2px solid var(--pixel-ink);background:var(--pixel-face);width:min(392px,100vw - 36px);box-shadow:6px 6px 0 0 var(--pixel-ink);border-radius:0;padding-bottom:20px}.fnB0BW_payDialog h2{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);letter-spacing:-.012em;margin:0;font-weight:800}.fnB0BW_payDialog h2+button{border:1px solid var(--pixel-ink);color:var(--pixel-ink);border-radius:0}.fnB0BW_payDialog h2+button:hover{background:var(--pixel-recess)}.fnB0BW_payDialogBody{gap:12px;display:grid}.fnB0BW_payDialogHead{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);gap:3px;padding:12px;display:grid}.fnB0BW_payDialogLabel{color:var(--fcg-brand);font-family:var(--fcg-font-mono);letter-spacing:.08em;text-transform:uppercase;font-size:10px;font-weight:700}.fnB0BW_payDialogAmount{color:var(--fcg-text-primary);letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:27px;font-weight:800;line-height:34px}.fnB0BW_payDialogMeta{flex-wrap:wrap;align-items:center;gap:8px;margin-top:5px;display:flex}.fnB0BW_payDialogCredit{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption)}.fnB0BW_payDialogCredit strong{color:var(--fcg-text-primary);font-variant-numeric:tabular-nums;font-weight:700}.fnB0BW_payDialogState{border:1px solid var(--pixel-ink);background:var(--pixel-face);color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);letter-spacing:.06em;white-space:nowrap;clip-path:var(--pixel-chip);margin-left:auto;padding:2px 9px;font-size:10px;font-weight:700}.fnB0BW_payDialogSlot{border:2px solid var(--pixel-ink);background:var(--pixel-recess);box-shadow:inset 2px 2px 0 0 var(--pixel-recess-edge);justify-items:start;gap:10px;padding:12px;display:grid}.fnB0BW_payDialogQr{text-align:center;justify-items:center}.fnB0BW_payDialogSlot .fnB0BW_paymentNotice{border-width:2px;border-radius:0;margin-top:0}.fnB0BW_payDialogSlot .fnB0BW_payDialogElement{width:100%;min-height:0}.fnB0BW_payDialogPaid{border:2px solid color-mix(in srgb, var(--fcg-success) 42%, var(--pixel-ink));background:color-mix(in srgb, var(--fcg-success) 10%, var(--pixel-face));color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);padding:10px 12px}.fnB0BW_payDialogNote{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px;display:block}.fnB0BW_payDialogFooter{flex-wrap:wrap;justify-content:flex-end;gap:8px;display:flex}.fnB0BW_payDialogFooter .fnB0BW_button,.fnB0BW_payDialogSlot .fnB0BW_button{border:2px solid var(--pixel-ink);background:var(--pixel-face);min-height:40px;color:var(--fcg-text-primary);letter-spacing:.04em;box-shadow:0 3px 0 0 var(--pixel-ink);transition:background var(--fcg-fast) var(--fcg-ease), box-shadow 60ms linear, transform 60ms linear;border-radius:0;font-weight:700}.fnB0BW_payDialogFooter .fnB0BW_button:hover:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_button:hover:not(:disabled){background:var(--pixel-recess)}.fnB0BW_payDialogFooter .fnB0BW_button:active:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_button:active:not(:disabled){box-shadow:0 0 0 0 var(--pixel-ink);transform:translateY(3px)}.fnB0BW_payDialogFooter .fnB0BW_buttonPrimary,.fnB0BW_payDialogSlot .fnB0BW_buttonPrimary{border-color:var(--pixel-ink);background:var(--fcg-brand);color:var(--fcg-text-on-brand-fixed);box-shadow:inset 0 2px 0 0 #ffffff61, 0 3px 0 0 var(--pixel-ink)}.fnB0BW_payDialogFooter .fnB0BW_buttonPrimary:hover:not(:disabled),.fnB0BW_payDialogSlot .fnB0BW_buttonPrimary:hover:not(:disabled){border-color:var(--pixel-ink);background:var(--fcg-brand-strong);box-shadow:inset 0 2px 0 0 #ffffff7a, 0 4px 0 0 var(--pixel-ink)}.fnB0BW_payDialogFooter .fnB0BW_buttonDanger{color:var(--fcg-danger)}.fnB0BW_payDialogFooter .fnB0BW_button:focus-visible,.fnB0BW_payDialogSlot .fnB0BW_button:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 26%, transparent), 0 3px 0 0 var(--pixel-ink);outline:none}.fnB0BW_planReviewBody{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-input);max-height:300px;display:grid;overflow:auto}.fnB0BW_planReviewLine{width:100%;color:var(--fcg-text-primary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);text-align:left;background:0 0;border:0;grid-template-columns:44px minmax(0,1fr);gap:8px;padding:2px 10px;line-height:18px;display:grid}.fnB0BW_planReviewLine:hover{background:var(--fcg-bg-hover)}.fnB0BW_planReviewLineSelected{background:var(--fcg-bg-active)}.fnB0BW_planReviewLineNumber{color:var(--fcg-text-tertiary);font-family:var(--fcg-font-mono);text-align:right}.fnB0BW_planReviewLineText{white-space:pre-wrap;overflow-wrap:anywhere;min-width:0}.fnB0BW_planReviewRemark{border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-2);gap:8px;padding:10px 11px;display:grid}.fnB0BW_pickerVisibilityPanel{gap:var(--fcg-space-2);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-1);padding:12px;display:grid}.fnB0BW_pickerVisibilityPanel[data-open=false]{padding:9px 12px}.fnB0BW_pickerVisibilityToggle{width:100%;color:var(--fcg-text-secondary);cursor:pointer;font:inherit;text-align:left;background:0 0;border:0;align-items:center;gap:8px;padding:0;display:flex}.fnB0BW_pickerVisibilityToggle:hover{color:var(--fcg-text-primary)}.fnB0BW_pickerVisibilityToggle:focus-visible{border-radius:var(--fcg-radius-sm);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_pickerVisibilityGear{flex:none;align-items:center;display:inline-flex}.fnB0BW_pickerVisibilityToggleLabel{min-width:0;font-size:var(--fcg-font-caption);flex:auto;font-weight:620;line-height:18px}.fnB0BW_pickerVisibilityBadge{border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-text-tertiary);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:600;line-height:16px}.fnB0BW_pickerVisibilityChevron{flex:none;align-items:center;transition:transform .12s;display:inline-flex}.fnB0BW_pickerVisibilityToggle[aria-expanded=true] .fnB0BW_pickerVisibilityChevron{transform:rotate(180deg)}.fnB0BW_pickerVisibilityMaster{cursor:pointer;align-items:center;gap:10px;display:flex}.fnB0BW_pickerVisibilityText{gap:2px;min-width:0;display:grid}.fnB0BW_pickerVisibilityText strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption);font-weight:620;line-height:18px}.fnB0BW_pickerVisibilityText small{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:17px}.fnB0BW_pickerVisibilityHead{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:10px;display:flex}.fnB0BW_pickerVisibilityLabel{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:18px}.fnB0BW_pickerVisibilityActions{align-items:center;gap:10px;display:flex}.fnB0BW_pickerVisibilityLink{color:var(--fcg-brand);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;padding:0;line-height:18px}.fnB0BW_pickerVisibilityLink:hover{text-decoration:underline}.fnB0BW_pickerVisibilityLink:focus-visible{border-radius:var(--fcg-radius-sm);box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);outline:none}.fnB0BW_pickerVisibilityList{scrollbar-color:var(--fcg-line-strong) transparent;scrollbar-width:thin;gap:2px;max-height:224px;display:grid;overflow-y:auto}.fnB0BW_pickerVisibilityList[data-visible=false]{opacity:.5}.fnB0BW_pickerVisibilityRow{border-radius:var(--fcg-radius-sm);cursor:pointer;align-items:center;gap:8px;min-width:0;padding:4px 6px;display:flex}.fnB0BW_pickerVisibilityRow:hover{background:var(--fcg-bg-layer-2)}.fnB0BW_pickerVisibilityCheck{width:14px;height:14px;accent-color:var(--fcg-brand);cursor:pointer;flex:none;margin:0}.fnB0BW_pickerVisibilityName{min-width:0;color:var(--fcg-text-secondary);font-family:var(--fcg-font-mono);text-overflow:ellipsis;white-space:nowrap;flex:auto;font-size:11px;line-height:18px;overflow:hidden}.fnB0BW_pickerVisibilityPaid{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-danger) 12%, transparent);color:var(--fcg-danger);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:700;line-height:16px}.fnB0BW_pickerVisibilityFree{border-radius:var(--fcg-radius-full);background:color-mix(in srgb, var(--fcg-success) 12%, transparent);color:var(--fcg-success);flex:none;padding:0 6px;font-size:10px;font-style:normal;font-weight:700;line-height:16px}.fnB0BW_pickerVisibilityEmpty{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}";
|
|
18268
|
+
const tagId$6 = "freecodego/settings-tab.module.css";
|
|
18269
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
|
|
18070
18270
|
const tag = document.createElement("style");
|
|
18071
18271
|
tag.dataset.plugin = "freecodego";
|
|
18072
|
-
tag.dataset.pluginCss = tagId$
|
|
18073
|
-
tag.textContent = css$
|
|
18272
|
+
tag.dataset.pluginCss = tagId$6;
|
|
18273
|
+
tag.textContent = css$6;
|
|
18074
18274
|
document.head.appendChild(tag);
|
|
18075
18275
|
}
|
|
18076
18276
|
var settings_tab_module_css_default = {
|
|
@@ -18125,6 +18325,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
18125
18325
|
"authLayout": "fnB0BW_authLayout",
|
|
18126
18326
|
"authNote": "fnB0BW_authNote",
|
|
18127
18327
|
"authNotice": "fnB0BW_authNotice",
|
|
18328
|
+
"authNoticeAlert": "fnB0BW_authNoticeAlert",
|
|
18128
18329
|
"authPanel": "fnB0BW_authPanel",
|
|
18129
18330
|
"authSocialButton": "fnB0BW_authSocialButton",
|
|
18130
18331
|
"authSocialRow": "fnB0BW_authSocialRow",
|
|
@@ -21298,13 +21499,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21298
21499
|
}
|
|
21299
21500
|
//#endregion
|
|
21300
21501
|
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/provider-card.module.css.mjs
|
|
21301
|
-
const css$
|
|
21302
|
-
const tagId$
|
|
21303
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
21502
|
+
const css$5 = "._166XFq_card{gap:var(--fcg-space-3);padding:var(--fcg-space-4);border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-lg);background:var(--fcg-bg-layer-1);transition:border-color var(--fcg-fast) var(--fcg-ease);display:grid}._166XFq_card:hover{border-color:var(--fcg-line)}._166XFq_head{justify-content:space-between;align-items:flex-start;gap:var(--fcg-space-3);min-width:0;display:flex}._166XFq_identity{align-items:center;gap:var(--fcg-space-3);min-width:0;display:flex}._166XFq_mark{border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);width:34px;height:34px;color:var(--fcg-text-secondary);flex:none;place-items:center;display:grid}._166XFq_names{gap:2px;min-width:0;display:grid}._166XFq_name{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);letter-spacing:-.01em;text-overflow:ellipsis;white-space:nowrap;font-weight:650;line-height:20px;overflow:hidden}._166XFq_title{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:16px;overflow:hidden}._166XFq_status{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);white-space:nowrap;flex:none;align-items:center;gap:6px;line-height:18px;display:inline-flex}._166XFq_statusDot{corner-shape:round;background:currentColor;border-radius:50%;width:6px;height:6px}._166XFq_statusLive{color:var(--fcg-success)}._166XFq_statusWarn{color:var(--fcg-warn-label)}._166XFq_statusIdle{color:var(--fcg-text-tertiary)}._166XFq_summary{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);line-height:18px}._166XFq_description{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);line-height:18px}._166XFq_cloud{flex-wrap:wrap;gap:6px;display:flex}._166XFq_tag{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);max-width:100%;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;align-items:center;padding:3px 9px;line-height:18px;display:inline-flex;overflow:hidden}._166XFq_tagMono{font-family:var(--fcg-font-mono);font-size:11px}._166XFq_more{color:var(--fcg-text-tertiary);cursor:pointer;font:inherit;font-size:var(--fcg-font-caption);background:0 0;border:0;align-self:flex-start;padding:0;line-height:18px}._166XFq_more:hover{color:var(--fcg-brand)}._166XFq_more:focus-visible{box-shadow:0 0 0 3px color-mix(in srgb, var(--fcg-brand) 22%, transparent);border-radius:var(--fcg-radius-sm);outline:none}._166XFq_actions{justify-content:flex-end;align-items:center;gap:var(--fcg-space-2);flex-wrap:wrap;display:flex}._166XFq_body{gap:var(--fcg-space-2);min-width:0;display:grid}@media (width<=520px){._166XFq_head{flex-direction:column;align-items:stretch}._166XFq_status{align-self:flex-start}}._166XFq_notice{border:1px solid color-mix(in srgb, var(--fcg-success) 28%, var(--fcg-line-subtle));border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-success) 8%, var(--fcg-bg-layer-1));color:var(--fcg-success);font-size:var(--fcg-font-caption);align-items:center;gap:7px;padding:7px 9px;font-weight:600;line-height:18px;display:flex}._166XFq_noticeDot{corner-shape:round;background:currentColor;border-radius:50%;flex:none;width:6px;height:6px}";
|
|
21503
|
+
const tagId$5 = "freecodego/provider-card.module.css";
|
|
21504
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
|
|
21304
21505
|
const tag = document.createElement("style");
|
|
21305
21506
|
tag.dataset.plugin = "freecodego";
|
|
21306
|
-
tag.dataset.pluginCss = tagId$
|
|
21307
|
-
tag.textContent = css$
|
|
21507
|
+
tag.dataset.pluginCss = tagId$5;
|
|
21508
|
+
tag.textContent = css$5;
|
|
21308
21509
|
document.head.appendChild(tag);
|
|
21309
21510
|
}
|
|
21310
21511
|
var provider_card_module_css_default = {
|
|
@@ -21876,20 +22077,25 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21876
22077
|
* provider whose roster the plugin does not curate. VyceAI is the exception:
|
|
21877
22078
|
* every one of its routes is metered, so listing its whole directory in the
|
|
21878
22079
|
* chat menu by default would offer a dozen ways to spend money the moment a key
|
|
21879
|
-
* is saved. Only the
|
|
22080
|
+
* is saved. Only the three routes that are the default offer start switched on;
|
|
21880
22081
|
* the rest are one click away, and an explicit choice is stored as the opposite
|
|
21881
22082
|
* of the default (see {@link isModelVisible}).
|
|
21882
22083
|
*
|
|
21883
22084
|
* Ids are the bare wire ids, so both the `vyce/deepseek-v4.1` the picker spells
|
|
21884
22085
|
* and a bare `deepseek-v4.1` match.
|
|
21885
22086
|
*
|
|
21886
|
-
*
|
|
21887
|
-
*
|
|
21888
|
-
*
|
|
21889
|
-
*
|
|
21890
|
-
*
|
|
21891
|
-
|
|
21892
|
-
|
|
22087
|
+
* A name outranks a price here. `deepseek-v4.1` publishes per-million prices, so
|
|
22088
|
+
* the row's own description reads as `paid` — and it is still one of the
|
|
22089
|
+
* defaults, because the whole point of the provider is that the daily check-in
|
|
22090
|
+
* credit pays for exactly these routes; dropping it would hide the offer the
|
|
22091
|
+
* provider was configured for. A priced route that is *not* named is unaffected
|
|
22092
|
+
* and still starts off (see {@link METERED_DEFAULT_HIDDEN_PROVIDERS}).
|
|
22093
|
+
*/
|
|
22094
|
+
const DEFAULT_VISIBLE_MODELS = { vyce: [
|
|
22095
|
+
"deepseek-v4.1",
|
|
22096
|
+
"qwen3.8-flash",
|
|
22097
|
+
"claude-sonnet-4-6"
|
|
22098
|
+
] };
|
|
21893
22099
|
/**
|
|
21894
22100
|
* Providers whose priced rows start hidden unless the user asks for them.
|
|
21895
22101
|
*
|
|
@@ -21927,7 +22133,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21927
22133
|
* @param modelId - the picker's model id.
|
|
21928
22134
|
* @returns the model id without its `@group:N` suffix.
|
|
21929
22135
|
*/
|
|
21930
|
-
function bareModelId(modelId) {
|
|
22136
|
+
function bareModelId$1(modelId) {
|
|
21931
22137
|
return /^(.*?)(?:@group:\d+)$/u.exec(modelId.trim())?.[1] ?? modelId.trim();
|
|
21932
22138
|
}
|
|
21933
22139
|
/**
|
|
@@ -21937,7 +22143,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21937
22143
|
* @returns the storage key.
|
|
21938
22144
|
*/
|
|
21939
22145
|
function modelVisibilityKey(provider, modelId) {
|
|
21940
|
-
return `${provider.trim().toLowerCase()}\u0000${bareModelId(modelId)}`;
|
|
22146
|
+
return `${provider.trim().toLowerCase()}\u0000${bareModelId$1(modelId)}`;
|
|
21941
22147
|
}
|
|
21942
22148
|
/**
|
|
21943
22149
|
* Whether a provider's section is shown.
|
|
@@ -21952,9 +22158,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21952
22158
|
/**
|
|
21953
22159
|
* Whether a provider's rows start shown.
|
|
21954
22160
|
*
|
|
21955
|
-
* A
|
|
21956
|
-
*
|
|
21957
|
-
* is
|
|
22161
|
+
* A curated provider (see {@link DEFAULT_VISIBLE_MODELS}) is decided by its own
|
|
22162
|
+
* list and nothing else: naming a route is the plugin's statement about which
|
|
22163
|
+
* routes this provider is configured for, and it is a sharper answer than the
|
|
22164
|
+
* price is — which is why a named route stays on even when the directory prices
|
|
22165
|
+
* it. Every other provider follows the price rule: a priced row of a metered
|
|
22166
|
+
* provider starts hidden, the rest start shown.
|
|
21958
22167
|
*
|
|
21959
22168
|
* An `unknown` price is not read as `paid`: a route the directory does not price
|
|
21960
22169
|
* is still an answer to "may this be in my list" that the user already gave by
|
|
@@ -21967,10 +22176,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
21967
22176
|
*/
|
|
21968
22177
|
function modelDefaultVisible(provider, modelId, price = "unknown") {
|
|
21969
22178
|
const key = provider.trim().toLowerCase();
|
|
21970
|
-
if (price === "paid" && METERED_DEFAULT_HIDDEN_PROVIDERS.has(key)) return false;
|
|
21971
22179
|
const set = DEFAULT_VISIBLE_SETS.get(key);
|
|
21972
|
-
if (set === void 0) return
|
|
21973
|
-
const bare = bareModelId(modelId);
|
|
22180
|
+
if (set === void 0) return !(price === "paid" && METERED_DEFAULT_HIDDEN_PROVIDERS.has(key));
|
|
22181
|
+
const bare = bareModelId$1(modelId);
|
|
21974
22182
|
const prefix = `${key}/`;
|
|
21975
22183
|
const slug = (bare.toLowerCase().startsWith(prefix) ? bare.slice(prefix.length) : bare).toLowerCase();
|
|
21976
22184
|
return set.has(slug);
|
|
@@ -22101,7 +22309,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22101
22309
|
for (const model of models) {
|
|
22102
22310
|
const id = model.id.trim();
|
|
22103
22311
|
if (id === "") continue;
|
|
22104
|
-
const key = bareModelId(id);
|
|
22312
|
+
const key = bareModelId$1(id);
|
|
22105
22313
|
if (seen.has(key)) continue;
|
|
22106
22314
|
seen.add(key);
|
|
22107
22315
|
out.push({
|
|
@@ -22247,7 +22455,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
22247
22455
|
const hiddenCount = unique.filter((model, index) => !isModelVisible(visibility, provider, model.id, modelRows[index].price)).length;
|
|
22248
22456
|
const rows = unique.map((model, index) => ({
|
|
22249
22457
|
model,
|
|
22250
|
-
label: model.label ?? bareModelId(model.id),
|
|
22458
|
+
label: model.label ?? bareModelId$1(model.id),
|
|
22251
22459
|
price: modelRows[index].price,
|
|
22252
22460
|
visible: isModelVisible(visibility, provider, model.id, modelRows[index].price)
|
|
22253
22461
|
}));
|
|
@@ -26906,6 +27114,39 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
26906
27114
|
default: return id;
|
|
26907
27115
|
}
|
|
26908
27116
|
}
|
|
27117
|
+
/**
|
|
27118
|
+
* Turn one account-card failure into a sentence the reader can act on.
|
|
27119
|
+
*
|
|
27120
|
+
* The Host reports what the gateway said, which is the right thing to carry and
|
|
27121
|
+
* the wrong thing to show: "FreeCodeGo authentication request failed with HTTP
|
|
27122
|
+
* 400: invalid or expired verification code" is a log line. The shapes this card
|
|
27123
|
+
* can do something about are named; everything else keeps the gateway's wording
|
|
27124
|
+
* with the transport prefix trimmed, so the cause is the first thing read rather
|
|
27125
|
+
* than the fourth.
|
|
27126
|
+
* @param detail - the message the Host forwarded.
|
|
27127
|
+
* @param language - copy locale of the card.
|
|
27128
|
+
* @returns the line the card prints above its submit button.
|
|
27129
|
+
*/
|
|
27130
|
+
function describeAccountError(detail, language) {
|
|
27131
|
+
const zh = language === "zh";
|
|
27132
|
+
if (/did not become available/i.test(detail)) return zh ? "Harness Host 没有提供账号接口,请重启 Harness 后重试;若仍如此,请更新插件。" : "The Harness Host exposes no account endpoint — restart the Harness and try again; update the plugin if it stays missing.";
|
|
27133
|
+
const missing = /^FreeCodeGo response (.+?) must be/i.exec(detail)?.[1];
|
|
27134
|
+
if (missing !== void 0) return zh ? `服务返回的账号数据缺少「${missing}」字段,插件无法完成登录。请更新插件后重试。` : `The gateway's account payload is missing \`${missing}\`, so the sign-in cannot complete. Update the plugin and try again.`;
|
|
27135
|
+
if (/backend is not configured|backendNotConfigured/i.test(detail)) return zh ? "尚未配置 FreeCodeGo 后端地址,请先在插件设置里填写后再试。" : "No FreeCodeGo backend is configured; set its address in the plugin settings first.";
|
|
27136
|
+
if (/REG_DISABLED|registration is disabled/i.test(detail)) return zh ? "当前未开放注册,请联系站点管理员或使用已有账号登录。" : "Registration is currently disabled — ask the site owner, or sign in to an existing account.";
|
|
27137
|
+
if (/Invalid email/i.test(detail)) return zh ? "邮箱格式不正确,请检查后再试。" : "That email address is not valid.";
|
|
27138
|
+
if (/Invalid request/i.test(detail)) return zh ? "请求被服务拒绝(字段不合法),请检查邮箱、验证码与密码后重试。" : "The gateway rejected the request as malformed; check the address, code and password.";
|
|
27139
|
+
if (/invalid or expired verification code|INVALID_VERIFY_CODE/i.test(detail)) return zh ? "验证码无效或已过期。请点「发送验证码」重新获取,并确认邮箱与收验证码时填的是同一个。" : "That verification code is invalid or expired. Send a new one, and check the address matches the one the code was sent to.";
|
|
27140
|
+
if (/VERIFY_CODE_TOO_FREQUENT|too frequent|rate.?limit/i.test(detail)) return zh ? "验证码发送过于频繁,请等冷却结束后再试。" : "Verification codes are being requested too often; wait out the cooldown.";
|
|
27141
|
+
if (/EMAIL_EXISTS|email.*(?:already )?exists|already registered|email.*has an account/i.test(detail)) return zh ? "该邮箱已经注册过,请直接用「登录」;忘记密码可用找回密码。" : "That email already has an account — sign in instead, or use password recovery.";
|
|
27142
|
+
if (/INVITATION_CODE|invitation/i.test(detail)) return zh ? "本次注册需要邀请码,请填写后重试。" : "This registration needs an invitation code.";
|
|
27143
|
+
if (/turnstile/i.test(detail)) return zh ? "人机校验未通过,请稍后重试。" : "The human-verification check did not pass; try again shortly.";
|
|
27144
|
+
if (/password/i.test(detail) && /(too short|min=|at least|length)/i.test(detail)) return zh ? "密码太短,至少 6 位。" : "That password is too short — six characters is the minimum.";
|
|
27145
|
+
if (/ACCOUNT_LOGIN_REJECTED|invalid (?:password|credential)|incorrect password|unauthori[sz]ed|401|403/i.test(detail)) return zh ? "邮箱或密码不正确,请检查后重试。" : "That email and password do not match an account.";
|
|
27146
|
+
if (/Failed to fetch|NetworkError|network|ECONN|timeout|aborted|abort/i.test(detail)) return zh ? "网络请求失败或被中断,请检查网络后重试。" : "The request failed or was interrupted — check the connection and try again.";
|
|
27147
|
+
const stripped = detail.replace(/^FreeCodeGo (?:\w+ )?request failed with HTTP (\d+):?\s*/i, (_match, status) => `${zh ? "服务返回 HTTP" : "the gateway answered HTTP"} ${status}${zh ? ":" : ": "}`);
|
|
27148
|
+
return zh && /[A-Za-z]{3}/.test(stripped) ? `操作未成功(${stripped})` : stripped;
|
|
27149
|
+
}
|
|
26909
27150
|
function describeAgnesError(detail) {
|
|
26910
27151
|
if (/AGNES_VERIFICATION_RATE_LIMITED|sending too frequently/i.test(detail)) return "验证码发送过于频繁,请等待约 60 秒后再试;重复点击不会加快发送。";
|
|
26911
27152
|
if (/AGNES_PASSWORD_RESET_UNSUPPORTED|password reset is not supported for this account/i.test(detail)) return "该 Agnes 账号不支持密码重置,通常是第三方登录或特殊账号类型;请使用原登录方式,或在 Agnes 官网处理账号。";
|
|
@@ -27148,7 +27389,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
27148
27389
|
]
|
|
27149
27390
|
});
|
|
27150
27391
|
}
|
|
27151
|
-
function FreeCodeGoSettingsTab({ catalog, accountStatus, accountRememberedPassword, login, register, sendVerifyCode, oauthLogin, oauthPendingSendVerifyCode, oauthPendingBind, oauthPendingCreate, completeMfa, logout, deviceSessions, revokeDeviceSession, revokeAllSessions, setDefaultModel, setDefaultEngine, backendCatalog, readMediaDefaults, nativeModelCatalog, pickerModelDirectory, currentSessionId, vyceStatus, vyceSetKey, logfareStatus, logfareRegister, logfareSetTrainingOptIn, logfareSetKey, accountDetail, sensenovaStatus, sensenovaSetKey, nvidiaStatus, nvidiaSetKey, useConnectionEpoch, paymentPlans, paymentChannels, paymentConfig, gatewayModelPrices, paymentCheckout, paymentOrder, paymentVerify, paymentCancel, paymentReceiptEmail, paymentReceiptDocument, paymentStripeReceiptDocument, paymentOrders, agnesStatus, agnesSendVerification, agnesSendPasswordReset, agnesResetPassword, agnesLogin, agnesRegister, agnesLogout, agnesRemoveAccount, agnesRefresh, agnesCreateApiKey, clineStatus, clineStartLogin, clinePollLogin, clineAddAccount, clineRemoveAccount, clineRefresh, clineLogout, workbuddyStatus, workbuddyImportDesktopLogin, workbuddyStartBrowserLogin, workbuddyPollBrowserLogin, workbuddyLogout, workbuddyRemoveAccount, workbuddyRefreshCredits, qoderStatus, qoderStartBrowserLogin, qoderPollBrowserLogin, qoderLogout, qoderRemoveAccount, qoderSetActiveAccount, qoderRefreshQuota, qoderCheckin: runQoderCheckin, traeStatus, traeStartBrowserLogin, traePollBrowserLogin, traeSubmitCallback, traeCancelBrowserLogin, traeModels: loadTraeModels, traeLogout, traeRemoveAccount, traeSetActiveAccount, traeCheckin: runTraeCheckin, codexRuntimeStatus, codexRuntimePackages, codexRuntimeInstall, codexRuntimeRemove, claudeRuntimeStatus, claudeRuntimePackages, claudeRuntimeInstall, claudeRuntimeRemove, pluginUpdateStatus, pluginUpdateCheck, pluginUpdateSetEnabled, pluginUpdateInstall, pluginUpdateRollback, communityCatalog, communityCatalogIcons, communityEnvironment, communityInstalled, communityInstall, communityUninstall, capabilityMarketplace, mcpPresetInstall, skillPresetInstall, skillPresetRemove, skillPlacements, skillPlacementPrefer, capabilities, readLocalCapabilities, capabilitiesSetEnabled, setLocalCapability, setModelCategoryDirect, modelCategorySet, pluginConflictStatus, pluginConflictSetEnabled, headroomStatus, headroomSetEnabled, headroomUpdate, deferredToolsStatus, deferredToolsSetEnabled, reviewStatus, reviewStart, reviewUpdate, guardSettingsStatus, guardSettingsUpdate, workbuddySetActiveAccount, automationSettingsStatus, automationSettingsUpdate, sandboxModeStatus, sandboxModeSet, trustFolderStatus, trustFolderGrant, trustFolderRevoke, projectConfigReport, advisorStatus, advisorUpdate, engineeringStatus, engineeringSetEnabled, language, t }) {
|
|
27392
|
+
function FreeCodeGoSettingsTab({ catalog, accountStatus, accountRememberedPassword, login, register, sendVerifyCode, forgotPassword, resetPassword, oauthLogin, oauthPendingSendVerifyCode, oauthPendingBind, oauthPendingCreate, completeMfa, logout, deviceSessions, revokeDeviceSession, revokeAllSessions, setDefaultModel, setDefaultEngine, backendCatalog, readMediaDefaults, nativeModelCatalog, pickerModelDirectory, currentSessionId, vyceStatus, vyceSetKey, logfareStatus, logfareRegister, logfareSetTrainingOptIn, logfareSetKey, accountDetail, sensenovaStatus, sensenovaSetKey, nvidiaStatus, nvidiaSetKey, useConnectionEpoch, paymentPlans, paymentChannels, paymentConfig, gatewayModelPrices, paymentCheckout, paymentOrder, paymentVerify, paymentCancel, paymentReceiptEmail, paymentReceiptDocument, paymentStripeReceiptDocument, paymentOrders, agnesStatus, agnesSendVerification, agnesSendPasswordReset, agnesResetPassword, agnesLogin, agnesRegister, agnesLogout, agnesRemoveAccount, agnesRefresh, agnesCreateApiKey, clineStatus, clineStartLogin, clinePollLogin, clineAddAccount, clineRemoveAccount, clineRefresh, clineLogout, workbuddyStatus, workbuddyImportDesktopLogin, workbuddyStartBrowserLogin, workbuddyPollBrowserLogin, workbuddyLogout, workbuddyRemoveAccount, workbuddyRefreshCredits, qoderStatus, qoderStartBrowserLogin, qoderPollBrowserLogin, qoderLogout, qoderRemoveAccount, qoderSetActiveAccount, qoderRefreshQuota, qoderCheckin: runQoderCheckin, traeStatus, traeStartBrowserLogin, traePollBrowserLogin, traeSubmitCallback, traeCancelBrowserLogin, traeModels: loadTraeModels, traeLogout, traeRemoveAccount, traeSetActiveAccount, traeCheckin: runTraeCheckin, codexRuntimeStatus, codexRuntimePackages, codexRuntimeInstall, codexRuntimeRemove, claudeRuntimeStatus, claudeRuntimePackages, claudeRuntimeInstall, claudeRuntimeRemove, pluginUpdateStatus, pluginUpdateCheck, pluginUpdateSetEnabled, pluginUpdateInstall, pluginUpdateRollback, communityCatalog, communityCatalogIcons, communityEnvironment, communityInstalled, communityInstall, communityUninstall, capabilityMarketplace, mcpPresetInstall, skillPresetInstall, skillPresetRemove, skillPlacements, skillPlacementPrefer, capabilities, readLocalCapabilities, capabilitiesSetEnabled, setLocalCapability, setModelCategoryDirect, modelCategorySet, pluginConflictStatus, pluginConflictSetEnabled, headroomStatus, headroomSetEnabled, headroomUpdate, deferredToolsStatus, deferredToolsSetEnabled, mediaGenerationStatus, mediaGenerationSetEnabled, reviewStatus, reviewStart, reviewUpdate, guardSettingsStatus, guardSettingsUpdate, workbuddySetActiveAccount, automationSettingsStatus, automationSettingsUpdate, sandboxModeStatus, sandboxModeSet, trustFolderStatus, trustFolderGrant, trustFolderRevoke, projectConfigReport, advisorStatus, advisorUpdate, engineeringStatus, engineeringSetEnabled, language, t }) {
|
|
27152
27393
|
const [state, setState] = (0, react.useState)(() => cachedSettings(language, catalog)?.state ?? {
|
|
27153
27394
|
...fallbackSettings(),
|
|
27154
27395
|
syncStatus: "refreshing"
|
|
@@ -27171,6 +27412,31 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
27171
27412
|
const [verifySending, setVerifySending] = (0, react.useState)(false);
|
|
27172
27413
|
const [oauthBusy, setOauthBusy] = (0, react.useState)(void 0);
|
|
27173
27414
|
const [oauthNotice, setOauthNotice] = (0, react.useState)(void 0);
|
|
27415
|
+
/**
|
|
27416
|
+
* The account card's own failure line, drawn beside the button that produced it.
|
|
27417
|
+
*
|
|
27418
|
+
* The panel-wide `actionError` renders at the top of this tab, above the page
|
|
27419
|
+
* tabs, and this card sits well below them: a rejected registration therefore
|
|
27420
|
+
* put its reason on a line the reader had already scrolled past, which is
|
|
27421
|
+
* indistinguishable from a button that does nothing. Same reasoning as
|
|
27422
|
+
* `checkoutError` further down, and the same class of defect.
|
|
27423
|
+
*/
|
|
27424
|
+
const [authNotice, setAuthNotice] = (0, react.useState)(void 0);
|
|
27425
|
+
/** Which credential form is in flight, so its own button says so and refuses a second press. */
|
|
27426
|
+
const [authBusy, setAuthBusy] = (0, react.useState)(void 0);
|
|
27427
|
+
/**
|
|
27428
|
+
* Password recovery, opened from the login form.
|
|
27429
|
+
*
|
|
27430
|
+
* It is a mode of the card rather than a third tab: recovery is something the
|
|
27431
|
+
* sign-in form offers when it did not work, and putting it beside 登录/注册 as
|
|
27432
|
+
* an equal would invite it from people who know their password.
|
|
27433
|
+
*/
|
|
27434
|
+
const [resetOpen, setResetOpen] = (0, react.useState)(false);
|
|
27435
|
+
const [resetCode, setResetCode] = (0, react.useState)("");
|
|
27436
|
+
const [resetSecret, setResetSecret] = (0, react.useState)("");
|
|
27437
|
+
const [resetSending, setResetSending] = (0, react.useState)(false);
|
|
27438
|
+
const [resetBusy, setResetBusy] = (0, react.useState)(false);
|
|
27439
|
+
const [resetCooldown, setResetCooldown] = (0, react.useState)(0);
|
|
27174
27440
|
const [oauthPending, setOauthPending] = (0, react.useState)(void 0);
|
|
27175
27441
|
const [oauthPendingMode, setOauthPendingMode] = (0, react.useState)("create");
|
|
27176
27442
|
const [oauthPendingEmail, setOauthPendingEmail] = (0, react.useState)("");
|
|
@@ -27431,12 +27697,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
27431
27697
|
};
|
|
27432
27698
|
}, [accountRememberedPassword]);
|
|
27433
27699
|
(0, react.useEffect)(() => {
|
|
27434
|
-
if (agnesRegisterCooldown === 0 && agnesResetCooldown === 0 && verifyCooldown === 0 && oauthPendingVerifyCooldown === 0) return;
|
|
27700
|
+
if (agnesRegisterCooldown === 0 && agnesResetCooldown === 0 && verifyCooldown === 0 && oauthPendingVerifyCooldown === 0 && resetCooldown === 0) return;
|
|
27435
27701
|
const timer = globalThis.setInterval(() => {
|
|
27436
27702
|
setAgnesRegisterCooldown((value) => Math.max(0, value - 1));
|
|
27437
27703
|
setAgnesResetCooldown((value) => Math.max(0, value - 1));
|
|
27438
27704
|
setVerifyCooldown((value) => Math.max(0, value - 1));
|
|
27439
27705
|
setOauthPendingVerifyCooldown((value) => Math.max(0, value - 1));
|
|
27706
|
+
setResetCooldown((value) => Math.max(0, value - 1));
|
|
27440
27707
|
}, 1e3);
|
|
27441
27708
|
return () => {
|
|
27442
27709
|
globalThis.clearInterval(timer);
|
|
@@ -27445,7 +27712,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
27445
27712
|
agnesRegisterCooldown,
|
|
27446
27713
|
agnesResetCooldown,
|
|
27447
27714
|
verifyCooldown,
|
|
27448
|
-
oauthPendingVerifyCooldown
|
|
27715
|
+
oauthPendingVerifyCooldown,
|
|
27716
|
+
resetCooldown
|
|
27449
27717
|
]);
|
|
27450
27718
|
(0, react.useEffect)(() => {
|
|
27451
27719
|
if (selectedPaymentType !== "" && paymentType !== selectedPaymentType) setPaymentType(selectedPaymentType);
|
|
@@ -28434,9 +28702,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
28434
28702
|
};
|
|
28435
28703
|
const submitLogin = (event) => {
|
|
28436
28704
|
event.preventDefault();
|
|
28705
|
+
if (authBusy !== void 0) return;
|
|
28706
|
+
setAuthNotice(void 0);
|
|
28707
|
+
setAuthBusy("login");
|
|
28437
28708
|
login(email, password, rememberLogin, rememberPassword).then((result) => {
|
|
28438
28709
|
if (!result.ok) {
|
|
28439
|
-
|
|
28710
|
+
setAuthNotice(describeAccountError(result.error.message, language));
|
|
28440
28711
|
return;
|
|
28441
28712
|
}
|
|
28442
28713
|
try {
|
|
@@ -28449,30 +28720,36 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
28449
28720
|
keepSignedIn: false
|
|
28450
28721
|
}));
|
|
28451
28722
|
} catch (error) {
|
|
28452
|
-
|
|
28723
|
+
setAuthNotice(describeAccountError(error instanceof Error ? error.message : String(error), language));
|
|
28453
28724
|
return;
|
|
28454
28725
|
}
|
|
28455
28726
|
setPassword("");
|
|
28456
28727
|
load(true);
|
|
28457
28728
|
}, (error) => {
|
|
28458
|
-
|
|
28729
|
+
setAuthNotice(describeAccountError(error instanceof Error ? error.message : String(error), language));
|
|
28730
|
+
}).finally(() => {
|
|
28731
|
+
setAuthBusy(void 0);
|
|
28459
28732
|
});
|
|
28460
28733
|
};
|
|
28461
28734
|
const submitRegister = () => {
|
|
28462
|
-
if (register === void 0) return;
|
|
28735
|
+
if (register === void 0 || authBusy !== void 0) return;
|
|
28736
|
+
setAuthNotice(void 0);
|
|
28737
|
+
setAuthBusy("register");
|
|
28463
28738
|
register({
|
|
28464
28739
|
email,
|
|
28465
28740
|
password,
|
|
28466
28741
|
...verifyCode === "" ? {} : { verifyCode }
|
|
28467
28742
|
}).then((result) => {
|
|
28468
28743
|
if (!result.ok) {
|
|
28469
|
-
|
|
28744
|
+
setAuthNotice(describeAccountError(result.error.message, language));
|
|
28470
28745
|
return;
|
|
28471
28746
|
}
|
|
28472
28747
|
setPassword("");
|
|
28473
28748
|
load(true);
|
|
28474
28749
|
}, (error) => {
|
|
28475
|
-
|
|
28750
|
+
setAuthNotice(describeAccountError(error instanceof Error ? error.message : String(error), language));
|
|
28751
|
+
}).finally(() => {
|
|
28752
|
+
setAuthBusy(void 0);
|
|
28476
28753
|
});
|
|
28477
28754
|
};
|
|
28478
28755
|
/** Registration and MFA live in their own forms now, so both need an
|
|
@@ -28490,21 +28767,96 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
28490
28767
|
* resend button cannot be hammered into the upstream rate limit. */
|
|
28491
28768
|
const sendAccountVerifyCode = () => {
|
|
28492
28769
|
if (sendVerifyCode === void 0 || verifySending || verifyCooldown > 0) return;
|
|
28770
|
+
setAuthNotice(void 0);
|
|
28493
28771
|
setVerifySending(true);
|
|
28494
28772
|
sendVerifyCode(email).then((result) => {
|
|
28495
28773
|
if (!result.ok) {
|
|
28496
|
-
|
|
28774
|
+
setAuthNotice(describeAccountError(result.error.message, language));
|
|
28497
28775
|
if (/too frequent|rate.?limit/i.test(result.error.message)) setVerifyCooldown(60);
|
|
28498
28776
|
return;
|
|
28499
28777
|
}
|
|
28500
28778
|
setVerifyCooldown(result.value.countdown > 0 ? result.value.countdown : 60);
|
|
28501
28779
|
}, (error) => {
|
|
28502
|
-
|
|
28780
|
+
setAuthNotice(describeAccountError(error instanceof Error ? error.message : String(error), language));
|
|
28503
28781
|
}).finally(() => {
|
|
28504
28782
|
setVerifySending(false);
|
|
28505
28783
|
});
|
|
28506
28784
|
};
|
|
28507
28785
|
/**
|
|
28786
|
+
* Ask the gateway to mail the password-reset code.
|
|
28787
|
+
*
|
|
28788
|
+
* This is the code channel an *existing* account has: the registration one
|
|
28789
|
+
* refuses a registered address outright, which is what left a returning user
|
|
28790
|
+
* with no way forward from the 注册 tab.
|
|
28791
|
+
*/
|
|
28792
|
+
const sendResetCode = () => {
|
|
28793
|
+
if (forgotPassword === void 0 || resetSending || resetCooldown > 0) return;
|
|
28794
|
+
const target = email.trim();
|
|
28795
|
+
if (target === "") {
|
|
28796
|
+
setAuthNotice(language === "zh" ? "请先填写邮箱,再获取重置验证码。" : "Enter the address first, then request the reset code.");
|
|
28797
|
+
return;
|
|
28798
|
+
}
|
|
28799
|
+
setAuthNotice(void 0);
|
|
28800
|
+
setResetSending(true);
|
|
28801
|
+
forgotPassword(target).then((result) => {
|
|
28802
|
+
if (!result.ok) {
|
|
28803
|
+
setAuthNotice(describeAccountError(result.error.message, language));
|
|
28804
|
+
if (/too frequent|rate.?limit/i.test(result.error.message)) setResetCooldown(60);
|
|
28805
|
+
return;
|
|
28806
|
+
}
|
|
28807
|
+
setResetCooldown(60);
|
|
28808
|
+
setAuthNotice(language === "zh" ? "若该邮箱已注册,重置验证码已发送;请查收邮件后填写验证码与新密码。" : "If that address has an account, a reset code is on its way — enter the code and a new password below.");
|
|
28809
|
+
}, (error) => {
|
|
28810
|
+
setAuthNotice(describeAccountError(error instanceof Error ? error.message : String(error), language));
|
|
28811
|
+
}).finally(() => {
|
|
28812
|
+
setResetSending(false);
|
|
28813
|
+
});
|
|
28814
|
+
};
|
|
28815
|
+
/**
|
|
28816
|
+
* Replace the password, then hand the user back to the sign-in form.
|
|
28817
|
+
*
|
|
28818
|
+
* The reset is deliberately not a sign-in: the gateway issues no session for
|
|
28819
|
+
* it, so promising one would leave the card showing an account the Host does
|
|
28820
|
+
* not have. The new password is cleared from state the moment the gateway
|
|
28821
|
+
* accepts it, and the login form keeps the address.
|
|
28822
|
+
*/
|
|
28823
|
+
const submitResetPassword = (event) => {
|
|
28824
|
+
event.preventDefault();
|
|
28825
|
+
if (resetPassword === void 0 || resetBusy) return;
|
|
28826
|
+
const target = email.trim();
|
|
28827
|
+
const code = resetCode.trim();
|
|
28828
|
+
if (target === "") {
|
|
28829
|
+
setAuthNotice(language === "zh" ? "请先填写邮箱。" : "Enter the email address first.");
|
|
28830
|
+
return;
|
|
28831
|
+
}
|
|
28832
|
+
if (code === "") {
|
|
28833
|
+
setAuthNotice(language === "zh" ? "请填写邮件里的重置验证码。" : "Enter the reset code from the email.");
|
|
28834
|
+
return;
|
|
28835
|
+
}
|
|
28836
|
+
setAuthNotice(void 0);
|
|
28837
|
+
setResetBusy(true);
|
|
28838
|
+
resetPassword({
|
|
28839
|
+
email: target,
|
|
28840
|
+
verifyCode: code,
|
|
28841
|
+
newPassword: resetSecret
|
|
28842
|
+
}).then((result) => {
|
|
28843
|
+
if (!result.ok) {
|
|
28844
|
+
setAuthNotice(describeAccountError(result.error.message, language));
|
|
28845
|
+
return;
|
|
28846
|
+
}
|
|
28847
|
+
setResetSecret("");
|
|
28848
|
+
setResetCode("");
|
|
28849
|
+
setPassword("");
|
|
28850
|
+
setResetOpen(false);
|
|
28851
|
+
setAuthTab("login");
|
|
28852
|
+
setAuthNotice(language === "zh" ? "密码已重置,请用新密码登录。" : "Password reset. Sign in with the new password.");
|
|
28853
|
+
}, (error) => {
|
|
28854
|
+
setAuthNotice(describeAccountError(error instanceof Error ? error.message : String(error), language));
|
|
28855
|
+
}).finally(() => {
|
|
28856
|
+
setResetBusy(false);
|
|
28857
|
+
});
|
|
28858
|
+
};
|
|
28859
|
+
/**
|
|
28508
28860
|
* Federated sign-in. One code path serves both the placeholder and the real
|
|
28509
28861
|
* interface: until the Host exposes its OAuth endpoints it rejects with
|
|
28510
28862
|
* `OAUTH_NOT_WIRED`, which is explained in place rather than looking like a
|
|
@@ -29619,6 +29971,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
29619
29971
|
update: headroomUpdate,
|
|
29620
29972
|
language
|
|
29621
29973
|
}),
|
|
29974
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(MediaGenerationPanel, {
|
|
29975
|
+
status: mediaGenerationStatus,
|
|
29976
|
+
setEnabled: mediaGenerationSetEnabled,
|
|
29977
|
+
language
|
|
29978
|
+
}),
|
|
29622
29979
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeferredToolsPanel, {
|
|
29623
29980
|
status: deferredToolsStatus,
|
|
29624
29981
|
setEnabled: deferredToolsSetEnabled,
|
|
@@ -31181,6 +31538,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31181
31538
|
"aria-selected": authTab === "login",
|
|
31182
31539
|
onClick: () => {
|
|
31183
31540
|
setAuthTab("login");
|
|
31541
|
+
setAuthNotice(void 0);
|
|
31184
31542
|
},
|
|
31185
31543
|
children: t("login")
|
|
31186
31544
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
@@ -31190,6 +31548,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31190
31548
|
"aria-selected": authTab === "register",
|
|
31191
31549
|
onClick: () => {
|
|
31192
31550
|
setAuthTab("register");
|
|
31551
|
+
setAuthNotice(void 0);
|
|
31193
31552
|
},
|
|
31194
31553
|
children: t("register")
|
|
31195
31554
|
})]
|
|
@@ -31359,6 +31718,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31359
31718
|
role: "status",
|
|
31360
31719
|
children: oauthNotice
|
|
31361
31720
|
}),
|
|
31721
|
+
authNotice === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
31722
|
+
className: settings_tab_module_css_default.authNoticeAlert,
|
|
31723
|
+
role: "alert",
|
|
31724
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: authNotice }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
31725
|
+
className: settings_tab_module_css_default.button,
|
|
31726
|
+
type: "button",
|
|
31727
|
+
onClick: () => {
|
|
31728
|
+
setAuthNotice(void 0);
|
|
31729
|
+
},
|
|
31730
|
+
children: language === "zh" ? "知道了" : "Dismiss"
|
|
31731
|
+
})]
|
|
31732
|
+
}),
|
|
31362
31733
|
state.account.status === "mfa-required" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
|
|
31363
31734
|
className: settings_tab_module_css_default.authStack,
|
|
31364
31735
|
onSubmit: submitMfaCode,
|
|
@@ -31429,13 +31800,81 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31429
31800
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
31430
31801
|
className: `${settings_tab_module_css_default.authSubmit} ${settings_tab_module_css_default.authFull}`,
|
|
31431
31802
|
type: "submit",
|
|
31432
|
-
|
|
31803
|
+
disabled: authBusy !== void 0,
|
|
31804
|
+
"aria-busy": authBusy === "register",
|
|
31805
|
+
children: authBusy === "register" ? language === "zh" ? "注册中…" : "Creating account…" : language === "zh" ? "注册并登录" : "Create account"
|
|
31433
31806
|
}),
|
|
31434
31807
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
31435
31808
|
className: `${settings_tab_module_css_default.authNote} ${settings_tab_module_css_default.authFull}`,
|
|
31436
31809
|
children: language === "zh" ? "注册成功后本机自动登录,免费账号即可调度全部免费模型。" : "A free account signs in automatically and can run every free model."
|
|
31437
31810
|
})
|
|
31438
31811
|
]
|
|
31812
|
+
}) : resetOpen && forgotPassword !== void 0 && resetPassword !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
|
|
31813
|
+
className: settings_tab_module_css_default.authForm,
|
|
31814
|
+
onSubmit: submitResetPassword,
|
|
31815
|
+
children: [
|
|
31816
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
31817
|
+
className: settings_tab_module_css_default.input,
|
|
31818
|
+
type: "email",
|
|
31819
|
+
required: true,
|
|
31820
|
+
value: email,
|
|
31821
|
+
onChange: (event) => {
|
|
31822
|
+
setEmail(event.target.value);
|
|
31823
|
+
},
|
|
31824
|
+
placeholder: t("email"),
|
|
31825
|
+
autoComplete: "email"
|
|
31826
|
+
}),
|
|
31827
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
31828
|
+
className: settings_tab_module_css_default.authCodeRow,
|
|
31829
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
31830
|
+
className: settings_tab_module_css_default.input,
|
|
31831
|
+
value: resetCode,
|
|
31832
|
+
onChange: (event) => {
|
|
31833
|
+
setResetCode(event.target.value);
|
|
31834
|
+
},
|
|
31835
|
+
placeholder: language === "zh" ? "重置验证码" : "Reset code",
|
|
31836
|
+
autoComplete: "one-time-code"
|
|
31837
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
31838
|
+
className: settings_tab_module_css_default.authCodeSend,
|
|
31839
|
+
type: "button",
|
|
31840
|
+
disabled: resetSending || resetCooldown > 0,
|
|
31841
|
+
onClick: sendResetCode,
|
|
31842
|
+
children: resetCooldown > 0 ? `${resetCooldown}s` : resetSending ? language === "zh" ? "发送中…" : "Sending…" : language === "zh" ? "发送重置码" : "Send code"
|
|
31843
|
+
})]
|
|
31844
|
+
}),
|
|
31845
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
31846
|
+
className: `${settings_tab_module_css_default.input} ${settings_tab_module_css_default.authFull}`,
|
|
31847
|
+
type: "password",
|
|
31848
|
+
required: true,
|
|
31849
|
+
minLength: 6,
|
|
31850
|
+
value: resetSecret,
|
|
31851
|
+
onChange: (event) => {
|
|
31852
|
+
setResetSecret(event.target.value);
|
|
31853
|
+
},
|
|
31854
|
+
placeholder: language === "zh" ? "新密码(至少 6 位)" : "New password (6+ characters)",
|
|
31855
|
+
autoComplete: "new-password"
|
|
31856
|
+
}),
|
|
31857
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
31858
|
+
className: `${settings_tab_module_css_default.authSubmit} ${settings_tab_module_css_default.authFull}`,
|
|
31859
|
+
type: "submit",
|
|
31860
|
+
disabled: resetBusy || resetSecret === "",
|
|
31861
|
+
"aria-busy": resetBusy,
|
|
31862
|
+
children: resetBusy ? language === "zh" ? "重置中…" : "Resetting…" : language === "zh" ? "重置密码" : "Reset password"
|
|
31863
|
+
}),
|
|
31864
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
31865
|
+
className: `${settings_tab_module_css_default.authTab} ${settings_tab_module_css_default.authFull}`,
|
|
31866
|
+
type: "button",
|
|
31867
|
+
onClick: () => {
|
|
31868
|
+
setResetOpen(false);
|
|
31869
|
+
setAuthNotice(void 0);
|
|
31870
|
+
},
|
|
31871
|
+
children: language === "zh" ? "返回登录" : "Back to sign-in"
|
|
31872
|
+
}),
|
|
31873
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
31874
|
+
className: `${settings_tab_module_css_default.authNote} ${settings_tab_module_css_default.authFull}`,
|
|
31875
|
+
children: language === "zh" ? "重置验证码与注册验证码不是同一个:注册码只发给未注册的邮箱,已注册的账号请用这里的「发送重置码」。" : "The reset code is not the registration code: the registration channel refuses an address that already has an account, which is what this one is for."
|
|
31876
|
+
})
|
|
31877
|
+
]
|
|
31439
31878
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("form", {
|
|
31440
31879
|
className: settings_tab_module_css_default.authForm,
|
|
31441
31880
|
onSubmit: submitLogin,
|
|
@@ -31499,7 +31938,18 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31499
31938
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
31500
31939
|
className: `${settings_tab_module_css_default.authSubmit} ${settings_tab_module_css_default.authFull}`,
|
|
31501
31940
|
type: "submit",
|
|
31502
|
-
|
|
31941
|
+
disabled: authBusy !== void 0,
|
|
31942
|
+
"aria-busy": authBusy === "login",
|
|
31943
|
+
children: authBusy === "login" ? language === "zh" ? "登录中…" : "Signing in…" : t("login")
|
|
31944
|
+
}),
|
|
31945
|
+
forgotPassword === void 0 || resetPassword === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
31946
|
+
className: `${settings_tab_module_css_default.authTab} ${settings_tab_module_css_default.authFull}`,
|
|
31947
|
+
type: "button",
|
|
31948
|
+
onClick: () => {
|
|
31949
|
+
setResetOpen(true);
|
|
31950
|
+
setAuthNotice(void 0);
|
|
31951
|
+
},
|
|
31952
|
+
children: language === "zh" ? "忘记密码?" : "Forgot your password?"
|
|
31503
31953
|
}),
|
|
31504
31954
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
31505
31955
|
className: `${settings_tab_module_css_default.authNote} ${settings_tab_module_css_default.authFull}`,
|
|
@@ -31932,7 +32382,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31932
32382
|
}),
|
|
31933
32383
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
31934
32384
|
className: settings_tab_module_css_default.sectionMeta,
|
|
31935
|
-
children: "
|
|
32385
|
+
children: "默认开启。安装或加载第三方 DSH 插件时,系统会在该插件启动前检查重复 Tool、命令、设置 namespace、HTTP 路由、模型 Provider 和界面 Slot。冲突时以官方本体的插件优先:本插件自带的同名实现会让位;其余情况保留先启用的插件,并自动停用后加载的冲突条目。"
|
|
31936
32386
|
}),
|
|
31937
32387
|
loadError === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
31938
32388
|
className: settings_tab_module_css_default.alert,
|
|
@@ -31941,7 +32391,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
31941
32391
|
}),
|
|
31942
32392
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
31943
32393
|
className: settings_tab_module_css_default.extensionRow,
|
|
31944
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: "自动修复冲突" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: "
|
|
32394
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: "自动修复冲突" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: "默认开启:重复注册由本体自己的注册校验报告,冲突的第三方插件可能因此启动失败。开启时本插件会在冲突插件启动前停用它;关闭后本插件不再拦截任何条目的启动。" })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
31945
32395
|
className: settings_tab_module_css_default.switch,
|
|
31946
32396
|
"aria-label": "自动修复插件冲突",
|
|
31947
32397
|
type: "checkbox",
|
|
@@ -32783,6 +33233,206 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
32783
33233
|
* request. Without a readout, a user cannot tell whether the switch did
|
|
32784
33234
|
* anything, and the numbers are the whole argument for leaving it on.
|
|
32785
33235
|
*/
|
|
33236
|
+
/**
|
|
33237
|
+
* The image and video generation switch.
|
|
33238
|
+
*
|
|
33239
|
+
* It documents the routes as well as the tools, because the question a user arrives
|
|
33240
|
+
* with is "can this draw me a picture, and with what?" — and the answer is a property
|
|
33241
|
+
* of the providers they configured, not of this plugin's source. The two name lists
|
|
33242
|
+
* come from the Host: `gated` is what the switch owns and `registered` is what this
|
|
33243
|
+
* profile actually mounted, so a profile with no Agnes account is not described as
|
|
33244
|
+
* missing tools it never had.
|
|
33245
|
+
*/
|
|
33246
|
+
function MediaGenerationPanel(input) {
|
|
33247
|
+
const isZh = input.language === "zh";
|
|
33248
|
+
const [snapshot, setSnapshot] = (0, react.useState)(void 0);
|
|
33249
|
+
const [busy, setBusy] = (0, react.useState)(false);
|
|
33250
|
+
const [error, setError] = (0, react.useState)(void 0);
|
|
33251
|
+
const refresh = () => {
|
|
33252
|
+
if (input.status === void 0) return;
|
|
33253
|
+
input.status().then((result) => {
|
|
33254
|
+
if (result.ok) setSnapshot(result.value);
|
|
33255
|
+
}).catch(() => void 0);
|
|
33256
|
+
};
|
|
33257
|
+
(0, react.useEffect)(() => {
|
|
33258
|
+
refresh();
|
|
33259
|
+
}, [input.status]);
|
|
33260
|
+
const toggle = (enabled) => {
|
|
33261
|
+
if (input.setEnabled === void 0) return;
|
|
33262
|
+
setBusy(true);
|
|
33263
|
+
setError(void 0);
|
|
33264
|
+
input.setEnabled(enabled).then((result) => {
|
|
33265
|
+
if (result.ok) setSnapshot(result.value);
|
|
33266
|
+
else {
|
|
33267
|
+
setError(result.error.message);
|
|
33268
|
+
refresh();
|
|
33269
|
+
}
|
|
33270
|
+
}).catch((reason) => {
|
|
33271
|
+
setError(reason instanceof Error ? reason.message : String(reason));
|
|
33272
|
+
refresh();
|
|
33273
|
+
}).finally(() => {
|
|
33274
|
+
setBusy(false);
|
|
33275
|
+
});
|
|
33276
|
+
};
|
|
33277
|
+
/**
|
|
33278
|
+
* The wire protocol each provider family is spoken to with.
|
|
33279
|
+
*
|
|
33280
|
+
* Kept beside the switch rather than only in the README because the useful question
|
|
33281
|
+
* is "does *my* provider have a route here?", and that is answered by matching the
|
|
33282
|
+
* id the user typed into the Harness model page. The protocol is chosen from the
|
|
33283
|
+
* provider, never from the model name: a model whose id contains "video" is still
|
|
33284
|
+
* served the way its provider serves it.
|
|
33285
|
+
*/
|
|
33286
|
+
const videoProtocols = [
|
|
33287
|
+
["kling / kuaishou / 可灵", "/videos/text2video · image2video · multi-image2video → 同路径 + {id} · HS256 JWT · 5 或 10 秒"],
|
|
33288
|
+
["volcengine / ark / seedance / doubao", "/contents/generations/tasks → /contents/generations/tasks/{id}"],
|
|
33289
|
+
["dashscope / aliyun / qwen / wanx", "/api/v1/services/aigc/video-generation/video-synthesis(需 X-DashScope-Async: enable)→ /api/v1/tasks/{id}"],
|
|
33290
|
+
["minimax / hailuo", "/v2/video_generation → /v2/query/video_generation/{id}"],
|
|
33291
|
+
["vidu", "/ent/v2/text2video · img2video · start-end2video · reference2video → /ent/v2/tasks/{id}/creations · Authorization: Token"],
|
|
33292
|
+
["google / gemini(Veo)", "/models/{model}:predictLongRunning → operation name"],
|
|
33293
|
+
["xai / grok", "/videos/generations → /videos(给源视频时 /videos/edits · /videos/extensions)· 2–10 秒"],
|
|
33294
|
+
["openai", "/videos → /videos/{id}"],
|
|
33295
|
+
["网关与任何未识别 provider", "/videos/generations → /videos/generations/{id}"]
|
|
33296
|
+
];
|
|
33297
|
+
const imageProtocols = [
|
|
33298
|
+
["openai / grok / 网关 / 未识别 provider", "/images/generations;带参考图改走 /images/edits"],
|
|
33299
|
+
["volcengine / ark / seedance / doubao", "仍是 /images/generations,源图放 image: [...](Seedream 融合形状)"],
|
|
33300
|
+
["google / gemini", "/models/{model}:generateContent,responseModalities: [TEXT, IMAGE]"],
|
|
33301
|
+
["google / gemini + 模型名含 imagen", "/models/{model}:predict,源图必须内联 base64"],
|
|
33302
|
+
["dashscope / qwen / aliyun", "/api/v1/services/aigc/multimodal-generation/generation,size 写作 2048*2048"]
|
|
33303
|
+
];
|
|
33304
|
+
const protocolPanel = (title, rows) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
|
|
33305
|
+
className: settings_tab_module_css_default.details,
|
|
33306
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("summary", {
|
|
33307
|
+
className: settings_tab_module_css_default.detailsSummary,
|
|
33308
|
+
children: title
|
|
33309
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
33310
|
+
style: {
|
|
33311
|
+
display: "grid",
|
|
33312
|
+
gap: 6,
|
|
33313
|
+
padding: "8px 0"
|
|
33314
|
+
},
|
|
33315
|
+
children: rows.map(([provider, endpoint]) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [
|
|
33316
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: provider }),
|
|
33317
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("br", {}),
|
|
33318
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("code", { children: endpoint })
|
|
33319
|
+
] }, provider))
|
|
33320
|
+
})]
|
|
33321
|
+
});
|
|
33322
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
33323
|
+
className: settings_tab_module_css_default.section,
|
|
33324
|
+
children: [
|
|
33325
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
33326
|
+
className: settings_tab_module_css_default.sectionHeader,
|
|
33327
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
33328
|
+
className: settings_tab_module_css_default.kicker,
|
|
33329
|
+
children: "MEDIA"
|
|
33330
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", {
|
|
33331
|
+
className: settings_tab_module_css_default.sectionName,
|
|
33332
|
+
children: isZh ? "生图与视频" : "Image and video generation"
|
|
33333
|
+
})] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
33334
|
+
className: `${settings_tab_module_css_default.badge} ${snapshot?.enabled ? settings_tab_module_css_default.badgeLive : ""}`,
|
|
33335
|
+
children: snapshot?.enabled ? isZh ? "已开启" : "On" : isZh ? "已关闭" : "Off"
|
|
33336
|
+
})]
|
|
33337
|
+
}),
|
|
33338
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
33339
|
+
className: settings_tab_module_css_default.sectionMeta,
|
|
33340
|
+
children: isZh ? "默认开启。开启后,AI 可以按「默认模型」里的图片/视频选择为你直接生成图片和视频;默认模型在设置 → 模型分类的下拉框里选。关掉它,这组工具会从模型工具表里整体消失(不是调用时报错),前提是这几份 JSONSchema 每步都随请求重发,而多数回合用不上。生音频与转写不受这个开关影响:一个往工作区写文件,一个从工作区读文件。" : "On by default. With it on, the model can generate images and videos for you using the defaults chosen under Settings → Model categories. Turning it off removes the whole group from the model's tool list instead of failing the call: those JSONSchemas ride along with every request and most turns never use them. Audio generation and transcription are deliberately outside this switch — one writes a file into the workspace and the other reads one out of it."
|
|
33341
|
+
}),
|
|
33342
|
+
error === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
33343
|
+
className: settings_tab_module_css_default.alert,
|
|
33344
|
+
role: "alert",
|
|
33345
|
+
children: isZh ? `开关未能保存:${error}` : `The switch was not saved: ${error}`
|
|
33346
|
+
}),
|
|
33347
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
33348
|
+
className: settings_tab_module_css_default.extensionRow,
|
|
33349
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: isZh ? "启用生图与生视频" : "Enable image and video generation" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", { children: isZh ? "开关本身就是模型的可见性:关闭后这些工具不会被注册,因此不可能出现「看得见却调不动」;重新打开即刻恢复。" : "The switch *is* visibility: with it off these tools are not registered at all, so the model can never see one it cannot call. Turning it back on restores them immediately." })] }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
33350
|
+
className: settings_tab_module_css_default.switch,
|
|
33351
|
+
"aria-label": isZh ? "启用生图与生视频" : "Enable image and video generation",
|
|
33352
|
+
type: "checkbox",
|
|
33353
|
+
checked: snapshot?.enabled === true,
|
|
33354
|
+
onChange: (event) => {
|
|
33355
|
+
toggle(event.target.checked);
|
|
33356
|
+
},
|
|
33357
|
+
disabled: input.setEnabled === void 0 || busy
|
|
33358
|
+
})]
|
|
33359
|
+
}),
|
|
33360
|
+
snapshot === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
33361
|
+
className: settings_tab_module_css_default.statGrid,
|
|
33362
|
+
children: [
|
|
33363
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
33364
|
+
className: settings_tab_module_css_default.statCell,
|
|
33365
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
33366
|
+
className: settings_tab_module_css_default.statLabel,
|
|
33367
|
+
children: isZh ? "开关管辖" : "Governed"
|
|
33368
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", {
|
|
33369
|
+
className: settings_tab_module_css_default.statValue,
|
|
33370
|
+
children: snapshot.gated.length
|
|
33371
|
+
})]
|
|
33372
|
+
}),
|
|
33373
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
33374
|
+
className: settings_tab_module_css_default.statCell,
|
|
33375
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
33376
|
+
className: settings_tab_module_css_default.statLabel,
|
|
33377
|
+
children: isZh ? "当前已注册" : "Registered now"
|
|
33378
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", {
|
|
33379
|
+
className: settings_tab_module_css_default.statValue,
|
|
33380
|
+
children: snapshot.registered.length
|
|
33381
|
+
})]
|
|
33382
|
+
}),
|
|
33383
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
33384
|
+
className: settings_tab_module_css_default.statCell,
|
|
33385
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("small", {
|
|
33386
|
+
className: settings_tab_module_css_default.statLabel,
|
|
33387
|
+
children: isZh ? "生音频 / 转写(另计)" : "Audio / transcribe (separate)"
|
|
33388
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", {
|
|
33389
|
+
className: settings_tab_module_css_default.statValue,
|
|
33390
|
+
children: 2
|
|
33391
|
+
})]
|
|
33392
|
+
})
|
|
33393
|
+
]
|
|
33394
|
+
}),
|
|
33395
|
+
snapshot === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
|
|
33396
|
+
className: settings_tab_module_css_default.details,
|
|
33397
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("summary", {
|
|
33398
|
+
className: settings_tab_module_css_default.detailsSummary,
|
|
33399
|
+
children: isZh ? `管辖的工具(${snapshot.gated.length} 个)` : `Tools this switch governs (${snapshot.gated.length})`
|
|
33400
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
33401
|
+
className: settings_tab_module_css_default.chipGrid,
|
|
33402
|
+
children: snapshot.gated.map((name) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
33403
|
+
className: settings_tab_module_css_default.statChip,
|
|
33404
|
+
children: [name, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", { children: snapshot.registered.includes(name) ? isZh ? "已注册" : "registered" : isZh ? "未注册" : "absent" })]
|
|
33405
|
+
}, name))
|
|
33406
|
+
})]
|
|
33407
|
+
}),
|
|
33408
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
|
|
33409
|
+
className: settings_tab_module_css_default.sectionMeta,
|
|
33410
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("summary", {
|
|
33411
|
+
style: {
|
|
33412
|
+
cursor: "pointer",
|
|
33413
|
+
margin: "8px 0"
|
|
33414
|
+
},
|
|
33415
|
+
children: isZh ? "支持哪些协议和模型?" : "Which protocols and models are supported?"
|
|
33416
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
33417
|
+
style: {
|
|
33418
|
+
display: "grid",
|
|
33419
|
+
gap: 8,
|
|
33420
|
+
padding: "8px 0"
|
|
33421
|
+
},
|
|
33422
|
+
children: [
|
|
33423
|
+
protocolPanel(isZh ? "生视频:按 provider 选的 9 条协议" : "Video: nine protocols, chosen by provider", videoProtocols),
|
|
33424
|
+
protocolPanel(isZh ? "生图:按 provider 选的 5 条协议" : "Image: five protocols, chosen by provider", imageProtocols),
|
|
33425
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", { children: [
|
|
33426
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("strong", { children: isZh ? "模型名单是活的,不是钉死的" : "The model roster is live, not pinned" }),
|
|
33427
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("br", {}),
|
|
33428
|
+
isZh ? "候选路线每次请求实时汇总四路来源:Harness「模型」页里你配置的提供商、托管目录、Logfare 目录、Agnes 目录。分类按名字自动识别(veo / seedance / kling / sora / wan → 视频;gpt-image / dall-e / imagen / flux / sdxl / stable-diffusion → 生图),也可以用上面的「模型分类」手动指定或改回去。调用带逐路线熔断:同一路线连续两次失败就先让位给健康路线五分钟;只有「路线本身的问题」(限流、额度、端点缺失)才降级到下一条,密钥错或 prompt 被拒会直接报错,不会换一条路线重复付费。" : "Routes are collected live on every request from four sources: the providers you configured on the Harness Models page, the managed catalog, the Logfare directory, and the Agnes directory. Categories are inferred from the id (veo / seedance / kling / sora / wan → video; gpt-image / dall-e / imagen / flux / sdxl / stable-diffusion → image) and can be overridden by hand in Model categories above. Every call carries a per-route breaker: two consecutive failures put that route behind healthy ones for five minutes, and only a route's own problem (rate limit, quota, missing endpoint) falls through to the next one — a wrong key or a refused prompt fails outright rather than paying for another attempt."
|
|
33429
|
+
] })
|
|
33430
|
+
]
|
|
33431
|
+
})]
|
|
33432
|
+
})
|
|
33433
|
+
]
|
|
33434
|
+
});
|
|
33435
|
+
}
|
|
32786
33436
|
function DeferredToolsPanel(input) {
|
|
32787
33437
|
const isZh = input.language === "zh";
|
|
32788
33438
|
const [snapshot, setSnapshot] = (0, react.useState)(void 0);
|
|
@@ -35992,14 +36642,107 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
35992
36642
|
return order?.state.trim().toLowerCase() === "pending";
|
|
35993
36643
|
}
|
|
35994
36644
|
//#endregion
|
|
36645
|
+
//#region src/client/session-delete-menu-item.tsx
|
|
36646
|
+
/**
|
|
36647
|
+
* The session row menu's destructive entry: delete this conversation.
|
|
36648
|
+
*
|
|
36649
|
+
* The hover control beside a row already deletes directly (see
|
|
36650
|
+
* {@link ./session-delete-overlay}), but that control only exists while a
|
|
36651
|
+
* pointer is over the row — it is invisible on touch, awkward on a trackpad, and
|
|
36652
|
+
* a user who opened the "..." menu has no way to reach it. So the same action
|
|
36653
|
+
* gets a named row, placed after Archive (`order` 500, where the shipped rows
|
|
36654
|
+
* step by 100), and it is the row this plugin's delete capability governs.
|
|
36655
|
+
*
|
|
36656
|
+
* Two behaviours are shared with the overlay rather than restated:
|
|
36657
|
+
*
|
|
36658
|
+
* - **The failure is reported once.** Deleting from the menu closes the menu
|
|
36659
|
+
* first, so the row that would say "it failed" is gone. The row therefore
|
|
36660
|
+
* publishes its failure as an event and the overlay — which lives in the
|
|
36661
|
+
* frame-wide layer and outlives any menu — draws it. One surface, two callers.
|
|
36662
|
+
* - **The capability gate is the same switch.** `sessionDeleteEnabled` decides
|
|
36663
|
+
* whether the control exists at all; the row hides itself instead of offering
|
|
36664
|
+
* an action the Host will refuse.
|
|
36665
|
+
*
|
|
36666
|
+
* It also follows the overlay's rule about *which* row may be deleted: the
|
|
36667
|
+
* session on screen is not one of them, because the Host refuses to delete the
|
|
36668
|
+
* session it is holding open. The overlay states that as "its row never shows the
|
|
36669
|
+
* control"; a named row that stayed visible would offer an action that always
|
|
36670
|
+
* fails, so this one is absent for the same session too.
|
|
36671
|
+
*
|
|
36672
|
+
* @module client/session-delete-menu-item
|
|
36673
|
+
*/
|
|
36674
|
+
/**
|
|
36675
|
+
* Carries one failed deletion from the menu row to the overlay that reports it.
|
|
36676
|
+
*
|
|
36677
|
+
* `detail` is the Host's own message: it is the only copy that can name the
|
|
36678
|
+
* refusal (`SESSION_DELETE_REQUIRES_CLOSED_SESSION`, and so on), and the overlay
|
|
36679
|
+
* appends its localized lead-in around it.
|
|
36680
|
+
*/
|
|
36681
|
+
const SESSION_DELETE_FAILED_EVENT = "freecodego:session-delete-failed";
|
|
36682
|
+
/**
|
|
36683
|
+
* Publish one failed deletion to whichever surface reports it.
|
|
36684
|
+
*
|
|
36685
|
+
* Dispatched on `globalThis` rather than passed down: the overlay is a sibling
|
|
36686
|
+
* registration in another slot and has no prop path from here.
|
|
36687
|
+
* @param message - the Host's refusal text.
|
|
36688
|
+
*/
|
|
36689
|
+
function reportSessionDeleteFailure(message) {
|
|
36690
|
+
globalThis.dispatchEvent(new CustomEvent(SESSION_DELETE_FAILED_EVENT, { detail: message }));
|
|
36691
|
+
}
|
|
36692
|
+
/**
|
|
36693
|
+
* Render the destructive menu row, or nothing while the capability is off.
|
|
36694
|
+
* @param props - the row identity, the delete share, and the locale seat.
|
|
36695
|
+
* @returns the menu row, or null.
|
|
36696
|
+
*/
|
|
36697
|
+
function SessionDeleteMenuItem({ sessionId, useMenuOpenState, deleteSession, isEnabled, currentSessionId, t }) {
|
|
36698
|
+
const open = currentSessionId?.();
|
|
36699
|
+
const [, setMenuOpen] = useMenuOpenState();
|
|
36700
|
+
const [enabled, setEnabled] = (0, react.useState)(true);
|
|
36701
|
+
(0, react.useEffect)(() => {
|
|
36702
|
+
if (isEnabled === void 0) return;
|
|
36703
|
+
let active = true;
|
|
36704
|
+
isEnabled().then((value) => {
|
|
36705
|
+
if (active) setEnabled(value);
|
|
36706
|
+
}, () => void 0);
|
|
36707
|
+
return () => {
|
|
36708
|
+
active = false;
|
|
36709
|
+
};
|
|
36710
|
+
}, [isEnabled]);
|
|
36711
|
+
(0, react.useEffect)(() => {
|
|
36712
|
+
const changed = (event) => {
|
|
36713
|
+
if (!(event instanceof CustomEvent)) return;
|
|
36714
|
+
const snapshot = event.detail;
|
|
36715
|
+
setEnabled(snapshot.sessionDeleteEnabled !== false);
|
|
36716
|
+
};
|
|
36717
|
+
globalThis.addEventListener(CAPABILITY_CHANGE_EVENT, changed);
|
|
36718
|
+
return () => {
|
|
36719
|
+
globalThis.removeEventListener(CAPABILITY_CHANGE_EVENT, changed);
|
|
36720
|
+
};
|
|
36721
|
+
}, []);
|
|
36722
|
+
if (!enabled || open !== void 0 && open === sessionId) return null;
|
|
36723
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.MenuItemButton, {
|
|
36724
|
+
danger: true,
|
|
36725
|
+
icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 14 }),
|
|
36726
|
+
onSelect: () => {
|
|
36727
|
+
setMenuOpen(false);
|
|
36728
|
+
deleteSession(sessionId).catch((error) => {
|
|
36729
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
36730
|
+
console.error("FreeCodeGo session deletion failed:", error);
|
|
36731
|
+
reportSessionDeleteFailure(message);
|
|
36732
|
+
});
|
|
36733
|
+
},
|
|
36734
|
+
children: t("sessionDelete")
|
|
36735
|
+
});
|
|
36736
|
+
}
|
|
36737
|
+
//#endregion
|
|
35995
36738
|
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/toolbar-actions.module.css.mjs
|
|
35996
|
-
const css$
|
|
35997
|
-
const tagId$
|
|
35998
|
-
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$
|
|
36739
|
+
const css$4 = "._0YUfBa_action,._0YUfBa_engine{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);min-height:28px;color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);align-items:center;gap:6px;display:inline-flex}._0YUfBa_action{cursor:pointer;padding:0 9px}._0YUfBa_action:hover{color:var(--fcg-text-primary);background:var(--fcg-bg-hover)}._0YUfBa_sessionDeleteOverlay{z-index:60;line-height:0;position:fixed}._0YUfBa_sessionDeleteError{z-index:61;border:1px solid color-mix(in srgb, var(--fcg-danger) 28%, transparent);border-radius:var(--fcg-radius-sm);background:color-mix(in srgb, var(--fcg-danger) 7%, var(--fcg-bg-layer-2));max-width:min(420px,100vw - 24px);color:var(--fcg-danger);font-size:var(--fcg-font-caption);box-shadow:var(--fcg-shadow-2);align-items:center;gap:8px;padding:8px 12px;line-height:18px;display:flex;position:fixed;top:12px;left:50%;transform:translate(-50%)}._0YUfBa_sessionDeleteError span{overflow-wrap:anywhere}._0YUfBa_sessionDeleteError button{color:inherit;cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:15px;line-height:1}._0YUfBa_sessionDelete{width:16px;min-height:16px;color:var(--fcg-danger);background:0 0;border:0;border-radius:4px;padding:0}._0YUfBa_sessionDelete:hover{color:var(--fcg-danger);background:color-mix(in srgb, var(--fcg-danger) 10%, transparent)}._0YUfBa_engine{padding-left:9px}._0YUfBa_engineControl{align-items:center;display:inline-flex;position:relative}._0YUfBa_engineLabel{color:var(--fcg-text-tertiary)}._0YUfBa_engineSelect{color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;outline:0;padding:4px 8px 4px 0}._0YUfBa_execution{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);min-height:24px;color:var(--fcg-text-tertiary);background:var(--fcg-bg-layer-2);font-size:var(--fcg-font-caption);white-space:nowrap;align-items:center;padding:0 8px;display:inline-flex}._0YUfBa_executionNative{border-color:color-mix(in srgb, var(--fcg-success) 42%, var(--fcg-line));color:var(--fcg-success);background:color-mix(in srgb, var(--fcg-success) 7%, var(--fcg-bg-layer-2))}._0YUfBa_engineNotice{z-index:20;border:1px solid color-mix(in srgb, var(--fcg-warn) 45%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:var(--fcg-bg-layer-2);width:248px;color:var(--fcg-text-secondary);box-shadow:var(--fcg-shadow-2);font-size:var(--fcg-font-caption);grid-template-columns:1fr auto;gap:2px 10px;padding:10px 28px 10px 12px;line-height:1.45;display:grid;position:absolute;top:calc(100% + 8px);left:0}._0YUfBa_engineNotice strong{color:var(--fcg-text-primary);font-size:var(--fcg-font-caption)}._0YUfBa_engineNotice span{grid-column:1/-1}._0YUfBa_engineNotice button{color:var(--fcg-text-tertiary);cursor:pointer;background:0 0;border:0;padding:0;font-size:17px;line-height:1;position:absolute;top:6px;right:7px}._0YUfBa_engineError{z-index:20;border:1px solid color-mix(in srgb, var(--fcg-danger) 32%, var(--fcg-line));border-radius:var(--fcg-radius-md);background:color-mix(in srgb, var(--fcg-danger) 7%, var(--fcg-bg-layer-2));width:248px;color:var(--fcg-danger);font-size:var(--fcg-font-caption);box-shadow:var(--fcg-shadow-2);overflow-wrap:anywhere;padding:9px 12px;line-height:1.45;position:absolute;top:calc(100% + 8px);left:0}._0YUfBa_engineError span{display:block}._0YUfBa_engineRetry{border:1px solid color-mix(in srgb, var(--fcg-danger) 32%, var(--fcg-line));border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:inherit;font:inherit;cursor:pointer;margin-top:6px;padding:2px 8px}._0YUfBa_engineRetry:hover{background:color-mix(in srgb, var(--fcg-danger) 12%, var(--fcg-bg-layer-2))}";
|
|
36740
|
+
const tagId$4 = "freecodego/toolbar-actions.module.css";
|
|
36741
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
35999
36742
|
const tag = document.createElement("style");
|
|
36000
36743
|
tag.dataset.plugin = "freecodego";
|
|
36001
|
-
tag.dataset.pluginCss = tagId$
|
|
36002
|
-
tag.textContent = css$
|
|
36744
|
+
tag.dataset.pluginCss = tagId$4;
|
|
36745
|
+
tag.textContent = css$4;
|
|
36003
36746
|
document.head.appendChild(tag);
|
|
36004
36747
|
}
|
|
36005
36748
|
var toolbar_actions_module_css_default = {
|
|
@@ -36065,6 +36808,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36065
36808
|
globalThis.removeEventListener("freecodego:capability-change", changed);
|
|
36066
36809
|
};
|
|
36067
36810
|
}, []);
|
|
36811
|
+
(0, react.useEffect)(() => {
|
|
36812
|
+
const failed = (event) => {
|
|
36813
|
+
if (!(event instanceof CustomEvent)) return;
|
|
36814
|
+
setError(String(event.detail));
|
|
36815
|
+
};
|
|
36816
|
+
globalThis.addEventListener(SESSION_DELETE_FAILED_EVENT, failed);
|
|
36817
|
+
return () => {
|
|
36818
|
+
globalThis.removeEventListener(SESSION_DELETE_FAILED_EVENT, failed);
|
|
36819
|
+
};
|
|
36820
|
+
}, []);
|
|
36068
36821
|
const overlayRef = (0, react.useRef)(null);
|
|
36069
36822
|
(0, react.useEffect)(() => {
|
|
36070
36823
|
let frame;
|
|
@@ -36189,7 +36942,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36189
36942
|
event.stopPropagation();
|
|
36190
36943
|
remove(session.id);
|
|
36191
36944
|
},
|
|
36192
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
36945
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconTrashOutlineRegular, { size: 16 })
|
|
36193
36946
|
})
|
|
36194
36947
|
}, session.id))] });
|
|
36195
36948
|
}
|
|
@@ -36257,6 +37010,374 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36257
37010
|
});
|
|
36258
37011
|
}
|
|
36259
37012
|
//#endregion
|
|
37013
|
+
//#region \0dsh-css:/home/runner/work/dsh-plugin-freecodego/dsh-plugin-freecodego/plugin/packages/freecodego/harness-ui/src/client/web-search-provider-section.module.css.mjs
|
|
37014
|
+
const css$3 = ".i0u2iW_section{border-top:1px solid var(--fcg-line-subtle);gap:6px;padding:16px 0 4px;display:grid}.i0u2iW_head{justify-content:space-between;align-items:center;gap:12px;display:flex}.i0u2iW_title{color:var(--fcg-text-primary);font-size:var(--fcg-font-body-lg);margin:0;font-weight:650;line-height:20px}.i0u2iW_hint{color:var(--fcg-text-tertiary);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.i0u2iW_current{color:var(--fcg-text-secondary);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:18px}.i0u2iW_reset{border:1px solid var(--fcg-line);border-radius:var(--fcg-radius-full);background:var(--fcg-bg-layer-2);color:var(--fcg-text-secondary);font:inherit;font-size:var(--fcg-font-caption);cursor:pointer;padding:2px 10px}.i0u2iW_reset:hover{border-color:var(--fcg-line-strong,var(--fcg-line));color:var(--fcg-text-primary)}.i0u2iW_group{gap:4px;margin-top:6px;display:grid}.i0u2iW_provider{color:var(--fcg-text-tertiary);letter-spacing:.04em;text-transform:uppercase;font-size:11px}.i0u2iW_rows{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:6px;display:grid}.i0u2iW_row{border:1px solid var(--fcg-line-subtle);border-radius:var(--fcg-radius-sm);background:var(--fcg-bg-layer-1);color:var(--fcg-text-secondary);text-align:left;font:inherit;cursor:pointer;grid-template-columns:minmax(0,1fr);gap:1px;padding:6px 10px;display:grid}.i0u2iW_row:hover:not(:disabled){border-color:var(--fcg-line);background:var(--fcg-bg-layer-2)}.i0u2iW_row:disabled{cursor:progress;opacity:.6}.i0u2iW_rowActive{border-color:color-mix(in srgb, var(--fcg-brand) 45%, var(--fcg-line));background:color-mix(in srgb, var(--fcg-brand) 7%, var(--fcg-bg-layer-1));color:var(--fcg-text-primary)}.i0u2iW_rowLabel{color:inherit;font-size:var(--fcg-font-caption);text-overflow:ellipsis;white-space:nowrap;line-height:18px;overflow:hidden}.i0u2iW_rowMeta{color:var(--fcg-text-tertiary);text-overflow:ellipsis;white-space:nowrap;font-size:11px;line-height:15px;overflow:hidden}.i0u2iW_done{color:var(--fcg-success);font-size:var(--fcg-font-caption);margin:0;line-height:18px}.i0u2iW_problem{color:var(--fcg-danger);font-size:var(--fcg-font-caption);overflow-wrap:anywhere;margin:0;line-height:18px}";
|
|
37015
|
+
const tagId$3 = "freecodego/web-search-provider-section.module.css";
|
|
37016
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
37017
|
+
const tag = document.createElement("style");
|
|
37018
|
+
tag.dataset.plugin = "freecodego";
|
|
37019
|
+
tag.dataset.pluginCss = tagId$3;
|
|
37020
|
+
tag.textContent = css$3;
|
|
37021
|
+
document.head.appendChild(tag);
|
|
37022
|
+
}
|
|
37023
|
+
var web_search_provider_section_module_css_default = {
|
|
37024
|
+
"current": "i0u2iW_current",
|
|
37025
|
+
"done": "i0u2iW_done",
|
|
37026
|
+
"group": "i0u2iW_group",
|
|
37027
|
+
"head": "i0u2iW_head",
|
|
37028
|
+
"hint": "i0u2iW_hint",
|
|
37029
|
+
"problem": "i0u2iW_problem",
|
|
37030
|
+
"provider": "i0u2iW_provider",
|
|
37031
|
+
"reset": "i0u2iW_reset",
|
|
37032
|
+
"row": "i0u2iW_row",
|
|
37033
|
+
"rowActive": "i0u2iW_rowActive",
|
|
37034
|
+
"rowLabel": "i0u2iW_rowLabel",
|
|
37035
|
+
"rowMeta": "i0u2iW_rowMeta",
|
|
37036
|
+
"rows": "i0u2iW_rows",
|
|
37037
|
+
"section": "i0u2iW_section",
|
|
37038
|
+
"title": "i0u2iW_title"
|
|
37039
|
+
};
|
|
37040
|
+
//#endregion
|
|
37041
|
+
//#region src/client/web-search-provider-section.tsx
|
|
37042
|
+
/**
|
|
37043
|
+
* The web-search page's missing control: which model answers the search.
|
|
37044
|
+
*
|
|
37045
|
+
* The stock page over `web-search-deepseek` edits the key, the endpoint, and the
|
|
37046
|
+
* search budget, and leaves the model at the schema default (`deepseek-v4-flash`
|
|
37047
|
+
* against DeepSeek's own Anthropic endpoint). That is the one part of the
|
|
37048
|
+
* provider a FreeCodeGo installation wants to change: nobody on this plugin pays
|
|
37049
|
+
* DeepSeek per search, and the routes they do pay for are registered here.
|
|
37050
|
+
*
|
|
37051
|
+
* So this section renders in the page's own detail slot — under its
|
|
37052
|
+
* configuration, where the page's blank lower half is — lists every model this
|
|
37053
|
+
* plugin routes, and writes the choice back into the same settings namespace the
|
|
37054
|
+
* page above edits. Nothing here is a second settings document: the section
|
|
37055
|
+
* reads and writes `web-search-deepseek` through the shared config-form service,
|
|
37056
|
+
* so the stock fields and this list can never disagree.
|
|
37057
|
+
*
|
|
37058
|
+
* The endpoint and the key come from the Host, via `webSearchBind`, because the
|
|
37059
|
+
* route decision and every provider key live there. The client asks for one
|
|
37060
|
+
* route, writes the credential it receives under the reference it is told, and
|
|
37061
|
+
* points the namespace at that reference; a binding that cannot be resolved
|
|
37062
|
+
* leaves the page's own fields untouched and says why.
|
|
37063
|
+
*
|
|
37064
|
+
* @module client/web-search-provider-section
|
|
37065
|
+
*/
|
|
37066
|
+
/**
|
|
37067
|
+
* The settings namespace the stock web-search page owns.
|
|
37068
|
+
*
|
|
37069
|
+
* Spelled here rather than imported: a client package must not depend on a Host
|
|
37070
|
+
* package, and the page spells it the same way for the same reason.
|
|
37071
|
+
*/
|
|
37072
|
+
const WEB_SEARCH_NAMESPACE = "web-search-deepseek";
|
|
37073
|
+
/** Drop a provider prefix so a comparison is about the model, not its spelling. */
|
|
37074
|
+
function bareModelId(id) {
|
|
37075
|
+
return id.trim().replace(/^[a-z0-9_-]+\//iu, "").toLowerCase();
|
|
37076
|
+
}
|
|
37077
|
+
/**
|
|
37078
|
+
* The web-search page's model list, under its own configuration.
|
|
37079
|
+
* @param props - the page's subject plus the reads, writes, and copy.
|
|
37080
|
+
* @returns the section, or null on every other plugin's page.
|
|
37081
|
+
*/
|
|
37082
|
+
function WebSearchProviderSection(props) {
|
|
37083
|
+
const relevant = props.subject?.kind === "item" && props.subject.id === "web-search";
|
|
37084
|
+
const [options, setOptions] = (0, react.useState)(void 0);
|
|
37085
|
+
const [current, setCurrent] = (0, react.useState)(void 0);
|
|
37086
|
+
const [problem, setProblem] = (0, react.useState)(void 0);
|
|
37087
|
+
const [notice, setNotice] = (0, react.useState)(void 0);
|
|
37088
|
+
/** What the liveness check did, when a saved binding needed it. */
|
|
37089
|
+
const [recovery, setRecovery] = (0, react.useState)(void 0);
|
|
37090
|
+
const face = (0, react.useRef)(props);
|
|
37091
|
+
(0, react.useEffect)(() => {
|
|
37092
|
+
face.current = props;
|
|
37093
|
+
});
|
|
37094
|
+
const subscribe = (0, react.useCallback)(() => {
|
|
37095
|
+
const form = face.current.form();
|
|
37096
|
+
if (form === void 0) {
|
|
37097
|
+
setProblem("unavailable");
|
|
37098
|
+
return;
|
|
37099
|
+
}
|
|
37100
|
+
const publish = () => {
|
|
37101
|
+
const snapshot = form.getSnapshot();
|
|
37102
|
+
setCurrent(snapshot.value);
|
|
37103
|
+
setProblem(snapshot.status === "unavailable" ? "unavailable" : void 0);
|
|
37104
|
+
};
|
|
37105
|
+
publish();
|
|
37106
|
+
return form.subscribe(publish);
|
|
37107
|
+
}, []);
|
|
37108
|
+
(0, react.useEffect)(() => {
|
|
37109
|
+
if (!relevant) return;
|
|
37110
|
+
let active = true;
|
|
37111
|
+
const off = subscribe();
|
|
37112
|
+
face.current.models().then((list) => {
|
|
37113
|
+
if (active) setOptions(list);
|
|
37114
|
+
}, () => {
|
|
37115
|
+
if (active) setProblem("offline");
|
|
37116
|
+
});
|
|
37117
|
+
return () => {
|
|
37118
|
+
active = false;
|
|
37119
|
+
off?.();
|
|
37120
|
+
};
|
|
37121
|
+
}, [relevant, subscribe]);
|
|
37122
|
+
/**
|
|
37123
|
+
* Write one resolved binding into the page's namespace and this plugin's settings.
|
|
37124
|
+
*
|
|
37125
|
+
* The order is load-bearing: the key, then the pair the Host would rebuild from,
|
|
37126
|
+
* then the section that names both. The section is what makes the search provider
|
|
37127
|
+
* resolve the reference, so a section written first would be a search that fails
|
|
37128
|
+
* with an authentication error; and a pair recorded after it would be a binding a
|
|
37129
|
+
* crash could leave without a memory.
|
|
37130
|
+
*/
|
|
37131
|
+
const writeBinding = (0, react.useCallback)(async (binding, pair) => {
|
|
37132
|
+
const { form, credentials, remember, t } = face.current;
|
|
37133
|
+
const writer = credentials();
|
|
37134
|
+
if (writer === void 0) {
|
|
37135
|
+
setNotice(void 0);
|
|
37136
|
+
setProblem("unavailable");
|
|
37137
|
+
return;
|
|
37138
|
+
}
|
|
37139
|
+
await writer.set(binding.apiKeyEnv, binding.apiKey);
|
|
37140
|
+
await remember(pair);
|
|
37141
|
+
const namespace = form();
|
|
37142
|
+
if (namespace === void 0) {
|
|
37143
|
+
setNotice(void 0);
|
|
37144
|
+
setProblem("unavailable");
|
|
37145
|
+
return;
|
|
37146
|
+
}
|
|
37147
|
+
setNotice(await namespace.mutate([
|
|
37148
|
+
{
|
|
37149
|
+
op: "set",
|
|
37150
|
+
path: ["model"],
|
|
37151
|
+
value: binding.model
|
|
37152
|
+
},
|
|
37153
|
+
{
|
|
37154
|
+
op: "set",
|
|
37155
|
+
path: ["baseURL"],
|
|
37156
|
+
value: binding.baseURL
|
|
37157
|
+
},
|
|
37158
|
+
{
|
|
37159
|
+
op: "set",
|
|
37160
|
+
path: ["apiKeyEnv"],
|
|
37161
|
+
value: binding.apiKeyEnv
|
|
37162
|
+
}
|
|
37163
|
+
]) ? {
|
|
37164
|
+
kind: "done",
|
|
37165
|
+
durable: binding.durable,
|
|
37166
|
+
baseURL: binding.baseURL
|
|
37167
|
+
} : {
|
|
37168
|
+
kind: "failed",
|
|
37169
|
+
message: t("searchProviderRefused")
|
|
37170
|
+
});
|
|
37171
|
+
}, []);
|
|
37172
|
+
const apply = (0, react.useCallback)((option) => {
|
|
37173
|
+
const pair = {
|
|
37174
|
+
provider: option.provider,
|
|
37175
|
+
model: option.id
|
|
37176
|
+
};
|
|
37177
|
+
setNotice({
|
|
37178
|
+
kind: "busy",
|
|
37179
|
+
key: `${option.provider}\u0000${option.id}`
|
|
37180
|
+
});
|
|
37181
|
+
(async () => {
|
|
37182
|
+
const result = await face.current.bind(pair);
|
|
37183
|
+
if (!result.ok) {
|
|
37184
|
+
setNotice({
|
|
37185
|
+
kind: "failed",
|
|
37186
|
+
message: result.error.message
|
|
37187
|
+
});
|
|
37188
|
+
return;
|
|
37189
|
+
}
|
|
37190
|
+
await writeBinding(result.value, pair);
|
|
37191
|
+
})().catch((error) => {
|
|
37192
|
+
setNotice({
|
|
37193
|
+
kind: "failed",
|
|
37194
|
+
message: error instanceof Error ? error.message : String(error)
|
|
37195
|
+
});
|
|
37196
|
+
});
|
|
37197
|
+
}, [writeBinding]);
|
|
37198
|
+
/**
|
|
37199
|
+
* Check the saved binding once, and rebuild it when this process cannot serve it.
|
|
37200
|
+
*
|
|
37201
|
+
* A bridge endpoint's port, route id, and secret are minted per process, so a binding
|
|
37202
|
+
* saved before a restart is dead until it is re-resolved — the Host does that at
|
|
37203
|
+
* boot, and this is the second layer for the case it could not (no credentials
|
|
37204
|
+
* service, a write the profile refused). Whether the saved route is alive is a
|
|
37205
|
+
* question only the Host can answer: a fresh resolution mints a *new* id, so
|
|
37206
|
+
* comparing URLs would report every healthy binding as stale.
|
|
37207
|
+
*/
|
|
37208
|
+
const verified = (0, react.useRef)(false);
|
|
37209
|
+
(0, react.useEffect)(() => {
|
|
37210
|
+
if (!relevant || verified.current) return;
|
|
37211
|
+
if (face.current.form()?.getSnapshot().status !== "ready") return;
|
|
37212
|
+
verified.current = true;
|
|
37213
|
+
(async () => {
|
|
37214
|
+
const answer = await face.current.status();
|
|
37215
|
+
if (!answer.ok) return;
|
|
37216
|
+
const status = answer.value;
|
|
37217
|
+
if (status.state !== "bridge" || status.alive) return;
|
|
37218
|
+
const pair = status.remembered;
|
|
37219
|
+
if (pair === void 0) {
|
|
37220
|
+
setRecovery("needs-pick");
|
|
37221
|
+
return;
|
|
37222
|
+
}
|
|
37223
|
+
setNotice({
|
|
37224
|
+
kind: "busy",
|
|
37225
|
+
key: `${pair.provider}\u0000${pair.model}`
|
|
37226
|
+
});
|
|
37227
|
+
const binding = await face.current.bind(pair);
|
|
37228
|
+
if (!binding.ok) {
|
|
37229
|
+
setNotice(void 0);
|
|
37230
|
+
setRecovery("failed");
|
|
37231
|
+
return;
|
|
37232
|
+
}
|
|
37233
|
+
await writeBinding(binding.value, pair);
|
|
37234
|
+
setRecovery("rebuilt");
|
|
37235
|
+
})().catch(() => {
|
|
37236
|
+
setNotice(void 0);
|
|
37237
|
+
setRecovery("failed");
|
|
37238
|
+
});
|
|
37239
|
+
}, [
|
|
37240
|
+
relevant,
|
|
37241
|
+
current,
|
|
37242
|
+
writeBinding
|
|
37243
|
+
]);
|
|
37244
|
+
const reset = (0, react.useCallback)(() => {
|
|
37245
|
+
const namespace = face.current.form();
|
|
37246
|
+
if (namespace === void 0) {
|
|
37247
|
+
setProblem("unavailable");
|
|
37248
|
+
return;
|
|
37249
|
+
}
|
|
37250
|
+
setNotice({
|
|
37251
|
+
kind: "busy",
|
|
37252
|
+
key: ""
|
|
37253
|
+
});
|
|
37254
|
+
namespace.mutate([
|
|
37255
|
+
{
|
|
37256
|
+
op: "unset",
|
|
37257
|
+
path: ["model"]
|
|
37258
|
+
},
|
|
37259
|
+
{
|
|
37260
|
+
op: "unset",
|
|
37261
|
+
path: ["baseURL"]
|
|
37262
|
+
},
|
|
37263
|
+
{
|
|
37264
|
+
op: "unset",
|
|
37265
|
+
path: ["apiKeyEnv"]
|
|
37266
|
+
}
|
|
37267
|
+
]).then((accepted) => {
|
|
37268
|
+
setNotice(accepted ? void 0 : {
|
|
37269
|
+
kind: "failed",
|
|
37270
|
+
message: face.current.t("searchProviderRefused")
|
|
37271
|
+
});
|
|
37272
|
+
}, (error) => {
|
|
37273
|
+
setNotice({
|
|
37274
|
+
kind: "failed",
|
|
37275
|
+
message: error instanceof Error ? error.message : String(error)
|
|
37276
|
+
});
|
|
37277
|
+
});
|
|
37278
|
+
}, []);
|
|
37279
|
+
if (!relevant) return null;
|
|
37280
|
+
const { t } = props;
|
|
37281
|
+
const groups = /* @__PURE__ */ new Map();
|
|
37282
|
+
for (const option of options ?? []) {
|
|
37283
|
+
const list = groups.get(option.provider) ?? [];
|
|
37284
|
+
list.push(option);
|
|
37285
|
+
groups.set(option.provider, list);
|
|
37286
|
+
}
|
|
37287
|
+
const activeId = current?.model === void 0 ? void 0 : bareModelId(current.model);
|
|
37288
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
37289
|
+
className: web_search_provider_section_module_css_default.section,
|
|
37290
|
+
"data-freecodego-web-search-provider": true,
|
|
37291
|
+
children: [
|
|
37292
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
37293
|
+
className: web_search_provider_section_module_css_default.head,
|
|
37294
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h4", {
|
|
37295
|
+
className: web_search_provider_section_module_css_default.title,
|
|
37296
|
+
children: t("searchProviderTitle")
|
|
37297
|
+
}), current?.model === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
37298
|
+
type: "button",
|
|
37299
|
+
className: web_search_provider_section_module_css_default.reset,
|
|
37300
|
+
onClick: reset,
|
|
37301
|
+
children: t("searchProviderReset")
|
|
37302
|
+
})]
|
|
37303
|
+
}),
|
|
37304
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37305
|
+
className: web_search_provider_section_module_css_default.hint,
|
|
37306
|
+
children: t("searchProviderHint")
|
|
37307
|
+
}),
|
|
37308
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37309
|
+
className: web_search_provider_section_module_css_default.current,
|
|
37310
|
+
children: current?.model === void 0 ? t("searchProviderNone") : `${t("searchProviderCurrent")}${current.model}${current.baseURL === void 0 ? "" : ` · ${current.baseURL}`}`
|
|
37311
|
+
}),
|
|
37312
|
+
problem === "unavailable" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37313
|
+
className: web_search_provider_section_module_css_default.problem,
|
|
37314
|
+
children: t("searchProviderUnavailable")
|
|
37315
|
+
}) : null,
|
|
37316
|
+
problem === "offline" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37317
|
+
className: web_search_provider_section_module_css_default.problem,
|
|
37318
|
+
children: t("searchProviderLoadFailed")
|
|
37319
|
+
}) : null,
|
|
37320
|
+
options === void 0 && problem === void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37321
|
+
className: web_search_provider_section_module_css_default.hint,
|
|
37322
|
+
children: t("searchProviderLoading")
|
|
37323
|
+
}) : null,
|
|
37324
|
+
[...groups.entries()].map(([provider, rows]) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
37325
|
+
className: web_search_provider_section_module_css_default.group,
|
|
37326
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
37327
|
+
className: web_search_provider_section_module_css_default.provider,
|
|
37328
|
+
children: provider
|
|
37329
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
37330
|
+
className: web_search_provider_section_module_css_default.rows,
|
|
37331
|
+
children: rows.map((option) => {
|
|
37332
|
+
const active = activeId !== void 0 && bareModelId(option.id) === activeId;
|
|
37333
|
+
const busy = notice?.kind === "busy" && notice.key === `${option.provider}\u0000${option.id}`;
|
|
37334
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
37335
|
+
type: "button",
|
|
37336
|
+
className: active ? `${web_search_provider_section_module_css_default.row} ${web_search_provider_section_module_css_default.rowActive}` : web_search_provider_section_module_css_default.row,
|
|
37337
|
+
disabled: notice?.kind === "busy",
|
|
37338
|
+
title: active ? t("searchProviderActive") : t("searchProviderUse"),
|
|
37339
|
+
onClick: () => {
|
|
37340
|
+
apply(option);
|
|
37341
|
+
},
|
|
37342
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
37343
|
+
className: web_search_provider_section_module_css_default.rowLabel,
|
|
37344
|
+
children: option.label ?? option.id
|
|
37345
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
37346
|
+
className: web_search_provider_section_module_css_default.rowMeta,
|
|
37347
|
+
children: busy ? t("searchProviderSaving") : active ? t("searchProviderActive") : option.id
|
|
37348
|
+
})]
|
|
37349
|
+
}, `${option.provider}/${option.id}`);
|
|
37350
|
+
})
|
|
37351
|
+
})]
|
|
37352
|
+
}, provider)),
|
|
37353
|
+
notice?.kind === "done" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37354
|
+
className: web_search_provider_section_module_css_default.done,
|
|
37355
|
+
children: notice.durable ? t("searchProviderSaved") : t("searchProviderSavedEphemeral")
|
|
37356
|
+
}) : null,
|
|
37357
|
+
notice?.kind === "done" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37358
|
+
className: web_search_provider_section_module_css_default.rowMeta,
|
|
37359
|
+
children: notice.baseURL
|
|
37360
|
+
}) : null,
|
|
37361
|
+
recovery === "rebuilt" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37362
|
+
className: web_search_provider_section_module_css_default.done,
|
|
37363
|
+
children: t("searchProviderRebuilt")
|
|
37364
|
+
}) : null,
|
|
37365
|
+
recovery === "needs-pick" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37366
|
+
className: web_search_provider_section_module_css_default.problem,
|
|
37367
|
+
children: t("searchProviderNeedsPick")
|
|
37368
|
+
}) : null,
|
|
37369
|
+
recovery === "failed" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37370
|
+
className: web_search_provider_section_module_css_default.problem,
|
|
37371
|
+
children: t("searchProviderRepairFailed")
|
|
37372
|
+
}) : null,
|
|
37373
|
+
notice?.kind === "failed" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
37374
|
+
className: web_search_provider_section_module_css_default.problem,
|
|
37375
|
+
children: `${t("searchProviderFailed")}${notice.message}`
|
|
37376
|
+
}) : null
|
|
37377
|
+
]
|
|
37378
|
+
});
|
|
37379
|
+
}
|
|
37380
|
+
//#endregion
|
|
36260
37381
|
//#region src/client/voice-input.tsx
|
|
36261
37382
|
/** Add browser speech recognition without exposing provider credentials to the page. */
|
|
36262
37383
|
function VoiceInputButton(input) {
|
|
@@ -36607,7 +37728,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36607
37728
|
},
|
|
36608
37729
|
title: t("language.switch"),
|
|
36609
37730
|
"aria-label": t("language.switch"),
|
|
36610
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.
|
|
37731
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconGlobeOutlineRegular, {}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: active === "zh" ? "中" : "EN" })]
|
|
36611
37732
|
});
|
|
36612
37733
|
}
|
|
36613
37734
|
function EngineAction({ catalog, setDefaultEngine, sessionId, useSession, t }) {
|
|
@@ -36961,14 +38082,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36961
38082
|
return sessionId !== void 0 && state.byId[sessionId]?.running === true;
|
|
36962
38083
|
}
|
|
36963
38084
|
/**
|
|
36964
|
-
* @param
|
|
38085
|
+
* @param jobs - the client jobs snapshot.
|
|
36965
38086
|
* @param sessionId - the Session to read.
|
|
36966
38087
|
* @returns how many of that Session's background jobs are still open.
|
|
36967
38088
|
*/
|
|
36968
|
-
function liveJobCount(
|
|
38089
|
+
function liveJobCount(jobs, sessionId) {
|
|
36969
38090
|
if (sessionId === void 0) return 0;
|
|
36970
38091
|
let live = 0;
|
|
36971
|
-
for (const job of
|
|
38092
|
+
for (const job of jobs.rows[sessionId] ?? NO_JOBS) if (isLiveJob(job)) live += 1;
|
|
36972
38093
|
return live;
|
|
36973
38094
|
}
|
|
36974
38095
|
/**
|
|
@@ -36978,14 +38099,14 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
36978
38099
|
* is the most recently started one, and its id is what changes when another job
|
|
36979
38100
|
* fails. See `CompanionObservation.failedJobKey` for why a boolean cannot stand
|
|
36980
38101
|
* in for this.
|
|
36981
|
-
* @param
|
|
38102
|
+
* @param jobs - the client jobs snapshot.
|
|
36982
38103
|
* @param sessionId - the Session to read.
|
|
36983
|
-
* @returns the newest failed job's id, or undefined when the
|
|
38104
|
+
* @returns the newest failed job's id, or undefined when the roster holds none.
|
|
36984
38105
|
*/
|
|
36985
|
-
function newestFailedJobKey(
|
|
38106
|
+
function newestFailedJobKey(jobs, sessionId) {
|
|
36986
38107
|
if (sessionId === void 0) return void 0;
|
|
36987
38108
|
let newest;
|
|
36988
|
-
for (const job of
|
|
38109
|
+
for (const job of jobs.rows[sessionId] ?? NO_JOBS) if (job.status === "failed") newest = job.id;
|
|
36989
38110
|
return newest;
|
|
36990
38111
|
}
|
|
36991
38112
|
/**
|
|
@@ -37278,7 +38399,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
37278
38399
|
this.writing = false;
|
|
37279
38400
|
break;
|
|
37280
38401
|
case "user/message":
|
|
37281
|
-
if (event.data.source.kind
|
|
38402
|
+
if (event.data.source.kind !== "user") this.noticeKey = `${event.seq}`;
|
|
37282
38403
|
break;
|
|
37283
38404
|
default: break;
|
|
37284
38405
|
}
|
|
@@ -40492,8 +41613,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40492
41613
|
*/
|
|
40493
41614
|
function useCompanionObservation(hooks, sessionId, activity) {
|
|
40494
41615
|
const running = hooks.useSessions((state) => sessionRunning(state, sessionId));
|
|
40495
|
-
const liveJobs = hooks.
|
|
40496
|
-
const failedJobKey = hooks.
|
|
41616
|
+
const liveJobs = hooks.useJobs((jobs) => liveJobCount(jobs, sessionId));
|
|
41617
|
+
const failedJobKey = hooks.useJobs((jobs) => newestFailedJobKey(jobs, sessionId));
|
|
40497
41618
|
const asked = hooks.useSessionStatus((statuses) => awaitingInteraction(statuses, sessionId));
|
|
40498
41619
|
return {
|
|
40499
41620
|
running,
|
|
@@ -40528,14 +41649,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40528
41649
|
* asks (`mainViewSessionId`), so the two seats and this row follow one Session id
|
|
40529
41650
|
* and one set of facts.
|
|
40530
41651
|
* @param sessions - the Session list observable.
|
|
41652
|
+
* @param jobs - the client jobs snapshot observable.
|
|
40531
41653
|
* @param statuses - the unified Session UI status observable.
|
|
40532
41654
|
* @returns what `projectSignals` consumes.
|
|
40533
41655
|
*/
|
|
40534
|
-
function useObservedCompanionObservation(sessions, statuses, activity) {
|
|
41656
|
+
function useObservedCompanionObservation(sessions, jobs, statuses, activity) {
|
|
40535
41657
|
const sessionId = useObserved(sessions, mainViewSessionId$1);
|
|
40536
41658
|
const running = useObserved(sessions, (state) => sessionRunning(state, sessionId));
|
|
40537
|
-
const liveJobs = useObserved(
|
|
40538
|
-
const failedJobKey = useObserved(
|
|
41659
|
+
const liveJobs = useObserved(jobs, (state) => liveJobCount(state, sessionId));
|
|
41660
|
+
const failedJobKey = useObserved(jobs, (state) => newestFailedJobKey(state, sessionId));
|
|
40539
41661
|
const asked = useObserved(statuses, (snapshots) => awaitingInteraction(snapshots, sessionId));
|
|
40540
41662
|
return {
|
|
40541
41663
|
running,
|
|
@@ -40761,7 +41883,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40761
41883
|
order: 30,
|
|
40762
41884
|
locale: NS$2,
|
|
40763
41885
|
registrant: "freecodego-companion",
|
|
40764
|
-
inject: () => ({
|
|
41886
|
+
inject: () => ({
|
|
41887
|
+
activity,
|
|
41888
|
+
hooks: { jobs: ctx.jobs.state }
|
|
41889
|
+
})
|
|
40765
41890
|
}, CompanionBar));
|
|
40766
41891
|
}
|
|
40767
41892
|
//#endregion
|
|
@@ -40854,7 +41979,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40854
41979
|
* @returns the face.
|
|
40855
41980
|
*/
|
|
40856
41981
|
function StoreFace({ sources, size, className }) {
|
|
40857
|
-
const view = useCompanionView(useObservedCompanionObservation(sources.sessions, sources.statuses, sources.activity));
|
|
41982
|
+
const view = useCompanionView(useObservedCompanionObservation(sources.sessions, sources.jobs, sources.statuses, sources.activity));
|
|
40858
41983
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(CompanionSvg, {
|
|
40859
41984
|
frame: view.frame,
|
|
40860
41985
|
size,
|
|
@@ -40891,22 +42016,35 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40891
42016
|
* Whether an element belongs to the conversation the character speaks for.
|
|
40892
42017
|
*
|
|
40893
42018
|
* The body and the scrollport are found upwards from the dot; the session header
|
|
40894
|
-
* publishes no marker on itself, so it is recognised as the nearest
|
|
42019
|
+
* publishes no marker on itself, so it is recognised as the nearest ancestor that
|
|
40895
42020
|
* holds its own slots (a settings page's `<header>` holds none, and is not the
|
|
40896
42021
|
* conversation's).
|
|
42022
|
+
*
|
|
42023
|
+
* The ancestor *tag* used to be part of this test — the header was a `header`
|
|
42024
|
+
* element, and requiring it was the belt to the slots' braces. The shell then rewrote
|
|
42025
|
+
* the header as `div.titleRow`, at which point the tag check stopped recognising the
|
|
42026
|
+
* header at all: the jobs mark in its `actions` seat fell out of the conversation and
|
|
42027
|
+
* the seat ignored it. The slots are the marker that survived the rewrite, so they are
|
|
42028
|
+
* the whole test — they are also the exclusion the tag was being read for, because no
|
|
42029
|
+
* other header in the shell holds them.
|
|
40897
42030
|
* @param element - the element to place; the dot, or the row considering it.
|
|
40898
42031
|
* @returns true when the element is inside the conversation's chrome.
|
|
40899
42032
|
*/
|
|
40900
42033
|
function inConversationSurface(element) {
|
|
40901
42034
|
for (let node = element.parentElement; node !== null; node = node.parentElement) {
|
|
40902
42035
|
if (node.matches(CONVERSATION_SURFACE)) return true;
|
|
40903
|
-
if (node.
|
|
42036
|
+
if (node.querySelector(HEADER_SLOT_SELECTOR) !== null) return true;
|
|
40904
42037
|
}
|
|
40905
42038
|
return false;
|
|
40906
42039
|
}
|
|
40907
42040
|
/**
|
|
40908
42041
|
* The session header's own slots. Its `actions` seat — where the jobs list's dot
|
|
40909
42042
|
* lives — carries no marker, so the header is recognised by the slots around it.
|
|
42043
|
+
*
|
|
42044
|
+
* Only the corner is emitted by the current shell: the leading marker went with the
|
|
42045
|
+
* rewrite into `div.titleRow`. It is kept in the selector anyway, because a slot that
|
|
42046
|
+
* comes back should be recognised again rather than silently ignored — and the
|
|
42047
|
+
* stylesheet gate in the tests records which of the two is on disk today.
|
|
40910
42048
|
*/
|
|
40911
42049
|
const HEADER_SLOT_SELECTOR = "[data-conversation-header-leading], [data-conversation-header-corner]";
|
|
40912
42050
|
/** Marks the dot as switched off. Styling and the re-scan both key on it. */
|
|
@@ -40924,8 +42062,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40924
42062
|
*
|
|
40925
42063
|
* Keyed on the marker rather than on upstream's class names, which the bundle
|
|
40926
42064
|
* hashes. `display: none` rather than `content: none`: the mark is a real element
|
|
40927
|
-
* with
|
|
40928
|
-
* no longer laid out or painted.
|
|
42065
|
+
* with a ring and its animations on it, and hiding it is what stops them — a hidden
|
|
42066
|
+
* subtree is no longer laid out or painted.
|
|
40929
42067
|
*/
|
|
40930
42068
|
const SHEET$2 = `
|
|
40931
42069
|
[${DOT_ATTR}] {
|
|
@@ -40957,6 +42095,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
40957
42095
|
function installDotFaces(ctx, activity) {
|
|
40958
42096
|
const sources = {
|
|
40959
42097
|
sessions: ctx.sessions.list,
|
|
42098
|
+
jobs: ctx.jobs.state,
|
|
40960
42099
|
statuses: ctx.uiSession.sessionStatus,
|
|
40961
42100
|
activity
|
|
40962
42101
|
};
|
|
@@ -41051,6 +42190,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
41051
42190
|
function installRunningRow(ctx, activity) {
|
|
41052
42191
|
const sources = {
|
|
41053
42192
|
sessions: ctx.sessions.list,
|
|
42193
|
+
jobs: ctx.jobs.state,
|
|
41054
42194
|
statuses: ctx.uiSession.sessionStatus,
|
|
41055
42195
|
activity
|
|
41056
42196
|
};
|
|
@@ -41173,6 +42313,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
41173
42313
|
const probe = options.bandProbe ?? paintsBand;
|
|
41174
42314
|
const sources = {
|
|
41175
42315
|
sessions: ctx.sessions.list,
|
|
42316
|
+
jobs: ctx.jobs.state,
|
|
41176
42317
|
statuses: ctx.uiSession.sessionStatus,
|
|
41177
42318
|
activity
|
|
41178
42319
|
};
|
|
@@ -41240,8 +42381,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
41240
42381
|
* that seated only the mark would leave the label namespace unreachable, a build
|
|
41241
42382
|
* that seated only the strip would lose the rail's own mark, and the injected
|
|
41242
42383
|
* seats (`./running-row.tsx`, `./step-row.tsx`, `./dot-row.tsx`) draw the same pose
|
|
41243
|
-
* in place of the shell's own loading animations — the sweeps
|
|
41244
|
-
* of an in-flight mark.
|
|
42384
|
+
* in place of the shell's own loading animations — the row sweeps that are left, and
|
|
42385
|
+
* the spinner ring of an in-flight mark.
|
|
41245
42386
|
*
|
|
41246
42387
|
* `priority: -1` is the sanctioned way to shadow a single slot: the default rank
|
|
41247
42388
|
* is 0 and the lowest live entry renders, so this wins over the fallback mark
|
|
@@ -41263,7 +42404,10 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
41263
42404
|
name: "sidebar.brand.mark",
|
|
41264
42405
|
priority: -1,
|
|
41265
42406
|
registrant: "freecodego-companion",
|
|
41266
|
-
inject: () => ({
|
|
42407
|
+
inject: () => ({
|
|
42408
|
+
activity,
|
|
42409
|
+
hooks: { jobs: ctx.jobs.state }
|
|
42410
|
+
})
|
|
41267
42411
|
}, FreeCodeGoCompanion));
|
|
41268
42412
|
installCompanionBar(ctx, activity);
|
|
41269
42413
|
ctx.effect(() => installRunningRow(ctx, activity), "freecodego-ui: Companion running row");
|
|
@@ -44477,6 +45621,19 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
44477
45621
|
//#endregion
|
|
44478
45622
|
//#region src/client/index.ts
|
|
44479
45623
|
const NS = "settings.freecodego";
|
|
45624
|
+
/**
|
|
45625
|
+
* The profile entry this plugin's settings are addressed by.
|
|
45626
|
+
*
|
|
45627
|
+
* An entry id, not a namespace. The Host's settings service no longer publishes a
|
|
45628
|
+
* namespace per plugin — a plugin's `Config` *is* its settings document, and both the
|
|
45629
|
+
* read (`describe`) and the write (`update`) address the entry the profile declares, an
|
|
45630
|
+
* entry id the CLI writes into `cordis.patch.yml`. The previous spelling, the old
|
|
45631
|
+
* namespace `freecodego-harness`, matches nothing now: the reads silently answered `{}`
|
|
45632
|
+
* and every write was refused as an unknown entry, which is why the value is pinned here
|
|
45633
|
+
* and checked against that file by `tests/settings-entry.spec.ts` rather than written
|
|
45634
|
+
* twice from memory.
|
|
45635
|
+
*/
|
|
45636
|
+
const SETTINGS_ENTRY = "freecodego-harness-plugin";
|
|
44480
45637
|
/** Keep this UI's reconnect state local so it has no hidden client-runtime dependency. */
|
|
44481
45638
|
function createEpochStore() {
|
|
44482
45639
|
let value = 0;
|
|
@@ -44504,6 +45661,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
44504
45661
|
"remote",
|
|
44505
45662
|
"connection",
|
|
44506
45663
|
"sessions",
|
|
45664
|
+
"jobs",
|
|
44507
45665
|
"uiSession",
|
|
44508
45666
|
"uiConversation"
|
|
44509
45667
|
];
|
|
@@ -44606,7 +45764,26 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
44606
45764
|
communityFeedback: "社区与反馈",
|
|
44607
45765
|
telegramGroup: "Telegram 官方群聊",
|
|
44608
45766
|
telegramHint: "遇到问题需要反馈,或想跟进版本进展,点击加入官方群聊。",
|
|
44609
|
-
telegramJoin: "加入群聊"
|
|
45767
|
+
telegramJoin: "加入群聊",
|
|
45768
|
+
sessionDelete: "删除会话",
|
|
45769
|
+
searchProviderTitle: "搜索方模型",
|
|
45770
|
+
searchProviderHint: "选择本插件内任意模型担任网页搜索。选定后会把该模型的 Anthropic 兼容接口与密钥写入上方“接口地址 / API Key”,并由下方的搜索提供方使用。",
|
|
45771
|
+
searchProviderCurrent: "当前搜索方:",
|
|
45772
|
+
searchProviderNone: "当前使用 DeepSeek 官方默认模型(未指定搜索方)。",
|
|
45773
|
+
searchProviderUse: "用作搜索方",
|
|
45774
|
+
searchProviderActive: "当前搜索方",
|
|
45775
|
+
searchProviderReset: "恢复 DeepSeek 默认",
|
|
45776
|
+
searchProviderUnavailable: "本部署未提供设置写入服务,暂时无法在这里选择搜索方。",
|
|
45777
|
+
searchProviderLoading: "正在读取模型列表…",
|
|
45778
|
+
searchProviderLoadFailed: "模型列表读取失败,请刷新后重试。",
|
|
45779
|
+
searchProviderSaving: "正在绑定…",
|
|
45780
|
+
searchProviderSaved: "已写入接口地址与密钥,搜索将由该模型执行。",
|
|
45781
|
+
searchProviderSavedEphemeral: "已绑定。该提供方经本地桥接转发,端点属于当前进程:Harness 下次启动会自动重建。",
|
|
45782
|
+
searchProviderRefused: "本部署没有接受这次写入,已保留原设置。",
|
|
45783
|
+
searchProviderFailed: "绑定失败:",
|
|
45784
|
+
searchProviderRebuilt: "检测到上次的本地桥接端点已失效,已按你此前的选择自动重建。",
|
|
45785
|
+
searchProviderNeedsPick: "当前搜索方指向的本地桥接端点已失效,且没有留下可重建的记录,请在上方重新选择一次。",
|
|
45786
|
+
searchProviderRepairFailed: "本地桥接端点已失效,自动重建没有成功,请在上方重新选择一次。"
|
|
44610
45787
|
};
|
|
44611
45788
|
/**
|
|
44612
45789
|
* English strings this UI contributes to the settings surface.
|
|
@@ -44707,7 +45884,26 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
44707
45884
|
communityFeedback: "Community and feedback",
|
|
44708
45885
|
telegramGroup: "Official Telegram group",
|
|
44709
45886
|
telegramHint: "Report a problem or follow release progress by joining the official group.",
|
|
44710
|
-
telegramJoin: "Join the group"
|
|
45887
|
+
telegramJoin: "Join the group",
|
|
45888
|
+
sessionDelete: "Delete session",
|
|
45889
|
+
searchProviderTitle: "Search provider model",
|
|
45890
|
+
searchProviderHint: "Pick any model this plugin routes to answer web searches. The choice writes that model’s Anthropic-compatible endpoint and key into the endpoint and API key fields above, where the search provider reads them.",
|
|
45891
|
+
searchProviderCurrent: "Search provider: ",
|
|
45892
|
+
searchProviderNone: "Search runs on DeepSeek’s own default model (no model chosen here).",
|
|
45893
|
+
searchProviderUse: "Use as search provider",
|
|
45894
|
+
searchProviderActive: "Current search provider",
|
|
45895
|
+
searchProviderReset: "Restore the DeepSeek default",
|
|
45896
|
+
searchProviderUnavailable: "This deployment exposes no settings writer, so the search provider cannot be chosen here.",
|
|
45897
|
+
searchProviderLoading: "Reading the model list…",
|
|
45898
|
+
searchProviderLoadFailed: "The model list could not be read. Refresh and retry.",
|
|
45899
|
+
searchProviderSaving: "Binding…",
|
|
45900
|
+
searchProviderSaved: "The endpoint and key were written; this model answers searches now.",
|
|
45901
|
+
searchProviderSavedEphemeral: "Bound. This provider is reached through the local bridge, so its endpoint belongs to this process — Harness rebuilds it on the next start.",
|
|
45902
|
+
searchProviderRefused: "This deployment refused the write; the previous settings were kept.",
|
|
45903
|
+
searchProviderFailed: "Binding failed: ",
|
|
45904
|
+
searchProviderRebuilt: "The saved local-bridge endpoint from a previous run was dead, so it was rebuilt from your earlier choice.",
|
|
45905
|
+
searchProviderNeedsPick: "The search provider points at a local-bridge endpoint from a previous run, and no record of the choice survived to rebuild it. Pick one above.",
|
|
45906
|
+
searchProviderRepairFailed: "The saved local-bridge endpoint is dead and rebuilding it did not succeed. Pick one above."
|
|
44711
45907
|
};
|
|
44712
45908
|
function apply(ctx) {
|
|
44713
45909
|
ctx.effect(() => installFreeCodeGoSidebarIcons(), "freecodego-ui: semantic sidebar icons");
|
|
@@ -44727,13 +45923,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
44727
45923
|
if (typeof settings?.describe !== "function") throw new Error("Harness settings Remote service did not become available");
|
|
44728
45924
|
const response = await settings.describe();
|
|
44729
45925
|
if (!response.ok) throw new Error(response.error.message);
|
|
44730
|
-
const value = response.value.namespaces.find((item) => item.ns ===
|
|
45926
|
+
const value = response.value.namespaces.find((item) => item.ns === SETTINGS_ENTRY)?.value;
|
|
44731
45927
|
return value !== null && typeof value === "object" && !Array.isArray(value) ? value : {};
|
|
44732
45928
|
};
|
|
44733
45929
|
const updateFreeCodeGoSettings = async (patch) => {
|
|
44734
45930
|
const settings = ctx.get("remote.settings");
|
|
44735
45931
|
if (typeof settings?.update !== "function") throw new Error("Harness settings Remote service did not become available");
|
|
44736
|
-
const response = await settings.update(
|
|
45932
|
+
const response = await settings.update(SETTINGS_ENTRY, patch, void 0);
|
|
44737
45933
|
if (!response.ok) throw new Error(response.error.message);
|
|
44738
45934
|
};
|
|
44739
45935
|
const connectionEpoch = createEpochStore();
|
|
@@ -44838,6 +46034,26 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
44838
46034
|
return service.accountSendVerifyCode(email);
|
|
44839
46035
|
};
|
|
44840
46036
|
/**
|
|
46037
|
+
* Ask for the password-reset code.
|
|
46038
|
+
*
|
|
46039
|
+
* A Host that predates this Remote reports its absence like every other
|
|
46040
|
+
* unwired account method, which the card explains in place; recovery has no
|
|
46041
|
+
* fallback that could work without the gateway's cooperation.
|
|
46042
|
+
*/
|
|
46043
|
+
const forgotPassword = async (email) => {
|
|
46044
|
+
await remoteMounted;
|
|
46045
|
+
const service = ctx.get("remote.freeCodeGoHarness");
|
|
46046
|
+
if (typeof service?.accountForgotPassword !== "function") throw new Error("FreeCodeGo password-reset Remote service did not become available");
|
|
46047
|
+
return service.accountForgotPassword(email);
|
|
46048
|
+
};
|
|
46049
|
+
/** Replace a password with the code the recovery step mailed. */
|
|
46050
|
+
const resetPassword = async (input) => {
|
|
46051
|
+
await remoteMounted;
|
|
46052
|
+
const service = ctx.get("remote.freeCodeGoHarness");
|
|
46053
|
+
if (typeof service?.accountResetPassword !== "function") throw new Error("FreeCodeGo password-reset Remote service did not become available");
|
|
46054
|
+
return service.accountResetPassword(input);
|
|
46055
|
+
};
|
|
46056
|
+
/**
|
|
44841
46057
|
* Federated sign-in (Google / GitHub). The Host does not expose an OAuth
|
|
44842
46058
|
* entry point yet, so this reports the missing wire with a stable marker
|
|
44843
46059
|
* instead of a generic "service did not become available" — the card turns
|
|
@@ -44907,6 +46123,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
44907
46123
|
const headroomUpdate = (patch) => backendCall("headroomUpdate", patch);
|
|
44908
46124
|
const deferredToolsStatus = () => backendCall("deferredToolsStatus");
|
|
44909
46125
|
const deferredToolsSetEnabled = (enabled) => backendCall("deferredToolsSetEnabled", enabled);
|
|
46126
|
+
const mediaGenerationStatus = () => backendCall("mediaGenerationStatus");
|
|
46127
|
+
const mediaGenerationSetEnabled = (enabled) => backendCall("mediaGenerationSetEnabled", enabled);
|
|
44910
46128
|
const reviewStatus = (sessionId) => backendCall("reviewStatus", sessionId);
|
|
44911
46129
|
const reviewStart = (sessionId, request) => backendCall("reviewStart", sessionId, request);
|
|
44912
46130
|
const reviewUpdate = (sessionId, patch) => backendCall("reviewUpdate", sessionId, patch);
|
|
@@ -45026,6 +46244,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
45026
46244
|
};
|
|
45027
46245
|
const capabilityMarketplace = (input) => backendCall("capabilityMarketplace", input);
|
|
45028
46246
|
const mcpPresetInstall = (id) => backendCall("mcpPresetInstall", id);
|
|
46247
|
+
const sessionDeleteEnabled = async () => {
|
|
46248
|
+
try {
|
|
46249
|
+
return (await readFreeCodeGoSettings()).sessionDeleteEnabled !== false;
|
|
46250
|
+
} catch {
|
|
46251
|
+
return true;
|
|
46252
|
+
}
|
|
46253
|
+
};
|
|
45029
46254
|
const deleteSession = async (sessionId) => {
|
|
45030
46255
|
const result = await backendCall("sessionDelete", sessionId);
|
|
45031
46256
|
if (!result.ok) throw new Error(result.error.message);
|
|
@@ -45045,15 +46270,68 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
45045
46270
|
inject: () => ({
|
|
45046
46271
|
deleteSession,
|
|
45047
46272
|
capabilities,
|
|
45048
|
-
isEnabled:
|
|
45049
|
-
try {
|
|
45050
|
-
return (await readFreeCodeGoSettings()).sessionDeleteEnabled !== false;
|
|
45051
|
-
} catch {
|
|
45052
|
-
return true;
|
|
45053
|
-
}
|
|
45054
|
-
}
|
|
46273
|
+
isEnabled: sessionDeleteEnabled
|
|
45055
46274
|
})
|
|
45056
46275
|
}, SessionDeleteOverlay));
|
|
46276
|
+
shellSlots.inject("sidebar.workspaces.session.menu.item", () => shellSlots.register({
|
|
46277
|
+
name: "sidebar.workspaces.session.menu.item",
|
|
46278
|
+
id: "freecodego-session-delete",
|
|
46279
|
+
order: 500,
|
|
46280
|
+
locale: NS,
|
|
46281
|
+
inject: () => ({
|
|
46282
|
+
deleteSession,
|
|
46283
|
+
isEnabled: sessionDeleteEnabled,
|
|
46284
|
+
currentSessionId: () => mainViewSessionId(ctx)
|
|
46285
|
+
})
|
|
46286
|
+
}, SessionDeleteMenuItem));
|
|
46287
|
+
const webSearchForm = () => {
|
|
46288
|
+
const forms = ctx.get("configForms");
|
|
46289
|
+
return typeof forms?.get === "function" ? forms.get(WEB_SEARCH_NAMESPACE) : void 0;
|
|
46290
|
+
};
|
|
46291
|
+
const webSearchModels = async () => {
|
|
46292
|
+
const result = await backendCall("backendCatalog");
|
|
46293
|
+
if (!result.ok) throw new Error(result.error.message);
|
|
46294
|
+
const options = [];
|
|
46295
|
+
const seen = /* @__PURE__ */ new Set();
|
|
46296
|
+
for (const model of result.value.models) {
|
|
46297
|
+
if (model.availability !== "available") continue;
|
|
46298
|
+
const provider = model.provider.trim().toLowerCase();
|
|
46299
|
+
if (provider === "") continue;
|
|
46300
|
+
const key = `${provider}\u0000${model.id}`;
|
|
46301
|
+
if (seen.has(key)) continue;
|
|
46302
|
+
seen.add(key);
|
|
46303
|
+
options.push({
|
|
46304
|
+
provider,
|
|
46305
|
+
id: model.id,
|
|
46306
|
+
label: model.displayName
|
|
46307
|
+
});
|
|
46308
|
+
}
|
|
46309
|
+
return options;
|
|
46310
|
+
};
|
|
46311
|
+
const webSearchBind = (input) => backendCall("webSearchBind", input);
|
|
46312
|
+
const webSearchBindingStatus = () => backendCall("webSearchBindingStatus");
|
|
46313
|
+
const rememberWebSearchBinding = async (pair) => {
|
|
46314
|
+
await updateFreeCodeGoSettings({
|
|
46315
|
+
webSearchBindingProvider: pair.provider,
|
|
46316
|
+
webSearchBindingModel: pair.model
|
|
46317
|
+
});
|
|
46318
|
+
};
|
|
46319
|
+
const webSearchCredentials = () => ctx.get("remote.credentials");
|
|
46320
|
+
shellSlots.inject("plugins.detail.section", () => shellSlots.register({
|
|
46321
|
+
name: "plugins.detail.section",
|
|
46322
|
+
id: "freecodego-web-search-provider",
|
|
46323
|
+
order: 60,
|
|
46324
|
+
locale: NS,
|
|
46325
|
+
inject: () => ({
|
|
46326
|
+
models: webSearchModels,
|
|
46327
|
+
bind: webSearchBind,
|
|
46328
|
+
status: webSearchBindingStatus,
|
|
46329
|
+
form: webSearchForm,
|
|
46330
|
+
credentials: webSearchCredentials,
|
|
46331
|
+
remember: rememberWebSearchBinding,
|
|
46332
|
+
t
|
|
46333
|
+
})
|
|
46334
|
+
}, WebSearchProviderSection));
|
|
45057
46335
|
ctx.slots.inject("settings.action", () => ctx.slots.register({
|
|
45058
46336
|
name: "settings.action",
|
|
45059
46337
|
id: "freecodego-language",
|
|
@@ -45153,6 +46431,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
45153
46431
|
login,
|
|
45154
46432
|
register,
|
|
45155
46433
|
sendVerifyCode,
|
|
46434
|
+
forgotPassword,
|
|
46435
|
+
resetPassword,
|
|
45156
46436
|
oauthLogin,
|
|
45157
46437
|
oauthPendingStatus,
|
|
45158
46438
|
oauthPendingSendVerifyCode,
|
|
@@ -45311,6 +46591,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
45311
46591
|
headroomUpdate,
|
|
45312
46592
|
deferredToolsStatus,
|
|
45313
46593
|
deferredToolsSetEnabled,
|
|
46594
|
+
mediaGenerationStatus,
|
|
46595
|
+
mediaGenerationSetEnabled,
|
|
45314
46596
|
reviewStatus,
|
|
45315
46597
|
reviewStart,
|
|
45316
46598
|
reviewUpdate,
|