@lob-ox/core-darwin-x64 0.0.24 → 0.0.26

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/core.cjs CHANGED
@@ -561,6 +561,10 @@ var require_model = __commonJS({
561
561
  entryRel: Object.freeze(["lib", "bin.js"]),
562
562
  unitPrefix: "dsh-web@",
563
563
  binName: "dsh",
564
+ // 裸名命令头白名单:DSH 在 Windows 上有 .exe / .cmd / .ps1 三种合法形态,
565
+ // 另有 lobox 系列(本产品自己的入口)。供 commandEntryViolation 的
566
+ // allowBareNames 使用——**精确匹配**,不宽匹配(dsh-evil.exe 不是 dsh)。
567
+ bareHeads: Object.freeze(["dsh", "dsh.exe", "dsh.js", "lobox", "lobox.js", "dsh.cmd", "dsh.ps1"]),
564
568
  protectedPkgs: Object.freeze(["@deepseek-ai/dsh-base", "@deepseek-ai/dsh-web-app"])
565
569
  });
566
570
  module2.exports = { normalizeAgent, dataDirOf, installDirOf, tmpDirOf, nodeModulesDirOf, needsEnvIsolation, DSH_PRODUCT };
@@ -574,7 +578,6 @@ var require_exec_path = __commonJS({
574
578
  var fs2 = require("node:fs");
575
579
  var path2 = require("node:path");
576
580
  var os2 = require("node:os");
577
- var SHARED2 = require_shared_constants2();
578
581
  var { DSH_PRODUCT } = require_model();
579
582
  function candidateNames(base, platform) {
580
583
  const win = (platform || process.platform) === "win32";
@@ -609,7 +612,7 @@ var require_exec_path = __commonJS({
609
612
  }
610
613
  return null;
611
614
  }
612
- var GLOBAL_APP_DIRNAME = SHARED2.state.dirName;
615
+ var GLOBAL_APP_DIRNAME = "lobox";
613
616
  var GLOBAL_BIN_DIRNAME = "bin";
614
617
  function globalInstallRoot(platform, home, env) {
615
618
  const pl = platform || process.platform;
@@ -854,6 +857,14 @@ var require_exec_path = __commonJS({
854
857
  if (nodeHead && o.requireAbsoluteEntry) {
855
858
  return "command[0] \u4E3A node \u65F6 command[1] \u5FC5\u987B\u662F\u7EDD\u5BF9\u8DEF\u5F84\u7684 DSH \u5165\u53E3\uFF08\u76F8\u5BF9/\u88F8\u540D\u4F1A\u6309\u5DE5\u4F5C\u76EE\u5F55\u6216 PATH \u89E3\u6790\uFF09";
856
859
  }
860
+ const allow = o.allowBareNames;
861
+ if (Array.isArray(allow) && allow.length) {
862
+ const bare = baseOf(entry);
863
+ if (!allow.some((n) => String(n).toLowerCase() === bare)) {
864
+ return "\u542F\u52A8\u547D\u4EE4\u7684\u88F8\u540D\u4E0D\u5728\u5408\u6CD5\u547D\u4EE4\u5934\u767D\u540D\u5355\u5185\uFF08\u653E\u540D\uFF1A" + allow.join(" / ") + "\uFF09\uFF1A" + entry;
865
+ }
866
+ return null;
867
+ }
857
868
  return null;
858
869
  }
859
870
  if (!isAbsolute(entry)) {
@@ -1442,6 +1453,7 @@ var require_config = __commonJS({
1442
1453
  var os2 = require("node:os");
1443
1454
  var path2 = require("node:path");
1444
1455
  var SHARED2 = require_shared_constants2();
1456
+ var { DSH_PRODUCT } = require_model();
1445
1457
  function expandHome(p) {
1446
1458
  if (typeof p !== "string") return p;
1447
1459
  if (p === "~") return os2.homedir();
@@ -1479,7 +1491,7 @@ var require_config = __commonJS({
1479
1491
  notifyEnabled: true,
1480
1492
  corePackageName: null,
1481
1493
  pluginsProfileName: "web",
1482
- packageName: "@deepseek-ai/dsh",
1494
+ packageName: DSH_PRODUCT.pkg,
1483
1495
  canary: false,
1484
1496
  registries: [
1485
1497
  SHARED2.runtime.npmDefaultRegistry,
@@ -1630,7 +1642,7 @@ var require_version = __commonJS({
1630
1642
  var fs2 = require("node:fs");
1631
1643
  var path2 = require("node:path");
1632
1644
  function guardVersion() {
1633
- if (true) return String("0.0.24");
1645
+ if (true) return String("0.0.26");
1634
1646
  try {
1635
1647
  return JSON.parse(fs2.readFileSync(path2.join(__dirname, "..", "..", "package.json"), "utf8")).version || "unknown";
1636
1648
  } catch {
@@ -2520,12 +2532,18 @@ var require_pm_client = __commonJS({
2520
2532
  return false;
2521
2533
  }
2522
2534
  }
2535
+ function keepAlive(pid) {
2536
+ const n = Number(pid);
2537
+ if (!Number.isInteger(n) || n <= 0) return false;
2538
+ return post("/pm/keep-alive", { pid: n });
2539
+ }
2523
2540
  module2.exports = {
2524
2541
  FILE_NAME,
2525
2542
  SUPPORTED_SCHEMA,
2526
2543
  file,
2527
2544
  endpoint,
2528
2545
  setEventSink,
2546
+ keepAlive,
2529
2547
  register(desc) {
2530
2548
  return post("/pm/register", desc);
2531
2549
  },
@@ -5223,6 +5241,85 @@ var require_native = __commonJS({
5223
5241
  var require_changelog = __commonJS({
5224
5242
  "src/shared/changelog.json"(exports2, module2) {
5225
5243
  module2.exports = [
5244
+ {
5245
+ version: "0.0.26",
5246
+ date: "2026-10-18",
5247
+ sections: [
5248
+ {
5249
+ title: "\u4FEE\u590D",
5250
+ items: [
5251
+ "\u5185\u6838\u8FDB\u7A0B\u9000\u51FA\u7559\u75D5\uFF1A\u6B64\u524D guard.log \u53EA\u8FFD\u52A0\u3001\u65E0\u9000\u51FA\u4E8B\u4EF6\uFF0C\u300C\u5185\u6838\u4E3A\u4EC0\u4E48\u6CA1\u4E86\u300D\u56DB\u79CD\u53EF\u80FD\uFF08\u58F3\u6740/\u5B64\u513F\u56DE\u6536/\u5D29\u6E83/\u4EBA\u5DE5\u505C\uFF09\u5168\u90E8\u65E0\u6CD5\u8BC1\u5B9E\u3002\u65B0\u589E\u516D\u7C7B\u4E8B\u4EF6\uFF08kernel_signal / kernel_exit / kernel_exit_timeout / kernel_started / kernel_process_exit\uFF0C\u53CA guard_uncaught_exception \u8865 pid\uFF09\uFF0C\u5168\u90E8\u5E26 pid + \u65F6\u95F4\u6233 + \u539F\u56E0",
5252
+ "\u58F3 API\u300C\u8C01\u8FDB job\u300D\uFF1A\u58F3\u4FA7 JobObject \u53EA assign \u58F3\u81EA\u5DF1 spawn \u7684\u90A3\u4E00\u4E2A\u8FDB\u7A0B\u53E5\u67C4\uFF0C\u4E0D\u8986\u76D6\u8FDB\u7A0B\u6811 \u21D2 \u5185\u6838 spawn \u7684\u540E\u4EE3\u9ED8\u8BA4\u4E0D\u5728 job \u5185\u3002\u73B0\u7531\u5185\u6838\u5728 spawn \u6210\u529F\u540E\u8C03 /pm/keep-alive\uFF0C\u58F3\u9010\u4E2A assign\u3002\u4E0D\u8C03\u7684\uFF08npm install / \u6D4F\u89C8\u5668 / \u901A\u77E5\uFF09\u5929\u7136\u4E0D\u5728 job \u5185"
5253
+ ]
5254
+ },
5255
+ {
5256
+ title: "\u6539\u8FDB",
5257
+ items: [
5258
+ "\u843D\u70B9\u5E38\u91CF\u4E0E\u72B6\u6001\u6839\u5206\u6210\u4E24\u4E2A\u4E8B\u5B9E\uFF1AGLOBAL_APP_DIRNAME\uFF08npm \u5168\u5C40 bin \u76EE\u5F55\uFF09\u4E0E shared-constants \u7684 state.dirName\uFF08\u72B6\u6001\u6839\uFF09\u5F53\u524D\u540C\u503C\u4F46\u8BED\u4E49\u4E0D\u540C\uFF0C\u4E0D\u518D\u63A5\u5355\u6E90\u2014\u2014\u4E24\u68F5\u4E0D\u540C\u7684\u76EE\u5F55\u6811\u3001\u4E24\u4E2A\u4EA7\u54C1\u51B3\u7B56\uFF0C\u6539\u4E00\u4E2A\u4E0D\u8BE5\u52A8\u53E6\u4E00\u4E2A",
5259
+ "\u7248\u672C\u6BD4\u8F83\u5F52\u4E00\u5316\u5230 -1/0/1\uFF1A\u4E0E Rust \u4FA7 semver_cmp \u8FD4\u56DE\u8BED\u4E49\u9010\u5B57\u4E00\u81F4\u3002\u6B64\u524D JS \u8FD4\u539F\u59CB\u5DEE\u503C\uFF08\u5982 -9\uFF09\uFF0C\u8DE8\u8BED\u8A00\u540C\u4E00\u6BD4\u8F83\u8FD4\u56DE\u503C\u91CF\u7EA7\u4E0D\u540C",
5260
+ "\u6536\u655B\u5355\u6E90\uFF1A@deepseek-ai/dsh \u7684 bin \u540D\uFF08DSH_HEAD \u4E0E DSH_PRODUCT.bareHeads \u5171\u7528\uFF09\u3001\u5185\u6838\u5305\u540D\uFF08packageName \u8D70 DSH_PRODUCT.pkg\uFF09\u3001DSH_HEAD \u88F8\u540D\u547D\u4EE4\u5934\u767D\u540D\u5355"
5261
+ ]
5262
+ },
5263
+ {
5264
+ title: "\u6E05\u7406",
5265
+ items: [
5266
+ "\u5220\u9664 core/test/ 22 \u4E2A\u6D4B\u8BD5\u6587\u4EF6\u2014\u2014\u672C\u4ED3 NO-TESTS \u7EAA\u5F8B\u660E\u6587\u7981\u6B62\uFF0C\u5B83\u4EEC\u6B64\u524D\u5728\u6E90\u6811\u91CC\u662F\u5931\u5B9E\u8D44\u4EA7",
5267
+ "\u5220\u9664 _lockPrimitives \u5BFC\u51FA\uFF08\u6279\u4E09\u64A4\u9500\u6B8B\u7559\uFF0C\u540C\u6587\u4EF6\u56DB\u4E2A\u9501\u51FD\u6570\u4FDD\u7559\u4ECD\u5728\u4F7F\u7528\uFF09"
5268
+ ]
5269
+ },
5270
+ {
5271
+ title: "\u672F\u8BED",
5272
+ items: [
5273
+ "\u300CDeepSeek Harness \u7BA1\u5BB6\u300D\u2192\u300Clobox \u5185\u6838\u300D\u3002\u7528\u6237\u786E\u8BA4\u4EA7\u54C1\u53EA\u6709\u4E00\u4E2A\u58F3\u4E00\u4E2A\u5185\u6838\uFF0C\u300C\u5B88\u536B\u300D\u662F DSH \u751F\u547D\u5468\u671F\u88AB\u8FDB\u7A0B\u7BA1\u7406\u63A5\u7BA1\u524D\u7684\u5386\u53F2\u547D\u540D\u3002\u7528\u6237\u7B2C\u4E00\u773C\u770B\u5230\u7684\u6587\u6848\u5DF2\u5168\u90E8\u6539\u6B63"
5274
+ ]
5275
+ }
5276
+ ]
5277
+ },
5278
+ {
5279
+ version: "0.0.25",
5280
+ date: "2026-10-17",
5281
+ sections: [
5282
+ {
5283
+ title: "\u4FEE\u590D",
5284
+ items: [
5285
+ "\u6B7B\u5BFC\u51FA\u4E0E\u534A\u6210\u54C1\u6E05\u7406\uFF1AexecInherit / nap / carrier \u7684 findOurs \u5BFC\u5165 / _testProviders / _parse / _test \u952E / _lockPrimitives\uFF08\u6279\u4E09\u64A4\u9500\u6B8B\u7559\uFF0C\u540C\u6587\u4EF6\u56DB\u4E2A\u9501\u51FD\u6570\u4FDD\u7559\uFF09\u3002\u9A8C\u6536\u540C\u65F6\u67E5 5 \u4E2A\u8BEF\u5220\u98CE\u9669\u9879\u2014\u2014\u76EE\u6807\u9879\u4E0E\u4FDD\u7559\u9879\u7D27\u90BB\uFF08nap \u4E0E NAP_MS \u76F8\u5DEE 2 \u884C\uFF09\uFF0C\u53EA\u67E5\u5F52\u96F6\u4F1A\u628A\u300C\u5220\u591A\u4E86\u300D\u6F0F\u8FC7\u53BB",
5286
+ "\u66F4\u65B0\u65E5\u5FD7\u8865\u9F50\uFF1A0.0.23 \u4E0E 0.0.24 \u4E24\u7248\u53D1\u5E03\u65F6\u90FD\u6CA1\u5199\u6761\u76EE\uFF0C\u7528\u6237\u70B9\u300C\u66F4\u65B0\u65E5\u5FD7\u300D\u770B\u4E0D\u5230\u4EFB\u4F55\u8BB0\u5F55\u30020.0.23 \u6761\u76EE\u5982\u5B9E\u5199\u4E86\u300C\u58F3\u4FA7\u5355\u5B88\u536B\u95E8\u672A\u5B9E\u73B0\u300D\u2014\u2014\u4E0D\u8BA9\u7528\u6237\u4EE5\u4E3A\u53CC\u5B88\u536B\u5DF2\u88AB\u9632\u4F4F",
5287
+ "CI \u52A0\u5BF9\u8D26\u65AD\u8A00\uFF1Achangelog.json \u6700\u65B0\u6761\u76EE\u7248\u672C\u6BB5 = package.json#version\u3002\u5224\u636E\u53D6\u300C\u6700\u5927\u7248\u672C\u300D\u800C\u975E\u300C\u9996\u6761\u300D\uFF08\u8865\u5199\u5386\u53F2\u6761\u76EE\u5199\u5728\u6700\u524D\u4E0D\u8BEF\u62A5\uFF09\u3002FAIL \u6587\u6848\u628A\u540E\u679C\u5199\u8FDB\u9519\u8BEF\u4FE1\u606F\uFF0C\u514D\u5F97\u672A\u6765\u6709\u4EBA\u4E3A\u6D88\u7EA2\u4E71\u6539\u7248\u672C\u53F7\u3002\u8BE5\u65AD\u8A00\u7B2C\u4E00\u6B21\u8FD0\u884C\u5C31\u6293\u5230\u4E00\u6B21\u771F\u5B9E\u5FD8\u5199",
5288
+ "cargo check --tests\uFF08continue-on-error: true\uFF09\uFF1A\u90A3 120 \u4E2A Rust \u6D4B\u8BD5\u51FD\u6570\u4ECE\u672A\u8FDB\u8FC7\u7F16\u8BD1\u5355\u5143\uFF08cargo check --bins \u4E0D\u7F16\u8BD1 #[cfg(test)]\uFF09\uFF0C\u6539\u4E86\u88AB\u6D4B\u51FD\u6570\u7B7E\u540D\u4F1A\u9759\u9ED8\u8150\u70C2\u3002\u53EA\u7F16\u8BD1\u4E0D\u6267\u884C\uFF0C\u7B2C\u4E00\u6B21\u7EA2\u7684\u7528\u9014\u662F\u62FF\u56DE\u8150\u70C2\u6E05\u5355\uFF0C\u8FDE\u7EED\u4E24\u8F6E\u5168\u7EFF\u540E\u6539\u6210 gate"
5289
+ ]
5290
+ }
5291
+ ]
5292
+ },
5293
+ {
5294
+ version: "0.0.24",
5295
+ date: "2026-10-17",
5296
+ sections: [
5297
+ {
5298
+ title: "\u4FEE\u590D",
5299
+ items: [
5300
+ "\u53CD\u4EE3\u5B9E\u4F8B pid \u6587\u4EF6\u5B64\u513F\uFF1Arun/ \u76EE\u5F55\u7684 proxy pid \u6587\u4EF6\u6B64\u524D\u65E0\u4EBA\u56DE\u6536\uFF0C\u800C pid \u590D\u7528\u540E\u4F1A\u88AB\u8BEF\u5224\u6210\u6211\u4EEC\u7684\u5B9E\u4F8B\u3002\u4FEE\u6CD5\u5728\u5199\u65B9\u4FA7\u8865\u6E05\u7406\uFF08\u8FDB\u7A0B\u8EAB\u4EFD\u5224\u636E\u7684\u552F\u4E00\u6240\u5C5E\u5C42\u662F liveness.judge\uFF0C\u4E0D\u5728\u8BFB\u65B9\u52A0\u7B2C\u4E8C\u4EFD\uFF09\uFF0C\u8986\u76D6 child.on('close') / child.on('error') / carrier.start \u5931\u8D25 / arbitrateStop \u4E3B\u52A8\u505C\u56DB\u6761\u8DEF\u5F84\u3002\u6E05\u7406\u5224\u636E\u662F\u300C\u6587\u4EF6\u91CC\u7684 pid \u662F\u4E0D\u662F\u6211\u521A\u8DD1\u5B8C\u7684\u90A3\u4E2A\u300D\u2014\u2014\u4E0D\u7528\u300C\u8FD9\u8FDB\u7A0B\u8FD8\u6D3B\u7740\u5417\u300D\uFF0C\u540E\u8005\u4F1A\u5220\u6389\u65B0\u4E00\u4EE3\u5B9E\u4F8B\u521A\u5199\u4E0B\u7684\u767B\u8BB0",
5301
+ "startup_failure \u540C\u540D\u4E0D\u540C\u6E90\uFF1A\u5168\u4ED3\u539F\u6709\u56DB\u5904 startupFailure \u5224\u636E\u3001\u56DB\u4E2A\u7A97\u53E3\u3001\u56DB\u4E2A\u6D88\u8D39\u65B9\uFF0C\u5171\u4EAB\u4E00\u4E2A\u540D\u5B57\u5374\u5404\u7B54\u5404\u7684\u95EE\u9898\u3002\u56DB\u5904\u7EDF\u4E00\u52A0\u300C\u4E0D\u662F\u540C\u4E00\u4E8B\u5B9E\uFF0C\u522B\u5BF9\u9F50\u300D\u58F0\u660E\u5E76\u5217\u51FA\u5168\u96C6\uFF0C\u907F\u514D\u6539\u4E00\u5904\u6F0F\u6539\u53E6\u4E00\u5904",
5302
+ "\u672F\u8BED\u5BF9\u9F50\uFF1A\u7528\u6237\u786E\u8BA4\u4EA7\u54C1\u53EA\u6709\u4E00\u4E2A\u58F3\u4E00\u4E2A\u5185\u6838\uFF0C\u300C\u5B88\u536B\u300D\u662F DSH \u751F\u547D\u5468\u671F\u88AB\u8FDB\u7A0B\u7BA1\u7406\u63A5\u7BA1\u524D\u7684\u5386\u53F2\u547D\u540D\u3002\u5168\u4ED3\u300C\u5B88\u536B\u300D\u4ECE 70 \u5904\u6E05\u5230 22 \u5904\uFF0C\u7528\u6237\u7B2C\u4E00\u773C\u770B\u5230\u7684\u6587\u6848\u5DF2\u6539\uFF08\u300C\u6B63\u5728\u542F\u52A8\u5B88\u536B\u2026\u300D\u2192\u300C\u6B63\u5728\u542F\u52A8\u5185\u6838\u2026\u300D\u3001lobox version \u7684\u300C\u5B88\u536B\u5F53\u524D\u7248\u672C\u300D\u2192\u300C\u5185\u6838\u5F53\u524D\u7248\u672C\u300D\u3001\u66F4\u65B0\u5931\u8D25\u9519\u8BEF\u6587\u6848\u300C\u5B88\u536B\u4ECE\u4E0D\u91CD\u542F\u81EA\u5DF1\u300D\u2192\u300C\u5185\u6838\u4ECE\u4E0D\u91CD\u542F\u81EA\u5DF1\u300D\uFF09\u3002guard-mgmt.json \u6587\u4EF6\u540D\u3001--run-guard CLI \u53C2\u6570\u3001cli_run_guard \u51FD\u6570\u540D\u672A\u52A8\u2014\u2014\u6587\u4EF6\u540D\u4E0E CLI \u53C2\u6570\u662F\u8DE8\u8BED\u8A00\u5951\u7EA6\uFF0C\u6539\u540D\u9700\u4E24\u4FA7\u540C\u6B65"
5303
+ ]
5304
+ }
5305
+ ]
5306
+ },
5307
+ {
5308
+ version: "0.0.23",
5309
+ date: "2026-10-16",
5310
+ sections: [
5311
+ {
5312
+ title: "\u4FEE\u590D",
5313
+ items: [
5314
+ "\u6C99\u7BB1\u81EA\u6108\u4ECE\u672A\u751F\u6548\uFF08\u672C\u7248\u6700\u4E25\u91CD\uFF09\uFF1Alifecycle.supervise \u6709\u5B8C\u6574\u7684\u76F8\u4F4D\u4E0A\u62A5\u4E0E\u72B6\u6001\u673A\u63A8\u8FDB\uFF0C\u5374\u5168\u4ED3\u96F6\u8C03\u7528\u65B9\uFF1Brecord-exit \u66F4\u662F\u5185\u6838\u4FA7\u96F6\u8C03\u7528\u70B9\u3002\u73B0\u63A5 afterTick \u8282\u62CD\u9A71\u52A8 + \u5728\u89C2\u6D4B\u5230\u8FDB\u7A0B\u9000\u51FA\u7684\u90A3\u4E00\u523B\u4E0A\u62A5\uFF0C\u4E14 startup_failure \u7528\u300C\u672C\u6B21\u542F\u52A8\u6709\u6CA1\u6709\u6D3B\u8FC7\u542F\u52A8\u7A97\u53E3\u300D\u7684\u771F\u5224\u636E\uFF08\u539F\u6765\u6052 false\uFF0C\u4F1A\u8BA9\u542F\u52A8\u7A97\u53E3\u5185\u7684\u9000\u51FA\u88AB\u5F53\u6210\u7A33\u5B9A\u6027\u8BC1\u636E\uFF09",
5315
+ "\u64A4\u9500\u5185\u6838\u4FA7\u5B88\u536B\u9501\u95E8\uFF1A\u5B83\u8FDD\u53CD R7 \u67B6\u6784\u610F\u56FE\uFF08\u5185\u6838\u4E0D\u8D77\u9501\uFF09\uFF0C\u4E14\u9501\u5199\u4E86\u4F46\u8FDB\u7A0B\u88AB\u5916\u90E8\u6740\u6389\u65F6\u4F1A\u628A\u6B63\u5E38\u6362\u4EE3\u53D8\u6210\u300C\u8017\u5C3D\u81EA\u6108\u9884\u7B97\u540E\u9700\u4EBA\u5DE5\u4ECB\u5165\u300D\uFF0C\u6BD4\u53CC\u5B9E\u4F8B\u66F4\u4E25\u91CD",
5316
+ "guard-mgmt.json \u6743\u9650\u6536\u53E3\uFF1Achmod \u5931\u8D25\u4E0D\u518D\u8BA9\u5B57\u8282\u65E0\u6CD5\u843D\u76D8\u2014\u2014\u300C\u6743\u9650\u672A\u6536\u53E3\u300D\u4E0E\u300C\u6CA1\u5199\u8FDB\u53BB\u300D\u662F\u4E24\u79CD\u7ED3\u5C40\uFF0C\u524D\u8005\u8BE5\u8BA9\u7AEF\u70B9\u7167\u8D77\u5E76\u5982\u5B9E\u8BB0\u8D26",
5317
+ "mgmt.owner_alive \u4E8B\u4EF6\u96F6\u6D88\u8D39\uFF1A\u8865 pm_status.mgmOwner \u5B57\u6BB5 + alive:false \u544A\u8B66\u4F4D",
5318
+ "\u76F8\u4F4D\u65E5\u5FD7\u53BB\u91CD\uFF1A\u540C\u76F8\u4F4D\u8FDE\u7EED\u91CD\u590D\u65F6\u5199\u300C\u7B2C N \u6B21\uFF0C\u9996\u6B21 HH:MM:SS\u300D\u800C\u975E\u6BCF\u62CD\u4E00\u6761"
5319
+ ]
5320
+ }
5321
+ ]
5322
+ },
5226
5323
  {
5227
5324
  version: "0.0.22",
5228
5325
  date: "2026-10-16",
@@ -6132,7 +6229,7 @@ var require_instances = __commonJS({
6132
6229
  if (/[\0\r\n]/.test(a)) return "command \u542B\u975E\u6CD5\u5B57\u7B26\uFF08NUL/\u6362\u884C\uFF09";
6133
6230
  }
6134
6231
  const NODE_HEAD = /* @__PURE__ */ new Set(["node", "node.exe"]);
6135
- const DSH_HEAD = /* @__PURE__ */ new Set(["dsh", "dsh.exe", "dsh.js", "lobox", "lobox.js", "dsh.cmd", "dsh.ps1"]);
6232
+ const DSH_HEAD = new Set(DSH_PRODUCT.bareHeads);
6136
6233
  const DSH_ENTRY = /* @__PURE__ */ new Set(["dsh", "dsh.js", "lobox", "lobox.js"]);
6137
6234
  const baseOf = (p) => String(p).split(/[\\/]/).pop().toLowerCase();
6138
6235
  const normPath = (p) => String(p).replace(/\\/g, "/");
@@ -6154,7 +6251,10 @@ var require_instances = __commonJS({
6154
6251
  const sharedErr = execPath.commandEntryViolation(command, {
6155
6252
  requireAbsoluteEntry: true,
6156
6253
  files: execPath.knownDshEntries({ dshBin }),
6157
- allowEntry: (entry) => isDshPackageEntry(entry) || DSH_ENTRY.has(baseOf(entry)) || isConfiguredDshBin(entry)
6254
+ allowEntry: (entry) => isDshPackageEntry(entry) || DSH_ENTRY.has(baseOf(entry)) || isConfiguredDshBin(entry),
6255
+ // 产品知识(哪些裸名是合法的 DSH 命令头)由本层传给平台层——平台层只提供校验机制,
6256
+ // 不自己知道产品有哪些可执行。此前这段没有通道,裸名在平台层一律放行。
6257
+ allowBareNames: DSH_PRODUCT.bareHeads
6158
6258
  });
6159
6259
  if (!sharedErr) return null;
6160
6260
  if (NODE_HEAD.has(baseOf(command[0]))) {
@@ -6674,8 +6774,9 @@ var require_version2 = __commonJS({
6674
6774
  };
6675
6775
  const A = parse(a);
6676
6776
  const B = parse(b);
6777
+ const sign = (n) => n > 0 ? 1 : n < 0 ? -1 : 0;
6677
6778
  for (let i = 0; i < 3; i++) {
6678
- if ((A.nums[i] || 0) !== (B.nums[i] || 0)) return (A.nums[i] || 0) - (B.nums[i] || 0);
6779
+ if ((A.nums[i] || 0) !== (B.nums[i] || 0)) return sign((A.nums[i] || 0) - (B.nums[i] || 0));
6679
6780
  }
6680
6781
  if (A.pre === B.pre) return 0;
6681
6782
  if (A.pre === "") return 1;
@@ -6690,7 +6791,7 @@ var require_version2 = __commonJS({
6690
6791
  const xn = /^\d+$/.test(x);
6691
6792
  const yn = /^\d+$/.test(y);
6692
6793
  if (xn && yn) {
6693
- if (parseInt(x, 10) !== parseInt(y, 10)) return parseInt(x, 10) - parseInt(y, 10);
6794
+ if (parseInt(x, 10) !== parseInt(y, 10)) return sign(parseInt(x, 10) - parseInt(y, 10));
6694
6795
  } else if (xn !== yn) {
6695
6796
  return xn ? -1 : 1;
6696
6797
  } else if (x !== y) {
@@ -6979,6 +7080,7 @@ var require_process = __commonJS({
6979
7080
  var native = require_native_command();
6980
7081
  var BRAND2 = require_brand();
6981
7082
  var guardian = require_guardian();
7083
+ var pmClient = require_pm_client();
6982
7084
  var { findManagedDshPort, applyMainPort } = require_port_rederive();
6983
7085
  var DEPS = /* @__PURE__ */ new WeakMap();
6984
7086
  var HELPERS = [
@@ -7075,6 +7177,12 @@ var require_process = __commonJS({
7075
7177
  return;
7076
7178
  }
7077
7179
  d.logger().info("spawn pid=" + child.pid + " cmd=" + d.spawnCommand().join(" "));
7180
+ if (child.pid) {
7181
+ try {
7182
+ pmClient.keepAlive(child.pid);
7183
+ } catch {
7184
+ }
7185
+ }
7078
7186
  d.mSetChild(child);
7079
7187
  d.mSetAdopted(false);
7080
7188
  d.mSetAdoptPid(null);
@@ -9145,6 +9253,12 @@ var require_portable = __commonJS({
9145
9253
  } catch {
9146
9254
  }
9147
9255
  }
9256
+ if (opts.keepAlive) {
9257
+ try {
9258
+ require_pm_client().keepAlive(child.pid);
9259
+ } catch {
9260
+ }
9261
+ }
9148
9262
  return true;
9149
9263
  },
9150
9264
  async stopUnit(unit, o) {
@@ -9215,7 +9329,7 @@ var require_portable = __commonJS({
9215
9329
  return { ok: errors.length === 0, errors };
9216
9330
  }
9217
9331
  };
9218
- module2.exports = { portable, findOurs, matchesAnchors, _test: { readPidFile, matchesAnchors, findOurs } };
9332
+ module2.exports = { portable, findOurs, matchesAnchors };
9219
9333
  }
9220
9334
  });
9221
9335
 
@@ -9263,8 +9377,7 @@ var require_service = __commonJS({
9263
9377
  current,
9264
9378
  CapabilityError,
9265
9379
  kind: () => current().kind,
9266
- PLATFORM,
9267
- _testProviders: { portable, NONE }
9380
+ PLATFORM
9268
9381
  };
9269
9382
  }
9270
9383
  });
@@ -12657,6 +12770,7 @@ var require_process3 = __commonJS({
12657
12770
  var fs2 = require("node:fs");
12658
12771
  var path2 = require("node:path");
12659
12772
  var pidlook = require_pidlookup();
12773
+ var pmClient = require_pm_client();
12660
12774
  var { writeDurable } = require_fs();
12661
12775
  var { waitProcessExit, waitPortFree } = require_process_wait();
12662
12776
  var { deriveCmdMarks } = require_process_marks();
@@ -12831,6 +12945,12 @@ var require_process3 = __commonJS({
12831
12945
  return { mode: "failed", error: "daemon \u672A\u542F\u52A8\uFF08\u811A\u672C\u4E0D\u53EF\u6267\u884C\u6216 Node \u4E0D\u53EF\u7528\uFF09", script: this.script };
12832
12946
  }
12833
12947
  this._writeIdentity(child.pid);
12948
+ if (child.pid) {
12949
+ try {
12950
+ pmClient.keepAlive(child.pid);
12951
+ } catch {
12952
+ }
12953
+ }
12834
12954
  if (this.logger && this.logger.info) this.logger.info("[" + this.name + "] \u5DF2\u62C9\u8D77\u72EC\u7ACB daemon pid=" + child.pid + "\uFF08spawn \u7A97\u53E3\u81F3 " + new Date(this._spawnWindowUntil).toISOString() + "\uFF09");
12835
12955
  return { mode: "started", pid: child.pid };
12836
12956
  }
@@ -13292,7 +13412,6 @@ var require_identity3 = __commonJS({
13292
13412
  return d;
13293
13413
  }
13294
13414
  module2.exports = {
13295
- _lockPrimitives: { acquireLock, releaseLock, lockPid, pidAlive },
13296
13415
  methods: {
13297
13416
  _lanLockPath() {
13298
13417
  const d = depsOf(this);
@@ -18358,7 +18477,7 @@ var require_carrier = __commonJS({
18358
18477
  var spawner = require_spawn();
18359
18478
  var procOS = require_process2();
18360
18479
  var pidlookup = require_pidlookup();
18361
- var { findOurs, portable } = require_portable();
18480
+ var { portable } = require_portable();
18362
18481
  var { judge: judgeIdentity } = require_liveness();
18363
18482
  var ESCALATE_MS = 1500;
18364
18483
  function escalateKill(pid) {
@@ -23475,6 +23594,7 @@ var require_lifecycle3 = __commonJS({
23475
23594
  var sandbox = require_sandbox();
23476
23595
  var stateMachine = require_state_machine();
23477
23596
  var execPath = require_exec_path();
23597
+ var { DSH_PRODUCT } = require_model();
23478
23598
  var pmClient = require_pm_client();
23479
23599
  function createLifecycle(deps) {
23480
23600
  const { store, service, logger, events, tokens, tasks, systemdDir, systemdTemplatePath, hooks, instancesRoot, resstats } = deps;
@@ -23518,7 +23638,12 @@ var require_lifecycle3 = __commonJS({
23518
23638
  if (!cmdArr || !cmdArr.length) return { ok: false, error: "\u5B9E\u4F8B\u672A\u914D\u7F6E\u542F\u52A8\u547D\u4EE4" };
23519
23639
  const boundary = inst.kind === "sandbox" ? execPath.commandEntryViolation(cmdArr, {
23520
23640
  roots: [sandbox.installDir(instancesRoot, inst)],
23521
- files: execPath.knownDshEntries({ dshBin: deps.dshBin })
23641
+ files: execPath.knownDshEntries({ dshBin: deps.dshBin }),
23642
+ // 裸名白名单与 api/domains/instances.js 同一份产品知识(DSH 的合法命令头,
23643
+ // 单源在 domains/agent/model.js 的 DSH_PRODUCT.bareHeads)。
23644
+ // 此前这条沙箱启动路径没传它 ⇒ 裸名 entry 在平台层一律放行,
23645
+ // 连 `dsh.cmd` / `dsh.ps1` 这些 Windows 合法形态也没经过校验。
23646
+ allowBareNames: DSH_PRODUCT.bareHeads
23522
23647
  }) : null;
23523
23648
  if (boundary) {
23524
23649
  const msg = "\u542F\u52A8\u547D\u4EE4\u672A\u901A\u8FC7\u6267\u884C\u8FB9\u754C\u590D\u6821\uFF1A" + boundary;
@@ -23542,7 +23667,7 @@ var require_lifecycle3 = __commonJS({
23542
23667
  const ctx = sandbox.launchCtx(instancesRoot, deps.dshBin, inst);
23543
23668
  _cleanStaleUnit("dsh-web@" + inst.id, ctx);
23544
23669
  try {
23545
- service.startTransient({ unit: "dsh-web@" + inst.id, cmd: cmdArr, env, workingDir, port: ctx.port, pidFile: ctx.pidFile, anchors: ctx.anchors });
23670
+ service.startTransient({ unit: "dsh-web@" + inst.id, cmd: cmdArr, env, workingDir, port: ctx.port, pidFile: ctx.pidFile, anchors: ctx.anchors, keepAlive: true });
23546
23671
  } catch (e) {
23547
23672
  const msg = "systemd \u542F\u52A8\u5931\u8D25: " + (e.message || e);
23548
23673
  inst.state.lastError = msg;
@@ -24523,8 +24648,7 @@ var require_resstats = __commonJS({
24523
24648
  }
24524
24649
  module2.exports = {
24525
24650
  sampleAsync,
24526
- aggregate,
24527
- _parse: { parseProcStat, parseProcStatusRss, parseCpuTimeMs, parsePsTable, parseCimJson }
24651
+ aggregate
24528
24652
  };
24529
24653
  }
24530
24654
  });
@@ -28572,6 +28696,7 @@ var require_frp = __commonJS({
28572
28696
  "use strict";
28573
28697
  var platform = require_os();
28574
28698
  var pidlook = require_pidlookup();
28699
+ var pmClient = require_pm_client();
28575
28700
  var fs2 = require("node:fs");
28576
28701
  var path2 = require("node:path");
28577
28702
  var spawnOS = require_spawn();
@@ -28695,6 +28820,12 @@ var require_frp = __commonJS({
28695
28820
  return { ok: false, error: "frpc spawn failed: " + (e && e.message || e), needInstall: true };
28696
28821
  }
28697
28822
  this.child = child;
28823
+ if (child.pid) {
28824
+ try {
28825
+ pmClient.keepAlive(child.pid);
28826
+ } catch {
28827
+ }
28828
+ }
28698
28829
  const pushLog = (line) => {
28699
28830
  line = String(line).trim();
28700
28831
  if (!line) return;
@@ -29588,13 +29719,21 @@ function cmdDaemon() {
29588
29719
  }
29589
29720
  }
29590
29721
  let _exiting = false;
29591
- function gracefulExit(code) {
29722
+ function traceExit(kind, extra) {
29723
+ try {
29724
+ sup.events.append("kernel_" + kind, Object.assign({ pid: process.pid, at: Date.now() }, extra || {}));
29725
+ } catch {
29726
+ }
29727
+ }
29728
+ function gracefulExit(code, reason) {
29592
29729
  if (_exiting) {
29593
29730
  process.exit(code);
29594
29731
  }
29595
29732
  _exiting = true;
29733
+ traceExit("exit", { code, reason: reason || "graceful" });
29596
29734
  const bail = setTimeout(() => {
29597
29735
  console.error("[supervisor] shutdown \u8D85\u65F6\uFF088s\uFF09\uFF0C\u5F3A\u5236\u9000\u51FA");
29736
+ traceExit("exit_timeout", { code, reason: reason || "graceful" });
29598
29737
  process.exit(code);
29599
29738
  }, 8e3);
29600
29739
  if (bail.unref) bail.unref();
@@ -29606,17 +29745,19 @@ function cmdDaemon() {
29606
29745
  });
29607
29746
  }
29608
29747
  process.on("SIGTERM", () => {
29609
- gracefulExit(0);
29748
+ traceExit("signal", { signal: "SIGTERM" });
29749
+ gracefulExit(0, "SIGTERM");
29610
29750
  });
29611
29751
  process.on("SIGINT", () => {
29612
- gracefulExit(0);
29752
+ traceExit("signal", { signal: "SIGINT" });
29753
+ gracefulExit(0, "SIGINT");
29613
29754
  });
29614
29755
  let excCount = 0;
29615
29756
  let excWindowStart = 0;
29616
29757
  process.on("uncaughtException", (e) => {
29617
29758
  console.error("[supervisor] uncaughtException:", e && e.stack || e);
29618
29759
  try {
29619
- sup.events.append("guard_uncaught_exception", { message: e && e.message });
29760
+ sup.events.append("guard_uncaught_exception", { pid: process.pid, message: e && e.message });
29620
29761
  } catch {
29621
29762
  }
29622
29763
  const now = Date.now();
@@ -29627,7 +29768,7 @@ function cmdDaemon() {
29627
29768
  excCount += 1;
29628
29769
  if (excCount >= 3) {
29629
29770
  console.error("[supervisor] 60s \u5185\u7B2C " + excCount + " \u6B21\u672A\u6355\u83B7\u5F02\u5E38\uFF0C\u9000\u51FA\u4EA4\u7531 systemd \u62C9\u8D77\u3002");
29630
- gracefulExit(1);
29771
+ gracefulExit(1, "uncaught-exception-burst");
29631
29772
  }
29632
29773
  });
29633
29774
  process.on("unhandledRejection", (e) => {
@@ -29635,6 +29776,12 @@ function cmdDaemon() {
29635
29776
  });
29636
29777
  sup.start();
29637
29778
  console.log("[supervisor] daemon started, pid=" + process.pid);
29779
+ traceExit("started", { version: true ? "0.0.26" : null });
29780
+ process.on("exit", (code) => {
29781
+ if (!_exiting) {
29782
+ traceExit("process_exit", { code });
29783
+ }
29784
+ });
29638
29785
  }
29639
29786
  function cmdStatus() {
29640
29787
  apiRequest("GET", "/status").then((r) => {
@@ -29825,7 +29972,7 @@ function usage() {
29825
29972
  console.log("\u7528\u6CD5: lobox <command> [options]");
29826
29973
  console.log("");
29827
29974
  console.log("\u547D\u4EE4:");
29828
- console.log(" daemon [-c <config>] \u542F\u52A8\u5B88\u62A4\u8FDB\u7A0B\uFF08\u7531\u684C\u9762\u58F3/\u670D\u52A1\u7BA1\u7406\u5668\u8C03\u7528\uFF09");
29975
+ console.log(" daemon [-c <config>] \u542F\u52A8\u5185\u6838\u8FDB\u7A0B\uFF08\u7531\u684C\u9762\u58F3/\u670D\u52A1\u7BA1\u7406\u5668\u8C03\u7528\uFF09");
29829
29976
  console.log(" status [-c <config>] \u67E5\u770B\u5F53\u524D\u72B6\u6001");
29830
29977
  console.log(" start [-c <config>] \u8BBE\u7F6E desired=running \u5E76\u542F\u52A8 DSH");
29831
29978
  console.log(" stop [-c <config>] \u8BBE\u7F6E desired=stopped \u5E76\u505C\u6B62 DSH");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lob-ox/core-darwin-x64",
3
- "version": "0.0.24",
3
+ "version": "0.0.26",
4
4
  "description": "DSH lifecycle guard core (Node launcher) for darwin-x64 — requires Node >=22.12.0.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -1,3 +1,3 @@
1
- import{F as e,I as t,L as n,N as r,O as i,R as a,S as o,U as s,V as c,_ as l,a as u,b as d,c as f,g as p,k as m,n as h,o as g,t as _,v,x as y,y as b}from"./supervisor-DSBgs_XY.js";import{n as x,o as S}from"./openExternal-CelnbVOI.js";import{n as C,t as w}from"./rocket-cmjG68ou.js";import{c as T,l as E,p as D,s as O}from"./supervisor-DgkkfHOR.js";import{t as k}from"./useSupervisorAction-U8T1qRbC.js";import{c as A,i as j,o as M,r as N,t as P}from"./widgets-DV5fuKzB.js";var F=r(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),I=r(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),L=r(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),R=s(c(),1),z=a();function B({onRegisterActions:r}){let{snap:a}=_(),{busy:s,run:c}=k(),B=e(),[V,H]=(0,R.useState)(!1),[U,W]=(0,R.useState)(``),[G,K]=(0,R.useState)(``),[q,J]=(0,R.useState)(``),Y=a.instances?.instances??[],[X,Z]=(0,R.useState)(null);(0,R.useEffect)(()=>{let e=!0;return u.envStatus().then(t=>{e&&Z(t.capabilities??null)}).catch(()=>void 0),()=>{e=!1}},[]);let Q=X!==null&&X.sandboxLaunch===!1;(0,R.useEffect)(()=>(r?.({onAdd:()=>H(!0)}),()=>r?.(null)),[r]);let $=(e,t)=>c(e,t),ee=e=>c(e,()=>x(()=>u.instanceOpenWeb(e)).then(()=>void 0));async function te(){if(Q){i.error(`当前平台不支持沙箱实例(见 /env/status 能力矩阵)`);return}let e=parseInt(G,10);if(!Number.isFinite(e)||e<=0){i.error(`请填写有效端口`);return}let t=q?q.split(/\n/).map(e=>e.trim()).filter(Boolean):[];try{let n=await u.instanceAdd({name:U.trim()||`沙箱 `+e,port:e,command:t});if(n&&n.ok===!1){i.error(n.error||`添加失败`);return}i.success(`已添加实例`),H(!1),W(``),K(``),J(``),h.refresh()}catch(e){i.error(String(e))}}async function ne(e){await c(e.id,async()=>{let t=await u.instanceCheckUpdate(e.id);t.updateAvailable?(i.success(`发现新版 `+t.latest+`,可点「更新」升级`),ie(t=>new Map(t).set(e.id,!0))):t.latest?i.info(`已是最新 `+t.latest):i.error(t.error||`版本检测失败`)})}let[re,ie]=(0,R.useState)(new Map);async function ae(e){await B({title:`升级该沙箱实例的 DSH 到最新版?`,description:`实例会短暂重启,进行中的请求中断。`,confirmText:`升级`})&&await c(e.id,()=>u.instanceUpgrade(e.id),{success:`升级已开始…`})}async function oe(e){await B({title:`删除实例「`+e.name+`」?`,description:`将彻底删除该沙箱实例(含配置与运行时数据)。此操作不可恢复。`,confirmText:`删除实例`,tone:`destructive`})&&await c(e.id,async()=>{let t=await u.instanceRemove(e.id);t&&t.ok!==!1&&t.dataPreserved===!0?i.warning(`实例已移除,但因其单元仍在运行,数据目录已保留(未删除)——请先停止实例再删数据`):t&&t.ok===!1&&i.error(t.error||`删除失败`),h.refresh()})}let se=({it:e})=>{let r=e.state?.running??!1,i=e.state?.lifecyclePhase,a=T(i,r),o=e.updateJob,c=o?.state===`running`,l=e.state?.usage,d=l&&typeof l.memMb==`number`?l.memMb:null,p=l&&typeof l.cpuPct==`number`?l.cpuPct:null,h=s===e.id;return(0,z.jsxs)(P,{className:`overflow-visible`,children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-1 @min-[720px]:grid-cols-[minmax(0,5fr)_minmax(0,6fr)]`,children:[(0,z.jsxs)(`div`,{className:`flex flex-col gap-4 border-b border-border px-6 py-5 md:border-b-0 md:border-r`,children:[(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,z.jsx)(`strong`,{className:`truncate text-lg font-semibold tracking-[-0.01em] text-foreground`,children:e.name}),e.version?(0,z.jsxs)(`span`,{className:`font-mono text-sm text-muted-foreground`,children:[`v`,e.version]}):null]}),re.get(e.id)?(0,z.jsxs)(t,{className:`text-primary-foreground`,onClick:()=>void ae(e),size:`chip`,children:[(0,z.jsx)(I,{className:`size-3`}),`更新`]}):(0,z.jsxs)(t,{className:`bg-primary/10 text-primary hover:bg-primary/15`,disabled:h||c,onClick:()=>void ne(e),size:`chip`,variant:`ghost`,children:[(0,z.jsx)(I,{className:n(`size-3`,h&&`animate-spin`)}),`检测更新`]})]}),(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,z.jsx)(A,{tone:a.tone,ping:a.tone===`ok`}),(0,z.jsx)(`span`,{className:`text-base font-semibold leading-none text-foreground`,children:a.label})]}),c?(0,z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,z.jsx)(f,{className:`size-3`}),`正在升级 DeepSeek Harness(`,o?.step||``,`)…`]}):null,e.state?.installing?(0,z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,z.jsx)(f,{className:`size-3`}),`正在安装…`]}):null,i===`FAILED`?(0,z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-destructive`,children:[(0,z.jsx)(m,{className:`size-3.5`}),(0,z.jsx)(`span`,{className:`truncate`,children:e.state?.lastError||e.state?.installError||`启动反复失败,已停止自动重启,可手动重试`})]}):null]}),(0,z.jsx)(`div`,{className:`flex items-center bg-[image:var(--panel-accent-gradient)] px-6 py-5`,children:(0,z.jsxs)(`div`,{className:`grid w-full grid-cols-2 gap-x-6 gap-y-4 sm:grid-cols-4`,children:[(0,z.jsx)(j,{icon:(0,z.jsx)(D,{className:`size-4`}),label:`端口`,value:String(e.port),mono:!0}),(0,z.jsx)(j,{icon:(0,z.jsx)(L,{className:`size-4`}),label:`PID`,value:e.state?.pid?String(e.state.pid):`—`,mono:!0}),(0,z.jsx)(j,{icon:(0,z.jsx)(I,{className:`size-4`}),label:`重启次数`,value:String(e.state?.restartCount??0),mono:!0}),(0,z.jsx)(j,{icon:(0,z.jsx)(m,{className:`size-4`}),label:`最近故障`,value:e.state?.lastFailure?O(e.state.lastFailure):`无`,warn:!!e.state?.lastFailure})]})})]}),(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-border/60 px-6 py-3`,children:[(0,z.jsxs)(`span`,{className:`hidden min-w-0 items-center lg:inline-flex gap-2 text-xs text-muted-foreground`,children:[(0,z.jsx)(N,{kind:`sandbox`}),(0,z.jsx)(M,{tone:e.remoteMode&&e.remoteMode!==`off`?`boot`:`off`,children:e.remoteMode===`wan`?`远程·公网`:e.remoteMode===`lan`?`远程·局域网`:`远程关闭`}),d===null&&p===null?null:(0,z.jsxs)(`span`,{className:`whitespace-nowrap`,title:`监督拍实测值(最近一次采样;停止或未采到不显示)`,children:[`占用 `,d===null?`—`:`${d}MB`,p===null?``:` · CPU ${Math.round(p)}%`]})]}),(0,z.jsxs)(`div`,{className:`ml-auto flex flex-wrap items-center gap-2`,children:[(0,z.jsxs)(t,{disabled:!r,onClick:()=>void ee(e.id),size:`sm`,title:`打开 DSH Web(自动带认证连接)`,variant:`outline`,className:`hidden md:inline-flex`,children:[(0,z.jsx)(S,{className:`size-4`}),`DSH Web`]}),(0,z.jsx)(t,{disabled:c,onClick:()=>void $(e.id,()=>r?u.instanceStop(e.id):u.instanceStart(e.id)),size:`sm`,variant:`outline`,children:r?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(C,{className:`size-4 text-status-error`}),`停止实例`]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(w,{className:`size-4 text-primary`}),`启动实例`]})}),(0,z.jsxs)(t,{className:`hidden h-[30px] md:inline-flex`,disabled:h,onClick:()=>void oe(e),size:`sm`,variant:`destructive`,children:[(0,z.jsx)(E,{className:`size-4`}),`删除`]})]})]})]})};return(0,z.jsxs)(`div`,{className:`grid content-start gap-4`,children:[Q?(0,z.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-amber-500/30 bg-amber-500/5 px-3 py-2.5 text-xs text-muted-foreground`,children:[(0,z.jsx)(m,{className:`mt-0.5 size-3.5 shrink-0 text-amber-500`}),(0,z.jsxs)(`span`,{children:[`当前平台(`,X?.platform||`未知`,`)不支持沙箱实例(能力矩阵见 /env/status 的 capabilities.sandboxLaunch;限额执行档位见 capabilities.sandboxEnforcement)。 原生 DSH 主实例不受影响。`]})]}):null,Y.length?(0,z.jsx)(`div`,{className:`grid gap-3`,children:Y.map(e=>(0,z.jsx)(se,{it:e},e.id))}):(0,z.jsx)(`div`,{className:`grid min-h-[220px] place-items-center rounded-lg border border-dashed border-border text-center`,children:(0,z.jsxs)(`div`,{children:[(0,z.jsx)(F,{className:`mx-auto mb-3 size-8 text-muted-foreground`}),(0,z.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`尚未添加沙箱实例`}),(0,z.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:Q?`当前平台不支持沙箱实例(见上方说明)`:`点击顶部「添加实例」创建沙箱`})]})}),(0,z.jsx)(v,{open:V,onOpenChange:H,children:(0,z.jsxs)(b,{className:`max-w-[440px]`,children:[(0,z.jsx)(y,{children:(0,z.jsx)(o,{children:`添加 DSH 实例`})}),(0,z.jsxs)(`div`,{className:`grid gap-3`,children:[(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(p,{children:`实例名称`}),(0,z.jsx)(l,{placeholder:`如 沙箱二开`,value:U,onChange:e=>W(e.target.value)})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(p,{children:`监听端口`}),(0,z.jsx)(l,{inputMode:`numeric`,placeholder:`如 3082`,value:G,onChange:e=>K(e.target.value)})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(p,{children:`启动命令(每项一参数,可留空用默认)`}),(0,z.jsx)(g,{className:`min-h-[72px] font-mono text-sm`,placeholder:`node
1
+ import{F as e,I as t,L as n,N as r,O as i,R as a,S as o,U as s,V as c,_ as l,a as u,b as d,c as f,g as p,k as m,n as h,o as g,t as _,v,x as y,y as b}from"./supervisor-DSBgs_XY.js";import{n as x,o as S}from"./openExternal-B6eFcHh7.js";import{n as C,t as w}from"./rocket-cmjG68ou.js";import{c as T,l as E,p as D,s as O}from"./supervisor-2Wj_ey4C.js";import{t as k}from"./useSupervisorAction-U8T1qRbC.js";import{c as A,i as j,o as M,r as N,t as P}from"./widgets-DV5fuKzB.js";var F=r(`box`,[[`path`,{d:`M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z`,key:`hh9hay`}],[`path`,{d:`m3.3 7 8.7 5 8.7-5`,key:`g66t2b`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}]]),I=r(`rotate-cw`,[[`path`,{d:`M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8`,key:`1p45f6`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}]]),L=r(`square`,[[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,key:`afitv7`}]]),R=s(c(),1),z=a();function B({onRegisterActions:r}){let{snap:a}=_(),{busy:s,run:c}=k(),B=e(),[V,H]=(0,R.useState)(!1),[U,W]=(0,R.useState)(``),[G,K]=(0,R.useState)(``),[q,J]=(0,R.useState)(``),Y=a.instances?.instances??[],[X,Z]=(0,R.useState)(null);(0,R.useEffect)(()=>{let e=!0;return u.envStatus().then(t=>{e&&Z(t.capabilities??null)}).catch(()=>void 0),()=>{e=!1}},[]);let Q=X!==null&&X.sandboxLaunch===!1;(0,R.useEffect)(()=>(r?.({onAdd:()=>H(!0)}),()=>r?.(null)),[r]);let $=(e,t)=>c(e,t),ee=e=>c(e,()=>x(()=>u.instanceOpenWeb(e)).then(()=>void 0));async function te(){if(Q){i.error(`当前平台不支持沙箱实例(见 /env/status 能力矩阵)`);return}let e=parseInt(G,10);if(!Number.isFinite(e)||e<=0){i.error(`请填写有效端口`);return}let t=q?q.split(/\n/).map(e=>e.trim()).filter(Boolean):[];try{let n=await u.instanceAdd({name:U.trim()||`沙箱 `+e,port:e,command:t});if(n&&n.ok===!1){i.error(n.error||`添加失败`);return}i.success(`已添加实例`),H(!1),W(``),K(``),J(``),h.refresh()}catch(e){i.error(String(e))}}async function ne(e){await c(e.id,async()=>{let t=await u.instanceCheckUpdate(e.id);t.updateAvailable?(i.success(`发现新版 `+t.latest+`,可点「更新」升级`),ie(t=>new Map(t).set(e.id,!0))):t.latest?i.info(`已是最新 `+t.latest):i.error(t.error||`版本检测失败`)})}let[re,ie]=(0,R.useState)(new Map);async function ae(e){await B({title:`升级该沙箱实例的 DSH 到最新版?`,description:`实例会短暂重启,进行中的请求中断。`,confirmText:`升级`})&&await c(e.id,()=>u.instanceUpgrade(e.id),{success:`升级已开始…`})}async function oe(e){await B({title:`删除实例「`+e.name+`」?`,description:`将彻底删除该沙箱实例(含配置与运行时数据)。此操作不可恢复。`,confirmText:`删除实例`,tone:`destructive`})&&await c(e.id,async()=>{let t=await u.instanceRemove(e.id);t&&t.ok!==!1&&t.dataPreserved===!0?i.warning(`实例已移除,但因其单元仍在运行,数据目录已保留(未删除)——请先停止实例再删数据`):t&&t.ok===!1&&i.error(t.error||`删除失败`),h.refresh()})}let se=({it:e})=>{let r=e.state?.running??!1,i=e.state?.lifecyclePhase,a=T(i,r),o=e.updateJob,c=o?.state===`running`,l=e.state?.usage,d=l&&typeof l.memMb==`number`?l.memMb:null,p=l&&typeof l.cpuPct==`number`?l.cpuPct:null,h=s===e.id;return(0,z.jsxs)(P,{className:`overflow-visible`,children:[(0,z.jsxs)(`div`,{className:`grid grid-cols-1 @min-[720px]:grid-cols-[minmax(0,5fr)_minmax(0,6fr)]`,children:[(0,z.jsxs)(`div`,{className:`flex flex-col gap-4 border-b border-border px-6 py-5 md:border-b-0 md:border-r`,children:[(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,z.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-2`,children:[(0,z.jsx)(`strong`,{className:`truncate text-lg font-semibold tracking-[-0.01em] text-foreground`,children:e.name}),e.version?(0,z.jsxs)(`span`,{className:`font-mono text-sm text-muted-foreground`,children:[`v`,e.version]}):null]}),re.get(e.id)?(0,z.jsxs)(t,{className:`text-primary-foreground`,onClick:()=>void ae(e),size:`chip`,children:[(0,z.jsx)(I,{className:`size-3`}),`更新`]}):(0,z.jsxs)(t,{className:`bg-primary/10 text-primary hover:bg-primary/15`,disabled:h||c,onClick:()=>void ne(e),size:`chip`,variant:`ghost`,children:[(0,z.jsx)(I,{className:n(`size-3`,h&&`animate-spin`)}),`检测更新`]})]}),(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,z.jsx)(A,{tone:a.tone,ping:a.tone===`ok`}),(0,z.jsx)(`span`,{className:`text-base font-semibold leading-none text-foreground`,children:a.label})]}),c?(0,z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,z.jsx)(f,{className:`size-3`}),`正在升级 DeepSeek Harness(`,o?.step||``,`)…`]}):null,e.state?.installing?(0,z.jsxs)(`div`,{className:`flex items-center gap-2 text-xs text-muted-foreground`,children:[(0,z.jsx)(f,{className:`size-3`}),`正在安装…`]}):null,i===`FAILED`?(0,z.jsxs)(`div`,{className:`flex items-center gap-1.5 text-xs text-destructive`,children:[(0,z.jsx)(m,{className:`size-3.5`}),(0,z.jsx)(`span`,{className:`truncate`,children:e.state?.lastError||e.state?.installError||`启动反复失败,已停止自动重启,可手动重试`})]}):null]}),(0,z.jsx)(`div`,{className:`flex items-center bg-[image:var(--panel-accent-gradient)] px-6 py-5`,children:(0,z.jsxs)(`div`,{className:`grid w-full grid-cols-2 gap-x-6 gap-y-4 sm:grid-cols-4`,children:[(0,z.jsx)(j,{icon:(0,z.jsx)(D,{className:`size-4`}),label:`端口`,value:String(e.port),mono:!0}),(0,z.jsx)(j,{icon:(0,z.jsx)(L,{className:`size-4`}),label:`PID`,value:e.state?.pid?String(e.state.pid):`—`,mono:!0}),(0,z.jsx)(j,{icon:(0,z.jsx)(I,{className:`size-4`}),label:`重启次数`,value:String(e.state?.restartCount??0),mono:!0}),(0,z.jsx)(j,{icon:(0,z.jsx)(m,{className:`size-4`}),label:`最近故障`,value:e.state?.lastFailure?O(e.state.lastFailure):`无`,warn:!!e.state?.lastFailure})]})})]}),(0,z.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 border-t border-border/60 px-6 py-3`,children:[(0,z.jsxs)(`span`,{className:`hidden min-w-0 items-center lg:inline-flex gap-2 text-xs text-muted-foreground`,children:[(0,z.jsx)(N,{kind:`sandbox`}),(0,z.jsx)(M,{tone:e.remoteMode&&e.remoteMode!==`off`?`boot`:`off`,children:e.remoteMode===`wan`?`远程·公网`:e.remoteMode===`lan`?`远程·局域网`:`远程关闭`}),d===null&&p===null?null:(0,z.jsxs)(`span`,{className:`whitespace-nowrap`,title:`监督拍实测值(最近一次采样;停止或未采到不显示)`,children:[`占用 `,d===null?`—`:`${d}MB`,p===null?``:` · CPU ${Math.round(p)}%`]})]}),(0,z.jsxs)(`div`,{className:`ml-auto flex flex-wrap items-center gap-2`,children:[(0,z.jsxs)(t,{disabled:!r,onClick:()=>void ee(e.id),size:`sm`,title:`打开 DSH Web(自动带认证连接)`,variant:`outline`,className:`hidden md:inline-flex`,children:[(0,z.jsx)(S,{className:`size-4`}),`DSH Web`]}),(0,z.jsx)(t,{disabled:c,onClick:()=>void $(e.id,()=>r?u.instanceStop(e.id):u.instanceStart(e.id)),size:`sm`,variant:`outline`,children:r?(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(C,{className:`size-4 text-status-error`}),`停止实例`]}):(0,z.jsxs)(z.Fragment,{children:[(0,z.jsx)(w,{className:`size-4 text-primary`}),`启动实例`]})}),(0,z.jsxs)(t,{className:`hidden h-[30px] md:inline-flex`,disabled:h,onClick:()=>void oe(e),size:`sm`,variant:`destructive`,children:[(0,z.jsx)(E,{className:`size-4`}),`删除`]})]})]})]})};return(0,z.jsxs)(`div`,{className:`grid content-start gap-4`,children:[Q?(0,z.jsxs)(`div`,{className:`flex items-start gap-2 rounded-lg border border-amber-500/30 bg-amber-500/5 px-3 py-2.5 text-xs text-muted-foreground`,children:[(0,z.jsx)(m,{className:`mt-0.5 size-3.5 shrink-0 text-amber-500`}),(0,z.jsxs)(`span`,{children:[`当前平台(`,X?.platform||`未知`,`)不支持沙箱实例(能力矩阵见 /env/status 的 capabilities.sandboxLaunch;限额执行档位见 capabilities.sandboxEnforcement)。 原生 DSH 主实例不受影响。`]})]}):null,Y.length?(0,z.jsx)(`div`,{className:`grid gap-3`,children:Y.map(e=>(0,z.jsx)(se,{it:e},e.id))}):(0,z.jsx)(`div`,{className:`grid min-h-[220px] place-items-center rounded-lg border border-dashed border-border text-center`,children:(0,z.jsxs)(`div`,{children:[(0,z.jsx)(F,{className:`mx-auto mb-3 size-8 text-muted-foreground`}),(0,z.jsx)(`p`,{className:`text-sm font-medium text-foreground`,children:`尚未添加沙箱实例`}),(0,z.jsx)(`p`,{className:`mt-1 text-xs text-muted-foreground`,children:Q?`当前平台不支持沙箱实例(见上方说明)`:`点击顶部「添加实例」创建沙箱`})]})}),(0,z.jsx)(v,{open:V,onOpenChange:H,children:(0,z.jsxs)(b,{className:`max-w-[440px]`,children:[(0,z.jsx)(y,{children:(0,z.jsx)(o,{children:`添加 DSH 实例`})}),(0,z.jsxs)(`div`,{className:`grid gap-3`,children:[(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(p,{children:`实例名称`}),(0,z.jsx)(l,{placeholder:`如 沙箱二开`,value:U,onChange:e=>W(e.target.value)})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(p,{children:`监听端口`}),(0,z.jsx)(l,{inputMode:`numeric`,placeholder:`如 3082`,value:G,onChange:e=>K(e.target.value)})]}),(0,z.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,z.jsx)(p,{children:`启动命令(每项一参数,可留空用默认)`}),(0,z.jsx)(g,{className:`min-h-[72px] font-mono text-sm`,placeholder:`node
2
2
  /usr/local/bin/dsh
3
3
  web`,value:q,onChange:e=>J(e.target.value)})]}),(0,z.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:`留空则使用默认启动命令;各实例共享系统资源,不做内存/CPU 限制。`})]}),(0,z.jsxs)(d,{children:[(0,z.jsx)(t,{onClick:()=>H(!1),variant:`outline`,children:`取消`}),(0,z.jsx)(t,{onClick:()=>void te(),children:`添加`})]})]})})]})}export{B as InstancesPage};
@@ -1,4 +1,4 @@
1
- import{F as e,H as t,I as n,L as r,N as i,O as a,R as o,S as s,U as c,V as l,_ as u,a as d,b as f,g as p,s as m,t as h,v as g,x as _,y as v}from"./supervisor-DSBgs_XY.js";import{n as y,o as b,r as ee}from"./openExternal-CelnbVOI.js";import{t as x}from"./useSupervisorAction-U8T1qRbC.js";import{n as S,o as C,r as w,t as T}from"./widgets-DV5fuKzB.js";var te=i(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),ne=i(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),re=i(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),ie=i(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),ae=i(`landmark`,[[`path`,{d:`M10 18v-7`,key:`wt116b`}],[`path`,{d:`M11.119 2.205a2 2 0 0 1 1.762 0l7.84 3.846A.5.5 0 0 1 20.5 7h-17a.5.5 0 0 1-.22-.949z`,key:`yxxwt6`}],[`path`,{d:`M14 18v-7`,key:`vav6t3`}],[`path`,{d:`M18 18v-7`,key:`aexdmj`}],[`path`,{d:`M3 22h18`,key:`8prr45`}],[`path`,{d:`M6 18v-7`,key:`1ivflk`}]]),oe=i(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),se=i(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),E=t(((e,t)=>{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),D=t(((e,t)=>{var n=E();function r(){}function i(){}i.resetWarningCache=r,t.exports=function(){function e(e,t,r,i,a,o){if(o!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name=`Invariant Violation`,s}}e.isRequired=e;function t(){return e}var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return a.PropTypes=a,a}})),O=t(((e,t)=>{t.exports=D()()})),k=c(l(),1),A=c(O(),1),j=function(e,t){let n=e,r=N[t],i=null,a=0,o=null,s=[],c={},l=function(e,t){a=n*4+17,i=function(e){let t=Array(e);for(let n=0;n<e;n+=1){t[n]=Array(e);for(let r=0;r<e;r+=1)t[n][r]=null}return t}(a),u(0,0),u(a-7,0),u(0,a-7),p(),f(),h(e,t),n>=7&&m(e),o??=v(n,r,s),g(o,t)},u=function(e,t){for(let n=-1;n<=7;n+=1)if(!(e+n<=-1||a<=e+n))for(let r=-1;r<=7;r+=1)t+r<=-1||a<=t+r||(0<=n&&n<=6&&(r==0||r==6)||0<=r&&r<=6&&(n==0||n==6)||2<=n&&n<=4&&2<=r&&r<=4?i[e+n][t+r]=!0:i[e+n][t+r]=!1)},d=function(){let e=0,t=0;for(let n=0;n<8;n+=1){l(!0,n);let r=F.getLostPoint(c);(n==0||e>r)&&(e=r,t=n)}return t},f=function(){for(let e=8;e<a-8;e+=1)i[e][6]??(i[e][6]=e%2==0);for(let e=8;e<a-8;e+=1)i[6][e]??(i[6][e]=e%2==0)},p=function(){let e=F.getPatternPosition(n);for(let t=0;t<e.length;t+=1)for(let n=0;n<e.length;n+=1){let r=e[t],a=e[n];if(i[r][a]==null)for(let e=-2;e<=2;e+=1)for(let t=-2;t<=2;t+=1)e==-2||e==2||t==-2||t==2||e==0&&t==0?i[r+e][a+t]=!0:i[r+e][a+t]=!1}},m=function(e){let t=F.getBCHTypeNumber(n);for(let n=0;n<18;n+=1){let r=!e&&(t>>n&1)==1;i[Math.floor(n/3)][n%3+a-8-3]=r}for(let n=0;n<18;n+=1){let r=!e&&(t>>n&1)==1;i[n%3+a-8-3][Math.floor(n/3)]=r}},h=function(e,t){let n=r<<3|t,o=F.getBCHTypeInfo(n);for(let t=0;t<15;t+=1){let n=!e&&(o>>t&1)==1;t<6?i[t][8]=n:t<8?i[t+1][8]=n:i[a-15+t][8]=n}for(let t=0;t<15;t+=1){let n=!e&&(o>>t&1)==1;t<8?i[8][a-t-1]=n:t<9?i[8][15-t-1+1]=n:i[8][15-t-1]=n}i[a-8][8]=!e},g=function(e,t){let n=-1,r=a-1,o=7,s=0,c=F.getMaskFunction(t);for(let t=a-1;t>0;t-=2)for(t==6&&--t;;){for(let n=0;n<2;n+=1)if(i[r][t-n]==null){let a=!1;s<e.length&&(a=(e[s]>>>o&1)==1),c(r,t-n)&&(a=!a),i[r][t-n]=a,--o,o==-1&&(s+=1,o=7)}if(r+=n,r<0||a<=r){r-=n,n=-n;break}}},_=function(e,t){let n=0,r=0,i=0,a=Array(t.length),o=Array(t.length);for(let s=0;s<t.length;s+=1){let c=t[s].dataCount,l=t[s].totalCount-c;r=Math.max(r,c),i=Math.max(i,l),a[s]=Array(c);for(let t=0;t<a[s].length;t+=1)a[s][t]=255&e.getBuffer()[t+n];n+=c;let u=F.getErrorCorrectPolynomial(l),d=L(a[s],u.getLength()-1).mod(u);o[s]=Array(u.getLength()-1);for(let e=0;e<o[s].length;e+=1){let t=e+d.getLength()-o[s].length;o[s][e]=t>=0?d.getAt(t):0}}let s=0;for(let e=0;e<t.length;e+=1)s+=t[e].totalCount;let c=Array(s),l=0;for(let e=0;e<r;e+=1)for(let n=0;n<t.length;n+=1)e<a[n].length&&(c[l]=a[n][e],l+=1);for(let e=0;e<i;e+=1)for(let n=0;n<t.length;n+=1)e<o[n].length&&(c[l]=o[n][e],l+=1);return c},v=function(e,t,n){let r=R.getRSBlocks(e,t),i=z();for(let t=0;t<n.length;t+=1){let r=n[t];i.put(r.getMode(),4),i.put(r.getLength(),F.getLengthInBits(r.getMode(),e)),r.write(i)}let a=0;for(let e=0;e<r.length;e+=1)a+=r[e].dataCount;if(i.getLengthInBits()>a*8)throw`code length overflow. (`+i.getLengthInBits()+`>`+a*8+`)`;for(i.getLengthInBits()+4<=a*8&&i.put(0,4);i.getLengthInBits()%8!=0;)i.putBit(!1);for(;!(i.getLengthInBits()>=a*8||(i.put(236,8),i.getLengthInBits()>=a*8));)i.put(17,8);return _(i,r)};c.addData=function(e,t){t||=`Byte`;let n=null;switch(t){case`Numeric`:n=B(e);break;case`Alphanumeric`:n=V(e);break;case`Byte`:n=H(e);break;case`Kanji`:n=U(e);break;default:throw`mode:`+t}s.push(n),o=null},c.isDark=function(e,t){if(e<0||a<=e||t<0||a<=t)throw e+`,`+t;return i[e][t]},c.getModuleCount=function(){return a},c.make=function(){if(n<1){let e=1;for(;e<40;e++){let t=R.getRSBlocks(e,r),n=z();for(let t=0;t<s.length;t++){let r=s[t];n.put(r.getMode(),4),n.put(r.getLength(),F.getLengthInBits(r.getMode(),e)),r.write(n)}let i=0;for(let e=0;e<t.length;e++)i+=t[e].dataCount;if(n.getLengthInBits()<=i*8)break}n=e}l(!1,d())},c.createTableTag=function(e,t){e||=2,t=t===void 0?e*4:t;let n=``;n+=`<table style="`,n+=` border-width: 0px; border-style: none;`,n+=` border-collapse: collapse;`,n+=` padding: 0px; margin: `+t+`px;`,n+=`">`,n+=`<tbody>`;for(let t=0;t<c.getModuleCount();t+=1){n+=`<tr>`;for(let r=0;r<c.getModuleCount();r+=1)n+=`<td style="`,n+=` border-width: 0px; border-style: none;`,n+=` border-collapse: collapse;`,n+=` padding: 0px; margin: 0px;`,n+=` width: `+e+`px;`,n+=` height: `+e+`px;`,n+=` background-color: `,n+=c.isDark(t,r)?`#000000`:`#ffffff`,n+=`;`,n+=`"/>`;n+=`</tr>`}return n+=`</tbody>`,n+=`</table>`,n},c.createSvgTag=function(e,t,n,r){let i={};typeof arguments[0]==`object`&&(i=arguments[0],e=i.cellSize,t=i.margin,n=i.alt,r=i.title),e||=2,t=t===void 0?e*4:t,n=typeof n==`string`?{text:n}:n||{},n.text=n.text||null,n.id=n.text?n.id||`qrcode-description`:null,r=typeof r==`string`?{text:r}:r||{},r.text=r.text||null,r.id=r.text?r.id||`qrcode-title`:null;let a=c.getModuleCount()*e+t*2,o,s,l,u,d=``,f;for(f=`l`+e+`,0 0,`+e+` -`+e+`,0 0,-`+e+`z `,d+=`<svg version="1.1" xmlns="http://www.w3.org/2000/svg"`,d+=i.scalable?``:` width="`+a+`px" height="`+a+`px"`,d+=` viewBox="0 0 `+a+` `+a+`" `,d+=` preserveAspectRatio="xMinYMin meet"`,d+=r.text||n.text?` role="img" aria-labelledby="`+y([r.id,n.id].join(` `).trim())+`"`:``,d+=`>`,d+=r.text?`<title id="`+y(r.id)+`">`+y(r.text)+`</title>`:``,d+=n.text?`<description id="`+y(n.id)+`">`+y(n.text)+`</description>`:``,d+=`<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>`,d+=`<path d="`,l=0;l<c.getModuleCount();l+=1)for(u=l*e+t,o=0;o<c.getModuleCount();o+=1)c.isDark(l,o)&&(s=o*e+t,d+=`M`+s+`,`+u+f);return d+=`" stroke="transparent" fill="black"/>`,d+=`</svg>`,d},c.createDataURL=function(e,t){e||=2,t=t===void 0?e*4:t;let n=c.getModuleCount()*e+t*2,r=t,i=n-t;return J(n,n,function(t,n){if(r<=t&&t<i&&r<=n&&n<i){let i=Math.floor((t-r)/e),a=Math.floor((n-r)/e);return+!c.isDark(a,i)}return 1})},c.createImgTag=function(e,t,n){e||=2,t=t===void 0?e*4:t;let r=c.getModuleCount()*e+t*2,i=``;return i+=`<img`,i+=` src="`,i+=c.createDataURL(e,t),i+=`"`,i+=` width="`,i+=r,i+=`"`,i+=` height="`,i+=r,i+=`"`,n&&(i+=` alt="`,i+=y(n),i+=`"`),i+=`/>`,i};let y=function(e){let t=``;for(let n=0;n<e.length;n+=1){let r=e.charAt(n);switch(r){case`<`:t+=`&lt;`;break;case`>`:t+=`&gt;`;break;case`&`:t+=`&amp;`;break;case`"`:t+=`&quot;`;break;default:t+=r}}return t},b=function(e){e=e===void 0?2:e;let t=c.getModuleCount()*1+e*2,n=e,r=t-e,i,a,o,s,l,u={"██":`█`,"█ ":`▀`," █":`▄`," ":` `},d={"██":`▀`,"█ ":`▀`," █":` `," ":` `},f=``;for(i=0;i<t;i+=2){for(o=Math.floor((i-n)/1),s=Math.floor((i+1-n)/1),a=0;a<t;a+=1)l=`█`,n<=a&&a<r&&n<=i&&i<r&&c.isDark(o,Math.floor((a-n)/1))&&(l=` `),n<=a&&a<r&&n<=i+1&&i+1<r&&c.isDark(s,Math.floor((a-n)/1))?l+=` `:l+=`█`,f+=e<1&&i+1>=r?d[l]:u[l];f+=`
1
+ import{F as e,H as t,I as n,L as r,N as i,O as a,R as o,S as s,U as c,V as l,_ as u,a as d,b as f,g as p,s as m,t as h,v as g,x as _,y as v}from"./supervisor-DSBgs_XY.js";import{n as y,o as b,r as ee}from"./openExternal-B6eFcHh7.js";import{t as x}from"./useSupervisorAction-U8T1qRbC.js";import{n as S,o as C,r as w,t as T}from"./widgets-DV5fuKzB.js";var te=i(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),ne=i(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),re=i(`globe`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20`,key:`13o1zl`}],[`path`,{d:`M2 12h20`,key:`9i4pu4`}]]),ie=i(`key-round`,[[`path`,{d:`M2.586 17.414A2 2 0 0 0 2 18.828V21a1 1 0 0 0 1 1h3a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h1a1 1 0 0 0 1-1v-1a1 1 0 0 1 1-1h.172a2 2 0 0 0 1.414-.586l.814-.814a6.5 6.5 0 1 0-4-4z`,key:`1s6t7t`}],[`circle`,{cx:`16.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`w0ekpg`}]]),ae=i(`landmark`,[[`path`,{d:`M10 18v-7`,key:`wt116b`}],[`path`,{d:`M11.119 2.205a2 2 0 0 1 1.762 0l7.84 3.846A.5.5 0 0 1 20.5 7h-17a.5.5 0 0 1-.22-.949z`,key:`yxxwt6`}],[`path`,{d:`M14 18v-7`,key:`vav6t3`}],[`path`,{d:`M18 18v-7`,key:`aexdmj`}],[`path`,{d:`M3 22h18`,key:`8prr45`}],[`path`,{d:`M6 18v-7`,key:`1ivflk`}]]),oe=i(`save`,[[`path`,{d:`M15.2 3a2 2 0 0 1 1.4.6l3.8 3.8a2 2 0 0 1 .6 1.4V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2z`,key:`1c8476`}],[`path`,{d:`M17 21v-7a1 1 0 0 0-1-1H8a1 1 0 0 0-1 1v7`,key:`1ydtos`}],[`path`,{d:`M7 3v4a1 1 0 0 0 1 1h7`,key:`t51u73`}]]),se=i(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),E=t(((e,t)=>{t.exports=`SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED`})),D=t(((e,t)=>{var n=E();function r(){}function i(){}i.resetWarningCache=r,t.exports=function(){function e(e,t,r,i,a,o){if(o!==n){var s=Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw s.name=`Invariant Violation`,s}}e.isRequired=e;function t(){return e}var a={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:i,resetWarningCache:r};return a.PropTypes=a,a}})),O=t(((e,t)=>{t.exports=D()()})),k=c(l(),1),A=c(O(),1),j=function(e,t){let n=e,r=N[t],i=null,a=0,o=null,s=[],c={},l=function(e,t){a=n*4+17,i=function(e){let t=Array(e);for(let n=0;n<e;n+=1){t[n]=Array(e);for(let r=0;r<e;r+=1)t[n][r]=null}return t}(a),u(0,0),u(a-7,0),u(0,a-7),p(),f(),h(e,t),n>=7&&m(e),o??=v(n,r,s),g(o,t)},u=function(e,t){for(let n=-1;n<=7;n+=1)if(!(e+n<=-1||a<=e+n))for(let r=-1;r<=7;r+=1)t+r<=-1||a<=t+r||(0<=n&&n<=6&&(r==0||r==6)||0<=r&&r<=6&&(n==0||n==6)||2<=n&&n<=4&&2<=r&&r<=4?i[e+n][t+r]=!0:i[e+n][t+r]=!1)},d=function(){let e=0,t=0;for(let n=0;n<8;n+=1){l(!0,n);let r=F.getLostPoint(c);(n==0||e>r)&&(e=r,t=n)}return t},f=function(){for(let e=8;e<a-8;e+=1)i[e][6]??(i[e][6]=e%2==0);for(let e=8;e<a-8;e+=1)i[6][e]??(i[6][e]=e%2==0)},p=function(){let e=F.getPatternPosition(n);for(let t=0;t<e.length;t+=1)for(let n=0;n<e.length;n+=1){let r=e[t],a=e[n];if(i[r][a]==null)for(let e=-2;e<=2;e+=1)for(let t=-2;t<=2;t+=1)e==-2||e==2||t==-2||t==2||e==0&&t==0?i[r+e][a+t]=!0:i[r+e][a+t]=!1}},m=function(e){let t=F.getBCHTypeNumber(n);for(let n=0;n<18;n+=1){let r=!e&&(t>>n&1)==1;i[Math.floor(n/3)][n%3+a-8-3]=r}for(let n=0;n<18;n+=1){let r=!e&&(t>>n&1)==1;i[n%3+a-8-3][Math.floor(n/3)]=r}},h=function(e,t){let n=r<<3|t,o=F.getBCHTypeInfo(n);for(let t=0;t<15;t+=1){let n=!e&&(o>>t&1)==1;t<6?i[t][8]=n:t<8?i[t+1][8]=n:i[a-15+t][8]=n}for(let t=0;t<15;t+=1){let n=!e&&(o>>t&1)==1;t<8?i[8][a-t-1]=n:t<9?i[8][15-t-1+1]=n:i[8][15-t-1]=n}i[a-8][8]=!e},g=function(e,t){let n=-1,r=a-1,o=7,s=0,c=F.getMaskFunction(t);for(let t=a-1;t>0;t-=2)for(t==6&&--t;;){for(let n=0;n<2;n+=1)if(i[r][t-n]==null){let a=!1;s<e.length&&(a=(e[s]>>>o&1)==1),c(r,t-n)&&(a=!a),i[r][t-n]=a,--o,o==-1&&(s+=1,o=7)}if(r+=n,r<0||a<=r){r-=n,n=-n;break}}},_=function(e,t){let n=0,r=0,i=0,a=Array(t.length),o=Array(t.length);for(let s=0;s<t.length;s+=1){let c=t[s].dataCount,l=t[s].totalCount-c;r=Math.max(r,c),i=Math.max(i,l),a[s]=Array(c);for(let t=0;t<a[s].length;t+=1)a[s][t]=255&e.getBuffer()[t+n];n+=c;let u=F.getErrorCorrectPolynomial(l),d=L(a[s],u.getLength()-1).mod(u);o[s]=Array(u.getLength()-1);for(let e=0;e<o[s].length;e+=1){let t=e+d.getLength()-o[s].length;o[s][e]=t>=0?d.getAt(t):0}}let s=0;for(let e=0;e<t.length;e+=1)s+=t[e].totalCount;let c=Array(s),l=0;for(let e=0;e<r;e+=1)for(let n=0;n<t.length;n+=1)e<a[n].length&&(c[l]=a[n][e],l+=1);for(let e=0;e<i;e+=1)for(let n=0;n<t.length;n+=1)e<o[n].length&&(c[l]=o[n][e],l+=1);return c},v=function(e,t,n){let r=R.getRSBlocks(e,t),i=z();for(let t=0;t<n.length;t+=1){let r=n[t];i.put(r.getMode(),4),i.put(r.getLength(),F.getLengthInBits(r.getMode(),e)),r.write(i)}let a=0;for(let e=0;e<r.length;e+=1)a+=r[e].dataCount;if(i.getLengthInBits()>a*8)throw`code length overflow. (`+i.getLengthInBits()+`>`+a*8+`)`;for(i.getLengthInBits()+4<=a*8&&i.put(0,4);i.getLengthInBits()%8!=0;)i.putBit(!1);for(;!(i.getLengthInBits()>=a*8||(i.put(236,8),i.getLengthInBits()>=a*8));)i.put(17,8);return _(i,r)};c.addData=function(e,t){t||=`Byte`;let n=null;switch(t){case`Numeric`:n=B(e);break;case`Alphanumeric`:n=V(e);break;case`Byte`:n=H(e);break;case`Kanji`:n=U(e);break;default:throw`mode:`+t}s.push(n),o=null},c.isDark=function(e,t){if(e<0||a<=e||t<0||a<=t)throw e+`,`+t;return i[e][t]},c.getModuleCount=function(){return a},c.make=function(){if(n<1){let e=1;for(;e<40;e++){let t=R.getRSBlocks(e,r),n=z();for(let t=0;t<s.length;t++){let r=s[t];n.put(r.getMode(),4),n.put(r.getLength(),F.getLengthInBits(r.getMode(),e)),r.write(n)}let i=0;for(let e=0;e<t.length;e++)i+=t[e].dataCount;if(n.getLengthInBits()<=i*8)break}n=e}l(!1,d())},c.createTableTag=function(e,t){e||=2,t=t===void 0?e*4:t;let n=``;n+=`<table style="`,n+=` border-width: 0px; border-style: none;`,n+=` border-collapse: collapse;`,n+=` padding: 0px; margin: `+t+`px;`,n+=`">`,n+=`<tbody>`;for(let t=0;t<c.getModuleCount();t+=1){n+=`<tr>`;for(let r=0;r<c.getModuleCount();r+=1)n+=`<td style="`,n+=` border-width: 0px; border-style: none;`,n+=` border-collapse: collapse;`,n+=` padding: 0px; margin: 0px;`,n+=` width: `+e+`px;`,n+=` height: `+e+`px;`,n+=` background-color: `,n+=c.isDark(t,r)?`#000000`:`#ffffff`,n+=`;`,n+=`"/>`;n+=`</tr>`}return n+=`</tbody>`,n+=`</table>`,n},c.createSvgTag=function(e,t,n,r){let i={};typeof arguments[0]==`object`&&(i=arguments[0],e=i.cellSize,t=i.margin,n=i.alt,r=i.title),e||=2,t=t===void 0?e*4:t,n=typeof n==`string`?{text:n}:n||{},n.text=n.text||null,n.id=n.text?n.id||`qrcode-description`:null,r=typeof r==`string`?{text:r}:r||{},r.text=r.text||null,r.id=r.text?r.id||`qrcode-title`:null;let a=c.getModuleCount()*e+t*2,o,s,l,u,d=``,f;for(f=`l`+e+`,0 0,`+e+` -`+e+`,0 0,-`+e+`z `,d+=`<svg version="1.1" xmlns="http://www.w3.org/2000/svg"`,d+=i.scalable?``:` width="`+a+`px" height="`+a+`px"`,d+=` viewBox="0 0 `+a+` `+a+`" `,d+=` preserveAspectRatio="xMinYMin meet"`,d+=r.text||n.text?` role="img" aria-labelledby="`+y([r.id,n.id].join(` `).trim())+`"`:``,d+=`>`,d+=r.text?`<title id="`+y(r.id)+`">`+y(r.text)+`</title>`:``,d+=n.text?`<description id="`+y(n.id)+`">`+y(n.text)+`</description>`:``,d+=`<rect width="100%" height="100%" fill="white" cx="0" cy="0"/>`,d+=`<path d="`,l=0;l<c.getModuleCount();l+=1)for(u=l*e+t,o=0;o<c.getModuleCount();o+=1)c.isDark(l,o)&&(s=o*e+t,d+=`M`+s+`,`+u+f);return d+=`" stroke="transparent" fill="black"/>`,d+=`</svg>`,d},c.createDataURL=function(e,t){e||=2,t=t===void 0?e*4:t;let n=c.getModuleCount()*e+t*2,r=t,i=n-t;return J(n,n,function(t,n){if(r<=t&&t<i&&r<=n&&n<i){let i=Math.floor((t-r)/e),a=Math.floor((n-r)/e);return+!c.isDark(a,i)}return 1})},c.createImgTag=function(e,t,n){e||=2,t=t===void 0?e*4:t;let r=c.getModuleCount()*e+t*2,i=``;return i+=`<img`,i+=` src="`,i+=c.createDataURL(e,t),i+=`"`,i+=` width="`,i+=r,i+=`"`,i+=` height="`,i+=r,i+=`"`,n&&(i+=` alt="`,i+=y(n),i+=`"`),i+=`/>`,i};let y=function(e){let t=``;for(let n=0;n<e.length;n+=1){let r=e.charAt(n);switch(r){case`<`:t+=`&lt;`;break;case`>`:t+=`&gt;`;break;case`&`:t+=`&amp;`;break;case`"`:t+=`&quot;`;break;default:t+=r}}return t},b=function(e){e=e===void 0?2:e;let t=c.getModuleCount()*1+e*2,n=e,r=t-e,i,a,o,s,l,u={"██":`█`,"█ ":`▀`," █":`▄`," ":` `},d={"██":`▀`,"█ ":`▀`," █":` `," ":` `},f=``;for(i=0;i<t;i+=2){for(o=Math.floor((i-n)/1),s=Math.floor((i+1-n)/1),a=0;a<t;a+=1)l=`█`,n<=a&&a<r&&n<=i&&i<r&&c.isDark(o,Math.floor((a-n)/1))&&(l=` `),n<=a&&a<r&&n<=i+1&&i+1<r&&c.isDark(s,Math.floor((a-n)/1))?l+=` `:l+=`█`,f+=e<1&&i+1>=r?d[l]:u[l];f+=`
2
2
  `}return t%2&&e>0?f.substring(0,f.length-t-1)+Array(t+1).join(`▀`):f.substring(0,f.length-1)};return c.createASCII=function(e,t){if(e||=1,e<2)return b(t);--e,t=t===void 0?e*2:t;let n=c.getModuleCount()*e+t*2,r=t,i=n-t,a,o,s,l,u=Array(e+1).join(`██`),d=Array(e+1).join(` `),f=``,p=``;for(a=0;a<n;a+=1){for(s=Math.floor((a-r)/e),p=``,o=0;o<n;o+=1)l=1,r<=o&&o<i&&r<=a&&a<i&&c.isDark(s,Math.floor((o-r)/e))&&(l=0),p+=l?u:d;for(s=0;s<e;s+=1)f+=p+`
3
3
  `}return f.substring(0,f.length-1)},c.renderTo2dContext=function(e,t){t||=2;let n=c.getModuleCount();for(let r=0;r<n;r++)for(let i=0;i<n;i++)e.fillStyle=c.isDark(r,i)?`black`:`white`,e.fillRect(i*t,r*t,t,t)},c};j.stringToBytes=function(e){let t=[];for(let n=0;n<e.length;n+=1){let r=e.charCodeAt(n);t.push(r&255)}return t},j.createStringToBytes=function(e,t){let n=function(){let n=K(e),r=function(){let e=n.read();if(e==-1)throw`eof`;return e},i=0,a={};for(;;){let e=n.read();if(e==-1)break;let t=r(),o=r(),s=r(),c=String.fromCharCode(e<<8|t);a[c]=o<<8|s,i+=1}if(i!=t)throw i+` != `+t;return a}();return function(e){let t=[];for(let r=0;r<e.length;r+=1){let i=e.charCodeAt(r);if(i<128)t.push(i);else{let i=n[e.charAt(r)];typeof i==`number`?(i&255)==i?t.push(i):(t.push(i>>>8),t.push(i&255)):t.push(63)}}return t}};var M={MODE_NUMBER:1,MODE_ALPHA_NUM:2,MODE_8BIT_BYTE:4,MODE_KANJI:8},N={L:1,M:0,Q:3,H:2},P={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7},F=function(){let e=[[],[6,18],[6,22],[6,26],[6,30],[6,34],[6,22,38],[6,24,42],[6,26,46],[6,28,50],[6,30,54],[6,32,58],[6,34,62],[6,26,46,66],[6,26,48,70],[6,26,50,74],[6,30,54,78],[6,30,56,82],[6,30,58,86],[6,34,62,90],[6,28,50,72,94],[6,26,50,74,98],[6,30,54,78,102],[6,28,54,80,106],[6,32,58,84,110],[6,30,58,86,114],[6,34,62,90,118],[6,26,50,74,98,122],[6,30,54,78,102,126],[6,26,52,78,104,130],[6,30,56,82,108,134],[6,34,60,86,112,138],[6,30,58,86,114,142],[6,34,62,90,118,146],[6,30,54,78,102,126,150],[6,24,50,76,102,128,154],[6,28,54,80,106,132,158],[6,32,58,84,110,136,162],[6,26,54,82,110,138,166],[6,30,58,86,114,142,170]],t=1335,n=7973,r={},i=function(e){let t=0;for(;e!=0;)t+=1,e>>>=1;return t};return r.getBCHTypeInfo=function(e){let n=e<<10;for(;i(n)-i(t)>=0;)n^=t<<i(n)-i(t);return(e<<10|n)^21522},r.getBCHTypeNumber=function(e){let t=e<<12;for(;i(t)-i(n)>=0;)t^=n<<i(t)-i(n);return e<<12|t},r.getPatternPosition=function(t){return e[t-1]},r.getMaskFunction=function(e){switch(e){case P.PATTERN000:return function(e,t){return(e+t)%2==0};case P.PATTERN001:return function(e,t){return e%2==0};case P.PATTERN010:return function(e,t){return t%3==0};case P.PATTERN011:return function(e,t){return(e+t)%3==0};case P.PATTERN100:return function(e,t){return(Math.floor(e/2)+Math.floor(t/3))%2==0};case P.PATTERN101:return function(e,t){return e*t%2+e*t%3==0};case P.PATTERN110:return function(e,t){return(e*t%2+e*t%3)%2==0};case P.PATTERN111:return function(e,t){return(e*t%3+(e+t)%2)%2==0};default:throw`bad maskPattern:`+e}},r.getErrorCorrectPolynomial=function(e){let t=L([1],0);for(let n=0;n<e;n+=1)t=t.multiply(L([1,I.gexp(n)],0));return t},r.getLengthInBits=function(e,t){if(1<=t&&t<10)switch(e){case M.MODE_NUMBER:return 10;case M.MODE_ALPHA_NUM:return 9;case M.MODE_8BIT_BYTE:return 8;case M.MODE_KANJI:return 8;default:throw`mode:`+e}else if(t<27)switch(e){case M.MODE_NUMBER:return 12;case M.MODE_ALPHA_NUM:return 11;case M.MODE_8BIT_BYTE:return 16;case M.MODE_KANJI:return 10;default:throw`mode:`+e}else if(t<41)switch(e){case M.MODE_NUMBER:return 14;case M.MODE_ALPHA_NUM:return 13;case M.MODE_8BIT_BYTE:return 16;case M.MODE_KANJI:return 12;default:throw`mode:`+e}else throw`type:`+t},r.getLostPoint=function(e){let t=e.getModuleCount(),n=0;for(let r=0;r<t;r+=1)for(let i=0;i<t;i+=1){let a=0,o=e.isDark(r,i);for(let n=-1;n<=1;n+=1)if(!(r+n<0||t<=r+n))for(let s=-1;s<=1;s+=1)i+s<0||t<=i+s||(n!=0||s!=0)&&o==e.isDark(r+n,i+s)&&(a+=1);a>5&&(n+=3+a-5)}for(let r=0;r<t-1;r+=1)for(let i=0;i<t-1;i+=1){let t=0;e.isDark(r,i)&&(t+=1),e.isDark(r+1,i)&&(t+=1),e.isDark(r,i+1)&&(t+=1),e.isDark(r+1,i+1)&&(t+=1),(t==0||t==4)&&(n+=3)}for(let r=0;r<t;r+=1)for(let i=0;i<t-6;i+=1)e.isDark(r,i)&&!e.isDark(r,i+1)&&e.isDark(r,i+2)&&e.isDark(r,i+3)&&e.isDark(r,i+4)&&!e.isDark(r,i+5)&&e.isDark(r,i+6)&&(n+=40);for(let r=0;r<t;r+=1)for(let i=0;i<t-6;i+=1)e.isDark(i,r)&&!e.isDark(i+1,r)&&e.isDark(i+2,r)&&e.isDark(i+3,r)&&e.isDark(i+4,r)&&!e.isDark(i+5,r)&&e.isDark(i+6,r)&&(n+=40);let r=0;for(let n=0;n<t;n+=1)for(let i=0;i<t;i+=1)e.isDark(i,n)&&(r+=1);let i=Math.abs(100*r/t/t-50)/5;return n+=i*10,n},r}(),I=function(){let e=Array(256),t=Array(256);for(let t=0;t<8;t+=1)e[t]=1<<t;for(let t=8;t<256;t+=1)e[t]=e[t-4]^e[t-5]^e[t-6]^e[t-8];for(let n=0;n<255;n+=1)t[e[n]]=n;let n={};return n.glog=function(e){if(e<1)throw`glog(`+e+`)`;return t[e]},n.gexp=function(t){for(;t<0;)t+=255;for(;t>=256;)t-=255;return e[t]},n}(),L=function(e,t){if(e.length===void 0)throw e.length+`/`+t;let n=function(){let n=0;for(;n<e.length&&e[n]==0;)n+=1;let r=Array(e.length-n+t);for(let t=0;t<e.length-n;t+=1)r[t]=e[t+n];return r}(),r={};return r.getAt=function(e){return n[e]},r.getLength=function(){return n.length},r.multiply=function(e){let t=Array(r.getLength()+e.getLength()-1);for(let n=0;n<r.getLength();n+=1)for(let i=0;i<e.getLength();i+=1)t[n+i]^=I.gexp(I.glog(r.getAt(n))+I.glog(e.getAt(i)));return L(t,0)},r.mod=function(e){if(r.getLength()-e.getLength()<0)return r;let t=I.glog(r.getAt(0))-I.glog(e.getAt(0)),n=Array(r.getLength());for(let e=0;e<r.getLength();e+=1)n[e]=r.getAt(e);for(let r=0;r<e.getLength();r+=1)n[r]^=I.gexp(I.glog(e.getAt(r))+t);return L(n,0).mod(e)},r},R=function(){let e=[[1,26,19],[1,26,16],[1,26,13],[1,26,9],[1,44,34],[1,44,28],[1,44,22],[1,44,16],[1,70,55],[1,70,44],[2,35,17],[2,35,13],[1,100,80],[2,50,32],[2,50,24],[4,25,9],[1,134,108],[2,67,43],[2,33,15,2,34,16],[2,33,11,2,34,12],[2,86,68],[4,43,27],[4,43,19],[4,43,15],[2,98,78],[4,49,31],[2,32,14,4,33,15],[4,39,13,1,40,14],[2,121,97],[2,60,38,2,61,39],[4,40,18,2,41,19],[4,40,14,2,41,15],[2,146,116],[3,58,36,2,59,37],[4,36,16,4,37,17],[4,36,12,4,37,13],[2,86,68,2,87,69],[4,69,43,1,70,44],[6,43,19,2,44,20],[6,43,15,2,44,16],[4,101,81],[1,80,50,4,81,51],[4,50,22,4,51,23],[3,36,12,8,37,13],[2,116,92,2,117,93],[6,58,36,2,59,37],[4,46,20,6,47,21],[7,42,14,4,43,15],[4,133,107],[8,59,37,1,60,38],[8,44,20,4,45,21],[12,33,11,4,34,12],[3,145,115,1,146,116],[4,64,40,5,65,41],[11,36,16,5,37,17],[11,36,12,5,37,13],[5,109,87,1,110,88],[5,65,41,5,66,42],[5,54,24,7,55,25],[11,36,12,7,37,13],[5,122,98,1,123,99],[7,73,45,3,74,46],[15,43,19,2,44,20],[3,45,15,13,46,16],[1,135,107,5,136,108],[10,74,46,1,75,47],[1,50,22,15,51,23],[2,42,14,17,43,15],[5,150,120,1,151,121],[9,69,43,4,70,44],[17,50,22,1,51,23],[2,42,14,19,43,15],[3,141,113,4,142,114],[3,70,44,11,71,45],[17,47,21,4,48,22],[9,39,13,16,40,14],[3,135,107,5,136,108],[3,67,41,13,68,42],[15,54,24,5,55,25],[15,43,15,10,44,16],[4,144,116,4,145,117],[17,68,42],[17,50,22,6,51,23],[19,46,16,6,47,17],[2,139,111,7,140,112],[17,74,46],[7,54,24,16,55,25],[34,37,13],[4,151,121,5,152,122],[4,75,47,14,76,48],[11,54,24,14,55,25],[16,45,15,14,46,16],[6,147,117,4,148,118],[6,73,45,14,74,46],[11,54,24,16,55,25],[30,46,16,2,47,17],[8,132,106,4,133,107],[8,75,47,13,76,48],[7,54,24,22,55,25],[22,45,15,13,46,16],[10,142,114,2,143,115],[19,74,46,4,75,47],[28,50,22,6,51,23],[33,46,16,4,47,17],[8,152,122,4,153,123],[22,73,45,3,74,46],[8,53,23,26,54,24],[12,45,15,28,46,16],[3,147,117,10,148,118],[3,73,45,23,74,46],[4,54,24,31,55,25],[11,45,15,31,46,16],[7,146,116,7,147,117],[21,73,45,7,74,46],[1,53,23,37,54,24],[19,45,15,26,46,16],[5,145,115,10,146,116],[19,75,47,10,76,48],[15,54,24,25,55,25],[23,45,15,25,46,16],[13,145,115,3,146,116],[2,74,46,29,75,47],[42,54,24,1,55,25],[23,45,15,28,46,16],[17,145,115],[10,74,46,23,75,47],[10,54,24,35,55,25],[19,45,15,35,46,16],[17,145,115,1,146,116],[14,74,46,21,75,47],[29,54,24,19,55,25],[11,45,15,46,46,16],[13,145,115,6,146,116],[14,74,46,23,75,47],[44,54,24,7,55,25],[59,46,16,1,47,17],[12,151,121,7,152,122],[12,75,47,26,76,48],[39,54,24,14,55,25],[22,45,15,41,46,16],[6,151,121,14,152,122],[6,75,47,34,76,48],[46,54,24,10,55,25],[2,45,15,64,46,16],[17,152,122,4,153,123],[29,74,46,14,75,47],[49,54,24,10,55,25],[24,45,15,46,46,16],[4,152,122,18,153,123],[13,74,46,32,75,47],[48,54,24,14,55,25],[42,45,15,32,46,16],[20,147,117,4,148,118],[40,75,47,7,76,48],[43,54,24,22,55,25],[10,45,15,67,46,16],[19,148,118,6,149,119],[18,75,47,31,76,48],[34,54,24,34,55,25],[20,45,15,61,46,16]],t=function(e,t){let n={};return n.totalCount=e,n.dataCount=t,n},n={},r=function(t,n){switch(n){case N.L:return e[(t-1)*4+0];case N.M:return e[(t-1)*4+1];case N.Q:return e[(t-1)*4+2];case N.H:return e[(t-1)*4+3];default:return}};return n.getRSBlocks=function(e,n){let i=r(e,n);if(i===void 0)throw`bad rs block @ typeNumber:`+e+`/errorCorrectionLevel:`+n;let a=i.length/3,o=[];for(let e=0;e<a;e+=1){let n=i[e*3+0],r=i[e*3+1],a=i[e*3+2];for(let e=0;e<n;e+=1)o.push(t(r,a))}return o},n}(),z=function(){let e=[],t=0,n={};return n.getBuffer=function(){return e},n.getAt=function(t){let n=Math.floor(t/8);return(e[n]>>>7-t%8&1)==1},n.put=function(e,t){for(let r=0;r<t;r+=1)n.putBit((e>>>t-r-1&1)==1)},n.getLengthInBits=function(){return t},n.putBit=function(n){let r=Math.floor(t/8);e.length<=r&&e.push(0),n&&(e[r]|=128>>>t%8),t+=1},n},B=function(e){let t=M.MODE_NUMBER,n=e,r={};r.getMode=function(){return t},r.getLength=function(e){return n.length},r.write=function(e){let t=n,r=0;for(;r+2<t.length;)e.put(i(t.substring(r,r+3)),10),r+=3;r<t.length&&(t.length-r==1?e.put(i(t.substring(r,r+1)),4):t.length-r==2&&e.put(i(t.substring(r,r+2)),7))};let i=function(e){let t=0;for(let n=0;n<e.length;n+=1)t=t*10+a(e.charAt(n));return t},a=function(e){if(`0`<=e&&e<=`9`)return e.charCodeAt(0)-48;throw`illegal char :`+e};return r},V=function(e){let t=M.MODE_ALPHA_NUM,n=e,r={};r.getMode=function(){return t},r.getLength=function(e){return n.length},r.write=function(e){let t=n,r=0;for(;r+1<t.length;)e.put(i(t.charAt(r))*45+i(t.charAt(r+1)),11),r+=2;r<t.length&&e.put(i(t.charAt(r)),6)};let i=function(e){if(`0`<=e&&e<=`9`)return e.charCodeAt(0)-48;if(`A`<=e&&e<=`Z`)return e.charCodeAt(0)-65+10;switch(e){case` `:return 36;case`$`:return 37;case`%`:return 38;case`*`:return 39;case`+`:return 40;case`-`:return 41;case`.`:return 42;case`/`:return 43;case`:`:return 44;default:throw`illegal char :`+e}};return r},H=function(e){let t=M.MODE_8BIT_BYTE,n=j.stringToBytes(e),r={};return r.getMode=function(){return t},r.getLength=function(e){return n.length},r.write=function(e){for(let t=0;t<n.length;t+=1)e.put(n[t],8)},r},U=function(e){let t=M.MODE_KANJI,n=j.stringToBytes;(function(e,t){let r=n(e);if(r.length!=2||(r[0]<<8|r[1])!=t)throw`sjis not supported.`})(`友`,38726);let r=n(e),i={};return i.getMode=function(){return t},i.getLength=function(e){return~~(r.length/2)},i.write=function(e){let t=r,n=0;for(;n+1<t.length;){let r=(255&t[n])<<8|255&t[n+1];if(33088<=r&&r<=40956)r-=33088;else if(57408<=r&&r<=60351)r-=49472;else throw`illegal char at `+(n+1)+`/`+r;r=(r>>>8&255)*192+(r&255),e.put(r,13),n+=2}if(n<t.length)throw`illegal char at `+(n+1)},i},W=function(){let e=[],t={};return t.writeByte=function(t){e.push(t&255)},t.writeShort=function(e){t.writeByte(e),t.writeByte(e>>>8)},t.writeBytes=function(e,n,r){n||=0,r||=e.length;for(let i=0;i<r;i+=1)t.writeByte(e[i+n])},t.writeString=function(e){for(let n=0;n<e.length;n+=1)t.writeByte(e.charCodeAt(n))},t.toByteArray=function(){return e},t.toString=function(){let t=``;t+=`[`;for(let n=0;n<e.length;n+=1)n>0&&(t+=`,`),t+=e[n];return t+=`]`,t},t},G=function(){let e=0,t=0,n=0,r=``,i={},a=function(e){r+=String.fromCharCode(o(e&63))},o=function(e){if(e<0)throw`n:`+e;if(e<26)return 65+e;if(e<52)return 97+(e-26);if(e<62)return 48+(e-52);if(e==62)return 43;if(e==63)return 47;throw`n:`+e};return i.writeByte=function(r){for(e=e<<8|r&255,t+=8,n+=1;t>=6;)a(e>>>t-6),t-=6},i.flush=function(){if(t>0&&(a(e<<6-t),e=0,t=0),n%3!=0){let e=3-n%3;for(let t=0;t<e;t+=1)r+=`=`}},i.toString=function(){return r},i},K=function(e){let t=e,n=0,r=0,i=0,a={};a.read=function(){for(;i<8;){if(n>=t.length){if(i==0)return-1;throw`unexpected end of file./`+i}let e=t.charAt(n);if(n+=1,e==`=`)return i=0,-1;e.match(/^\s$/)||(r=r<<6|o(e.charCodeAt(0)),i+=6)}let e=r>>>i-8&255;return i-=8,e};let o=function(e){if(65<=e&&e<=90)return e-65;if(97<=e&&e<=122)return e-97+26;if(48<=e&&e<=57)return e-48+52;if(e==43)return 62;if(e==47)return 63;throw`c:`+e};return a},q=function(e,t){let n=e,r=t,i=Array(e*t),a={};a.setPixel=function(e,t,r){i[t*n+e]=r},a.write=function(e){e.writeString(`GIF87a`),e.writeShort(n),e.writeShort(r),e.writeByte(128),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(0),e.writeByte(255),e.writeByte(255),e.writeByte(255),e.writeString(`,`),e.writeShort(0),e.writeShort(0),e.writeShort(n),e.writeShort(r),e.writeByte(0);let t=s(2);e.writeByte(2);let i=0;for(;t.length-i>255;)e.writeByte(255),e.writeBytes(t,i,255),i+=255;e.writeByte(t.length-i),e.writeBytes(t,i,t.length-i),e.writeByte(0),e.writeString(`;`)};let o=function(e){let t=e,n=0,r=0,i={};return i.write=function(e,i){if(e>>>i)throw`length over`;for(;n+i>=8;)t.writeByte(255&(e<<n|r)),i-=8-n,e>>>=8-n,r=0,n=0;r=e<<n|r,n+=i},i.flush=function(){n>0&&t.writeByte(r)},i},s=function(e){let t=1<<e,n=(1<<e)+1,r=e+1,a=c();for(let e=0;e<t;e+=1)a.add(String.fromCharCode(e));a.add(String.fromCharCode(t)),a.add(String.fromCharCode(n));let s=W(),l=o(s);l.write(t,r);let u=0,d=String.fromCharCode(i[u]);for(u+=1;u<i.length;){let e=String.fromCharCode(i[u]);u+=1,a.contains(d+e)?d+=e:(l.write(a.indexOf(d),r),a.size()<4095&&(a.size()==1<<r&&(r+=1),a.add(d+e)),d=e)}return l.write(a.indexOf(d),r),l.write(n,r),l.flush(),s.toByteArray()},c=function(){let e={},t=0,n={};return n.add=function(r){if(n.contains(r))throw`dup key:`+r;e[r]=t,t+=1},n.size=function(){return t},n.indexOf=function(t){return e[t]},n.contains=function(t){return e[t]!==void 0},n};return a},J=function(e,t,n){let r=q(e,t);for(let i=0;i<t;i+=1)for(let t=0;t<e;t+=1)r.setPixel(t,i,n(t,i));let i=W();r.write(i);let a=G(),o=i.toByteArray();for(let e=0;e<o.length;e+=1)a.writeByte(o[e]);return a.flush(),`data:image/gif;base64,`+a};j.stringToBytes;function Y(){return Y=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Y.apply(null,arguments)}function X(e,t){if(e==null)return{};var n,r,i=ce(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r<a.length;r++)n=a[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}function ce(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var le=[`bgColor`,`bgD`,`fgD`,`fgColor`,`size`,`title`,`viewBoxSize`,`xmlns`],ue={bgColor:A.default.oneOfType([A.default.object,A.default.string]).isRequired,bgD:A.default.string.isRequired,fgColor:A.default.oneOfType([A.default.object,A.default.string]).isRequired,fgD:A.default.string.isRequired,size:A.default.number.isRequired,title:A.default.string,viewBoxSize:A.default.number.isRequired,xmlns:A.default.string},Z=(0,k.forwardRef)(function(e,t){var n=e.bgColor,r=e.bgD,i=e.fgD,a=e.fgColor,o=e.size,s=e.title,c=e.viewBoxSize,l=e.xmlns,u=l===void 0?`http://www.w3.org/2000/svg`:l,d=X(e,le);return k.createElement(`svg`,Y({},d,{height:o,ref:t,viewBox:`0 0 ${c} ${c}`,width:o,xmlns:u}),s?k.createElement(`title`,null,s):null,k.createElement(`path`,{d:r,fill:n}),k.createElement(`path`,{d:i,fill:a}))});Z.displayName=`QRCodeSvg`,Z.propTypes=ue;var de=[`bgColor`,`fgColor`,`level`,`size`,`value`];j.stringToBytes=function(e){return Array.from(new TextEncoder().encode(e))};var fe={bgColor:A.default.oneOfType([A.default.object,A.default.string]),fgColor:A.default.oneOfType([A.default.object,A.default.string]),level:A.default.string,size:A.default.number,value:A.default.string.isRequired},Q=(0,k.forwardRef)(function(e,t){var n=e.bgColor,r=n===void 0?`#FFFFFF`:n,i=e.fgColor,a=i===void 0?`#000000`:i,o=e.level,s=o===void 0?`L`:o,c=e.size,l=c===void 0?256:c,u=e.value,d=X(e,de),f=j(0,s);f.addData(u),f.make();var p=f.getModuleCount(),m=Array.from({length:p},function(e,t){return Array.from({length:p},function(e,n){return f.isDark(t,n)})});return k.createElement(Z,Y({},d,{bgColor:r,bgD:m.map(function(e,t){return e.map(function(e,n){return e?``:`M ${n} ${t} l 1 0 0 1 -1 0 Z`}).join(` `)}).join(` `),fgColor:a,fgD:m.map(function(e,t){return e.map(function(e,n){return e?`M ${n} ${t} l 1 0 0 1 -1 0 Z`:``}).join(` `)}).join(` `),ref:t,size:l,viewBoxSize:p}))});Q.displayName=`QRCode`,Q.propTypes=fe;var $=o(),pe=e=>({mode:e,ready:!1,accessUrl:null,reasons:[`远程服务未就绪`]});function me(){let{snap:t}=h(),{busy:i,run:o}=x(),c=[...t.instances?.native?[t.instances.native]:[],...t.instances?.instances??[]],l=t.lan?.items??[],E=t.frp,[D,O]=(0,k.useState)(``),[A,j]=(0,k.useState)(`7000`),[M,N]=(0,k.useState)(``),[P,F]=(0,k.useState)(!1),[I,L]=(0,k.useState)(null),[R,z]=(0,k.useState)(``),[B,V]=(0,k.useState)(!1),H=e();(0,k.useEffect)(()=>{!E||P||(O(E.settings.serverAddr||``),j(String(E.settings.serverPort||7e3)),F(!0))},[E,P]);function U(){let e={serverAddr:D,serverPort:parseInt(A,10)||7e3},t=M.trim();return t&&(e.authToken=t),e}async function W(e,t,n){let r=!1,i=await o(e.id,()=>d.remoteSetMode(e.id,t).then(e=>(r=e?.tokenAutoAllocated===!0,e)),{success:n});return i&&r&&a.info(`已自动生成访问令牌,点钥匙按钮可查看或修改`),i}async function G(e){await H({title:`开启远程控制?`,description:`「`+(e.name||e.id)+`」将开启局域网反向代理,同网段设备可访问该实例(无访问令牌时自动生成一个,可在钥匙按钮处查看)。`,confirmText:`开启远程控制`})&&await W(e,`lan`,`已开启远程控制(局域网)`)}async function K(e){await H({title:`切换到公网访问?`,description:`「`+(e.name||e.id)+`」的访问端口将映射到公网(frps),互联网上任何人都可尝试触达(访问令牌是硬性前置,缺失时自动生成)。`,confirmText:`切换到公网`})&&await W(e,`wan`,`已切换到公网访问`)}function q(e,t){z(t??``),V(!1),L({id:e.id,name:e.name,current:t})}async function J(){let e=I;if(!e)return;let t=R.trim();if(!t){a.error(`令牌不能为空`);return}if(t.length<8){a.error(`远程访问令牌至少 8 位(公网暴露可被暴力枚举)`);return}L(null),(e.current===null||e.current!==t)&&await o(e.id,()=>d.remoteSetToken(e.id,t),{success:`访问令牌已设置`})}async function Y(){await o(`frp-save`,()=>d.remoteFrpServer(U()),{success:`已保存 FRP 配置`})}return(0,$.jsxs)(`div`,{className:`grid content-start gap-4`,children:[(0,$.jsxs)(`div`,{className:`grid items-start gap-4 @min-[900px]:grid-cols-[minmax(0,1fr)_420px]`,children:[(0,$.jsxs)(T,{children:[(0,$.jsx)(S,{title:`远程控制`,subtitle:`为本地 DSH 实例开启远程访问:局域网直连或经 FRP 公网(需实例运行中)`}),(0,$.jsx)(`div`,{className:`grid`,children:c.length?c.map(e=>{let t=e.state?.running??!1,a=l.find(t=>t.dshPort===e.port),o=e.remoteMode??`off`,s=o===`off`?null:a?.remote??pe(o),c=s?.accessUrl??null,u=typeof e.remoteToken==`string`&&e.remoteToken.trim()?e.remoteToken.trim():null,d=s?.ready&&c?u?c+`?token=`+encodeURIComponent(u):c:null,f=u!==null||!!a?.tokenSet,p=o===`off`?(0,$.jsx)(C,{tone:`off`,children:`远程关闭`}):s?.ready?(0,$.jsx)(C,{tone:o===`wan`?`boot`:`ok`,children:o===`wan`?`公网就绪`:`局域网就绪`}):(0,$.jsx)(`span`,{title:(s?.reasons??[]).join(`;`),children:(0,$.jsx)(C,{tone:`off`,children:`远程停止`})});return(0,$.jsxs)(`div`,{className:`grid grid-cols-[auto_minmax(0,1fr)_auto] items-stretch gap-4 border-b border-border/60 px-5 py-4 last:border-b-0`,children:[d?(0,$.jsx)(`div`,{className:`flex shrink-0 items-center rounded-lg border border-border bg-white p-1.5`,title:u?`扫码访问该实例远程地址(已带访问令牌,一次出示后凭 Cookie)`:`扫码访问该实例远程地址`,children:(0,$.jsx)(Q,{value:d,size:88})}):(0,$.jsx)(`div`,{className:`grid size-[96px] shrink-0 place-items-center rounded-lg border border-dashed border-border/70 text-center text-[11px] leading-tight text-muted-foreground/60`,children:t?o===`off`?`开启远程后生成二维码`:`远程就绪后生成二维码`:`启动后可用`}),(0,$.jsxs)(`div`,{className:`flex min-w-0 flex-col`,children:[(0,$.jsxs)(`div`,{className:`pt-2.5 flex flex-wrap items-center gap-2`,children:[(0,$.jsx)(w,{kind:e.kind}),(0,$.jsx)(`strong`,{className:`truncate text-sm font-semibold text-foreground`,children:e.name}),p]}),(0,$.jsxs)(`div`,{className:`mt-auto grid content-end gap-1.5 pb-1`,children:[(0,$.jsxs)(`div`,{className:`text-xs text-muted-foreground`,children:[`端口 `,e.port,o!==`off`&&a?.wanPort?` · 访问端口 `+a.wanPort+(o===`wan`?`(公网同号)`:``):``]}),c?(0,$.jsxs)(`button`,{type:`button`,onClick:()=>void y(()=>ee(c)),className:`inline-flex max-w-full items-center gap-1 truncate text-xs text-primary hover:underline`,title:u?`令牌绝不进浏览器启动参数,故直接打开需自行附加 ?token=;扫码可直达`:`在系统浏览器中打开该地址`,children:[(0,$.jsx)(b,{className:`size-3 shrink-0`}),c]}):!t||o===`off`?(0,$.jsx)(`div`,{className:`text-xs text-muted-foreground/70`,children:t?`远程未开启`:`实例未运行,启动后可开启远程`}):null,s&&!s.ready?(0,$.jsx)(`div`,{className:`text-xs text-muted-foreground/70`,children:(s.reasons??[]).slice(0,2).join(`;`)||`等待代理分配访问地址…`}):null]})]}),(0,$.jsxs)(`div`,{className:`flex flex-col items-end justify-center gap-2`,children:[(0,$.jsxs)(`div`,{className:r(`flex items-center gap-2`,!t&&`pointer-events-none opacity-50`),children:[(0,$.jsx)(`span`,{className:`text-xs font-medium text-muted-foreground`,children:`远程控制`}),(0,$.jsx)(m,{checked:o!==`off`,disabled:!t||i===e.id,onCheckedChange:t=>{if(!t){W(e,`off`,`已关闭远程控制`);return}G(e)}})]}),o!==`off`&&(0,$.jsxs)(`div`,{className:r(`flex items-center gap-1`,(!t||i===e.id)&&`pointer-events-none opacity-50`),children:[(0,$.jsxs)(n,{className:`h-7 px-2 text-xs`,size:`chip`,variant:o===`lan`?`default`:`outline`,title:`局域网反向代理访问(同网段)`,onClick:()=>{o!==`lan`&&W(e,`lan`,`已切换到局域网访问`)},children:[(0,$.jsx)(ae,{className:`size-3.5`}),`局域网`]}),(0,$.jsxs)(n,{className:`h-7 px-2 text-xs`,size:`chip`,variant:o===`wan`?`default`:`outline`,title:E?.settings?.serverAddr?`经 FRP 暴露到公网(需访问令牌)`:`需先在右侧配置 frps 服务器地址`,onClick:()=>{o!==`wan`&&K(e)},children:[(0,$.jsx)(re,{className:`size-3.5`}),`公网`]})]}),(0,$.jsx)(n,{className:`h-7 px-1.5`,disabled:i===e.id,onClick:()=>void q(e,u),size:`chip`,title:f?`访问令牌已设置(点击查看或修改)`:`未设访问令牌:局域网侧同网段可直接访问,公网模式会被安全闸拒绝,点击设置`,variant:`outline`,children:(0,$.jsx)(ie,{className:r(`size-3.5`,f?`text-status-ok`:`text-amber-500`)})})]})]},e.id)}):(0,$.jsx)(`div`,{className:`px-5 py-8 text-center text-sm text-muted-foreground`,children:`暂无实例(在「实例管理」添加后将出现在这里)`})})]}),(0,$.jsxs)(T,{children:[(0,$.jsx)(S,{title:`公网访问(FRP 内网穿透)`,subtitle:`存在「公网」模式的实例时 frpc 自动常驻并建立隧道`,actions:(0,$.jsx)(C,{tone:E?.running?`ok`:E?.installed?`warn`:`off`,children:E?.running?`frpc 运行中`:E?.installed?`已安装 · 未运行`:`未安装`})}),(0,$.jsxs)(`div`,{className:`grid grid-cols-1 gap-3 px-5 py-4`,children:[(0,$.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,$.jsx)(p,{children:`frps 地址`}),(0,$.jsx)(u,{placeholder:`如 1.2.3.4`,value:D,onChange:e=>O(e.target.value)})]}),(0,$.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,$.jsx)(p,{children:`frps 端口`}),(0,$.jsx)(u,{inputMode:`numeric`,placeholder:`7000`,value:A,onChange:e=>j(e.target.value)})]}),(0,$.jsxs)(`div`,{className:`grid gap-1.5`,children:[(0,$.jsx)(p,{children:`auth token`}),(0,$.jsx)(u,{type:`password`,autoComplete:`new-password`,placeholder:E?.settings?.authTokenSet?`已设置 · 留空不修改,输入即轮换`:`frps 的 auth.token`,value:M,onChange:e=>N(e.target.value)})]})]}),(0,$.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2 px-5 pb-4`,children:[(0,$.jsxs)(`span`,{className:`text-xs text-muted-foreground`,children:[E?.installed?``:`需安装 frpc`,(E?.instancesExposed?.length??0)>0?` · 公网实例 `+E?.instancesExposed?.length+` 个`:` · 无公网模式实例`]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,$.jsxs)(n,{disabled:i===`frp-inst`,onClick:()=>void o(`frp-inst`,()=>d.remoteFrpInstall(),{success:`frpc 安装完成`}),variant:`outline`,children:[(0,$.jsx)(se,{className:`size-4`}),`安装 frpc`]}),(0,$.jsxs)(n,{disabled:i===`frp-save`,onClick:()=>void Y(),children:[(0,$.jsx)(oe,{className:`size-4`}),`保存并应用`]})]})]}),E?.logTail?.length?(0,$.jsx)(`pre`,{className:`mx-5 mb-4 max-h-[160px] overflow-auto whitespace-pre-wrap break-all rounded-md bg-muted/70 p-3 font-mono text-xs leading-relaxed text-muted-foreground`,children:E.logTail.join(`
4
4
  `)}):null]})]}),(0,$.jsx)(g,{open:!!I,onOpenChange:e=>!e&&L(null),children:(0,$.jsxs)(v,{className:`max-w-[420px]`,children:[(0,$.jsx)(_,{children:(0,$.jsxs)(s,{children:[`访问令牌`,I?.name?` · `+I.name:``]})}),(0,$.jsxs)(`p`,{className:`text-sm text-muted-foreground`,children:[`远程访问需携带此令牌:首次在地址后附加 `,(0,$.jsx)(`code`,{className:`break-all`,children:`?token=令牌`}),`(只需一次,之后凭会话 Cookie 访问)。`,I?.current==null?`令牌明文只在内核所在机器上下发,当前面板读不到现值——输入即设为新令牌。`:`公网模式硬性要求它;此处显示的是当前生效值,改成新值即轮换。`]}),(0,$.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,$.jsx)(u,{className:`flex-1`,type:B?`text`:`password`,autoComplete:`off`,placeholder:`输入访问令牌`,value:R,onChange:e=>z(e.target.value),onKeyDown:e=>{e.key===`Enter`&&J()}}),I?.current!=null&&(0,$.jsx)(n,{className:`h-9 px-2`,size:`chip`,variant:`outline`,title:B?`隐藏令牌`:`显示令牌`,onClick:()=>V(e=>!e),children:B?(0,$.jsx)(te,{className:`size-4`}):(0,$.jsx)(ne,{className:`size-4`})})]}),(0,$.jsxs)(f,{children:[(0,$.jsx)(n,{variant:`outline`,onClick:()=>L(null),children:`取消`}),(0,$.jsx)(n,{disabled:!R.trim()||i===I?.id,onClick:()=>void J(),children:`保存`})]})]})})]})}export{me as LanPage};