dsh-dock 0.18.0 → 0.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -4
- package/client.js +225 -100
- package/features/notify/host.js +16 -2
- package/features/notify/view.jsx +204 -40
- package/package.json +1 -1
- package/src/client.jsx +1 -1
- package/src/host-core.js +12 -1
- package/src/task-track.js +48 -3
package/client.js
CHANGED
|
@@ -40,18 +40,18 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
40
40
|
));
|
|
41
41
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
42
42
|
|
|
43
|
-
//
|
|
43
|
+
// node_modules/qrcode/lib/can-promise.js
|
|
44
44
|
var require_can_promise = __commonJS({
|
|
45
|
-
"
|
|
45
|
+
"node_modules/qrcode/lib/can-promise.js"(exports, module2) {
|
|
46
46
|
module2.exports = function() {
|
|
47
47
|
return typeof Promise === "function" && Promise.prototype && Promise.prototype.then;
|
|
48
48
|
};
|
|
49
49
|
}
|
|
50
50
|
});
|
|
51
51
|
|
|
52
|
-
//
|
|
52
|
+
// node_modules/qrcode/lib/core/utils.js
|
|
53
53
|
var require_utils = __commonJS({
|
|
54
|
-
"
|
|
54
|
+
"node_modules/qrcode/lib/core/utils.js"(exports) {
|
|
55
55
|
var toSJISFunction;
|
|
56
56
|
var CODEWORDS_COUNT = [
|
|
57
57
|
0,
|
|
@@ -128,9 +128,9 @@ var require_utils = __commonJS({
|
|
|
128
128
|
}
|
|
129
129
|
});
|
|
130
130
|
|
|
131
|
-
//
|
|
131
|
+
// node_modules/qrcode/lib/core/error-correction-level.js
|
|
132
132
|
var require_error_correction_level = __commonJS({
|
|
133
|
-
"
|
|
133
|
+
"node_modules/qrcode/lib/core/error-correction-level.js"(exports) {
|
|
134
134
|
exports.L = { bit: 1 };
|
|
135
135
|
exports.M = { bit: 0 };
|
|
136
136
|
exports.Q = { bit: 3 };
|
|
@@ -173,9 +173,9 @@ var require_error_correction_level = __commonJS({
|
|
|
173
173
|
}
|
|
174
174
|
});
|
|
175
175
|
|
|
176
|
-
//
|
|
176
|
+
// node_modules/qrcode/lib/core/bit-buffer.js
|
|
177
177
|
var require_bit_buffer = __commonJS({
|
|
178
|
-
"
|
|
178
|
+
"node_modules/qrcode/lib/core/bit-buffer.js"(exports, module2) {
|
|
179
179
|
function BitBuffer() {
|
|
180
180
|
this.buffer = [];
|
|
181
181
|
this.length = 0;
|
|
@@ -208,9 +208,9 @@ var require_bit_buffer = __commonJS({
|
|
|
208
208
|
}
|
|
209
209
|
});
|
|
210
210
|
|
|
211
|
-
//
|
|
211
|
+
// node_modules/qrcode/lib/core/bit-matrix.js
|
|
212
212
|
var require_bit_matrix = __commonJS({
|
|
213
|
-
"
|
|
213
|
+
"node_modules/qrcode/lib/core/bit-matrix.js"(exports, module2) {
|
|
214
214
|
function BitMatrix(size) {
|
|
215
215
|
if (!size || size < 1) {
|
|
216
216
|
throw new Error("BitMatrix size must be defined and greater than 0");
|
|
@@ -237,9 +237,9 @@ var require_bit_matrix = __commonJS({
|
|
|
237
237
|
}
|
|
238
238
|
});
|
|
239
239
|
|
|
240
|
-
//
|
|
240
|
+
// node_modules/qrcode/lib/core/alignment-pattern.js
|
|
241
241
|
var require_alignment_pattern = __commonJS({
|
|
242
|
-
"
|
|
242
|
+
"node_modules/qrcode/lib/core/alignment-pattern.js"(exports) {
|
|
243
243
|
var getSymbolSize = require_utils().getSymbolSize;
|
|
244
244
|
exports.getRowColCoords = function getRowColCoords(version) {
|
|
245
245
|
if (version === 1) return [];
|
|
@@ -272,9 +272,9 @@ var require_alignment_pattern = __commonJS({
|
|
|
272
272
|
}
|
|
273
273
|
});
|
|
274
274
|
|
|
275
|
-
//
|
|
275
|
+
// node_modules/qrcode/lib/core/finder-pattern.js
|
|
276
276
|
var require_finder_pattern = __commonJS({
|
|
277
|
-
"
|
|
277
|
+
"node_modules/qrcode/lib/core/finder-pattern.js"(exports) {
|
|
278
278
|
var getSymbolSize = require_utils().getSymbolSize;
|
|
279
279
|
var FINDER_PATTERN_SIZE = 7;
|
|
280
280
|
exports.getPositions = function getPositions(version) {
|
|
@@ -291,9 +291,9 @@ var require_finder_pattern = __commonJS({
|
|
|
291
291
|
}
|
|
292
292
|
});
|
|
293
293
|
|
|
294
|
-
//
|
|
294
|
+
// node_modules/qrcode/lib/core/mask-pattern.js
|
|
295
295
|
var require_mask_pattern = __commonJS({
|
|
296
|
-
"
|
|
296
|
+
"node_modules/qrcode/lib/core/mask-pattern.js"(exports) {
|
|
297
297
|
exports.Patterns = {
|
|
298
298
|
PATTERN000: 0,
|
|
299
299
|
PATTERN001: 1,
|
|
@@ -433,9 +433,9 @@ var require_mask_pattern = __commonJS({
|
|
|
433
433
|
}
|
|
434
434
|
});
|
|
435
435
|
|
|
436
|
-
//
|
|
436
|
+
// node_modules/qrcode/lib/core/error-correction-code.js
|
|
437
437
|
var require_error_correction_code = __commonJS({
|
|
438
|
-
"
|
|
438
|
+
"node_modules/qrcode/lib/core/error-correction-code.js"(exports) {
|
|
439
439
|
var ECLevel = require_error_correction_level();
|
|
440
440
|
var EC_BLOCKS_TABLE = [
|
|
441
441
|
// L M Q H
|
|
@@ -794,9 +794,9 @@ var require_error_correction_code = __commonJS({
|
|
|
794
794
|
}
|
|
795
795
|
});
|
|
796
796
|
|
|
797
|
-
//
|
|
797
|
+
// node_modules/qrcode/lib/core/galois-field.js
|
|
798
798
|
var require_galois_field = __commonJS({
|
|
799
|
-
"
|
|
799
|
+
"node_modules/qrcode/lib/core/galois-field.js"(exports) {
|
|
800
800
|
var EXP_TABLE = new Uint8Array(512);
|
|
801
801
|
var LOG_TABLE = new Uint8Array(256);
|
|
802
802
|
(function initTables() {
|
|
@@ -827,9 +827,9 @@ var require_galois_field = __commonJS({
|
|
|
827
827
|
}
|
|
828
828
|
});
|
|
829
829
|
|
|
830
|
-
//
|
|
830
|
+
// node_modules/qrcode/lib/core/polynomial.js
|
|
831
831
|
var require_polynomial = __commonJS({
|
|
832
|
-
"
|
|
832
|
+
"node_modules/qrcode/lib/core/polynomial.js"(exports) {
|
|
833
833
|
var GF = require_galois_field();
|
|
834
834
|
exports.mul = function mul(p1, p2) {
|
|
835
835
|
const coeff = new Uint8Array(p1.length + p2.length - 1);
|
|
@@ -863,9 +863,9 @@ var require_polynomial = __commonJS({
|
|
|
863
863
|
}
|
|
864
864
|
});
|
|
865
865
|
|
|
866
|
-
//
|
|
866
|
+
// node_modules/qrcode/lib/core/reed-solomon-encoder.js
|
|
867
867
|
var require_reed_solomon_encoder = __commonJS({
|
|
868
|
-
"
|
|
868
|
+
"node_modules/qrcode/lib/core/reed-solomon-encoder.js"(exports, module2) {
|
|
869
869
|
var Polynomial = require_polynomial();
|
|
870
870
|
function ReedSolomonEncoder(degree) {
|
|
871
871
|
this.genPoly = void 0;
|
|
@@ -895,18 +895,18 @@ var require_reed_solomon_encoder = __commonJS({
|
|
|
895
895
|
}
|
|
896
896
|
});
|
|
897
897
|
|
|
898
|
-
//
|
|
898
|
+
// node_modules/qrcode/lib/core/version-check.js
|
|
899
899
|
var require_version_check = __commonJS({
|
|
900
|
-
"
|
|
900
|
+
"node_modules/qrcode/lib/core/version-check.js"(exports) {
|
|
901
901
|
exports.isValid = function isValid(version) {
|
|
902
902
|
return !isNaN(version) && version >= 1 && version <= 40;
|
|
903
903
|
};
|
|
904
904
|
}
|
|
905
905
|
});
|
|
906
906
|
|
|
907
|
-
//
|
|
907
|
+
// node_modules/qrcode/lib/core/regex.js
|
|
908
908
|
var require_regex = __commonJS({
|
|
909
|
-
"
|
|
909
|
+
"node_modules/qrcode/lib/core/regex.js"(exports) {
|
|
910
910
|
var numeric = "[0-9]+";
|
|
911
911
|
var alphanumeric = "[A-Z $%*+\\-./:]+";
|
|
912
912
|
var kanji = "(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";
|
|
@@ -932,9 +932,9 @@ var require_regex = __commonJS({
|
|
|
932
932
|
}
|
|
933
933
|
});
|
|
934
934
|
|
|
935
|
-
//
|
|
935
|
+
// node_modules/qrcode/lib/core/mode.js
|
|
936
936
|
var require_mode = __commonJS({
|
|
937
|
-
"
|
|
937
|
+
"node_modules/qrcode/lib/core/mode.js"(exports) {
|
|
938
938
|
var VersionCheck = require_version_check();
|
|
939
939
|
var Regex = require_regex();
|
|
940
940
|
exports.NUMERIC = {
|
|
@@ -1013,9 +1013,9 @@ var require_mode = __commonJS({
|
|
|
1013
1013
|
}
|
|
1014
1014
|
});
|
|
1015
1015
|
|
|
1016
|
-
//
|
|
1016
|
+
// node_modules/qrcode/lib/core/version.js
|
|
1017
1017
|
var require_version = __commonJS({
|
|
1018
|
-
"
|
|
1018
|
+
"node_modules/qrcode/lib/core/version.js"(exports) {
|
|
1019
1019
|
var Utils = require_utils();
|
|
1020
1020
|
var ECCode = require_error_correction_code();
|
|
1021
1021
|
var ECLevel = require_error_correction_level();
|
|
@@ -1108,9 +1108,9 @@ var require_version = __commonJS({
|
|
|
1108
1108
|
}
|
|
1109
1109
|
});
|
|
1110
1110
|
|
|
1111
|
-
//
|
|
1111
|
+
// node_modules/qrcode/lib/core/format-info.js
|
|
1112
1112
|
var require_format_info = __commonJS({
|
|
1113
|
-
"
|
|
1113
|
+
"node_modules/qrcode/lib/core/format-info.js"(exports) {
|
|
1114
1114
|
var Utils = require_utils();
|
|
1115
1115
|
var G15 = 1 << 10 | 1 << 8 | 1 << 5 | 1 << 4 | 1 << 2 | 1 << 1 | 1 << 0;
|
|
1116
1116
|
var G15_MASK = 1 << 14 | 1 << 12 | 1 << 10 | 1 << 4 | 1 << 1;
|
|
@@ -1126,9 +1126,9 @@ var require_format_info = __commonJS({
|
|
|
1126
1126
|
}
|
|
1127
1127
|
});
|
|
1128
1128
|
|
|
1129
|
-
//
|
|
1129
|
+
// node_modules/qrcode/lib/core/numeric-data.js
|
|
1130
1130
|
var require_numeric_data = __commonJS({
|
|
1131
|
-
"
|
|
1131
|
+
"node_modules/qrcode/lib/core/numeric-data.js"(exports, module2) {
|
|
1132
1132
|
var Mode = require_mode();
|
|
1133
1133
|
function NumericData(data) {
|
|
1134
1134
|
this.mode = Mode.NUMERIC;
|
|
@@ -1161,9 +1161,9 @@ var require_numeric_data = __commonJS({
|
|
|
1161
1161
|
}
|
|
1162
1162
|
});
|
|
1163
1163
|
|
|
1164
|
-
//
|
|
1164
|
+
// node_modules/qrcode/lib/core/alphanumeric-data.js
|
|
1165
1165
|
var require_alphanumeric_data = __commonJS({
|
|
1166
|
-
"
|
|
1166
|
+
"node_modules/qrcode/lib/core/alphanumeric-data.js"(exports, module2) {
|
|
1167
1167
|
var Mode = require_mode();
|
|
1168
1168
|
var ALPHA_NUM_CHARS = [
|
|
1169
1169
|
"0",
|
|
@@ -1240,9 +1240,9 @@ var require_alphanumeric_data = __commonJS({
|
|
|
1240
1240
|
}
|
|
1241
1241
|
});
|
|
1242
1242
|
|
|
1243
|
-
//
|
|
1243
|
+
// node_modules/qrcode/lib/core/byte-data.js
|
|
1244
1244
|
var require_byte_data = __commonJS({
|
|
1245
|
-
"
|
|
1245
|
+
"node_modules/qrcode/lib/core/byte-data.js"(exports, module2) {
|
|
1246
1246
|
var Mode = require_mode();
|
|
1247
1247
|
function ByteData(data) {
|
|
1248
1248
|
this.mode = Mode.BYTE;
|
|
@@ -1270,9 +1270,9 @@ var require_byte_data = __commonJS({
|
|
|
1270
1270
|
}
|
|
1271
1271
|
});
|
|
1272
1272
|
|
|
1273
|
-
//
|
|
1273
|
+
// node_modules/qrcode/lib/core/kanji-data.js
|
|
1274
1274
|
var require_kanji_data = __commonJS({
|
|
1275
|
-
"
|
|
1275
|
+
"node_modules/qrcode/lib/core/kanji-data.js"(exports, module2) {
|
|
1276
1276
|
var Mode = require_mode();
|
|
1277
1277
|
var Utils = require_utils();
|
|
1278
1278
|
function KanjiData(data) {
|
|
@@ -1309,9 +1309,9 @@ var require_kanji_data = __commonJS({
|
|
|
1309
1309
|
}
|
|
1310
1310
|
});
|
|
1311
1311
|
|
|
1312
|
-
//
|
|
1312
|
+
// node_modules/dijkstrajs/dijkstra.js
|
|
1313
1313
|
var require_dijkstra = __commonJS({
|
|
1314
|
-
"
|
|
1314
|
+
"node_modules/dijkstrajs/dijkstra.js"(exports, module2) {
|
|
1315
1315
|
"use strict";
|
|
1316
1316
|
var dijkstra = {
|
|
1317
1317
|
single_source_shortest_paths: function(graph, s, d) {
|
|
@@ -1410,9 +1410,9 @@ var require_dijkstra = __commonJS({
|
|
|
1410
1410
|
}
|
|
1411
1411
|
});
|
|
1412
1412
|
|
|
1413
|
-
//
|
|
1413
|
+
// node_modules/qrcode/lib/core/segments.js
|
|
1414
1414
|
var require_segments = __commonJS({
|
|
1415
|
-
"
|
|
1415
|
+
"node_modules/qrcode/lib/core/segments.js"(exports) {
|
|
1416
1416
|
var Mode = require_mode();
|
|
1417
1417
|
var NumericData = require_numeric_data();
|
|
1418
1418
|
var AlphanumericData = require_alphanumeric_data();
|
|
@@ -1596,9 +1596,9 @@ var require_segments = __commonJS({
|
|
|
1596
1596
|
}
|
|
1597
1597
|
});
|
|
1598
1598
|
|
|
1599
|
-
//
|
|
1599
|
+
// node_modules/qrcode/lib/core/qrcode.js
|
|
1600
1600
|
var require_qrcode = __commonJS({
|
|
1601
|
-
"
|
|
1601
|
+
"node_modules/qrcode/lib/core/qrcode.js"(exports) {
|
|
1602
1602
|
var Utils = require_utils();
|
|
1603
1603
|
var ECLevel = require_error_correction_level();
|
|
1604
1604
|
var BitBuffer = require_bit_buffer();
|
|
@@ -1857,9 +1857,9 @@ var require_qrcode = __commonJS({
|
|
|
1857
1857
|
}
|
|
1858
1858
|
});
|
|
1859
1859
|
|
|
1860
|
-
//
|
|
1860
|
+
// node_modules/qrcode/lib/renderer/utils.js
|
|
1861
1861
|
var require_utils2 = __commonJS({
|
|
1862
|
-
"
|
|
1862
|
+
"node_modules/qrcode/lib/renderer/utils.js"(exports) {
|
|
1863
1863
|
function hex2rgba(hex) {
|
|
1864
1864
|
if (typeof hex === "number") {
|
|
1865
1865
|
hex = hex.toString();
|
|
@@ -1937,9 +1937,9 @@ var require_utils2 = __commonJS({
|
|
|
1937
1937
|
}
|
|
1938
1938
|
});
|
|
1939
1939
|
|
|
1940
|
-
//
|
|
1940
|
+
// node_modules/qrcode/lib/renderer/canvas.js
|
|
1941
1941
|
var require_canvas = __commonJS({
|
|
1942
|
-
"
|
|
1942
|
+
"node_modules/qrcode/lib/renderer/canvas.js"(exports) {
|
|
1943
1943
|
var Utils = require_utils2();
|
|
1944
1944
|
function clearCanvas(ctx, canvas, size) {
|
|
1945
1945
|
ctx.clearRect(0, 0, canvas.width, canvas.height);
|
|
@@ -1990,9 +1990,9 @@ var require_canvas = __commonJS({
|
|
|
1990
1990
|
}
|
|
1991
1991
|
});
|
|
1992
1992
|
|
|
1993
|
-
//
|
|
1993
|
+
// node_modules/qrcode/lib/renderer/svg-tag.js
|
|
1994
1994
|
var require_svg_tag = __commonJS({
|
|
1995
|
-
"
|
|
1995
|
+
"node_modules/qrcode/lib/renderer/svg-tag.js"(exports) {
|
|
1996
1996
|
var Utils = require_utils2();
|
|
1997
1997
|
function getColorAttrib(color, attrib) {
|
|
1998
1998
|
const alpha = color.a / 255;
|
|
@@ -2048,9 +2048,9 @@ var require_svg_tag = __commonJS({
|
|
|
2048
2048
|
}
|
|
2049
2049
|
});
|
|
2050
2050
|
|
|
2051
|
-
//
|
|
2051
|
+
// node_modules/qrcode/lib/browser.js
|
|
2052
2052
|
var require_browser = __commonJS({
|
|
2053
|
-
"
|
|
2053
|
+
"node_modules/qrcode/lib/browser.js"(exports) {
|
|
2054
2054
|
var canPromise = require_can_promise();
|
|
2055
2055
|
var QRCode2 = require_qrcode();
|
|
2056
2056
|
var CanvasRenderer = require_canvas();
|
|
@@ -7407,6 +7407,14 @@ function speakVoice(text, cfg) {
|
|
|
7407
7407
|
poll();
|
|
7408
7408
|
return true;
|
|
7409
7409
|
}
|
|
7410
|
+
function voiceTone(cfg) {
|
|
7411
|
+
const m = cfg && cfg.voiceMode;
|
|
7412
|
+
return m === "detailed" || m === "medium" ? m : "brief";
|
|
7413
|
+
}
|
|
7414
|
+
function cardTone(cfg) {
|
|
7415
|
+
const m = cfg && cfg.cardMode;
|
|
7416
|
+
return m === "brief" || m === "medium" ? m : "detailed";
|
|
7417
|
+
}
|
|
7410
7418
|
function endReasonSpeech(reason) {
|
|
7411
7419
|
if (reason === "error") return "\u51FA\u9519\u4E86";
|
|
7412
7420
|
if (reason === "aborted") return "\u5DF2\u505C\u6B62";
|
|
@@ -7416,12 +7424,21 @@ function endReasonSpeech(reason) {
|
|
|
7416
7424
|
return "\u5B8C\u6210\u4E86";
|
|
7417
7425
|
}
|
|
7418
7426
|
function endBroadcastText(success, record, task, cfg) {
|
|
7419
|
-
const mode = cfg
|
|
7427
|
+
const mode = voiceTone(cfg);
|
|
7420
7428
|
const reason = record && record.endReason || "";
|
|
7421
7429
|
const title = record && record.title || task && task.title || "";
|
|
7422
7430
|
if (mode === "brief") {
|
|
7423
7431
|
return success ? "\u4EFB\u52A1\u5B8C\u6210" : "\u4EFB\u52A1\u505C\u6B62\u4E86";
|
|
7424
7432
|
}
|
|
7433
|
+
if (mode === "medium") {
|
|
7434
|
+
const who = title ? "\u4EFB\u52A1\u300C" + truncate2(title, 30) + "\u300D" : "\u4EFB\u52A1";
|
|
7435
|
+
const parts2 = [success ? who + "\u5B8C\u6210\u4E86" : who + "\u505C\u6B62\u4E86"];
|
|
7436
|
+
if (!success) parts2.push("\uFF0C\u539F\u56E0\uFF1A" + endReasonSpeech(reason));
|
|
7437
|
+
const dur2 = record && record.duration || 0;
|
|
7438
|
+
if (dur2 > 0) parts2.push("\uFF0C\u8017\u65F6" + fmtDur(dur2));
|
|
7439
|
+
parts2.push("\u3002");
|
|
7440
|
+
return parts2.join("");
|
|
7441
|
+
}
|
|
7425
7442
|
const parts = [];
|
|
7426
7443
|
if (title) parts.push("\u4EFB\u52A1\uFF1A" + truncate2(title, 30) + "\u3002");
|
|
7427
7444
|
parts.push(success ? "\u5DF2\u5B8C\u6210\u3002" : "\u7ED3\u675F\uFF0C\u539F\u56E0\uFF1A" + endReasonSpeech(reason) + "\u3002");
|
|
@@ -7439,21 +7456,32 @@ function endBroadcastText(success, record, task, cfg) {
|
|
|
7439
7456
|
return parts.join("");
|
|
7440
7457
|
}
|
|
7441
7458
|
function confirmBroadcastText(task, approval, cfg) {
|
|
7442
|
-
const mode = cfg
|
|
7459
|
+
const mode = voiceTone(cfg);
|
|
7443
7460
|
if (mode === "brief") return "\u4EFB\u52A1\u9700\u8981\u6388\u6743";
|
|
7444
7461
|
const tool = approval && approval.toolName || "\u5DE5\u5177";
|
|
7445
7462
|
const scene = toolLabel(tool);
|
|
7463
|
+
if (mode === "medium") {
|
|
7464
|
+
const who = task && task.title ? "\u4EFB\u52A1\u300C" + truncate2(task.title, 30) + "\u300D" : "\u4EFB\u52A1";
|
|
7465
|
+
return who + "\u9700\u8981\u6388\u6743\uFF0C\u6B63\u5728\u7B49\u4F60\u6279\u51C6" + (scene || "\u5DE5\u5177 " + tool) + "\u3002";
|
|
7466
|
+
}
|
|
7446
7467
|
const parts = [];
|
|
7447
7468
|
if (task && task.title) parts.push("\u4EFB\u52A1\uFF1A" + truncate2(task.title, 30) + "\u3002");
|
|
7448
7469
|
parts.push("\u6B63\u5728\u7B49\u5F85\u4F60\u6279\u51C6" + (scene ? "\u6267\u884C" + scene : "") + "\uFF0C\u5DE5\u5177\u662F" + tool + "\uFF0C\u8BF7\u56DE\u5230\u4F1A\u8BDD\u5904\u7406\u3002");
|
|
7449
7470
|
return parts.join("");
|
|
7450
7471
|
}
|
|
7451
7472
|
function stuckBroadcastText(task, cfg) {
|
|
7452
|
-
const mode = cfg
|
|
7453
|
-
|
|
7454
|
-
|
|
7455
|
-
if (
|
|
7456
|
-
|
|
7473
|
+
const mode = voiceTone(cfg);
|
|
7474
|
+
const where = (task && task.isSubtask ? "\u5B50\u4EFB\u52A1" : "\u4E3B\u4EFB\u52A1") + (task && task.title ? "\u300C" + truncate2(task.title, 30) + "\u300D" : "");
|
|
7475
|
+
if (mode === "brief") return where + "\u5361\u4F4F\u4E86";
|
|
7476
|
+
if (mode === "medium") {
|
|
7477
|
+
return where + "\u5361\u4F4F\u4E86\uFF0C\u5DF2\u7ECF" + fmtDur(Math.max(0, cfg && cfg.stuckMs || STUCK_MS)) + "\u6CA1\u6709\u4EFB\u4F55\u52A8\u9759\u3002";
|
|
7478
|
+
}
|
|
7479
|
+
const parts = [where + "\u5361\u4F4F\u4E86\u3002"];
|
|
7480
|
+
parts.push("\u7F16\u7A0B\u9636\u6BB5\u5DF2\u7ECF" + fmtDur(Math.max(0, cfg && cfg.stuckMs || STUCK_MS)) + "\u6CA1\u6709\u4EFB\u4F55\u52A8\u9759\uFF0C");
|
|
7481
|
+
const tool = task && task.lastToolName || "";
|
|
7482
|
+
const scene = tool ? toolLabel(tool) : "";
|
|
7483
|
+
parts.push(tool ? "\u6700\u540E\u5728\u6267\u884C" + tool + (scene ? "\uFF08" + scene + "\uFF09" : "") + "\uFF0C" : "");
|
|
7484
|
+
parts.push("\u8BF7\u67E5\u770B\u3002");
|
|
7457
7485
|
return parts.join("");
|
|
7458
7486
|
}
|
|
7459
7487
|
var STUCK_MS = 18e3;
|
|
@@ -7565,9 +7593,9 @@ function Toast(props) {
|
|
|
7565
7593
|
}, []);
|
|
7566
7594
|
const jump = (0, import_react10.useCallback)(() => {
|
|
7567
7595
|
if (!t.sessionTitle && !t.sessionId) return;
|
|
7568
|
-
const ok = openSessionById(t.sessionId) || (t.sessionTitle ? openSessionByTitle(t.sessionTitle) : false);
|
|
7569
|
-
if (ok && t.kind !== "confirm") setClosing(true);
|
|
7570
|
-
}, [t.sessionId, t.sessionTitle, t.kind]);
|
|
7596
|
+
const ok = openSessionById(t.sessionId) || (t.fallbackSessionId ? openSessionById(t.fallbackSessionId) : false) || (t.sessionTitle ? openSessionByTitle(t.sessionTitle) : false);
|
|
7597
|
+
if (ok && t.kind !== "confirm" && t.kind !== "stuck") setClosing(true);
|
|
7598
|
+
}, [t.sessionId, t.sessionTitle, t.fallbackSessionId, t.kind]);
|
|
7571
7599
|
(0, import_react10.useEffect)(() => {
|
|
7572
7600
|
if (t.closing && !closing) setClosing(true);
|
|
7573
7601
|
}, [t.closing, closing]);
|
|
@@ -7586,7 +7614,7 @@ function Toast(props) {
|
|
|
7586
7614
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-toast-head", children: [
|
|
7587
7615
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-toast-mark", style: { background: markColor } }),
|
|
7588
7616
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("span", { className: "dknt-toast-title", title: t.sessionTitle || t.title, children: [
|
|
7589
|
-
t.kind === "confirm" ? "\u270B " : "",
|
|
7617
|
+
t.kind === "confirm" ? "\u270B " : t.kind === "stuck" ? "\u23F3 " : "",
|
|
7590
7618
|
props.collapsed ? t.sessionTitle || t.title : t.title,
|
|
7591
7619
|
!props.collapsed && t.sessionTitle && t.kind !== "confirm" ? " \xB7 " + t.sessionTitle : ""
|
|
7592
7620
|
] }),
|
|
@@ -7618,8 +7646,15 @@ function NotifyOverlay(props) {
|
|
|
7618
7646
|
const remindedApprovalsRef = (0, import_react10.useRef)(/* @__PURE__ */ new Map());
|
|
7619
7647
|
const toastSeqRef = (0, import_react10.useRef)(0);
|
|
7620
7648
|
const pushToast = (0, import_react10.useCallback)((toast) => {
|
|
7649
|
+
const st = notifyStore.snap.status;
|
|
7650
|
+
const cfg = st && st.config;
|
|
7651
|
+
if (cfg && cfg.notifyCards === false) return;
|
|
7621
7652
|
setToasts((prev) => prev.concat([toast]).slice(-12));
|
|
7622
7653
|
}, []);
|
|
7654
|
+
(0, import_react10.useEffect)(() => {
|
|
7655
|
+
const cfg = snap.status && snap.status.config;
|
|
7656
|
+
if (cfg && cfg.notifyCards === false) setToasts((prev) => prev.length ? [] : prev);
|
|
7657
|
+
}, [snap.status]);
|
|
7623
7658
|
(0, import_react10.useEffect)(() => {
|
|
7624
7659
|
let stopped = false;
|
|
7625
7660
|
let timer = null;
|
|
@@ -7679,12 +7714,17 @@ function NotifyOverlay(props) {
|
|
|
7679
7714
|
if (cfg.notifyOnConfirm === false) continue;
|
|
7680
7715
|
const toolName = fresh[0].toolName || "";
|
|
7681
7716
|
const scene = toolLabel(toolName);
|
|
7717
|
+
const tone = cardTone(cfg);
|
|
7682
7718
|
const lines = [
|
|
7683
7719
|
"\u4EFB\u52A1\uFF1A" + (task.title || "(\u65E0\u6807\u9898)"),
|
|
7684
7720
|
"\u5DE5\u5177\uFF1A" + (toolName || "\u672A\u77E5") + (scene ? "\uFF08" + scene + "\uFF09" : "")
|
|
7685
7721
|
];
|
|
7686
|
-
if (fresh[0].reason) lines.push("\u8BF4\u660E\uFF1A" + truncate2(fresh[0].reason, 140));
|
|
7687
|
-
|
|
7722
|
+
if (tone !== "brief" && fresh[0].reason) lines.push("\u8BF4\u660E\uFF1A" + truncate2(fresh[0].reason, 140));
|
|
7723
|
+
if (fresh.length > 1) {
|
|
7724
|
+
lines.push(tone === "brief" ? "\u5171 " + fresh.length + " \u9879\u7B49\u5F85\u786E\u8BA4" : "\u5171 " + fresh.length + " \u9879\u7B49\u5F85\u4F60\u7684\u786E\u8BA4");
|
|
7725
|
+
} else if (tone === "detailed") {
|
|
7726
|
+
lines.push("\u8BF7\u5728\u4F1A\u8BDD\u91CC\u786E\u8BA4\u540E\u7EE7\u7EED");
|
|
7727
|
+
}
|
|
7688
7728
|
pushToast({
|
|
7689
7729
|
id: ++toastSeqRef.current,
|
|
7690
7730
|
kind: "confirm",
|
|
@@ -7737,7 +7777,7 @@ function NotifyOverlay(props) {
|
|
|
7737
7777
|
setToasts((prev) => {
|
|
7738
7778
|
let changed = false;
|
|
7739
7779
|
const next = prev.map((x) => {
|
|
7740
|
-
if (x.kind === "confirm" || x.closing) return x;
|
|
7780
|
+
if (x.kind === "confirm" || x.kind === "stuck" || x.closing) return x;
|
|
7741
7781
|
if (!x.sessionTitle && !x.sessionId) return x;
|
|
7742
7782
|
const hit = cur.id && x.sessionId && cur.id === x.sessionId || !cur.id && x.sessionTitle && titleMatches(x.sessionTitle, cur.title);
|
|
7743
7783
|
if (!hit) return x;
|
|
@@ -7759,7 +7799,10 @@ function NotifyOverlay(props) {
|
|
|
7759
7799
|
for (const sid of Array.from(stuckSeenRef.current.keys())) {
|
|
7760
7800
|
if (!activeIds.has(sid)) stuckSeenRef.current.delete(sid);
|
|
7761
7801
|
}
|
|
7762
|
-
|
|
7802
|
+
const parentsWaitingOnSubtask = /* @__PURE__ */ new Set();
|
|
7803
|
+
for (const t of st.active) {
|
|
7804
|
+
if (t.isSubtask && t.parentSessionId) parentsWaitingOnSubtask.add(t.parentSessionId);
|
|
7805
|
+
}
|
|
7763
7806
|
for (const task of st.active) {
|
|
7764
7807
|
const approvals = Array.isArray(task.approvals) ? task.approvals : [];
|
|
7765
7808
|
if (approvals.length > 0) {
|
|
@@ -7769,14 +7812,58 @@ function NotifyOverlay(props) {
|
|
|
7769
7812
|
if (task.phase !== "code") {
|
|
7770
7813
|
continue;
|
|
7771
7814
|
}
|
|
7815
|
+
if (parentsWaitingOnSubtask.has(task.sessionId)) continue;
|
|
7772
7816
|
const lastAct = task.lastActivityAt || task.phaseAt || 0;
|
|
7773
7817
|
if (!lastAct || now - lastAct < STUCK_MS) continue;
|
|
7774
7818
|
const prev = stuckSeenRef.current.get(task.sessionId);
|
|
7775
7819
|
if (prev === lastAct) continue;
|
|
7776
7820
|
stuckSeenRef.current.set(task.sessionId, lastAct);
|
|
7777
|
-
|
|
7821
|
+
const stuckMs = now - lastAct;
|
|
7822
|
+
if (cfg.voiceNotify === true && cfg.voiceOnStuck !== false) {
|
|
7823
|
+
speakVoice(stuckBroadcastText(task, Object.assign({}, cfg, { stuckMs })), cfg);
|
|
7824
|
+
}
|
|
7825
|
+
if (cfg.notifyOnStuck === false) continue;
|
|
7826
|
+
const label = task.isSubtask ? "\u5B50\u4EFB\u52A1" : "\u4E3B\u4EFB\u52A1";
|
|
7827
|
+
const title = task.title || "(\u65E0\u6807\u9898)";
|
|
7828
|
+
const tool = task.lastToolName || "";
|
|
7829
|
+
const tone = cardTone(cfg);
|
|
7830
|
+
const lines = ["\u4EFB\u52A1\uFF1A" + label + "\xB7" + title];
|
|
7831
|
+
if (tone !== "brief") lines.push("\u5DF2\u505C\u6EDE\uFF1A" + fmtDur(stuckMs) + "\uFF08\u7F16\u7A0B\u9636\u6BB5\u65E0\u6D3B\u52A8\uFF09");
|
|
7832
|
+
if (tone === "detailed") {
|
|
7833
|
+
if (tool) lines.push("\u6700\u540E\u52A8\u4F5C\uFF1A" + tool + (toolLabel(tool) ? "\uFF08" + toolLabel(tool) + "\uFF09" : ""));
|
|
7834
|
+
lines.push("\u6062\u590D\u6D3B\u52A8\u6216\u4EFB\u52A1\u7ED3\u675F\u540E\u81EA\u52A8\u6536\u8D77\uFF1B\u70B9\u51FB\u5361\u7247\u76F4\u8FBE\u4F1A\u8BDD");
|
|
7835
|
+
}
|
|
7836
|
+
pushToast({
|
|
7837
|
+
id: ++toastSeqRef.current,
|
|
7838
|
+
kind: "stuck",
|
|
7839
|
+
title: label + "\u5361\u4F4F\u4E86",
|
|
7840
|
+
body: lines.join("\n"),
|
|
7841
|
+
sessionId: task.sessionId || "",
|
|
7842
|
+
sessionTitle: title,
|
|
7843
|
+
// 子任务会话通常不在侧栏里:跳不到自己时回退到父会话(看主会话里的子代理进度)
|
|
7844
|
+
fallbackSessionId: task.isSubtask && task.parentSessionId ? task.parentSessionId : "",
|
|
7845
|
+
// 停点指纹:恢复活动(lastActivityAt 变了)即由下面的对账 effect 收起
|
|
7846
|
+
stuckAt: lastAct
|
|
7847
|
+
});
|
|
7778
7848
|
}
|
|
7779
7849
|
}, [snap.status]);
|
|
7850
|
+
(0, import_react10.useEffect)(() => {
|
|
7851
|
+
const st = snap.status;
|
|
7852
|
+
if (!st || !st.active) return;
|
|
7853
|
+
const byId = new Map(st.active.map((x) => [x.sessionId, x]));
|
|
7854
|
+
setToasts((prev) => {
|
|
7855
|
+
let changed = false;
|
|
7856
|
+
const next = prev.map((x) => {
|
|
7857
|
+
if (x.kind !== "stuck" || x.closing) return x;
|
|
7858
|
+
const task = byId.get(x.sessionId);
|
|
7859
|
+
const stillStalled = !!task && (task.lastActivityAt || task.phaseAt || 0) === x.stuckAt && (Array.isArray(task.approvals) ? task.approvals.length : 0) === 0;
|
|
7860
|
+
if (stillStalled) return x;
|
|
7861
|
+
changed = true;
|
|
7862
|
+
return Object.assign({}, x, { closing: true });
|
|
7863
|
+
});
|
|
7864
|
+
return changed ? next : prev;
|
|
7865
|
+
});
|
|
7866
|
+
}, [snap.status]);
|
|
7780
7867
|
const handleTaskEnd = (task, record, cfg) => {
|
|
7781
7868
|
const reason = record && record.endReason || "";
|
|
7782
7869
|
const success = isSuccessReason2(reason);
|
|
@@ -7790,15 +7877,17 @@ function NotifyOverlay(props) {
|
|
|
7790
7877
|
const provider = record && record.provider || task.provider || "";
|
|
7791
7878
|
const startTs = record && record.startTime || task.startTime;
|
|
7792
7879
|
const endTs = record && record.endTime || Date.now();
|
|
7793
|
-
const
|
|
7794
|
-
|
|
7795
|
-
|
|
7796
|
-
|
|
7797
|
-
|
|
7798
|
-
|
|
7799
|
-
|
|
7800
|
-
|
|
7801
|
-
|
|
7880
|
+
const tone = cardTone(cfg);
|
|
7881
|
+
const durText = fmtDur(record && record.duration || endTs - startTs);
|
|
7882
|
+
const lines = ["\u4EFB\u52A1\uFF1A" + (record && record.title || task.title || "(\u65E0\u6807\u9898)")];
|
|
7883
|
+
if (tone !== "brief") lines.push("\u6A21\u578B\uFF1A" + models + (provider ? "\uFF08" + provider + "\uFF09" : ""));
|
|
7884
|
+
lines.push(tone === "brief" ? "\u8017\u65F6\uFF1A" + durText : "\u8017\u65F6\uFF1A" + durText + "\uFF08" + fmtTime2(startTs) + " \u2192 " + fmtTime2(endTs) + "\uFF09");
|
|
7885
|
+
if (tone === "detailed") {
|
|
7886
|
+
lines.push("\u56DE\u5408 " + (record && record.turns || task.turns || 0) + " \xB7 \u6B65\u9AA4 " + (record && record.steps || task.steps || 0) + (record && record.toolCalls || task.toolCalls ? " \xB7 \u5DE5\u5177 " + (record && record.toolCalls || task.toolCalls) + " \u6B21" : ""));
|
|
7887
|
+
lines.push("Token\uFF1A\u8F93\u5165 " + fmtNum2(record && record.inputTokens || task.inputTokens) + " / \u8F93\u51FA " + fmtNum2(record && record.outputTokens || task.outputTokens));
|
|
7888
|
+
if (record && record.lastText) lines.push("\u6458\u8981\uFF1A" + truncate2(record.lastText, 140));
|
|
7889
|
+
if (!success && record && record.errorMessage) lines.push("\u9519\u8BEF\uFF1A" + truncate2(record.errorMessage, 120));
|
|
7890
|
+
}
|
|
7802
7891
|
const title = success ? "\u4EFB\u52A1\u5B8C\u6210" : "\u4EFB\u52A1" + info.label;
|
|
7803
7892
|
pushToast({
|
|
7804
7893
|
id: ++toastSeqRef.current,
|
|
@@ -7971,6 +8060,19 @@ function NotifyView(props) {
|
|
|
7971
8060
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-sec-sub", children: "\u54EA\u4E9B\u65F6\u523B\u63D0\u9192\u4F60\uFF1B\u4E0E\u3010\u4EFB\u52A1\u52A8\u753B\u3011\u7684\u52A8\u6548\u4E92\u4E0D\u4F9D\u8D56" })
|
|
7972
8061
|
] }),
|
|
7973
8062
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-rows-narrow", children: [
|
|
8063
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-row", children: [
|
|
8064
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-label", children: "\u9875\u5185\u5361\u7247" }),
|
|
8065
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
8066
|
+
"button",
|
|
8067
|
+
{
|
|
8068
|
+
type: "button",
|
|
8069
|
+
className: "dknt-miniswitch" + (cfg.notifyCards !== false ? " on" : ""),
|
|
8070
|
+
onClick: () => patch({ notifyCards: cfg.notifyCards === false }),
|
|
8071
|
+
children: cfg.notifyCards !== false ? "\u5F00" : "\u5173"
|
|
8072
|
+
}
|
|
8073
|
+
),
|
|
8074
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-sub", children: "\u53F3\u4FA7\u901A\u77E5\u5361\u7247\u603B\u5F00\u5173\uFF1A\u5173\u95ED\u540E\u4E0B\u9762\u5404\u7C7B\u5361\u7247\uFF08\u5B8C\u6210 / \u5F02\u5E38 / \u9700\u786E\u8BA4 / \u5361\u4F4F\uFF09\u4E00\u5F8B\u4E0D\u5F39\uFF0C\u5DF2\u6302\u7740\u7684\u4E00\u5E76\u6536\u8D77\uFF1B\u8BED\u97F3\u64AD\u62A5\u3001\u63D0\u793A\u97F3\u3001\u7CFB\u7EDF\u901A\u77E5\u3001\u9489\u9489\u98DE\u4E66\u63A8\u9001\u4E0D\u53D7\u5F71\u54CD" })
|
|
8075
|
+
] }),
|
|
7974
8076
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-row", children: [
|
|
7975
8077
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-label", children: "\u5B8C\u6210\u901A\u77E5" }),
|
|
7976
8078
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
@@ -8009,6 +8111,19 @@ function NotifyView(props) {
|
|
|
8009
8111
|
}
|
|
8010
8112
|
),
|
|
8011
8113
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-sub", children: "\u5DE5\u5177\u7B49\u5F85\u4F60\u6279\u51C6\u65F6\u5F39\u5361\u7247\u5E76\u54CD\u786E\u8BA4\u97F3\uFF1B\u5BA1\u6279\u5904\u7406\u5B8C\u81EA\u52A8\u6536\u8D77\uFF0C\u6CA1\u5904\u7406\u5B8C\u5C31\u4E00\u76F4\u663E\u793A\uFF08\u70B9\u5361\u7247\u76F4\u8FBE\u4F1A\u8BDD\uFF09" })
|
|
8114
|
+
] }),
|
|
8115
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-row", children: [
|
|
8116
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-label", children: "\u5361\u4F4F\u63D0\u9192" }),
|
|
8117
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
8118
|
+
"button",
|
|
8119
|
+
{
|
|
8120
|
+
type: "button",
|
|
8121
|
+
className: "dknt-miniswitch" + (cfg.notifyOnStuck !== false ? " on" : ""),
|
|
8122
|
+
onClick: () => patch({ notifyOnStuck: cfg.notifyOnStuck === false }),
|
|
8123
|
+
children: cfg.notifyOnStuck !== false ? "\u5F00" : "\u5173"
|
|
8124
|
+
}
|
|
8125
|
+
),
|
|
8126
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-sub", children: "\u7F16\u7A0B\u9636\u6BB5 18 \u79D2\u6CA1\u6709\u52A8\u9759\u65F6\u5F39\u5361\u7247\uFF0C\u5199\u660E\u662F\u4E3B\u4EFB\u52A1\u8FD8\u662F\u5B50\u4EFB\u52A1\u3001\u505C\u6EDE\u4E86\u591A\u4E45\u3001\u6700\u540E\u5728\u6267\u884C\u4EC0\u4E48\uFF1B\u6062\u590D\u6D3B\u52A8 / \u4EFB\u52A1\u7ED3\u675F\u81EA\u52A8\u6536\u8D77\uFF0C\u540C\u4E00\u505C\u70B9\u53EA\u5F39\u4E00\u6B21\uFF08\u8BED\u97F3\u64AD\u62A5\u8D70\u300C\u8BED\u97F3\u64AD\u62A5\u300D\u533A\u7684\u5361\u4F4F\u5F00\u5173\uFF0C\u4E92\u4E0D\u5E72\u6270\uFF09" })
|
|
8012
8127
|
] })
|
|
8013
8128
|
] })
|
|
8014
8129
|
] }, "events"),
|
|
@@ -8018,9 +8133,25 @@ function NotifyView(props) {
|
|
|
8018
8133
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-sec-sub", children: "\u9875\u5185\u5361\u7247\u3001\u63D0\u793A\u97F3\u3001\u6D4F\u89C8\u5668\u7CFB\u7EDF\u901A\u77E5\u53EF\u81EA\u7531\u7EC4\u5408" })
|
|
8019
8134
|
] }),
|
|
8020
8135
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-rows-narrow", children: [
|
|
8136
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-row", children: [
|
|
8137
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-label", children: "\u5361\u7247\u53E3\u5F84" }),
|
|
8138
|
+
[["brief", "\u7B80\u6D01"], ["medium", "\u9002\u4E2D"], ["detailed", "\u8BE6\u7EC6"]].map(([v, label]) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
8139
|
+
"button",
|
|
8140
|
+
{
|
|
8141
|
+
type: "button",
|
|
8142
|
+
className: "dknt-miniswitch" + (cardTone(cfg) === v ? " on" : ""),
|
|
8143
|
+
style: { marginRight: 6 },
|
|
8144
|
+
title: "\u53F3\u4FA7\u901A\u77E5\u5361\u7247\u6B63\u6587\u6309" + label + "\u6863\u663E\u793A",
|
|
8145
|
+
onClick: () => patch({ cardMode: v }),
|
|
8146
|
+
children: label
|
|
8147
|
+
},
|
|
8148
|
+
v
|
|
8149
|
+
)),
|
|
8150
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-sub", children: "\u53F3\u4FA7\u5361\u7247\u6B63\u6587\u5199\u591A\u5C11\uFF08\u4E0E\u5404\u7C7B\u578B\u5F00\u5173\u3001\u8BED\u97F3\u64AD\u62A5\u4E92\u4E0D\u5F71\u54CD\uFF09\uFF1A\u7B80\u6D01\uFF1D\u4EFB\u52A1\u4E0E\u8017\u65F6 / \u8C01\u5361\u4F4F\uFF1B\u9002\u4E2D\uFF1D\u52A0\u6A21\u578B\u3001\u8D77\u6B62\u65F6\u95F4\u3001\u505C\u6EDE\u65F6\u957F\uFF1B\u8BE6\u7EC6\uFF1D\u5168\u90E8\uFF08\u56DE\u5408\u6B65\u9AA4\u3001Token\u3001\u6458\u8981\u6216\u9519\u8BEF\u3001\u6700\u540E\u52A8\u4F5C\uFF09" })
|
|
8151
|
+
] }),
|
|
8021
8152
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-row", children: [
|
|
8022
8153
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-label", children: "\u5361\u7247\u6536\u7EB3" }),
|
|
8023
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-sub", children: "\u6240\u6709\u5361\u7247\u90FD\u4E0D\u8D85\u65F6\u81EA\u52A8\u6D88\u5931\uFF1A\u7ED3\u675F\u5361\u7247\u6CA1\u770B\u8FC7\u5C31\u4E00\u76F4\u6302\u7740\uFF08\u540E\u53F0\u8DD1\u5B8C\u7684\u5207\u56DE\u6765\u4E5F\u5728\uFF09\uFF0C\u70B9\u5361\u7247\u76F4\u8FBE\u5BF9\u5E94\u4F1A\u8BDD\uFF0C\u6216\u70B9\u8FDB\u8BE5\u4F1A\u8BDD\uFF0C\u5361\u7247\u81EA\u52A8\u6536\u8D77\uFF1B\u9700\u786E\u8BA4\u5361\u7247\u6302\u5230\u5BA1\u6279\u5904\u7406\u5B8C\u30023 \u5F20\u53CA\u4EE5\u4E0A\u81EA\u52A8\u53E0\u653E\u6210\u6807\u9898\u6761\uFF0C\u9F20\u6807\u79FB\u4E0A\u53BB\u6574\u4F53\u5C55\u5F00" })
|
|
8154
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-sub", children: "\u6240\u6709\u5361\u7247\u90FD\u4E0D\u8D85\u65F6\u81EA\u52A8\u6D88\u5931\uFF1A\u7ED3\u675F\u5361\u7247\u6CA1\u770B\u8FC7\u5C31\u4E00\u76F4\u6302\u7740\uFF08\u540E\u53F0\u8DD1\u5B8C\u7684\u5207\u56DE\u6765\u4E5F\u5728\uFF09\uFF0C\u70B9\u5361\u7247\u76F4\u8FBE\u5BF9\u5E94\u4F1A\u8BDD\uFF0C\u6216\u70B9\u8FDB\u8BE5\u4F1A\u8BDD\uFF0C\u5361\u7247\u81EA\u52A8\u6536\u8D77\uFF1B\u9700\u786E\u8BA4\u5361\u7247\u6302\u5230\u5BA1\u6279\u5904\u7406\u5B8C\uFF1B\u5361\u4F4F\u5361\u7247\u6302\u5230\u6062\u590D\u6D3B\u52A8\u30023 \u5F20\u53CA\u4EE5\u4E0A\u81EA\u52A8\u53E0\u653E\u6210\u6807\u9898\u6761\uFF0C\u9F20\u6807\u79FB\u4E0A\u53BB\u6574\u4F53\u5C55\u5F00\uFF1B\u8981\u6574\u4F53\u4E0D\u5F39\u770B\u4E0A\u9762\u300C\u9875\u5185\u5361\u7247\u300D\u603B\u5F00\u5173" })
|
|
8024
8155
|
] }),
|
|
8025
8156
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-row", children: [
|
|
8026
8157
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-label", children: "\u7CFB\u7EDF\u901A\u77E5" }),
|
|
@@ -8109,25 +8240,19 @@ function NotifyView(props) {
|
|
|
8109
8240
|
cfg.voiceNotify ? /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-rows-narrow", children: [
|
|
8110
8241
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-row", children: [
|
|
8111
8242
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-label", children: "\u64AD\u62A5\u53E3\u5F84" }),
|
|
8112
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
8243
|
+
[["brief", "\u7B80\u6D01"], ["medium", "\u9002\u4E2D"], ["detailed", "\u8BE6\u7EC6"]].map(([v, label]) => /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
8113
8244
|
"button",
|
|
8114
8245
|
{
|
|
8115
8246
|
type: "button",
|
|
8116
|
-
className: "dknt-miniswitch" + (cfg
|
|
8117
|
-
|
|
8118
|
-
|
|
8119
|
-
|
|
8120
|
-
|
|
8121
|
-
|
|
8122
|
-
|
|
8123
|
-
|
|
8124
|
-
|
|
8125
|
-
className: "dknt-miniswitch" + (cfg.voiceMode === "detailed" ? " on" : ""),
|
|
8126
|
-
onClick: () => patch({ voiceMode: "detailed" }),
|
|
8127
|
-
children: "\u8BE6\u7EC6"
|
|
8128
|
-
}
|
|
8129
|
-
),
|
|
8130
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-sub", children: "\u7B80\u6D01\uFF1A\u4E00\u53E5\u300C\u4EFB\u52A1\u5B8C\u6210 / \u4EFB\u52A1\u505C\u6B62\u4E86 / \u4EFB\u52A1\u9700\u8981\u6388\u6743 / \u4EFB\u52A1\u5361\u4F4F\u4E86\u300D\uFF1B\u8BE6\u7EC6\uFF1A\u5E26\u4E0A\u4EFB\u52A1\u6807\u9898\u3001\u8017\u65F6\u3001\u56DE\u5408\u7EDF\u8BA1\u4E0E\u539F\u56E0" })
|
|
8247
|
+
className: "dknt-miniswitch" + (voiceTone(cfg) === v ? " on" : ""),
|
|
8248
|
+
style: { marginRight: 6 },
|
|
8249
|
+
title: "\u8BED\u97F3\u64AD\u62A5\u6309" + label + "\u6863\u8BF4",
|
|
8250
|
+
onClick: () => patch({ voiceMode: v }),
|
|
8251
|
+
children: label
|
|
8252
|
+
},
|
|
8253
|
+
v
|
|
8254
|
+
)),
|
|
8255
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-sub", children: "\u7B80\u6D01\uFF1A\u4E00\u53E5\u300C\u4EFB\u52A1\u5B8C\u6210 / \u4EFB\u52A1\u505C\u6B62\u4E86 / \u4EFB\u52A1\u9700\u8981\u6388\u6743 / \u4E3B\u4EFB\u52A1\uFF08\u6216\u5B50\u4EFB\u52A1\uFF09\xB7\u6807\u9898 \u5361\u4F4F\u4E86\u300D\uFF1B\u9002\u4E2D\uFF1A\u70B9\u540D\u4EFB\u52A1\uFF0C\u7ED3\u675F\u5E26\u539F\u56E0\u4E0E\u8017\u65F6\u3001\u5361\u4F4F\u5E26\u505C\u6EDE\u65F6\u957F\uFF1B\u8BE6\u7EC6\uFF1A\u7ED3\u675F\u5E26\u56DE\u5408\u7EDF\u8BA1\u4E0E\u56DE\u590D\u6458\u8981\uFF0C\u9700\u6388\u6743\u5E26\u5DE5\u5177\u540D\uFF0C\u5361\u4F4F\u5E26\u6700\u540E\u52A8\u4F5C" })
|
|
8131
8256
|
] }),
|
|
8132
8257
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: "dknt-row", children: [
|
|
8133
8258
|
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-row-label", children: "\u64AD\u62A5\u65F6\u523B" }),
|
|
@@ -8403,7 +8528,7 @@ function NotifyStat(props) {
|
|
|
8403
8528
|
if (snap.error) return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "dknt-err", children: "\u901A\u77E5\u72B6\u6001\u4E0D\u53EF\u7528\uFF08\u5BBF\u4E3B\u9700\u91CD\u542F\u52A0\u8F7D\u901A\u77E5\u8DEF\u7531\uFF09" });
|
|
8404
8529
|
if (!cfg) return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: "\u7B49\u5F85\u901A\u77E5\u914D\u7F6E\u2026" });
|
|
8405
8530
|
const events = [cfg.notifyOnComplete ? "\u5B8C\u6210" : "", cfg.notifyOnError ? "\u5F02\u5E38" : "", cfg.notifyOnConfirm !== false ? "\u9700\u786E\u8BA4" : ""].filter(Boolean);
|
|
8406
|
-
const extras = [cfg.soundNotify !== false ? "\u63D0\u793A\u97F3" : "", cfg.systemNotify ? "\u7CFB\u7EDF\u901A\u77E5" : "", cfg.voiceNotify ? "\u8BED\u97F3\u64AD\u62A5" + (cfg.voiceMode === "detailed" ? "\xB7\u8BE6" : "\xB7\u7B80") : ""].filter(Boolean);
|
|
8531
|
+
const extras = [cfg.soundNotify !== false ? "\u63D0\u793A\u97F3" : "", cfg.systemNotify ? "\u7CFB\u7EDF\u901A\u77E5" : "", cfg.voiceNotify ? "\u8BED\u97F3\u64AD\u62A5" + (cfg.voiceMode === "detailed" ? "\xB7\u8BE6" : cfg.voiceMode === "medium" ? "\xB7\u9002" : "\xB7\u7B80") : ""].filter(Boolean);
|
|
8407
8532
|
const push = [cfg.dingtalkEnabled ? "\u9489\u9489" : "", cfg.feishuEnabled ? "\u98DE\u4E66" : ""].filter(Boolean);
|
|
8408
8533
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { children: (events.length ? "\u901A\u77E5\uFF1A" + events.join("/") : "\u901A\u77E5\u4E8B\u4EF6\u5168\u5173") + (extras.length ? " \xB7 " + extras.join("/") : "") + (push.length ? " \xB7 \u63A8\u9001\uFF1A" + push.join("/") : "") });
|
|
8409
8534
|
}
|
|
@@ -14332,7 +14457,7 @@ var feature13 = {
|
|
|
14332
14457
|
};
|
|
14333
14458
|
|
|
14334
14459
|
// src/client.jsx
|
|
14335
|
-
var DOCK_VERSION = "0.
|
|
14460
|
+
var DOCK_VERSION = "0.19.0";
|
|
14336
14461
|
var BUILTIN_FEATURES = [feature, feature2, feature3, feature4, feature5, feature6, feature7, feature8, feature9, feature10, feature11, feature12, feature13];
|
|
14337
14462
|
var PLANNED_FEATURES = [];
|
|
14338
14463
|
var PLANNED_NOTES = {};
|