@yadsh/dsh-qa-surface 0.11.2 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/access/service.js +2 -1
- package/lib/access/service.js.map +1 -1
- package/lib/client/QaSurface.js +9 -2
- package/lib/client/QaSurface.js.map +1 -1
- package/lib/client/components/QaChangelog.js +29 -9
- package/lib/client/components/QaChangelog.js.map +1 -1
- package/lib/client/components/QaSidebar.js +13 -15
- package/lib/client/components/QaSidebar.js.map +1 -1
- package/lib/client/settings/card.js +2 -2
- package/lib/client/settings/card.js.map +1 -1
- package/lib/client/settings/sections/docs.js +41 -0
- package/lib/client/settings/sections/docs.js.map +1 -0
- package/lib/client/settings/sections.js +1 -0
- package/lib/client/settings/sections.js.map +1 -1
- package/lib/client/styles.js +1 -2
- package/lib/client/styles.js.map +1 -1
- package/lib/client.js +306 -194
- package/lib/client.js.map +1 -1
- package/lib/config-resolvers/defaults.js +4 -0
- package/lib/config-resolvers/defaults.js.map +1 -1
- package/lib/config-resolvers/integration.js +7 -7
- package/lib/config-resolvers/integration.js.map +1 -1
- package/lib/config-resolvers/tools.js +25 -0
- package/lib/config-resolvers/tools.js.map +1 -1
- package/lib/config.js +15 -0
- package/lib/config.js.map +1 -1
- package/lib/index.js +6 -1
- package/lib/index.js.map +1 -1
- package/lib/qa-tools/catalog.js +13 -2
- package/lib/qa-tools/catalog.js.map +1 -1
- package/lib/qa-tools/docs-tools.js +269 -24
- package/lib/qa-tools/docs-tools.js.map +1 -1
- package/lib/qa-tools/index.js +1 -0
- package/lib/qa-tools/index.js.map +1 -1
- package/lib/secure-session.js +11 -13
- package/lib/secure-session.js.map +1 -1
- package/lib/shared/docs-version.js +19 -0
- package/lib/shared/docs-version.js.map +1 -0
- package/lib/typert.host.js +70 -68
- package/lib/typert.remote-client.js +69 -67
- package/lib/types/client/settings/sections/docs.d.ts +15 -0
- package/lib/types/client/settings/sections.d.ts +1 -0
- package/lib/types/config-resolvers/integration.d.ts +5 -5
- package/lib/types/config-resolvers/tools.d.ts +9 -0
- package/lib/types/qa-tools/catalog.d.ts +6 -1
- package/lib/types/qa-tools/docs-tools.d.ts +15 -0
- package/lib/types/qa-tools/index.d.ts +6 -1
- package/lib/types/shared/docs-version.d.ts +15 -0
- package/lib/types/types.d.ts +22 -0
- package/package.json +3 -3
package/lib/client.js
CHANGED
|
@@ -7295,7 +7295,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7295
7295
|
"activationSkill": string().readonly(),
|
|
7296
7296
|
"activationMode": literal("all").readonly(),
|
|
7297
7297
|
"activationPresets": array(string()).readonly(),
|
|
7298
|
-
"docsRoot": string().readonly()
|
|
7298
|
+
"docsRoot": string().readonly(),
|
|
7299
|
+
"docsDefaultVersion": string().readonly(),
|
|
7300
|
+
"docsDefaultVersionEnabled": boolean().readonly()
|
|
7299
7301
|
}).readonly(),
|
|
7300
7302
|
"sources": object({
|
|
7301
7303
|
"enabled": boolean().readonly(),
|
|
@@ -7971,7 +7973,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
7971
7973
|
},
|
|
7972
7974
|
sourceLocation: {
|
|
7973
7975
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
7974
|
-
"line":
|
|
7976
|
+
"line": 915,
|
|
7975
7977
|
"column": 9
|
|
7976
7978
|
}
|
|
7977
7979
|
},
|
|
@@ -8007,7 +8009,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8007
8009
|
},
|
|
8008
8010
|
sourceLocation: {
|
|
8009
8011
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8010
|
-
"line":
|
|
8012
|
+
"line": 926,
|
|
8011
8013
|
"column": 3
|
|
8012
8014
|
}
|
|
8013
8015
|
},
|
|
@@ -8034,7 +8036,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8034
8036
|
},
|
|
8035
8037
|
sourceLocation: {
|
|
8036
8038
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8037
|
-
"line":
|
|
8039
|
+
"line": 900,
|
|
8038
8040
|
"column": 3
|
|
8039
8041
|
}
|
|
8040
8042
|
},
|
|
@@ -8083,7 +8085,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8083
8085
|
},
|
|
8084
8086
|
sourceLocation: {
|
|
8085
8087
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8086
|
-
"line":
|
|
8088
|
+
"line": 940,
|
|
8087
8089
|
"column": 3
|
|
8088
8090
|
}
|
|
8089
8091
|
},
|
|
@@ -8119,7 +8121,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8119
8121
|
},
|
|
8120
8122
|
sourceLocation: {
|
|
8121
8123
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8122
|
-
"line":
|
|
8124
|
+
"line": 906,
|
|
8123
8125
|
"column": 3
|
|
8124
8126
|
}
|
|
8125
8127
|
},
|
|
@@ -8155,7 +8157,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8155
8157
|
},
|
|
8156
8158
|
sourceLocation: {
|
|
8157
8159
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8158
|
-
"line":
|
|
8160
|
+
"line": 985,
|
|
8159
8161
|
"column": 3
|
|
8160
8162
|
}
|
|
8161
8163
|
},
|
|
@@ -8204,7 +8206,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8204
8206
|
},
|
|
8205
8207
|
sourceLocation: {
|
|
8206
8208
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8207
|
-
"line":
|
|
8209
|
+
"line": 962,
|
|
8208
8210
|
"column": 3
|
|
8209
8211
|
}
|
|
8210
8212
|
},
|
|
@@ -8240,7 +8242,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8240
8242
|
},
|
|
8241
8243
|
sourceLocation: {
|
|
8242
8244
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8243
|
-
"line":
|
|
8245
|
+
"line": 952,
|
|
8244
8246
|
"column": 3
|
|
8245
8247
|
}
|
|
8246
8248
|
},
|
|
@@ -8276,7 +8278,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8276
8278
|
},
|
|
8277
8279
|
sourceLocation: {
|
|
8278
8280
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8279
|
-
"line":
|
|
8281
|
+
"line": 974,
|
|
8280
8282
|
"column": 3
|
|
8281
8283
|
}
|
|
8282
8284
|
},
|
|
@@ -8325,7 +8327,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8325
8327
|
},
|
|
8326
8328
|
sourceLocation: {
|
|
8327
8329
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8328
|
-
"line":
|
|
8330
|
+
"line": 933,
|
|
8329
8331
|
"column": 3
|
|
8330
8332
|
}
|
|
8331
8333
|
},
|
|
@@ -8374,7 +8376,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8374
8376
|
},
|
|
8375
8377
|
sourceLocation: {
|
|
8376
8378
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8377
|
-
"line":
|
|
8379
|
+
"line": 656,
|
|
8378
8380
|
"column": 3
|
|
8379
8381
|
}
|
|
8380
8382
|
},
|
|
@@ -8410,7 +8412,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8410
8412
|
},
|
|
8411
8413
|
sourceLocation: {
|
|
8412
8414
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8413
|
-
"line":
|
|
8415
|
+
"line": 690,
|
|
8414
8416
|
"column": 3
|
|
8415
8417
|
}
|
|
8416
8418
|
},
|
|
@@ -8446,7 +8448,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8446
8448
|
},
|
|
8447
8449
|
sourceLocation: {
|
|
8448
8450
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8449
|
-
"line":
|
|
8451
|
+
"line": 763,
|
|
8450
8452
|
"column": 3
|
|
8451
8453
|
}
|
|
8452
8454
|
},
|
|
@@ -8473,7 +8475,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8473
8475
|
},
|
|
8474
8476
|
sourceLocation: {
|
|
8475
8477
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8476
|
-
"line":
|
|
8478
|
+
"line": 711,
|
|
8477
8479
|
"column": 3
|
|
8478
8480
|
}
|
|
8479
8481
|
},
|
|
@@ -8500,7 +8502,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8500
8502
|
},
|
|
8501
8503
|
sourceLocation: {
|
|
8502
8504
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8503
|
-
"line":
|
|
8505
|
+
"line": 750,
|
|
8504
8506
|
"column": 3
|
|
8505
8507
|
}
|
|
8506
8508
|
},
|
|
@@ -8536,7 +8538,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8536
8538
|
},
|
|
8537
8539
|
sourceLocation: {
|
|
8538
8540
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8539
|
-
"line":
|
|
8541
|
+
"line": 650,
|
|
8540
8542
|
"column": 3
|
|
8541
8543
|
}
|
|
8542
8544
|
},
|
|
@@ -8563,7 +8565,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8563
8565
|
},
|
|
8564
8566
|
sourceLocation: {
|
|
8565
8567
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8566
|
-
"line":
|
|
8568
|
+
"line": 701,
|
|
8567
8569
|
"column": 3
|
|
8568
8570
|
}
|
|
8569
8571
|
},
|
|
@@ -8599,7 +8601,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8599
8601
|
},
|
|
8600
8602
|
sourceLocation: {
|
|
8601
8603
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8602
|
-
"line":
|
|
8604
|
+
"line": 645,
|
|
8603
8605
|
"column": 3
|
|
8604
8606
|
}
|
|
8605
8607
|
},
|
|
@@ -8626,7 +8628,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8626
8628
|
},
|
|
8627
8629
|
sourceLocation: {
|
|
8628
8630
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8629
|
-
"line":
|
|
8631
|
+
"line": 674,
|
|
8630
8632
|
"column": 3
|
|
8631
8633
|
}
|
|
8632
8634
|
},
|
|
@@ -8662,7 +8664,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8662
8664
|
},
|
|
8663
8665
|
sourceLocation: {
|
|
8664
8666
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8665
|
-
"line":
|
|
8667
|
+
"line": 776,
|
|
8666
8668
|
"column": 3
|
|
8667
8669
|
}
|
|
8668
8670
|
},
|
|
@@ -8698,7 +8700,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8698
8700
|
},
|
|
8699
8701
|
sourceLocation: {
|
|
8700
8702
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8701
|
-
"line":
|
|
8703
|
+
"line": 724,
|
|
8702
8704
|
"column": 3
|
|
8703
8705
|
}
|
|
8704
8706
|
},
|
|
@@ -8734,7 +8736,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8734
8736
|
},
|
|
8735
8737
|
sourceLocation: {
|
|
8736
8738
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8737
|
-
"line":
|
|
8739
|
+
"line": 737,
|
|
8738
8740
|
"column": 3
|
|
8739
8741
|
}
|
|
8740
8742
|
},
|
|
@@ -8761,7 +8763,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8761
8763
|
},
|
|
8762
8764
|
sourceLocation: {
|
|
8763
8765
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8764
|
-
"line":
|
|
8766
|
+
"line": 680,
|
|
8765
8767
|
"column": 3
|
|
8766
8768
|
}
|
|
8767
8769
|
},
|
|
@@ -8820,7 +8822,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8820
8822
|
},
|
|
8821
8823
|
sourceLocation: {
|
|
8822
8824
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8823
|
-
"line":
|
|
8825
|
+
"line": 1251,
|
|
8824
8826
|
"column": 3
|
|
8825
8827
|
}
|
|
8826
8828
|
},
|
|
@@ -8856,7 +8858,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8856
8858
|
},
|
|
8857
8859
|
sourceLocation: {
|
|
8858
8860
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8859
|
-
"line":
|
|
8861
|
+
"line": 1153,
|
|
8860
8862
|
"column": 3
|
|
8861
8863
|
}
|
|
8862
8864
|
},
|
|
@@ -8915,7 +8917,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8915
8917
|
},
|
|
8916
8918
|
sourceLocation: {
|
|
8917
8919
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8918
|
-
"line":
|
|
8920
|
+
"line": 1135,
|
|
8919
8921
|
"column": 3
|
|
8920
8922
|
}
|
|
8921
8923
|
},
|
|
@@ -8951,7 +8953,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
8951
8953
|
},
|
|
8952
8954
|
sourceLocation: {
|
|
8953
8955
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
8954
|
-
"line":
|
|
8956
|
+
"line": 1168,
|
|
8955
8957
|
"column": 3
|
|
8956
8958
|
}
|
|
8957
8959
|
},
|
|
@@ -9010,7 +9012,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9010
9012
|
},
|
|
9011
9013
|
sourceLocation: {
|
|
9012
9014
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9013
|
-
"line":
|
|
9015
|
+
"line": 1178,
|
|
9014
9016
|
"column": 3
|
|
9015
9017
|
}
|
|
9016
9018
|
},
|
|
@@ -9037,7 +9039,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9037
9039
|
},
|
|
9038
9040
|
sourceLocation: {
|
|
9039
9041
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9040
|
-
"line":
|
|
9042
|
+
"line": 1246,
|
|
9041
9043
|
"column": 3
|
|
9042
9044
|
}
|
|
9043
9045
|
},
|
|
@@ -9064,7 +9066,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9064
9066
|
},
|
|
9065
9067
|
sourceLocation: {
|
|
9066
9068
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9067
|
-
"line":
|
|
9069
|
+
"line": 1081,
|
|
9068
9070
|
"column": 3
|
|
9069
9071
|
}
|
|
9070
9072
|
},
|
|
@@ -9091,7 +9093,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9091
9093
|
},
|
|
9092
9094
|
sourceLocation: {
|
|
9093
9095
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9094
|
-
"line":
|
|
9096
|
+
"line": 1115,
|
|
9095
9097
|
"column": 3
|
|
9096
9098
|
}
|
|
9097
9099
|
},
|
|
@@ -9140,7 +9142,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9140
9142
|
},
|
|
9141
9143
|
sourceLocation: {
|
|
9142
9144
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9143
|
-
"line":
|
|
9145
|
+
"line": 1223,
|
|
9144
9146
|
"column": 3
|
|
9145
9147
|
}
|
|
9146
9148
|
},
|
|
@@ -9199,7 +9201,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9199
9201
|
},
|
|
9200
9202
|
sourceLocation: {
|
|
9201
9203
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9202
|
-
"line":
|
|
9204
|
+
"line": 1199,
|
|
9203
9205
|
"column": 3
|
|
9204
9206
|
}
|
|
9205
9207
|
},
|
|
@@ -9248,7 +9250,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9248
9250
|
},
|
|
9249
9251
|
sourceLocation: {
|
|
9250
9252
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9251
|
-
"line":
|
|
9253
|
+
"line": 1124,
|
|
9252
9254
|
"column": 3
|
|
9253
9255
|
}
|
|
9254
9256
|
},
|
|
@@ -9297,7 +9299,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9297
9299
|
},
|
|
9298
9300
|
sourceLocation: {
|
|
9299
9301
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9300
|
-
"line":
|
|
9302
|
+
"line": 1211,
|
|
9301
9303
|
"column": 3
|
|
9302
9304
|
}
|
|
9303
9305
|
},
|
|
@@ -9333,7 +9335,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9333
9335
|
},
|
|
9334
9336
|
sourceLocation: {
|
|
9335
9337
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9336
|
-
"line":
|
|
9338
|
+
"line": 1238,
|
|
9337
9339
|
"column": 3
|
|
9338
9340
|
}
|
|
9339
9341
|
},
|
|
@@ -9382,7 +9384,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9382
9384
|
},
|
|
9383
9385
|
sourceLocation: {
|
|
9384
9386
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9385
|
-
"line":
|
|
9387
|
+
"line": 1015,
|
|
9386
9388
|
"column": 3
|
|
9387
9389
|
}
|
|
9388
9390
|
},
|
|
@@ -9441,7 +9443,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9441
9443
|
},
|
|
9442
9444
|
sourceLocation: {
|
|
9443
9445
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9444
|
-
"line":
|
|
9446
|
+
"line": 1043,
|
|
9445
9447
|
"column": 3
|
|
9446
9448
|
}
|
|
9447
9449
|
},
|
|
@@ -9477,7 +9479,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9477
9479
|
},
|
|
9478
9480
|
sourceLocation: {
|
|
9479
9481
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9480
|
-
"line":
|
|
9482
|
+
"line": 1006,
|
|
9481
9483
|
"column": 3
|
|
9482
9484
|
}
|
|
9483
9485
|
},
|
|
@@ -9536,7 +9538,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9536
9538
|
},
|
|
9537
9539
|
sourceLocation: {
|
|
9538
9540
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9539
|
-
"line":
|
|
9541
|
+
"line": 1030,
|
|
9540
9542
|
"column": 3
|
|
9541
9543
|
}
|
|
9542
9544
|
},
|
|
@@ -9572,7 +9574,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9572
9574
|
},
|
|
9573
9575
|
sourceLocation: {
|
|
9574
9576
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9575
|
-
"line":
|
|
9577
|
+
"line": 1069,
|
|
9576
9578
|
"column": 9
|
|
9577
9579
|
}
|
|
9578
9580
|
},
|
|
@@ -9631,7 +9633,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9631
9633
|
},
|
|
9632
9634
|
sourceLocation: {
|
|
9633
9635
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9634
|
-
"line":
|
|
9636
|
+
"line": 1056,
|
|
9635
9637
|
"column": 3
|
|
9636
9638
|
}
|
|
9637
9639
|
},
|
|
@@ -9680,7 +9682,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9680
9682
|
},
|
|
9681
9683
|
sourceLocation: {
|
|
9682
9684
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9683
|
-
"line":
|
|
9685
|
+
"line": 1104,
|
|
9684
9686
|
"column": 3
|
|
9685
9687
|
}
|
|
9686
9688
|
},
|
|
@@ -9716,7 +9718,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9716
9718
|
},
|
|
9717
9719
|
sourceLocation: {
|
|
9718
9720
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9719
|
-
"line":
|
|
9721
|
+
"line": 1098,
|
|
9720
9722
|
"column": 3
|
|
9721
9723
|
}
|
|
9722
9724
|
},
|
|
@@ -9775,7 +9777,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9775
9777
|
},
|
|
9776
9778
|
sourceLocation: {
|
|
9777
9779
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9778
|
-
"line":
|
|
9780
|
+
"line": 1086,
|
|
9779
9781
|
"column": 3
|
|
9780
9782
|
}
|
|
9781
9783
|
},
|
|
@@ -9834,7 +9836,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9834
9836
|
},
|
|
9835
9837
|
sourceLocation: {
|
|
9836
9838
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9837
|
-
"line":
|
|
9839
|
+
"line": 1327,
|
|
9838
9840
|
"column": 9
|
|
9839
9841
|
}
|
|
9840
9842
|
},
|
|
@@ -9893,7 +9895,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9893
9895
|
},
|
|
9894
9896
|
sourceLocation: {
|
|
9895
9897
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9896
|
-
"line":
|
|
9898
|
+
"line": 1356,
|
|
9897
9899
|
"column": 9
|
|
9898
9900
|
}
|
|
9899
9901
|
},
|
|
@@ -9942,7 +9944,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9942
9944
|
},
|
|
9943
9945
|
sourceLocation: {
|
|
9944
9946
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9945
|
-
"line":
|
|
9947
|
+
"line": 1368,
|
|
9946
9948
|
"column": 9
|
|
9947
9949
|
}
|
|
9948
9950
|
},
|
|
@@ -9991,7 +9993,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
9991
9993
|
},
|
|
9992
9994
|
sourceLocation: {
|
|
9993
9995
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
9994
|
-
"line":
|
|
9996
|
+
"line": 801,
|
|
9995
9997
|
"column": 9
|
|
9996
9998
|
}
|
|
9997
9999
|
},
|
|
@@ -10009,7 +10011,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10009
10011
|
},
|
|
10010
10012
|
sourceLocation: {
|
|
10011
10013
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10012
|
-
"line":
|
|
10014
|
+
"line": 791,
|
|
10013
10015
|
"column": 3
|
|
10014
10016
|
}
|
|
10015
10017
|
},
|
|
@@ -10058,7 +10060,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10058
10060
|
},
|
|
10059
10061
|
sourceLocation: {
|
|
10060
10062
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10061
|
-
"line":
|
|
10063
|
+
"line": 1436,
|
|
10062
10064
|
"column": 9
|
|
10063
10065
|
}
|
|
10064
10066
|
},
|
|
@@ -10094,7 +10096,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10094
10096
|
},
|
|
10095
10097
|
sourceLocation: {
|
|
10096
10098
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10097
|
-
"line":
|
|
10099
|
+
"line": 1313,
|
|
10098
10100
|
"column": 9
|
|
10099
10101
|
}
|
|
10100
10102
|
},
|
|
@@ -10130,7 +10132,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10130
10132
|
},
|
|
10131
10133
|
sourceLocation: {
|
|
10132
10134
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10133
|
-
"line":
|
|
10135
|
+
"line": 1342,
|
|
10134
10136
|
"column": 9
|
|
10135
10137
|
}
|
|
10136
10138
|
},
|
|
@@ -10179,7 +10181,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10179
10181
|
},
|
|
10180
10182
|
sourceLocation: {
|
|
10181
10183
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10182
|
-
"line":
|
|
10184
|
+
"line": 1497,
|
|
10183
10185
|
"column": 9
|
|
10184
10186
|
}
|
|
10185
10187
|
},
|
|
@@ -10228,7 +10230,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10228
10230
|
},
|
|
10229
10231
|
sourceLocation: {
|
|
10230
10232
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10231
|
-
"line":
|
|
10233
|
+
"line": 1387,
|
|
10232
10234
|
"column": 9
|
|
10233
10235
|
}
|
|
10234
10236
|
},
|
|
@@ -10277,7 +10279,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10277
10279
|
},
|
|
10278
10280
|
sourceLocation: {
|
|
10279
10281
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10280
|
-
"line":
|
|
10282
|
+
"line": 1463,
|
|
10281
10283
|
"column": 9
|
|
10282
10284
|
}
|
|
10283
10285
|
},
|
|
@@ -10313,7 +10315,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10313
10315
|
},
|
|
10314
10316
|
sourceLocation: {
|
|
10315
10317
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10316
|
-
"line":
|
|
10318
|
+
"line": 1264,
|
|
10317
10319
|
"column": 9
|
|
10318
10320
|
}
|
|
10319
10321
|
},
|
|
@@ -10349,7 +10351,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10349
10351
|
},
|
|
10350
10352
|
sourceLocation: {
|
|
10351
10353
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10352
|
-
"line":
|
|
10354
|
+
"line": 1567,
|
|
10353
10355
|
"column": 3
|
|
10354
10356
|
}
|
|
10355
10357
|
},
|
|
@@ -10385,7 +10387,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10385
10387
|
},
|
|
10386
10388
|
sourceLocation: {
|
|
10387
10389
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10388
|
-
"line":
|
|
10390
|
+
"line": 1561,
|
|
10389
10391
|
"column": 3
|
|
10390
10392
|
}
|
|
10391
10393
|
},
|
|
@@ -10412,7 +10414,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10412
10414
|
},
|
|
10413
10415
|
sourceLocation: {
|
|
10414
10416
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10415
|
-
"line":
|
|
10417
|
+
"line": 1555,
|
|
10416
10418
|
"column": 3
|
|
10417
10419
|
}
|
|
10418
10420
|
},
|
|
@@ -10461,7 +10463,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10461
10463
|
},
|
|
10462
10464
|
sourceLocation: {
|
|
10463
10465
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10464
|
-
"line":
|
|
10466
|
+
"line": 1586,
|
|
10465
10467
|
"column": 3
|
|
10466
10468
|
}
|
|
10467
10469
|
},
|
|
@@ -10488,7 +10490,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10488
10490
|
},
|
|
10489
10491
|
sourceLocation: {
|
|
10490
10492
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10491
|
-
"line":
|
|
10493
|
+
"line": 1612,
|
|
10492
10494
|
"column": 3
|
|
10493
10495
|
}
|
|
10494
10496
|
},
|
|
@@ -10537,7 +10539,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10537
10539
|
},
|
|
10538
10540
|
sourceLocation: {
|
|
10539
10541
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10540
|
-
"line":
|
|
10542
|
+
"line": 1576,
|
|
10541
10543
|
"column": 3
|
|
10542
10544
|
}
|
|
10543
10545
|
},
|
|
@@ -10586,7 +10588,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10586
10588
|
},
|
|
10587
10589
|
sourceLocation: {
|
|
10588
10590
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10589
|
-
"line":
|
|
10591
|
+
"line": 1599,
|
|
10590
10592
|
"column": 3
|
|
10591
10593
|
}
|
|
10592
10594
|
},
|
|
@@ -10622,7 +10624,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10622
10624
|
},
|
|
10623
10625
|
sourceLocation: {
|
|
10624
10626
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10625
|
-
"line":
|
|
10627
|
+
"line": 1629,
|
|
10626
10628
|
"column": 3
|
|
10627
10629
|
}
|
|
10628
10630
|
},
|
|
@@ -10681,7 +10683,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10681
10683
|
},
|
|
10682
10684
|
sourceLocation: {
|
|
10683
10685
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10684
|
-
"line":
|
|
10686
|
+
"line": 1644,
|
|
10685
10687
|
"column": 3
|
|
10686
10688
|
}
|
|
10687
10689
|
},
|
|
@@ -10717,7 +10719,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
10717
10719
|
},
|
|
10718
10720
|
sourceLocation: {
|
|
10719
10721
|
"file": "packages/dsh-qa-surface/src/index.ts",
|
|
10720
|
-
"line":
|
|
10722
|
+
"line": 1300,
|
|
10721
10723
|
"column": 9
|
|
10722
10724
|
}
|
|
10723
10725
|
}
|
|
@@ -11446,7 +11448,9 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11446
11448
|
activationSkill: "qa-surface",
|
|
11447
11449
|
activationMode: "all",
|
|
11448
11450
|
activationPresets: Object.freeze([]),
|
|
11449
|
-
docsRoot: ""
|
|
11451
|
+
docsRoot: "",
|
|
11452
|
+
docsDefaultVersion: "",
|
|
11453
|
+
docsDefaultVersionEnabled: false
|
|
11450
11454
|
}),
|
|
11451
11455
|
sources: Object.freeze({
|
|
11452
11456
|
enabled: true,
|
|
@@ -11548,16 +11552,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11548
11552
|
return /^([a-zA-Z]:[/\\]|\/)/u.test(value);
|
|
11549
11553
|
}
|
|
11550
11554
|
/**
|
|
11551
|
-
* Shared numeric guard for a limit with a floor but no honest ceiling: the value
|
|
11552
|
-
* has to be a safe integer of at least `min`. A ceiling belongs on a budget the
|
|
11553
|
-
* deployment itself spends (bytes, parallel calls); a wait it merely allows is
|
|
11554
|
-
* the operator's call, and a ceiling there only ever truncated a legitimate long
|
|
11555
|
-
* answer.
|
|
11556
|
-
*/
|
|
11557
|
-
function assertIntAtLeast(name, value, min) {
|
|
11558
|
-
if (!Number.isSafeInteger(value) || value < min) throw new TypeError(`dsh-qa-surface: ${name} must be an integer of at least ${min}`);
|
|
11559
|
-
}
|
|
11560
|
-
/**
|
|
11561
11555
|
* Shared numeric guard for operator-tuned limits: the value has to be a safe
|
|
11562
11556
|
* integer inside [min, max], and every rejection carries the same message.
|
|
11563
11557
|
*/
|
|
@@ -11709,13 +11703,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11709
11703
|
}
|
|
11710
11704
|
const QA_INTEGRATION_TTL_DAYS_MAX = 3650;
|
|
11711
11705
|
/**
|
|
11712
|
-
*
|
|
11713
|
-
*
|
|
11714
|
-
*
|
|
11715
|
-
* an integration exists for — a nineteen-minute analysis came back as
|
|
11716
|
-
* "escalate" while the answer was still being written.
|
|
11706
|
+
* The operator may choose any wait Node can represent faithfully. The former
|
|
11707
|
+
* ten-minute product ceiling cut off legitimate long analyses, while values
|
|
11708
|
+
* above the runtime ceiling wrap to an almost immediate timer.
|
|
11717
11709
|
*/
|
|
11718
11710
|
const QA_INTEGRATION_TIMEOUT_MS_MIN = 5e3;
|
|
11711
|
+
/** Largest delay Node schedules without overflowing to an immediate timer. */
|
|
11712
|
+
const QA_INTEGRATION_TIMEOUT_MS_MAX = 2147483647;
|
|
11719
11713
|
const QA_INTEGRATION_BODY_BYTES_MIN = 1048576;
|
|
11720
11714
|
const QA_INTEGRATION_BODY_BYTES_MAX = 67108864;
|
|
11721
11715
|
const QA_INTEGRATION_ATTACHMENT_BYTES_MIN = 1024;
|
|
@@ -11768,7 +11762,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
11768
11762
|
const maxAttachmentBytes = input?.maxAttachmentBytes ?? fallback.maxAttachmentBytes;
|
|
11769
11763
|
const maxAnswerCharacters = input?.maxAnswerCharacters ?? fallback.maxAnswerCharacters;
|
|
11770
11764
|
assertIntInRange("integration.tokenTtlDays", tokenTtlDays, 1, QA_INTEGRATION_TTL_DAYS_MAX);
|
|
11771
|
-
|
|
11765
|
+
assertIntInRange("integration.requestTimeoutMs", requestTimeoutMs, QA_INTEGRATION_TIMEOUT_MS_MIN, QA_INTEGRATION_TIMEOUT_MS_MAX);
|
|
11772
11766
|
assertIntInRange("integration.maxConcurrent", maxConcurrent, 1, 16);
|
|
11773
11767
|
assertIntInRange("integration.requestsPerMinute", requestsPerMinute, 1, 600);
|
|
11774
11768
|
assertIntInRange("integration.maxRequestBytes", maxRequestBytes, QA_INTEGRATION_BODY_BYTES_MIN, QA_INTEGRATION_BODY_BYTES_MAX);
|
|
@@ -12047,6 +12041,26 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12047
12041
|
});
|
|
12048
12042
|
}
|
|
12049
12043
|
//#endregion
|
|
12044
|
+
//#region src/shared/docs-version.ts
|
|
12045
|
+
/**
|
|
12046
|
+
* The documentation version grammar, shared by the Host and the browser half.
|
|
12047
|
+
*
|
|
12048
|
+
* This module must stay dependency-free: the settings card bundle inlines the
|
|
12049
|
+
* resolver that validates a configured default version, and a browser build
|
|
12050
|
+
* must not pull the QA tool runtime — or the Node builtins it reads files with
|
|
12051
|
+
* — into the page just to learn what a version looks like.
|
|
12052
|
+
*/
|
|
12053
|
+
/** `3.8`, `v2`, `2024.1`: the directory segment a corpus names an edition with. */
|
|
12054
|
+
const VERSION_SEGMENT = /^v?\d+(?:\.\d+)*$/iu;
|
|
12055
|
+
/**
|
|
12056
|
+
* Whether a path segment — or a configured default version — is a documentation
|
|
12057
|
+
* version. A default the corpus can never match is refused where it is written
|
|
12058
|
+
* rather than answered with an empty search.
|
|
12059
|
+
*/
|
|
12060
|
+
function isDocumentationVersion(value) {
|
|
12061
|
+
return VERSION_SEGMENT.test(value.trim());
|
|
12062
|
+
}
|
|
12063
|
+
//#endregion
|
|
12050
12064
|
//#region src/config-resolvers/tools.ts
|
|
12051
12065
|
/**
|
|
12052
12066
|
* The public skill-name grammar (`@deepseek-ai/dsh-skill`): lowercase
|
|
@@ -12062,12 +12076,16 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
12062
12076
|
if (activationMode !== "all") throw new Error(`tools.activationMode must be "all"; got "${String(activationMode)}"`);
|
|
12063
12077
|
const activationPresets = [...input.tools?.activationPresets ?? DEFAULT_QA_SURFACE_CONFIG.tools.activationPresets];
|
|
12064
12078
|
for (const preset of activationPresets) if (preset.length === 0) throw new Error("tools.activationPresets must not contain empty names");
|
|
12079
|
+
const defaultVersion = (input.tools?.docsDefaultVersion ?? DEFAULT_QA_SURFACE_CONFIG.tools.docsDefaultVersion).trim();
|
|
12080
|
+
if (defaultVersion !== "" && !isDocumentationVersion(defaultVersion)) throw new Error(`tools.docsDefaultVersion must be a documentation version such as "3.8", got "${defaultVersion}"`);
|
|
12065
12081
|
return Object.freeze({
|
|
12066
12082
|
activationSkill,
|
|
12067
12083
|
activationMode,
|
|
12068
12084
|
activationPresets: Object.freeze(activationPresets),
|
|
12069
12085
|
dynamicActivation: input.tools?.dynamicActivation ?? DEFAULT_QA_SURFACE_CONFIG.tools.dynamicActivation,
|
|
12070
|
-
docsRoot: input.tools?.docsRoot ?? DEFAULT_QA_SURFACE_CONFIG.tools.docsRoot
|
|
12086
|
+
docsRoot: input.tools?.docsRoot ?? DEFAULT_QA_SURFACE_CONFIG.tools.docsRoot,
|
|
12087
|
+
docsDefaultVersion: defaultVersion,
|
|
12088
|
+
docsDefaultVersionEnabled: input.tools?.docsDefaultVersionEnabled ?? DEFAULT_QA_SURFACE_CONFIG.tools.docsDefaultVersionEnabled
|
|
12071
12089
|
});
|
|
12072
12090
|
}
|
|
12073
12091
|
//#endregion
|
|
@@ -49919,6 +49937,76 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
49919
49937
|
};
|
|
49920
49938
|
}
|
|
49921
49939
|
//#endregion
|
|
49940
|
+
//#region src/client/user-settings/fields.tsx
|
|
49941
|
+
function QaSettingsField(props) {
|
|
49942
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
49943
|
+
className: "dsh-qa-settings__field",
|
|
49944
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
49945
|
+
className: "dsh-qa-settings__field-label",
|
|
49946
|
+
children: [props.label, props.children]
|
|
49947
|
+
}), props.hint === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
49948
|
+
className: "dsh-qa-settings__field-hint",
|
|
49949
|
+
children: props.hint
|
|
49950
|
+
})]
|
|
49951
|
+
});
|
|
49952
|
+
}
|
|
49953
|
+
function QaSettingsSection(props) {
|
|
49954
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
49955
|
+
className: "dsh-qa-settings__section",
|
|
49956
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
|
|
49957
|
+
className: "dsh-qa-settings__section-head",
|
|
49958
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
49959
|
+
className: "dsh-qa-settings__section-title",
|
|
49960
|
+
children: props.title
|
|
49961
|
+
}), props.aside]
|
|
49962
|
+
}), props.children]
|
|
49963
|
+
});
|
|
49964
|
+
}
|
|
49965
|
+
function QaSettingsToggle(props) {
|
|
49966
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
49967
|
+
className: "dsh-qa-settings__toggle-row",
|
|
49968
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
49969
|
+
className: "dsh-qa-settings__toggle",
|
|
49970
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
49971
|
+
type: "checkbox",
|
|
49972
|
+
checked: props.checked,
|
|
49973
|
+
disabled: props.disabled === true,
|
|
49974
|
+
onChange: (event) => props.onChange(event.currentTarget.checked)
|
|
49975
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
49976
|
+
className: "dsh-qa-settings__toggle-label",
|
|
49977
|
+
children: props.label
|
|
49978
|
+
})]
|
|
49979
|
+
}), props.hint === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
49980
|
+
className: "dsh-qa-settings__field-hint",
|
|
49981
|
+
children: props.hint
|
|
49982
|
+
})]
|
|
49983
|
+
});
|
|
49984
|
+
}
|
|
49985
|
+
function QaSettingsNotice(props) {
|
|
49986
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
49987
|
+
className: `dsh-qa-settings__notice dsh-qa-settings__notice--${props.tone}`,
|
|
49988
|
+
role: props.tone === "error" ? "alert" : "status",
|
|
49989
|
+
children: props.children
|
|
49990
|
+
});
|
|
49991
|
+
}
|
|
49992
|
+
function QaSettingsActions(props) {
|
|
49993
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
49994
|
+
className: "dsh-qa-settings__actions",
|
|
49995
|
+
children: props.children
|
|
49996
|
+
});
|
|
49997
|
+
}
|
|
49998
|
+
function QaSettingsButton(props) {
|
|
49999
|
+
const tone = props.tone ?? "plain";
|
|
50000
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
50001
|
+
type: props.type ?? "button",
|
|
50002
|
+
className: `dsh-qa-settings__button dsh-qa-settings__button--${tone}`,
|
|
50003
|
+
disabled: props.disabled === true,
|
|
50004
|
+
...props.title === void 0 ? {} : { title: props.title },
|
|
50005
|
+
...props.onClick === void 0 ? {} : { onClick: props.onClick },
|
|
50006
|
+
children: props.label
|
|
50007
|
+
});
|
|
50008
|
+
}
|
|
50009
|
+
//#endregion
|
|
49922
50010
|
//#region src/client/components/QaModal.tsx
|
|
49923
50011
|
/**
|
|
49924
50012
|
* Open dialogs, innermost last. A dialog opened from another one (the tool
|
|
@@ -49999,8 +50087,26 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
49999
50087
|
}
|
|
50000
50088
|
//#endregion
|
|
50001
50089
|
//#region src/client/components/QaChangelog.tsx
|
|
50002
|
-
const QA_VERSION = "0.
|
|
50090
|
+
const QA_VERSION = "0.12.0";
|
|
50003
50091
|
const QA_CHANGELOG = [
|
|
50092
|
+
{
|
|
50093
|
+
version: "0.12.0",
|
|
50094
|
+
date: "2026-09-22",
|
|
50095
|
+
sections: [{
|
|
50096
|
+
title: "Новое",
|
|
50097
|
+
items: ["Стенд может назвать редакцию документации, по которой отвечает. Корпус публикуется сразу в нескольких редакциях — одна и та же глава про монтаж или про интеграцию лежит отдельно для 3.7 и для 3.8, — и вопрос «как настроить интеграцию» попадал в ту редакцию, которая встретилась поиску первой. Теперь в настройках, в разделе «Документация», задаётся версия по умолчанию: поиск, которому не назвали версию и не сузили подкаталог, ищет только по ней. Версия, названная в самом вопросе к поиску или в пути, сильнее умолчания — спросить про другую редакцию по-прежнему можно. Рядом видно, откуда стенд читает документацию: общий корпус развёртывания или каталог docs рабочего каталога чата. В ответе поиска видно, что редакцию подставил стенд, а не спрашивающий: «version 3.8, the stand's default»."]
|
|
50098
|
+
}, {
|
|
50099
|
+
title: "Исправления",
|
|
50100
|
+
items: [
|
|
50101
|
+
"Первое сообщение нового чата больше не исчезает. После создания разговора стенд закрепляет его за учётной записью; это обновление списка чатов ошибочно перезапускало контроллер ровно между проверкой допуска и отправкой вопроса. Поле ввода уже очищалось, вопрос на мгновение появлялся в переписке, затем снова показывался пустой экран, а ошибки не было. Теперь изменение списка принадлежащих пользователю чатов не считается новым входом: первый вопрос остаётся на экране и доходит до только что созданного разговора.",
|
|
50102
|
+
"Удаление чата из истории теперь требует явного подтверждения. Первый клик открывает диалог с названием чата и пояснением, что удаляется запись этого браузера, а сам разговор остаётся на стенде; действие можно отменить кнопкой, крестиком, кликом по фону или Escape.",
|
|
50103
|
+
"Настройки документации применяются без перезапуска стенда. Смена общего корня или версии по умолчанию раньше меняла карточку настроек, но уже созданные инструменты продолжали читать прежний снимок. Заодно общий каталог может называться не только docs — в ответах путь всё равно остаётся привычным docs/…, редакция V2 совпадает с v2, исключённые редакции не расходуют предел обхода, а поиск по явно заданному пути не приписывает выбор версии умолчанию стенда.",
|
|
50104
|
+
"Права роли больше не расширяются самим фактом подключения динамического набора инструментов. В чате с учётной записью инструмент доступен только тогда, когда он указан в роли или выдан разрешённым навыком; подключённый к агенту, но не разрешённый ролью инструмент получает отказ до выполнения.",
|
|
50105
|
+
"Поиск по документации находит документы, а не описи. У корпуса есть служебные каталоги рядом с документами — дерево картинок, описи, разбор спорных случаев, — и поиск читал их первыми: подчёркивание в имени сортируется раньше букв, а опись перечисляет все модули и версии корпуса, поэтому она отвечала на любой вопрос о продукте и выбирала весь лимит ответа до того, как открывался первый документ. На стенде с таким корпусом поиск без указания пути не находил вообще ничего: обход считал картинки, упирался в предел и останавливался, не дойдя до текстов. Теперь порядок обхода — документы, затем отдельные файлы, затем служебные каталоги; очередь каталогов решается путём, а не порядком обнаружения (служебная опись в корне больше не опережает документ модуля на уровень глубже); картинки, архивы и офисные файлы узнаются по расширению и не читаются вовсе; ни они, ни файлы вне выбранной области не расходуют предел прочитанных документов. Поиск, который ничего не нашёл, теперь говорит это, прочитав корпус.",
|
|
50106
|
+
"Фильтры «версия» и «модуль» снова работают. Ответ поиска называет редакцию и модуль, по которым он искал, но в объявленной схеме ответа эти два поля не были описаны, а стенд отказывает в ответе с неописанным полем: каждый вызов с фильтром падал с «returned invalid output» уже после выполненного поиска — то есть ровно тот вызов, ради которого фильтры и сделаны. Оба поля объявлены."
|
|
50107
|
+
]
|
|
50108
|
+
}]
|
|
50109
|
+
},
|
|
50004
50110
|
{
|
|
50005
50111
|
version: "0.11.2",
|
|
50006
50112
|
date: "2026-09-22",
|
|
@@ -50088,16 +50194,22 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
50088
50194
|
"Вопрос, на который уже нельзя ответить, больше не остаётся на экране. Запрос жил до тех пор, пока его не закроют: при остановке хода вопрос снимался по сигналу самого вызова, но запрос без такого сигнала или ход, завершившийся другим путём, оставляли форму навсегда — ответ на неё уходил в никуда, а оператор видел живое на вид поле. Теперь стенд закрывает всё, что осталось от хода, как только спросивший помощник перестаёт работать, а страница продолжает сверяться со стендом, пока форма на экране: ответ, которого стенд уже не ждёт, отклоняется вместо тихой отправки.",
|
|
50089
50195
|
"Вопрос, оставшийся до перезагрузки страницы, снова появляется после неё. Страница читает список вопросов чата сразу при его открытии и при каждом восстановлении связи, а не только пока идёт ход: раньше перезагрузка могла показать пустое поле ввода, за которым агент продолжал ждать ответа.",
|
|
50090
50196
|
"Сбой при чтении персональных навыков одного аккаунта больше не прячет навыки у всех. Чтение каталога навыков, которому не повезло с файловой системой (отказ доступа, гонка чтения каталога), отдавало ошибку в реестр навыков харнесса, и тот в ответ переставал публиковать список доступных навыков целиком: модель получала «навык недоступен» на любое имя, включая навыки плагинов и корпоративные. Теперь такой сбой вырождается в «у этого аккаунта навыков не прочитано» и пишется в журнал событием skill.discover-failed, а остальной каталог продолжает публиковаться.",
|
|
50091
|
-
"Раздел «Общие возможности» в консоли администратора снова видит навыки и инструменты, которые монтирует агентский пресет. Список читался «глобально», а каталог навыков стенда и семейство инструментов пресета живут в области видимости пресета: администратор не видел ни корпоративных навыков поиска, ни инструментов пресета и не мог ничего из них выдать или отозвать. Теперь страница читает реестры глазами того пресета, под которым идут QA-чаты (задаётся session.agentPreset, на стенде это qa-research), а если пресет не удалось собрать — как и раньше остаётся глобальный вид, и страница не падает."
|
|
50197
|
+
"Раздел «Общие возможности» в консоли администратора снова видит навыки и инструменты, которые монтирует агентский пресет. Список читался «глобально», а каталог навыков стенда и семейство инструментов пресета живут в области видимости пресета: администратор не видел ни корпоративных навыков поиска, ни инструментов пресета и не мог ничего из них выдать или отозвать. Теперь страница читает реестры глазами того пресета, под которым идут QA-чаты (задаётся session.agentPreset, на стенде это qa-research), а если пресет не удалось собрать — как и раньше остаётся глобальный вид, и страница не падает.",
|
|
50198
|
+
"Стенд больше не принимает давно не открывавшийся разговор за удалённый: перед очисткой он сверяется и с долговременным хранилищем, а при неполном ответе ничего не удаляет.",
|
|
50199
|
+
"После настоящего удаления разговора больше не остаются оценки, очередь на разбор и другие служебные записи; админка обновляет это состояние при открытии."
|
|
50092
50200
|
]
|
|
50093
50201
|
},
|
|
50094
50202
|
{
|
|
50095
50203
|
title: "Прочее",
|
|
50096
|
-
items: [
|
|
50204
|
+
items: [
|
|
50205
|
+
"Оператору стенда: настройка вопросов, которая ничего не делает, теперь видна в журнале и в карточке настроек. Если вопросы включены, а инструмент ask_user_question не входит в список разрешённых (lockdown.toolPolicy.allow), форма не появится никогда; если инструмент разрешён, а вопросы выключены, каждый запрос отклоняется. Оба случая пишут в журнал одно предупреждение question.config-incomplete на чат с указанием, какой половины не хватает, а в разделе «Состояние» появилась плашка «Вопросы модели» с тем же предупреждением — сам чат при этом открывается как обычно.",
|
|
50206
|
+
"Оператору стенда: в журнале появились события о ходе вопроса — запрос принят и ждёт ответа (question.claimed), ответ получен (question.answered), вопрос закрыт оператором (question.cancelled) или снят вместе с ходом (question.aborted), запрос отдан другому интерфейсу (question.delegated), ответ отклонён (question.refused). Текст ответа в журнал не попадает: только число вопросов и то, был ли среди ответов свободный текст.",
|
|
50207
|
+
"Оператору стенда: разговоры из личных папок посетителей ожидаемо остаются в разделе Ungrouped. Для старых разговоров, чей каталог совпадает с рабочей областью, добавлена безопасная команда qa-attach-sessions с предварительным просмотром и резервной копией."
|
|
50208
|
+
]
|
|
50097
50209
|
},
|
|
50098
50210
|
{
|
|
50099
50211
|
title: "Новое",
|
|
50100
|
-
items: ["В конфигурации стенда значение enabled для interaction.questions означает то же, что и interactive: включать вопросы модели стало можно любым из двух написаний."]
|
|
50212
|
+
items: ["В конфигурации стенда значение enabled для interaction.questions означает то же, что и interactive: включать вопросы модели стало можно любым из двух написаний.", "Администратор может удалить разговор со стенда вместе со служебными сессиями, оценками, разбором и источниками. Удаление требует подтверждения, записывается в журнал действий и отказывается работать, если разговор ещё открыт или хранилище нельзя безопасно очистить."]
|
|
50101
50213
|
}
|
|
50102
50214
|
]
|
|
50103
50215
|
},
|
|
@@ -50107,7 +50219,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
50107
50219
|
sections: [
|
|
50108
50220
|
{
|
|
50109
50221
|
title: "Новое",
|
|
50110
|
-
items: [
|
|
50222
|
+
items: []
|
|
50111
50223
|
},
|
|
50112
50224
|
{
|
|
50113
50225
|
title: "Исправления",
|
|
@@ -50115,20 +50227,13 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
50115
50227
|
"Ответы агента стали заметно отзывчивее на загруженном стенде: раньше данные о том, какие документы и страницы агент прочитал, хранились в одном общем файле стенда, и каждый ход агента — включая ходы всех его помощников — переписывал этот файл целиком. Стоимость хода росла вместе со всей накопленной историей стенда: на реальных данных один ход стоил от 7 миллисекунд на небольшом стенде до 106 на большом, и всё это время сервер не отвечал никому из пользователей. Теперь данные каждого чата лежат отдельно, и ход переписывает только свой чат: на том же объёме — 4.2 миллисекунды вместо 106. Разбор ответа и панель источников работают как раньше.",
|
|
50116
50228
|
"Открытие чата больше не переписывает все данные стенда. Список пользователей и записи о том, кому принадлежит какой чат, лежали в одном файле настроек, и он целиком перезаписывался при каждом действии — а записей становится на одну больше с каждым созданным чатом, так что со временем это становилось всё дороже. Теперь каждое действие записывает только своё изменение, и открытие чата стоит одинаково на стенде любого возраста.",
|
|
50117
50229
|
"Удалённые чаты больше не копятся в консоли администратора. Запись о том, кому принадлежит чат, переживала сам чат: «удалить» в браузере лишь скрывало его, а серверный список возвращал обратно, поэтому в «Разговорах», в счётчиках и в аналитике навсегда оставались чаты, которых уже нет. Теперь при создании новых чатов стенд убирает записи о тех, которых больше нет на стенде, — и никогда не трогает записи существующих чатов, даже очень старых.",
|
|
50118
|
-
"Стенд больше не убирает записи о существующих чатах. Убирая из «Разговоров» чаты, которых нет, стенд спрашивал только о тех, что открывались после последнего запуска: чат, к которому сутки не обращались, выглядел как удалённый, и запись о нём исчезала — разговор пропадал из истории своего владельца, из счётчиков и из аналитики, хотя сам он был цел. Теперь стенд сверяется и с тем, что лежит в хранилище, а если ответить наверняка не может, не убирает ничего.",
|
|
50119
|
-
"Удалённый чат больше не оставляет после себя оценок и очереди на разбор. Оценки ответов, вердикты рецензентов и очередь на разбор хранились по идентификатору чата и переживали его: в «Обратной связи», в очереди и в аналитике оставались записи о разговоре, которого уже нет, а открыть его было нельзя. Теперь вместе с записью о владении убираются и они; журнал действий администраторов остаётся нетронутым.",
|
|
50120
|
-
"Админка показывает состояние на момент открытия: «Разговоры», счётчики и аналитика больше не ждут, пока кто-нибудь создаст новый чат, чтобы убрать из списка исчезнувшие.",
|
|
50121
50230
|
"Файл настроек стенда стал в разы меньше: политика доступа каждого чата хранилась в нём отдельной копией, хотя у всех чатов она одна и та же. На одном стенде из 25 копий различными оказались две — эта часть уменьшилась без потери данных: каждый чат по-прежнему помнит именно тот набор возможностей, с которым был открыт.",
|
|
50122
50231
|
"Обновление стенда до этой версии сохраняет все учётные записи, пароли и привязку чатов к пользователям: прежний файл настроек переносится автоматически при первом запуске, а сам файл не удаляется, а сохраняется рядом с пометкой о переносе."
|
|
50123
50232
|
]
|
|
50124
50233
|
},
|
|
50125
50234
|
{
|
|
50126
50235
|
title: "Прочее",
|
|
50127
|
-
items: [
|
|
50128
|
-
"У хранения данных чатов появился предел: на чат сохраняются источники последних 200 ходов, на стенде — 500 последних чатов, а чат, к которому не обращались месяц, освобождает место. Это касается только служебных данных разбора: сам текст разговора не удаляется, старый чат открывается как раньше, но панель источников у него может быть пустой.",
|
|
50129
|
-
"Оператору стенда: пределы хранения настраиваются (сколько ходов и чатов держать, через сколько дней освобождать, как часто убирать записи о несуществующих чатах). Значения по умолчанию подобраны под обычную нагрузку, менять их не обязательно.",
|
|
50130
|
-
"Оператору стенда: в списке чатов DSH разговоры стенда показываются в разделе «Ungrouped». Так и должно быть при включённых личных папках посетителей: чат работает в своей папке внутри рабочей области, а список группирует только те чаты, чей рабочий каталог совпадает с рабочей областью целиком, и перенести чат в область задним числом нельзя. Исключение — чаты, созданные прежней настройкой, когда рабочий каталог задавался напрямую (или задавался тем же каталогом, но записанным иначе, например через прямые слэши): их можно вернуть в рабочую область командой qa-attach-sessions при остановленном стенде — она сначала показывает, что изменит, а с ключом --write вносит правку и сохраняет копию реестра рабочей области. На чаты посетителей с личными папками команда не влияет."
|
|
50131
|
-
]
|
|
50236
|
+
items: ["У хранения данных чатов появился предел: на чат сохраняются источники последних 200 ходов, на стенде — 500 последних чатов, а чат, к которому не обращались месяц, освобождает место. Это касается только служебных данных разбора: сам текст разговора не удаляется, старый чат открывается как раньше, но панель источников у него может быть пустой.", "Оператору стенда: пределы хранения настраиваются (сколько ходов и чатов держать, через сколько дней освобождать, как часто убирать записи о несуществующих чатах). Значения по умолчанию подобраны под обычную нагрузку, менять их не обязательно."]
|
|
50132
50237
|
},
|
|
50133
50238
|
{
|
|
50134
50239
|
title: "Исправления",
|
|
@@ -50408,12 +50513,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
50408
50513
|
className: "dsh-qa-changelog__date",
|
|
50409
50514
|
children: entry.date
|
|
50410
50515
|
}),
|
|
50411
|
-
entry.version === "0.
|
|
50516
|
+
entry.version === "0.12.0" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
50412
50517
|
className: "dsh-qa-changelog__current",
|
|
50413
50518
|
children: "текущая"
|
|
50414
50519
|
}) : null
|
|
50415
50520
|
]
|
|
50416
|
-
}), entry.sections.map((section) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
50521
|
+
}), entry.sections.map((section, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
50417
50522
|
className: "dsh-qa-changelog__section",
|
|
50418
50523
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h4", {
|
|
50419
50524
|
className: "dsh-qa-changelog__section-title",
|
|
@@ -50422,7 +50527,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
50422
50527
|
className: "dsh-qa-changelog__list",
|
|
50423
50528
|
children: section.items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("li", { children: item }, item))
|
|
50424
50529
|
})]
|
|
50425
|
-
}, section.title))]
|
|
50530
|
+
}, `${section.title}:${index}`))]
|
|
50426
50531
|
}, entry.version))
|
|
50427
50532
|
});
|
|
50428
50533
|
}
|
|
@@ -50839,13 +50944,12 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
50839
50944
|
});
|
|
50840
50945
|
const normalizedQuery = query.trim().toLowerCase();
|
|
50841
50946
|
const visibleRows = normalizedQuery === "" ? props.rows : props.rows.filter((row) => rowMatches(row, normalizedQuery));
|
|
50842
|
-
const
|
|
50947
|
+
const confirmingRow = confirmingId === null ? void 0 : props.rows.find((row) => row.id === confirmingId);
|
|
50843
50948
|
const sections = props.groupByOwner === true ? buildOwnerSections(visibleRows) : [{
|
|
50844
50949
|
name: "",
|
|
50845
50950
|
rows: visibleRows
|
|
50846
50951
|
}];
|
|
50847
50952
|
const renderRow = (row) => {
|
|
50848
|
-
const confirming = confirmingVisible && confirmingId === row.id;
|
|
50849
50953
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
50850
50954
|
className: row.active ? "dsh-qa-sidebar__item dsh-qa-sidebar__item--active" : "dsh-qa-sidebar__item",
|
|
50851
50955
|
children: [
|
|
@@ -50877,22 +50981,11 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
50877
50981
|
})(),
|
|
50878
50982
|
props.onDelete === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
50879
50983
|
type: "button",
|
|
50880
|
-
className:
|
|
50881
|
-
"aria-label":
|
|
50882
|
-
title:
|
|
50883
|
-
onClick: () =>
|
|
50884
|
-
|
|
50885
|
-
setConfirmingId(null);
|
|
50886
|
-
props.onDelete?.(row.id);
|
|
50887
|
-
return;
|
|
50888
|
-
}
|
|
50889
|
-
setConfirmingId(row.id);
|
|
50890
|
-
},
|
|
50891
|
-
children: confirming ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
50892
|
-
viewBox: "0 0 16 16",
|
|
50893
|
-
"aria-hidden": "true",
|
|
50894
|
-
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "m3.5 8.5 3 3L12.5 5" })
|
|
50895
|
-
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
50984
|
+
className: "dsh-qa-sidebar__item-delete",
|
|
50985
|
+
"aria-label": "Удалить чат",
|
|
50986
|
+
title: "Удалить чат",
|
|
50987
|
+
onClick: () => setConfirmingId(row.id),
|
|
50988
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("svg", {
|
|
50896
50989
|
viewBox: "0 0 16 16",
|
|
50897
50990
|
"aria-hidden": "true",
|
|
50898
50991
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", { d: "M2.5 4h11M6.5 4V2.5h3V4m-6.2 0 .6 9.5h7.2L12 4" })
|
|
@@ -51030,6 +51123,32 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
51030
51123
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(QaChangelogModal, {
|
|
51031
51124
|
open: changelogOpen,
|
|
51032
51125
|
onClose: () => setChangelogOpen(false)
|
|
51126
|
+
}),
|
|
51127
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(QaModal, {
|
|
51128
|
+
open: confirmingRow !== void 0,
|
|
51129
|
+
title: "Удалить чат",
|
|
51130
|
+
closeLabel: "Закрыть подтверждение удаления чата",
|
|
51131
|
+
onClose: () => setConfirmingId(null),
|
|
51132
|
+
footer: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(QaSettingsButton, {
|
|
51133
|
+
label: "Отмена",
|
|
51134
|
+
onClick: () => setConfirmingId(null)
|
|
51135
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(QaSettingsButton, {
|
|
51136
|
+
tone: "danger",
|
|
51137
|
+
label: "Удалить из истории",
|
|
51138
|
+
onClick: () => {
|
|
51139
|
+
if (confirmingRow === void 0) return;
|
|
51140
|
+
setConfirmingId(null);
|
|
51141
|
+
props.onDelete?.(confirmingRow.id);
|
|
51142
|
+
}
|
|
51143
|
+
})] }),
|
|
51144
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
51145
|
+
className: "dsh-qa-settings__lead",
|
|
51146
|
+
children: [
|
|
51147
|
+
"Удалить чат «",
|
|
51148
|
+
confirmingRow?.title ?? "Новый чат",
|
|
51149
|
+
"» из истории в этом браузере? Сам разговор останется на стенде."
|
|
51150
|
+
]
|
|
51151
|
+
})
|
|
51033
51152
|
})
|
|
51034
51153
|
]
|
|
51035
51154
|
});
|
|
@@ -52497,76 +52616,6 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
52497
52616
|
return `${title.slice(0, 51).trimEnd()}…`;
|
|
52498
52617
|
}
|
|
52499
52618
|
//#endregion
|
|
52500
|
-
//#region src/client/user-settings/fields.tsx
|
|
52501
|
-
function QaSettingsField(props) {
|
|
52502
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
52503
|
-
className: "dsh-qa-settings__field",
|
|
52504
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
52505
|
-
className: "dsh-qa-settings__field-label",
|
|
52506
|
-
children: [props.label, props.children]
|
|
52507
|
-
}), props.hint === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
52508
|
-
className: "dsh-qa-settings__field-hint",
|
|
52509
|
-
children: props.hint
|
|
52510
|
-
})]
|
|
52511
|
-
});
|
|
52512
|
-
}
|
|
52513
|
-
function QaSettingsSection(props) {
|
|
52514
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("section", {
|
|
52515
|
-
className: "dsh-qa-settings__section",
|
|
52516
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("header", {
|
|
52517
|
-
className: "dsh-qa-settings__section-head",
|
|
52518
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
52519
|
-
className: "dsh-qa-settings__section-title",
|
|
52520
|
-
children: props.title
|
|
52521
|
-
}), props.aside]
|
|
52522
|
-
}), props.children]
|
|
52523
|
-
});
|
|
52524
|
-
}
|
|
52525
|
-
function QaSettingsToggle(props) {
|
|
52526
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
52527
|
-
className: "dsh-qa-settings__toggle-row",
|
|
52528
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
52529
|
-
className: "dsh-qa-settings__toggle",
|
|
52530
|
-
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
52531
|
-
type: "checkbox",
|
|
52532
|
-
checked: props.checked,
|
|
52533
|
-
disabled: props.disabled === true,
|
|
52534
|
-
onChange: (event) => props.onChange(event.currentTarget.checked)
|
|
52535
|
-
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
52536
|
-
className: "dsh-qa-settings__toggle-label",
|
|
52537
|
-
children: props.label
|
|
52538
|
-
})]
|
|
52539
|
-
}), props.hint === void 0 ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
52540
|
-
className: "dsh-qa-settings__field-hint",
|
|
52541
|
-
children: props.hint
|
|
52542
|
-
})]
|
|
52543
|
-
});
|
|
52544
|
-
}
|
|
52545
|
-
function QaSettingsNotice(props) {
|
|
52546
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
52547
|
-
className: `dsh-qa-settings__notice dsh-qa-settings__notice--${props.tone}`,
|
|
52548
|
-
role: props.tone === "error" ? "alert" : "status",
|
|
52549
|
-
children: props.children
|
|
52550
|
-
});
|
|
52551
|
-
}
|
|
52552
|
-
function QaSettingsActions(props) {
|
|
52553
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
52554
|
-
className: "dsh-qa-settings__actions",
|
|
52555
|
-
children: props.children
|
|
52556
|
-
});
|
|
52557
|
-
}
|
|
52558
|
-
function QaSettingsButton(props) {
|
|
52559
|
-
const tone = props.tone ?? "plain";
|
|
52560
|
-
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
52561
|
-
type: props.type ?? "button",
|
|
52562
|
-
className: `dsh-qa-settings__button dsh-qa-settings__button--${tone}`,
|
|
52563
|
-
disabled: props.disabled === true,
|
|
52564
|
-
...props.title === void 0 ? {} : { title: props.title },
|
|
52565
|
-
...props.onClick === void 0 ? {} : { onClick: props.onClick },
|
|
52566
|
-
children: props.label
|
|
52567
|
-
});
|
|
52568
|
-
}
|
|
52569
|
-
//#endregion
|
|
52570
52619
|
//#region src/client/user-settings/GeneralSettingsPage.tsx
|
|
52571
52620
|
/**
|
|
52572
52621
|
* Placeholder with a purpose: the section exists so the dialog has a home for
|
|
@@ -58516,6 +58565,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
58516
58565
|
const accounts = props.accounts;
|
|
58517
58566
|
const accountsSnapshot = (0, react.useSyncExternalStore)(accounts?.subscribe ?? noopSubscribe$1, accounts?.getSnapshot ?? noopAccountsSnapshot, accounts?.getSnapshot ?? noopAccountsSnapshot);
|
|
58518
58567
|
const accountsStage = accountsSnapshot.stage;
|
|
58568
|
+
const accessPrincipal = accountsSnapshot.stage === "authed" ? `${accountsSnapshot.user.id}:${accountsSnapshot.user.role}` : null;
|
|
58519
58569
|
const adminRoute = isAdminPath(route.pathname, config.route.path);
|
|
58520
58570
|
const [access, setAccess] = (0, react.useState)();
|
|
58521
58571
|
const [selectedSubrole, setSelectedSubrole] = (0, react.useState)(null);
|
|
@@ -58552,7 +58602,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
58552
58602
|
minContentWidth: config.ui.minContentWidth
|
|
58553
58603
|
});
|
|
58554
58604
|
(0, react.useEffect)(() => {
|
|
58555
|
-
if (
|
|
58605
|
+
if (accessPrincipal === null) {
|
|
58556
58606
|
setAccess(void 0);
|
|
58557
58607
|
setSelectedSubrole(null);
|
|
58558
58608
|
clear();
|
|
@@ -58568,8 +58618,8 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
58568
58618
|
live = false;
|
|
58569
58619
|
};
|
|
58570
58620
|
}, [
|
|
58621
|
+
accessPrincipal,
|
|
58571
58622
|
accounts,
|
|
58572
|
-
accountsSnapshot,
|
|
58573
58623
|
props.accessApi,
|
|
58574
58624
|
clear
|
|
58575
58625
|
]);
|
|
@@ -59601,7 +59651,7 @@ body[data-dsh-qa-surface="active"] div:has(>[data-shell-overlay])>:not([data-she
|
|
|
59601
59651
|
.dsh-qa-sidebar__item-main{appearance:none;display:flex;align-items:center;gap:8px;width:100%;min-width:0;border:0;background:0 0;cursor:pointer;text-align:left;font:inherit;padding:7px 8px;border-radius:8px}
|
|
59602
59652
|
.dsh-qa-sidebar__item-main:focus-visible{outline:2px solid var(--dsh-qa-accent);outline-offset:-2px}
|
|
59603
59653
|
.dsh-qa-sidebar__item-delete{appearance:none;position:absolute;top:50%;right:4px;display:flex;align-items:center;justify-content:center;width:26px;height:26px;border:0;background:var(--dsw-alias-bg-layer-2);cursor:pointer;color:var(--dsw-alias-label-tertiary);padding:5px;border-radius:6px;opacity:0;transform:translateY(-50%);transition:opacity .12s}
|
|
59604
|
-
.dsh-qa-sidebar__item:hover .dsh-qa-sidebar__item-delete,.dsh-qa-sidebar__item-delete:focus-visible
|
|
59654
|
+
.dsh-qa-sidebar__item:hover .dsh-qa-sidebar__item-delete,.dsh-qa-sidebar__item-delete:focus-visible{opacity:1}
|
|
59605
59655
|
.dsh-qa-sidebar__item-delete:hover{color:var(--dsw-alias-label-primary)}
|
|
59606
59656
|
.dsh-qa-sidebar__item-audit{appearance:none;flex:none;display:inline-flex;align-items:center;gap:4px;height:22px;margin-right:4px;padding:0 8px;border:1px solid var(--dsw-alias-border-l2);border-radius:999px;background:var(--dsw-alias-bg-layer-3);color:var(--dsw-alias-label-secondary);font:inherit;font-size:11px;line-height:16px;cursor:pointer;transition:border-color .12s,color .12s}
|
|
59607
59657
|
.dsh-qa-sidebar__item-audit--with-delete{margin-right:28px}
|
|
@@ -59613,7 +59663,6 @@ body[data-dsh-qa-surface="active"] div:has(>[data-shell-overlay])>:not([data-she
|
|
|
59613
59663
|
.dsh-qa-sidebar__item-audit-verdict--warn{color:var(--dsw-alias-state-warn-primary)}
|
|
59614
59664
|
.dsh-qa-sidebar__item-audit-verdict--bad{color:var(--dsw-alias-state-error-primary)}
|
|
59615
59665
|
.dsh-qa-sidebar__item-delete:focus-visible{outline:2px solid var(--dsh-qa-accent);outline-offset:-2px}
|
|
59616
|
-
.dsh-qa-sidebar__item-delete--confirm{color:var(--dsh-qa-error-hover)}
|
|
59617
59666
|
.dsh-qa-sidebar__item-delete svg{width:14px;height:14px;display:block;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
|
|
59618
59667
|
.dsh-qa-sidebar__item-title{flex:1;min-width:0;overflow:hidden;color:var(--dsw-alias-label-secondary);font-size:13px;line-height:18px;text-overflow:ellipsis;white-space:nowrap}
|
|
59619
59668
|
.dsh-qa-sidebar__item--active .dsh-qa-sidebar__item-title{color:var(--dsw-alias-label-primary);font-weight:500}
|
|
@@ -61172,6 +61221,68 @@ ${QA_ROOT_STYLES}`;
|
|
|
61172
61221
|
});
|
|
61173
61222
|
}
|
|
61174
61223
|
//#endregion
|
|
61224
|
+
//#region src/client/settings/sections/docs.tsx
|
|
61225
|
+
/**
|
|
61226
|
+
* Documentation: which edition of the corpus a question is answered from.
|
|
61227
|
+
*
|
|
61228
|
+
* A published corpus carries several editions of the same module under
|
|
61229
|
+
* `docs/<module>/<version>/…`, and a chat asked about "the product" reads
|
|
61230
|
+
* whichever edition it meets first. A stand that knows which edition it is
|
|
61231
|
+
* about names it here, and `docs_search` stays inside it unless the call itself
|
|
61232
|
+
* names a `version` or narrows `path`. The switch keeps the value while turning
|
|
61233
|
+
* the behaviour off, so a stand can stop defaulting without losing the version
|
|
61234
|
+
* it configured.
|
|
61235
|
+
*/
|
|
61236
|
+
const DOCS_PATHS = [["tools", "docsDefaultVersion"], ["tools", "docsDefaultVersionEnabled"]];
|
|
61237
|
+
/** The documentation corpus the QA tools read, and the edition they default to. */
|
|
61238
|
+
function DocsSection(props) {
|
|
61239
|
+
const tools = props.config?.tools;
|
|
61240
|
+
const version = (tools?.docsDefaultVersion ?? "").trim();
|
|
61241
|
+
const enabled = tools?.docsDefaultVersionEnabled ?? false;
|
|
61242
|
+
const disabled = !props.writable;
|
|
61243
|
+
const paths = DOCS_PATHS;
|
|
61244
|
+
const root = (props.effective?.tools.docsRoot ?? "").trim();
|
|
61245
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(Section, {
|
|
61246
|
+
title: "Документация",
|
|
61247
|
+
modified: overriddenAny(props, paths),
|
|
61248
|
+
aside: resetAside(props, paths),
|
|
61249
|
+
children: [
|
|
61250
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
61251
|
+
className: "qa-card-muted",
|
|
61252
|
+
children: "Поиск и чтение документации ходят по корпусу стенда — дереву docs/<модуль>/<версия>/…. Поиск обходит модули раньше служебных каталогов (тех, что начинаются с подчёркивания), а в каждом попадании называет модуль и версию документа."
|
|
61253
|
+
}),
|
|
61254
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Toggle, {
|
|
61255
|
+
label: "Версия по умолчанию",
|
|
61256
|
+
hint: "Поиск, которому не назвали версию и не сузили подкаталог, остаётся внутри этой редакции корпуса. Явные version или path сильнее: они решают сами.",
|
|
61257
|
+
checked: enabled,
|
|
61258
|
+
disabled,
|
|
61259
|
+
onChange: (checked) => {
|
|
61260
|
+
props.write(["tools", "docsDefaultVersionEnabled"], checked);
|
|
61261
|
+
}
|
|
61262
|
+
}),
|
|
61263
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(TextField, {
|
|
61264
|
+
label: "Версия",
|
|
61265
|
+
value: tools?.docsDefaultVersion ?? "",
|
|
61266
|
+
disabled,
|
|
61267
|
+
placeholder: "3.8",
|
|
61268
|
+
hint: "Как в пути к документу: 3.8, v2, 2024.1. Пусто — дефолта нет, поиск идёт по всем редакциям. Другое значение Host отклонит: версия, которой нет в дереве, отвечала бы «документа нет».",
|
|
61269
|
+
onChange: (value) => {
|
|
61270
|
+
props.write(["tools", "docsDefaultVersion"], value);
|
|
61271
|
+
}
|
|
61272
|
+
}),
|
|
61273
|
+
enabled && version === "" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Notice, {
|
|
61274
|
+
tone: "warn",
|
|
61275
|
+
children: "Флаг включён, а версия не задана: поиск по-прежнему идёт по всем редакциям корпуса."
|
|
61276
|
+
}) : null,
|
|
61277
|
+
props.effective === null ? null : /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Facts, { items: [{
|
|
61278
|
+
label: "Корень документации",
|
|
61279
|
+
value: root === "" ? "docs/ рабочего каталога чата" : root,
|
|
61280
|
+
note: root === "" ? "развёртывание не назвало общий корпус" : "tools.docsRoot развёртывания"
|
|
61281
|
+
}] })
|
|
61282
|
+
]
|
|
61283
|
+
});
|
|
61284
|
+
}
|
|
61285
|
+
//#endregion
|
|
61175
61286
|
//#region src/client/settings/sections/embedding.tsx
|
|
61176
61287
|
/**
|
|
61177
61288
|
* Embedding: one CSP field with a wide blast radius — an overly generous
|
|
@@ -62808,6 +62919,7 @@ ${QA_ROOT_STYLES}`;
|
|
|
62808
62919
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SlashSection, { ...sectionProps }),
|
|
62809
62920
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(AccountsSection, { ...sectionProps }),
|
|
62810
62921
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(SourcesSection, { ...sectionProps }),
|
|
62922
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DocsSection, { ...sectionProps }),
|
|
62811
62923
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(NotesSection, { ...sectionProps }),
|
|
62812
62924
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(AttachmentsSection, { ...sectionProps }),
|
|
62813
62925
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(EmbeddingSection, { ...sectionProps }),
|