agor-live 0.8.2 → 0.8.4

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.
Files changed (126) hide show
  1. package/dist/daemon/index.js +175 -21
  2. package/dist/daemon/services/terminals.d.ts +4 -2
  3. package/dist/daemon/services/terminals.js +175 -21
  4. package/dist/ui/assets/{_basePickBy-CWF4zzgB.js → _basePickBy-CTThI50C.js} +1 -1
  5. package/dist/ui/assets/_basePickBy-CTThI50C.js.gz +0 -0
  6. package/dist/ui/assets/{_baseUniq-CM4NLon9.js → _baseUniq-CzqcD9Hq.js} +1 -1
  7. package/dist/ui/assets/_baseUniq-CzqcD9Hq.js.gz +0 -0
  8. package/dist/ui/assets/{arc-CIjuwL0B.js → arc-BpOU8kpy.js} +1 -1
  9. package/dist/ui/assets/arc-BpOU8kpy.js.gz +0 -0
  10. package/dist/ui/assets/{architectureDiagram-VXUJARFQ-C0hof0OC.js → architectureDiagram-VXUJARFQ-oPDSU7iH.js} +1 -1
  11. package/dist/ui/assets/architectureDiagram-VXUJARFQ-oPDSU7iH.js.gz +0 -0
  12. package/dist/ui/assets/{blockDiagram-VD42YOAC-C_DAxOxv.js → blockDiagram-VD42YOAC-W7lIwpst.js} +1 -1
  13. package/dist/ui/assets/blockDiagram-VD42YOAC-W7lIwpst.js.gz +0 -0
  14. package/dist/ui/assets/{c4Diagram-YG6GDRKO-CCdIE46B.js → c4Diagram-YG6GDRKO-DkidBclA.js} +1 -1
  15. package/dist/ui/assets/c4Diagram-YG6GDRKO-DkidBclA.js.gz +0 -0
  16. package/dist/ui/assets/channel-CBy24ixw.js +1 -0
  17. package/dist/ui/assets/{chunk-4BX2VUAB-B6ym49qO.js → chunk-4BX2VUAB-BYYomEPX.js} +1 -1
  18. package/dist/ui/assets/{chunk-55IACEB6-BS-3qSF0.js → chunk-55IACEB6-edqfo3e-.js} +1 -1
  19. package/dist/ui/assets/{chunk-B4BG7PRW-CH9vAggf.js → chunk-B4BG7PRW-BT6qbYS5.js} +1 -1
  20. package/dist/ui/assets/chunk-B4BG7PRW-BT6qbYS5.js.gz +0 -0
  21. package/dist/ui/assets/{chunk-DI55MBZ5-DSoQkehV.js → chunk-DI55MBZ5-sagNgHDp.js} +1 -1
  22. package/dist/ui/assets/chunk-DI55MBZ5-sagNgHDp.js.gz +0 -0
  23. package/dist/ui/assets/{chunk-FMBD7UC4-CxtkUQIy.js → chunk-FMBD7UC4-B9yU8GlF.js} +1 -1
  24. package/dist/ui/assets/{chunk-QN33PNHL-CCCQIALa.js → chunk-QN33PNHL-D_9Qus3I.js} +1 -1
  25. package/dist/ui/assets/{chunk-QZHKN3VN-CyLbYZoF.js → chunk-QZHKN3VN-DxShjvj6.js} +1 -1
  26. package/dist/ui/assets/{chunk-TZMSLE5B-dpQkWn_i.js → chunk-TZMSLE5B-BbefTHvC.js} +1 -1
  27. package/dist/ui/assets/chunk-TZMSLE5B-BbefTHvC.js.gz +0 -0
  28. package/dist/ui/assets/classDiagram-2ON5EDUG-CJYK91kl.js +1 -0
  29. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-CJYK91kl.js +1 -0
  30. package/dist/ui/assets/clone-DcE4_0_S.js +1 -0
  31. package/dist/ui/assets/{cose-bilkent-S5V4N54A-Byg-yKL_.js → cose-bilkent-S5V4N54A-C5aDxsb1.js} +1 -1
  32. package/dist/ui/assets/cose-bilkent-S5V4N54A-C5aDxsb1.js.gz +0 -0
  33. package/dist/ui/assets/{dagre-6UL2VRFP-B5xXbHAH.js → dagre-6UL2VRFP-Dy4qDEz4.js} +1 -1
  34. package/dist/ui/assets/dagre-6UL2VRFP-Dy4qDEz4.js.gz +0 -0
  35. package/dist/ui/assets/{diagram-PSM6KHXK-DXnowg-u.js → diagram-PSM6KHXK-BtkYdqor.js} +1 -1
  36. package/dist/ui/assets/diagram-PSM6KHXK-BtkYdqor.js.gz +0 -0
  37. package/dist/ui/assets/{diagram-QEK2KX5R-DOFOk8a_.js → diagram-QEK2KX5R-az6nRsJe.js} +1 -1
  38. package/dist/ui/assets/diagram-QEK2KX5R-az6nRsJe.js.gz +0 -0
  39. package/dist/ui/assets/{diagram-S2PKOQOG-7kGbu56L.js → diagram-S2PKOQOG-Bhh6j00h.js} +1 -1
  40. package/dist/ui/assets/diagram-S2PKOQOG-Bhh6j00h.js.gz +0 -0
  41. package/dist/ui/assets/{erDiagram-Q2GNP2WA-CMU8zeJ0.js → erDiagram-Q2GNP2WA-klVpNZkU.js} +1 -1
  42. package/dist/ui/assets/erDiagram-Q2GNP2WA-klVpNZkU.js.gz +0 -0
  43. package/dist/ui/assets/{flowDiagram-NV44I4VS-DaINI256.js → flowDiagram-NV44I4VS-LDXLyywO.js} +1 -1
  44. package/dist/ui/assets/flowDiagram-NV44I4VS-LDXLyywO.js.gz +0 -0
  45. package/dist/ui/assets/{ganttDiagram-LVOFAZNH-Be7NSitd.js → ganttDiagram-LVOFAZNH-BYMzFDKX.js} +1 -1
  46. package/dist/ui/assets/ganttDiagram-LVOFAZNH-BYMzFDKX.js.gz +0 -0
  47. package/dist/ui/assets/{gitGraphDiagram-NY62KEGX-By34460V.js → gitGraphDiagram-NY62KEGX-Chp21pas.js} +1 -1
  48. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-Chp21pas.js.gz +0 -0
  49. package/dist/ui/assets/{graph-NyoK-Uig.js → graph-HbUE3uT9.js} +1 -1
  50. package/dist/ui/assets/graph-HbUE3uT9.js.gz +0 -0
  51. package/dist/ui/assets/{index-CUlxsIiz.js → index-HefyMaOe.js} +188 -188
  52. package/dist/ui/assets/index-HefyMaOe.js.gz +0 -0
  53. package/dist/ui/assets/{infoDiagram-ER5ION4S-DZDf4Njw.js → infoDiagram-ER5ION4S-z10XnF_M.js} +1 -1
  54. package/dist/ui/assets/{journeyDiagram-XKPGCS4Q-Cgr-Eqfh.js → journeyDiagram-XKPGCS4Q-BRYmkGfu.js} +1 -1
  55. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-BRYmkGfu.js.gz +0 -0
  56. package/dist/ui/assets/{kanban-definition-3W4ZIXB7-n_eTrGhM.js → kanban-definition-3W4ZIXB7-BVViQgPb.js} +1 -1
  57. package/dist/ui/assets/kanban-definition-3W4ZIXB7-BVViQgPb.js.gz +0 -0
  58. package/dist/ui/assets/{layout-D5v-gRFR.js → layout-Cgv19kHd.js} +1 -1
  59. package/dist/ui/assets/layout-Cgv19kHd.js.gz +0 -0
  60. package/dist/ui/assets/{linear-PC8DSbQR.js → linear-wdYhL3IH.js} +1 -1
  61. package/dist/ui/assets/linear-wdYhL3IH.js.gz +0 -0
  62. package/dist/ui/assets/{mermaid.core-DKyW12SO.js → mermaid.core-DLtRr0hs.js} +5 -5
  63. package/dist/ui/assets/mermaid.core-DLtRr0hs.js.gz +0 -0
  64. package/dist/ui/assets/{mindmap-definition-VGOIOE7T-BouGsMFI.js → mindmap-definition-VGOIOE7T-BjPSOB9Q.js} +1 -1
  65. package/dist/ui/assets/mindmap-definition-VGOIOE7T-BjPSOB9Q.js.gz +0 -0
  66. package/dist/ui/assets/{pieDiagram-ADFJNKIX-CgOfJZ_D.js → pieDiagram-ADFJNKIX-BnpoMs-2.js} +1 -1
  67. package/dist/ui/assets/pieDiagram-ADFJNKIX-BnpoMs-2.js.gz +0 -0
  68. package/dist/ui/assets/{quadrantDiagram-AYHSOK5B-CHnbgtoU.js → quadrantDiagram-AYHSOK5B-BvXAcCoz.js} +1 -1
  69. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-BvXAcCoz.js.gz +0 -0
  70. package/dist/ui/assets/{requirementDiagram-UZGBJVZJ-uas2IjRA.js → requirementDiagram-UZGBJVZJ-DhX5XInB.js} +1 -1
  71. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-DhX5XInB.js.gz +0 -0
  72. package/dist/ui/assets/{sankeyDiagram-TZEHDZUN-CrfbDu-2.js → sankeyDiagram-TZEHDZUN-DO6ydw4F.js} +1 -1
  73. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-DO6ydw4F.js.gz +0 -0
  74. package/dist/ui/assets/{sequenceDiagram-WL72ISMW-BU9w1rcP.js → sequenceDiagram-WL72ISMW-DLkDxsam.js} +1 -1
  75. package/dist/ui/assets/sequenceDiagram-WL72ISMW-DLkDxsam.js.gz +0 -0
  76. package/dist/ui/assets/{stateDiagram-FKZM4ZOC-DF1cvysV.js → stateDiagram-FKZM4ZOC-u82F5ek9.js} +1 -1
  77. package/dist/ui/assets/stateDiagram-FKZM4ZOC-u82F5ek9.js.gz +0 -0
  78. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-CyNO-mra.js +1 -0
  79. package/dist/ui/assets/{timeline-definition-IT6M3QCI-BGJIUWlE.js → timeline-definition-IT6M3QCI-enc8Ei3d.js} +1 -1
  80. package/dist/ui/assets/timeline-definition-IT6M3QCI-enc8Ei3d.js.gz +0 -0
  81. package/dist/ui/assets/{treemap-KMMF4GRG-DCjahiUv.js → treemap-KMMF4GRG-Drq4EfrL.js} +1 -1
  82. package/dist/ui/assets/treemap-KMMF4GRG-Drq4EfrL.js.gz +0 -0
  83. package/dist/ui/assets/{xychartDiagram-PRI3JC2R-BNZPPMd5.js → xychartDiagram-PRI3JC2R-BTgIsSZi.js} +1 -1
  84. package/dist/ui/assets/xychartDiagram-PRI3JC2R-BTgIsSZi.js.gz +0 -0
  85. package/dist/ui/index.html +1 -1
  86. package/package.json +1 -1
  87. package/dist/ui/assets/_basePickBy-CWF4zzgB.js.gz +0 -0
  88. package/dist/ui/assets/_baseUniq-CM4NLon9.js.gz +0 -0
  89. package/dist/ui/assets/arc-CIjuwL0B.js.gz +0 -0
  90. package/dist/ui/assets/architectureDiagram-VXUJARFQ-C0hof0OC.js.gz +0 -0
  91. package/dist/ui/assets/blockDiagram-VD42YOAC-C_DAxOxv.js.gz +0 -0
  92. package/dist/ui/assets/c4Diagram-YG6GDRKO-CCdIE46B.js.gz +0 -0
  93. package/dist/ui/assets/channel-ywjLaoiM.js +0 -1
  94. package/dist/ui/assets/chunk-B4BG7PRW-CH9vAggf.js.gz +0 -0
  95. package/dist/ui/assets/chunk-DI55MBZ5-DSoQkehV.js.gz +0 -0
  96. package/dist/ui/assets/chunk-TZMSLE5B-dpQkWn_i.js.gz +0 -0
  97. package/dist/ui/assets/classDiagram-2ON5EDUG-D99C2VtW.js +0 -1
  98. package/dist/ui/assets/classDiagram-v2-WZHVMYZB-D99C2VtW.js +0 -1
  99. package/dist/ui/assets/clone-CWbdf7Z5.js +0 -1
  100. package/dist/ui/assets/cose-bilkent-S5V4N54A-Byg-yKL_.js.gz +0 -0
  101. package/dist/ui/assets/dagre-6UL2VRFP-B5xXbHAH.js.gz +0 -0
  102. package/dist/ui/assets/diagram-PSM6KHXK-DXnowg-u.js.gz +0 -0
  103. package/dist/ui/assets/diagram-QEK2KX5R-DOFOk8a_.js.gz +0 -0
  104. package/dist/ui/assets/diagram-S2PKOQOG-7kGbu56L.js.gz +0 -0
  105. package/dist/ui/assets/erDiagram-Q2GNP2WA-CMU8zeJ0.js.gz +0 -0
  106. package/dist/ui/assets/flowDiagram-NV44I4VS-DaINI256.js.gz +0 -0
  107. package/dist/ui/assets/ganttDiagram-LVOFAZNH-Be7NSitd.js.gz +0 -0
  108. package/dist/ui/assets/gitGraphDiagram-NY62KEGX-By34460V.js.gz +0 -0
  109. package/dist/ui/assets/graph-NyoK-Uig.js.gz +0 -0
  110. package/dist/ui/assets/index-CUlxsIiz.js.gz +0 -0
  111. package/dist/ui/assets/journeyDiagram-XKPGCS4Q-Cgr-Eqfh.js.gz +0 -0
  112. package/dist/ui/assets/kanban-definition-3W4ZIXB7-n_eTrGhM.js.gz +0 -0
  113. package/dist/ui/assets/layout-D5v-gRFR.js.gz +0 -0
  114. package/dist/ui/assets/linear-PC8DSbQR.js.gz +0 -0
  115. package/dist/ui/assets/mermaid.core-DKyW12SO.js.gz +0 -0
  116. package/dist/ui/assets/mindmap-definition-VGOIOE7T-BouGsMFI.js.gz +0 -0
  117. package/dist/ui/assets/pieDiagram-ADFJNKIX-CgOfJZ_D.js.gz +0 -0
  118. package/dist/ui/assets/quadrantDiagram-AYHSOK5B-CHnbgtoU.js.gz +0 -0
  119. package/dist/ui/assets/requirementDiagram-UZGBJVZJ-uas2IjRA.js.gz +0 -0
  120. package/dist/ui/assets/sankeyDiagram-TZEHDZUN-CrfbDu-2.js.gz +0 -0
  121. package/dist/ui/assets/sequenceDiagram-WL72ISMW-BU9w1rcP.js.gz +0 -0
  122. package/dist/ui/assets/stateDiagram-FKZM4ZOC-DF1cvysV.js.gz +0 -0
  123. package/dist/ui/assets/stateDiagram-v2-4FDKWEC3-BeexfTpP.js +0 -1
  124. package/dist/ui/assets/timeline-definition-IT6M3QCI-BGJIUWlE.js.gz +0 -0
  125. package/dist/ui/assets/treemap-KMMF4GRG-DCjahiUv.js.gz +0 -0
  126. package/dist/ui/assets/xychartDiagram-PRI3JC2R-BNZPPMd5.js.gz +0 -0
@@ -4563,16 +4563,70 @@ function findTmuxWindow(sessionName, windowName) {
4563
4563
  return null;
4564
4564
  }
4565
4565
  }
4566
+ function configureTmuxSession(sessionName) {
4567
+ try {
4568
+ execSync(`tmux set-option -t "${sessionName}" -g allow-passthrough on`, { stdio: "pipe" });
4569
+ } catch (error) {
4570
+ const message = error instanceof Error ? error.message : String(error);
4571
+ console.warn(
4572
+ `\u26A0\uFE0F Failed to enable tmux allow-passthrough for session ${sessionName}: ${message}`
4573
+ );
4574
+ }
4575
+ try {
4576
+ execSync(`tmux set-option -t "${sessionName}" -g default-terminal 'tmux-256color'`, {
4577
+ stdio: "pipe"
4578
+ });
4579
+ } catch (error) {
4580
+ const message = error instanceof Error ? error.message : String(error);
4581
+ console.warn(`\u26A0\uFE0F Failed to set tmux default-terminal for ${sessionName}: ${message}`);
4582
+ }
4583
+ try {
4584
+ execSync(`tmux set-option -ga terminal-features 'xterm*:allow-passthrough'`, { stdio: "pipe" });
4585
+ } catch (error) {
4586
+ const message = error instanceof Error ? error.message : String(error);
4587
+ console.warn(`\u26A0\uFE0F Failed to advertise tmux allow-passthrough feature: ${message}`);
4588
+ }
4589
+ try {
4590
+ execSync(`tmux set-option -ga terminal-features 'tmux-256color:hyperlinks,RGB,extkeys'`, {
4591
+ stdio: "pipe"
4592
+ });
4593
+ } catch (error) {
4594
+ const message = error instanceof Error ? error.message : String(error);
4595
+ console.warn(`\u26A0\uFE0F Failed to advertise tmux tmux-256color features: ${message}`);
4596
+ }
4597
+ try {
4598
+ execSync(`tmux set-option -ga terminal-features 'xterm*:hyperlinks'`, { stdio: "pipe" });
4599
+ } catch (error) {
4600
+ const message = error instanceof Error ? error.message : String(error);
4601
+ console.warn(`\u26A0\uFE0F Failed to enable tmux hyperlink feature: ${message}`);
4602
+ }
4603
+ try {
4604
+ execSync(`tmux set-option -as terminal-overrides ',*:allow-passthrough'`, { stdio: "pipe" });
4605
+ } catch (error) {
4606
+ const message = error instanceof Error ? error.message : String(error);
4607
+ console.warn(`\u26A0\uFE0F Failed to configure tmux allow-passthrough override: ${message}`);
4608
+ }
4609
+ try {
4610
+ execSync(`tmux set-option -as terminal-overrides ',*:hyperlinks'`, { stdio: "pipe" });
4611
+ } catch (error) {
4612
+ const message = error instanceof Error ? error.message : String(error);
4613
+ console.warn(`\u26A0\uFE0F Failed to configure tmux hyperlink override: ${message}`);
4614
+ }
4615
+ }
4566
4616
  var TerminalsService = class {
4567
4617
  sessions = /* @__PURE__ */ new Map();
4568
4618
  app;
4569
4619
  db;
4570
4620
  hasTmux;
4621
+ forceTmux;
4571
4622
  constructor(app, db) {
4572
4623
  this.app = app;
4573
4624
  this.db = db;
4574
4625
  this.hasTmux = isTmuxAvailable();
4575
- if (this.hasTmux) {
4626
+ this.forceTmux = process.env.AGOR_DISABLE_TMUX !== "true";
4627
+ if (!this.forceTmux) {
4628
+ console.log("\u2139\uFE0F tmux disabled via AGOR_DISABLE_TMUX=true - using direct PTY sessions");
4629
+ } else if (this.hasTmux) {
4576
4630
  console.log("\x1B[36m\u2705 tmux detected\x1B[0m - persistent terminal sessions enabled");
4577
4631
  } else {
4578
4632
  console.log("\u2139\uFE0F tmux not found - using ephemeral terminal sessions");
@@ -4581,8 +4635,15 @@ var TerminalsService = class {
4581
4635
  /**
4582
4636
  * Create a new terminal session
4583
4637
  */
4584
- async create(data) {
4638
+ async create(data, params) {
4585
4639
  const terminalId = `term-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
4640
+ const authenticatedUserId = params?.user?.user_id;
4641
+ const resolvedUserId = data.userId ?? authenticatedUserId;
4642
+ const userSessionSuffix = (() => {
4643
+ if (!resolvedUserId) return "shared";
4644
+ const sanitized = resolvedUserId.replace(/[^a-zA-Z0-9_-]/g, "");
4645
+ return sanitized.length > 0 ? sanitized : "user";
4646
+ })();
4586
4647
  let worktree = null;
4587
4648
  let cwd = data.cwd || os.homedir();
4588
4649
  let worktreeName;
@@ -4594,16 +4655,20 @@ var TerminalsService = class {
4594
4655
  worktreeName = worktree.name;
4595
4656
  }
4596
4657
  }
4597
- let shell;
4598
- let shellArgs = [];
4658
+ const defaultShell = data.shell || (os.platform() === "win32" ? "powershell.exe" : "bash");
4659
+ const defaultShellArgs = [];
4660
+ let shell = defaultShell;
4661
+ let shellArgs = [...defaultShellArgs];
4599
4662
  let tmuxSession;
4600
4663
  let tmuxReused = false;
4601
- if (this.hasTmux && worktree) {
4602
- tmuxSession = "agor";
4664
+ const tmuxRequested = data.useTmux !== false;
4665
+ if (this.hasTmux && this.forceTmux && worktree && tmuxRequested) {
4666
+ tmuxSession = `agor-${userSessionSuffix}`;
4603
4667
  const sessionExists = tmuxSessionExists(tmuxSession);
4604
4668
  const windowName = worktreeName || "unnamed";
4605
4669
  shell = "tmux";
4606
4670
  if (sessionExists) {
4671
+ configureTmuxSession(tmuxSession);
4607
4672
  const windowIndex = findTmuxWindow(tmuxSession, windowName);
4608
4673
  if (windowIndex !== null) {
4609
4674
  shellArgs = ["attach-session", "-t", `${tmuxSession}:${windowIndex}`];
@@ -4641,8 +4706,45 @@ var TerminalsService = class {
4641
4706
  "set-option",
4642
4707
  "-t",
4643
4708
  tmuxSession,
4709
+ "default-terminal",
4710
+ "tmux-256color",
4711
+ ";",
4712
+ "set-option",
4713
+ "-t",
4714
+ tmuxSession,
4644
4715
  "status-style",
4645
- "bg=#2e9a92,fg=#000000"
4716
+ "bg=#2e9a92,fg=#000000",
4717
+ ";",
4718
+ "set-option",
4719
+ "-t",
4720
+ tmuxSession,
4721
+ "allow-passthrough",
4722
+ "on",
4723
+ ";",
4724
+ "set-option",
4725
+ "-ga",
4726
+ "terminal-features",
4727
+ "xterm*:hyperlinks",
4728
+ ";",
4729
+ "set-option",
4730
+ "-ga",
4731
+ "terminal-features",
4732
+ "tmux-256color:hyperlinks,RGB,extkeys",
4733
+ ";",
4734
+ "set-option",
4735
+ "-ga",
4736
+ "terminal-features",
4737
+ "xterm*:allow-passthrough",
4738
+ ";",
4739
+ "set-option",
4740
+ "-as",
4741
+ "terminal-overrides",
4742
+ ",*:allow-passthrough",
4743
+ ";",
4744
+ "set-option",
4745
+ "-as",
4746
+ "terminal-overrides",
4747
+ ",*:hyperlinks"
4646
4748
  ];
4647
4749
  tmuxReused = false;
4648
4750
  console.log(
@@ -4650,29 +4752,81 @@ var TerminalsService = class {
4650
4752
  );
4651
4753
  }
4652
4754
  } else {
4653
- shell = data.shell || (os.platform() === "win32" ? "powershell.exe" : "bash");
4755
+ if (this.hasTmux && this.forceTmux && !tmuxRequested) {
4756
+ console.log("\u2139\uFE0F tmux disabled for this terminal session (user toggle)");
4757
+ }
4758
+ shell = defaultShell;
4759
+ shellArgs = [...defaultShellArgs];
4654
4760
  }
4655
- let env = process.env;
4656
- if (data.userId) {
4657
- env = await resolveUserEnvironment2(data.userId, this.db);
4761
+ let env = { ...process.env };
4762
+ if (resolvedUserId) {
4763
+ const userEnv = await resolveUserEnvironment2(resolvedUserId, this.db);
4658
4764
  console.log(
4659
- `\u{1F510} Loaded ${Object.keys(env).length} env vars for user ${data.userId.substring(0, 8)}`
4765
+ `\u{1F510} Loaded ${Object.keys(userEnv).length} env vars for user ${resolvedUserId.substring(0, 8)}`
4660
4766
  );
4767
+ env = { ...env, ...userEnv };
4768
+ }
4769
+ env = { ...env };
4770
+ if (!env.TERM) {
4771
+ env.TERM = "xterm-256color";
4772
+ }
4773
+ if (!env.COLORTERM) {
4774
+ env.COLORTERM = "truecolor";
4775
+ }
4776
+ if (!env.ENABLE_HYPERLINKS) {
4777
+ env.ENABLE_HYPERLINKS = "1";
4778
+ }
4779
+ if (!env.RICH_FORCE_COLOR) {
4780
+ env.RICH_FORCE_COLOR = "1";
4781
+ }
4782
+ if (!env.RICH_FORCE_HYPERLINK) {
4783
+ env.RICH_FORCE_HYPERLINK = "1";
4784
+ }
4785
+ if (!env.LANG) {
4786
+ env.LANG = "C.UTF-8";
4787
+ }
4788
+ if (!env.LC_ALL) {
4789
+ env.LC_ALL = env.LANG;
4790
+ }
4791
+ if (!env.LC_CTYPE) {
4792
+ env.LC_CTYPE = env.LANG;
4793
+ }
4794
+ let ptyProcess;
4795
+ try {
4796
+ ptyProcess = pty.spawn(shell, shellArgs, {
4797
+ name: "xterm-256color",
4798
+ cols: data.cols || 80,
4799
+ rows: data.rows || 30,
4800
+ cwd,
4801
+ env
4802
+ // Use resolved environment
4803
+ });
4804
+ } catch (error) {
4805
+ if (shell === "tmux") {
4806
+ const message = error instanceof Error ? error.message : String(error);
4807
+ console.warn(`\u26A0\uFE0F Failed to launch tmux session, falling back to direct shell: ${message}`);
4808
+ this.hasTmux = false;
4809
+ tmuxSession = void 0;
4810
+ tmuxReused = false;
4811
+ shell = defaultShell;
4812
+ shellArgs = [...defaultShellArgs];
4813
+ ptyProcess = pty.spawn(shell, shellArgs, {
4814
+ name: "xterm-256color",
4815
+ cols: data.cols || 80,
4816
+ rows: data.rows || 30,
4817
+ cwd,
4818
+ env
4819
+ });
4820
+ } else {
4821
+ throw error;
4822
+ }
4661
4823
  }
4662
- const ptyProcess = pty.spawn(shell, shellArgs, {
4663
- name: "xterm-color",
4664
- cols: data.cols || 80,
4665
- rows: data.rows || 30,
4666
- cwd,
4667
- env
4668
- // Use resolved environment
4669
- });
4670
4824
  this.sessions.set(terminalId, {
4671
4825
  terminalId,
4672
4826
  pty: ptyProcess,
4673
4827
  shell,
4674
4828
  cwd,
4675
- userId: data.userId,
4829
+ userId: resolvedUserId,
4676
4830
  worktreeId: data.worktreeId,
4677
4831
  tmuxSession,
4678
4832
  createdAt: /* @__PURE__ */ new Date()
@@ -1,6 +1,6 @@
1
1
  import { Database } from '@agor/core/db';
2
2
  import { Application } from '@agor/core/feathers';
3
- import { UserID, WorktreeID } from '@agor/core/types';
3
+ import { UserID, WorktreeID, AuthenticatedParams } from '@agor/core/types';
4
4
 
5
5
  /**
6
6
  * Terminals Service
@@ -23,6 +23,7 @@ interface CreateTerminalData {
23
23
  cols?: number;
24
24
  userId?: UserID;
25
25
  worktreeId?: WorktreeID;
26
+ useTmux?: boolean;
26
27
  }
27
28
  interface ResizeTerminalData {
28
29
  rows: number;
@@ -36,11 +37,12 @@ declare class TerminalsService {
36
37
  private app;
37
38
  private db;
38
39
  private hasTmux;
40
+ private forceTmux;
39
41
  constructor(app: Application, db: Database);
40
42
  /**
41
43
  * Create a new terminal session
42
44
  */
43
- create(data: CreateTerminalData): Promise<{
45
+ create(data: CreateTerminalData, params?: AuthenticatedParams): Promise<{
44
46
  terminalId: string;
45
47
  cwd: string;
46
48
  tmuxSession?: string;
@@ -37,16 +37,70 @@ function findTmuxWindow(sessionName, windowName) {
37
37
  return null;
38
38
  }
39
39
  }
40
+ function configureTmuxSession(sessionName) {
41
+ try {
42
+ execSync(`tmux set-option -t "${sessionName}" -g allow-passthrough on`, { stdio: "pipe" });
43
+ } catch (error) {
44
+ const message = error instanceof Error ? error.message : String(error);
45
+ console.warn(
46
+ `\u26A0\uFE0F Failed to enable tmux allow-passthrough for session ${sessionName}: ${message}`
47
+ );
48
+ }
49
+ try {
50
+ execSync(`tmux set-option -t "${sessionName}" -g default-terminal 'tmux-256color'`, {
51
+ stdio: "pipe"
52
+ });
53
+ } catch (error) {
54
+ const message = error instanceof Error ? error.message : String(error);
55
+ console.warn(`\u26A0\uFE0F Failed to set tmux default-terminal for ${sessionName}: ${message}`);
56
+ }
57
+ try {
58
+ execSync(`tmux set-option -ga terminal-features 'xterm*:allow-passthrough'`, { stdio: "pipe" });
59
+ } catch (error) {
60
+ const message = error instanceof Error ? error.message : String(error);
61
+ console.warn(`\u26A0\uFE0F Failed to advertise tmux allow-passthrough feature: ${message}`);
62
+ }
63
+ try {
64
+ execSync(`tmux set-option -ga terminal-features 'tmux-256color:hyperlinks,RGB,extkeys'`, {
65
+ stdio: "pipe"
66
+ });
67
+ } catch (error) {
68
+ const message = error instanceof Error ? error.message : String(error);
69
+ console.warn(`\u26A0\uFE0F Failed to advertise tmux tmux-256color features: ${message}`);
70
+ }
71
+ try {
72
+ execSync(`tmux set-option -ga terminal-features 'xterm*:hyperlinks'`, { stdio: "pipe" });
73
+ } catch (error) {
74
+ const message = error instanceof Error ? error.message : String(error);
75
+ console.warn(`\u26A0\uFE0F Failed to enable tmux hyperlink feature: ${message}`);
76
+ }
77
+ try {
78
+ execSync(`tmux set-option -as terminal-overrides ',*:allow-passthrough'`, { stdio: "pipe" });
79
+ } catch (error) {
80
+ const message = error instanceof Error ? error.message : String(error);
81
+ console.warn(`\u26A0\uFE0F Failed to configure tmux allow-passthrough override: ${message}`);
82
+ }
83
+ try {
84
+ execSync(`tmux set-option -as terminal-overrides ',*:hyperlinks'`, { stdio: "pipe" });
85
+ } catch (error) {
86
+ const message = error instanceof Error ? error.message : String(error);
87
+ console.warn(`\u26A0\uFE0F Failed to configure tmux hyperlink override: ${message}`);
88
+ }
89
+ }
40
90
  var TerminalsService = class {
41
91
  sessions = /* @__PURE__ */ new Map();
42
92
  app;
43
93
  db;
44
94
  hasTmux;
95
+ forceTmux;
45
96
  constructor(app, db) {
46
97
  this.app = app;
47
98
  this.db = db;
48
99
  this.hasTmux = isTmuxAvailable();
49
- if (this.hasTmux) {
100
+ this.forceTmux = process.env.AGOR_DISABLE_TMUX !== "true";
101
+ if (!this.forceTmux) {
102
+ console.log("\u2139\uFE0F tmux disabled via AGOR_DISABLE_TMUX=true - using direct PTY sessions");
103
+ } else if (this.hasTmux) {
50
104
  console.log("\x1B[36m\u2705 tmux detected\x1B[0m - persistent terminal sessions enabled");
51
105
  } else {
52
106
  console.log("\u2139\uFE0F tmux not found - using ephemeral terminal sessions");
@@ -55,8 +109,15 @@ var TerminalsService = class {
55
109
  /**
56
110
  * Create a new terminal session
57
111
  */
58
- async create(data) {
112
+ async create(data, params) {
59
113
  const terminalId = `term-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
114
+ const authenticatedUserId = params?.user?.user_id;
115
+ const resolvedUserId = data.userId ?? authenticatedUserId;
116
+ const userSessionSuffix = (() => {
117
+ if (!resolvedUserId) return "shared";
118
+ const sanitized = resolvedUserId.replace(/[^a-zA-Z0-9_-]/g, "");
119
+ return sanitized.length > 0 ? sanitized : "user";
120
+ })();
60
121
  let worktree = null;
61
122
  let cwd = data.cwd || os.homedir();
62
123
  let worktreeName;
@@ -68,16 +129,20 @@ var TerminalsService = class {
68
129
  worktreeName = worktree.name;
69
130
  }
70
131
  }
71
- let shell;
72
- let shellArgs = [];
132
+ const defaultShell = data.shell || (os.platform() === "win32" ? "powershell.exe" : "bash");
133
+ const defaultShellArgs = [];
134
+ let shell = defaultShell;
135
+ let shellArgs = [...defaultShellArgs];
73
136
  let tmuxSession;
74
137
  let tmuxReused = false;
75
- if (this.hasTmux && worktree) {
76
- tmuxSession = "agor";
138
+ const tmuxRequested = data.useTmux !== false;
139
+ if (this.hasTmux && this.forceTmux && worktree && tmuxRequested) {
140
+ tmuxSession = `agor-${userSessionSuffix}`;
77
141
  const sessionExists = tmuxSessionExists(tmuxSession);
78
142
  const windowName = worktreeName || "unnamed";
79
143
  shell = "tmux";
80
144
  if (sessionExists) {
145
+ configureTmuxSession(tmuxSession);
81
146
  const windowIndex = findTmuxWindow(tmuxSession, windowName);
82
147
  if (windowIndex !== null) {
83
148
  shellArgs = ["attach-session", "-t", `${tmuxSession}:${windowIndex}`];
@@ -115,8 +180,45 @@ var TerminalsService = class {
115
180
  "set-option",
116
181
  "-t",
117
182
  tmuxSession,
183
+ "default-terminal",
184
+ "tmux-256color",
185
+ ";",
186
+ "set-option",
187
+ "-t",
188
+ tmuxSession,
118
189
  "status-style",
119
- "bg=#2e9a92,fg=#000000"
190
+ "bg=#2e9a92,fg=#000000",
191
+ ";",
192
+ "set-option",
193
+ "-t",
194
+ tmuxSession,
195
+ "allow-passthrough",
196
+ "on",
197
+ ";",
198
+ "set-option",
199
+ "-ga",
200
+ "terminal-features",
201
+ "xterm*:hyperlinks",
202
+ ";",
203
+ "set-option",
204
+ "-ga",
205
+ "terminal-features",
206
+ "tmux-256color:hyperlinks,RGB,extkeys",
207
+ ";",
208
+ "set-option",
209
+ "-ga",
210
+ "terminal-features",
211
+ "xterm*:allow-passthrough",
212
+ ";",
213
+ "set-option",
214
+ "-as",
215
+ "terminal-overrides",
216
+ ",*:allow-passthrough",
217
+ ";",
218
+ "set-option",
219
+ "-as",
220
+ "terminal-overrides",
221
+ ",*:hyperlinks"
120
222
  ];
121
223
  tmuxReused = false;
122
224
  console.log(
@@ -124,29 +226,81 @@ var TerminalsService = class {
124
226
  );
125
227
  }
126
228
  } else {
127
- shell = data.shell || (os.platform() === "win32" ? "powershell.exe" : "bash");
229
+ if (this.hasTmux && this.forceTmux && !tmuxRequested) {
230
+ console.log("\u2139\uFE0F tmux disabled for this terminal session (user toggle)");
231
+ }
232
+ shell = defaultShell;
233
+ shellArgs = [...defaultShellArgs];
128
234
  }
129
- let env = process.env;
130
- if (data.userId) {
131
- env = await resolveUserEnvironment(data.userId, this.db);
235
+ let env = { ...process.env };
236
+ if (resolvedUserId) {
237
+ const userEnv = await resolveUserEnvironment(resolvedUserId, this.db);
132
238
  console.log(
133
- `\u{1F510} Loaded ${Object.keys(env).length} env vars for user ${data.userId.substring(0, 8)}`
239
+ `\u{1F510} Loaded ${Object.keys(userEnv).length} env vars for user ${resolvedUserId.substring(0, 8)}`
134
240
  );
241
+ env = { ...env, ...userEnv };
242
+ }
243
+ env = { ...env };
244
+ if (!env.TERM) {
245
+ env.TERM = "xterm-256color";
246
+ }
247
+ if (!env.COLORTERM) {
248
+ env.COLORTERM = "truecolor";
249
+ }
250
+ if (!env.ENABLE_HYPERLINKS) {
251
+ env.ENABLE_HYPERLINKS = "1";
252
+ }
253
+ if (!env.RICH_FORCE_COLOR) {
254
+ env.RICH_FORCE_COLOR = "1";
255
+ }
256
+ if (!env.RICH_FORCE_HYPERLINK) {
257
+ env.RICH_FORCE_HYPERLINK = "1";
258
+ }
259
+ if (!env.LANG) {
260
+ env.LANG = "C.UTF-8";
261
+ }
262
+ if (!env.LC_ALL) {
263
+ env.LC_ALL = env.LANG;
264
+ }
265
+ if (!env.LC_CTYPE) {
266
+ env.LC_CTYPE = env.LANG;
267
+ }
268
+ let ptyProcess;
269
+ try {
270
+ ptyProcess = pty.spawn(shell, shellArgs, {
271
+ name: "xterm-256color",
272
+ cols: data.cols || 80,
273
+ rows: data.rows || 30,
274
+ cwd,
275
+ env
276
+ // Use resolved environment
277
+ });
278
+ } catch (error) {
279
+ if (shell === "tmux") {
280
+ const message = error instanceof Error ? error.message : String(error);
281
+ console.warn(`\u26A0\uFE0F Failed to launch tmux session, falling back to direct shell: ${message}`);
282
+ this.hasTmux = false;
283
+ tmuxSession = void 0;
284
+ tmuxReused = false;
285
+ shell = defaultShell;
286
+ shellArgs = [...defaultShellArgs];
287
+ ptyProcess = pty.spawn(shell, shellArgs, {
288
+ name: "xterm-256color",
289
+ cols: data.cols || 80,
290
+ rows: data.rows || 30,
291
+ cwd,
292
+ env
293
+ });
294
+ } else {
295
+ throw error;
296
+ }
135
297
  }
136
- const ptyProcess = pty.spawn(shell, shellArgs, {
137
- name: "xterm-color",
138
- cols: data.cols || 80,
139
- rows: data.rows || 30,
140
- cwd,
141
- env
142
- // Use resolved environment
143
- });
144
298
  this.sessions.set(terminalId, {
145
299
  terminalId,
146
300
  pty: ptyProcess,
147
301
  shell,
148
302
  cwd,
149
- userId: data.userId,
303
+ userId: resolvedUserId,
150
304
  worktreeId: data.worktreeId,
151
305
  tmuxSession,
152
306
  createdAt: /* @__PURE__ */ new Date()
@@ -1 +1 @@
1
- import{e as x,c as b,g as m,k as P,h as p,j as w,l as N,m as c,n as I,t as A,o as M}from"./_baseUniq-CM4NLon9.js";import{aK as g,aq as E,aL as F,aM as _,aN as $,aO as l,aP as B,aQ as S,aR as T,aS as y}from"./mermaid.core-DKyW12SO.js";var L=/\s/;function R(n){for(var r=n.length;r--&&L.test(n.charAt(r)););return r}var q=/^\s+/;function G(n){return n&&n.slice(0,R(n)+1).replace(q,"")}var o=NaN,H=/^[-+]0x[0-9a-f]+$/i,K=/^0b[01]+$/i,z=/^0o[0-7]+$/i,C=parseInt;function Q(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=G(n);var t=K.test(n);return t||z.test(n)?C(n.slice(2),t?2:8):H.test(n)?o:+n}var v=1/0,W=17976931348623157e292;function X(n){if(!n)return n===0?n:0;if(n=Q(n),n===v||n===-v){var r=n<0?-1:1;return r*W}return n===n?n:0}function Y(n){var r=X(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var O=Object.prototype,D=O.hasOwnProperty,dn=E(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&F(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=_(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||$(h,O[u])&&!D.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function J(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var U=Math.max;function Z(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:Y(t);return a<0&&(a=U(i+a,0)),p(n,m(r),a)}var hn=J(Z);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?N:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&c(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,S,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=A(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:T(r[a+1])?[]:{})}y(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=M(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,Y as j,un as l,gn as m,X as t};
1
+ import{e as x,c as b,g as m,k as P,h as p,j as w,l as N,m as c,n as I,t as A,o as M}from"./_baseUniq-CzqcD9Hq.js";import{aK as g,aq as E,aL as F,aM as _,aN as $,aO as l,aP as B,aQ as S,aR as T,aS as y}from"./mermaid.core-DLtRr0hs.js";var L=/\s/;function R(n){for(var r=n.length;r--&&L.test(n.charAt(r)););return r}var q=/^\s+/;function G(n){return n&&n.slice(0,R(n)+1).replace(q,"")}var o=NaN,H=/^[-+]0x[0-9a-f]+$/i,K=/^0b[01]+$/i,z=/^0o[0-7]+$/i,C=parseInt;function Q(n){if(typeof n=="number")return n;if(x(n))return o;if(g(n)){var r=typeof n.valueOf=="function"?n.valueOf():n;n=g(r)?r+"":r}if(typeof n!="string")return n===0?n:+n;n=G(n);var t=K.test(n);return t||z.test(n)?C(n.slice(2),t?2:8):H.test(n)?o:+n}var v=1/0,W=17976931348623157e292;function X(n){if(!n)return n===0?n:0;if(n=Q(n),n===v||n===-v){var r=n<0?-1:1;return r*W}return n===n?n:0}function Y(n){var r=X(n),t=r%1;return r===r?t?r-t:r:0}function fn(n){var r=n==null?0:n.length;return r?b(n):[]}var O=Object.prototype,D=O.hasOwnProperty,dn=E(function(n,r){n=Object(n);var t=-1,i=r.length,a=i>2?r[2]:void 0;for(a&&F(r[0],r[1],a)&&(i=1);++t<i;)for(var f=r[t],e=_(f),s=-1,d=e.length;++s<d;){var u=e[s],h=n[u];(h===void 0||$(h,O[u])&&!D.call(n,u))&&(n[u]=f[u])}return n});function un(n){var r=n==null?0:n.length;return r?n[r-1]:void 0}function J(n){return function(r,t,i){var a=Object(r);if(!l(r)){var f=m(t);r=P(r),t=function(s){return f(a[s],s,a)}}var e=n(r,t,i);return e>-1?a[f?r[e]:e]:void 0}}var U=Math.max;function Z(n,r,t){var i=n==null?0:n.length;if(!i)return-1;var a=t==null?0:Y(t);return a<0&&(a=U(i+a,0)),p(n,m(r),a)}var hn=J(Z);function V(n,r){var t=-1,i=l(n)?Array(n.length):[];return w(n,function(a,f,e){i[++t]=r(a,f,e)}),i}function gn(n,r){var t=B(n)?N:V;return t(n,m(r))}var j=Object.prototype,k=j.hasOwnProperty;function nn(n,r){return n!=null&&k.call(n,r)}function mn(n,r){return n!=null&&c(n,r,nn)}function rn(n,r){return n<r}function tn(n,r,t){for(var i=-1,a=n.length;++i<a;){var f=n[i],e=r(f);if(e!=null&&(s===void 0?e===e&&!x(e):t(e,s)))var s=e,d=f}return d}function on(n){return n&&n.length?tn(n,S,rn):void 0}function an(n,r,t,i){if(!g(n))return n;r=I(r,n);for(var a=-1,f=r.length,e=f-1,s=n;s!=null&&++a<f;){var d=A(r[a]),u=t;if(d==="__proto__"||d==="constructor"||d==="prototype")return n;if(a!=e){var h=s[d];u=void 0,u===void 0&&(u=g(h)?h:T(r[a+1])?[]:{})}y(s,d,u),s=s[d]}return n}function vn(n,r,t){for(var i=-1,a=r.length,f={};++i<a;){var e=r[i],s=M(n,e);t(s,e)&&an(f,I(e,n),s)}return f}export{rn as a,tn as b,V as c,vn as d,on as e,fn as f,hn as g,mn as h,dn as i,Y as j,un as l,gn as m,X as t};
@@ -1 +1 @@
1
- import{b0 as S,b1 as Rn,aP as T,b2 as w,b3 as xn,b4 as Mn,aO as sn,b5 as mn,b6 as un,b7 as x,aM as N,b8 as Cn,b9 as on,ba as Fn,bb as E,a_ as gn,bc as R,aK as ln,bd as Dn,be as D,bf as Gn,bg as Nn,bh as $,aS as Un,bi as Bn,aN as Kn,bj as Q,bk as jn,bl as Hn,aR as Yn,aQ as cn,aY as qn,bm as m}from"./mermaid.core-DKyW12SO.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var X=w?w.prototype:void 0,J=X?X.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return J?J.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Qn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Xn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Jn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Xn(n,Jn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function _(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:B(n,r)?[n]:fr(ar(n))}function M(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,_(r),n)}function lr(n,r){return n&&x(r,N(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Cn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,_,j)}function yr(n){return On(n,N,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var _r=/\w*$/;function $r(n){var r=new n.constructor(n.source,_r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Pr="[object Date]",Ir="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Nr="[object Int16Array]",Ur="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Pr:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Nr:case Ur:case Br:case Kr:case jr:case Hr:return Fn(n,e);case Ir:return new t;case vr:case xr:return new t(n);case Lr:return $r(n);case Rr:return new t;case Mr:return Sr(n)}}var qr="[object Map]";function Zr(n){return S(n)&&E(n)==qr}var nn=R&&R.isMap,Qr=nn?gn(nn):Zr,Xr="[object Set]";function Jr(n){return S(n)&&E(n)==Xr}var rn=R&&R.isSet,Wr=rn?gn(rn):Jr,zr=1,Vr=2,kr=4,_n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",$n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",_e="[object Uint32Array]",g={};g[_n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[_e]=!0;g[te]=g[$n]=g[le]=!1;function C(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==$n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==_n||c&&!f){if(a=u||c?{}:Nn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=Yr(n,o,s)}}i||(i=new $);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(C(d,r,e,d,n,i))}):Qr(n)&&n.forEach(function(d,p){a.set(p,C(d,r,e,p,n,i))});var A=b?u?yr:G:u?N:_,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,C(d,r,e,p,n,i))}),a}var $e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,$e),this}function Ee(n){return this.__data__.has(n)}function P(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}P.prototype.add=P.prototype.push=Se;P.prototype.has=Ee;function Pe(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Ie=1,ve=2;function Pn(n,r,e,t,f,i){var a=e&Ie,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new P:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Pe(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ne="[object Set]",Ue="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new Q(n),new Q(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Ne:var u=t&Re;if(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=Pn(s(n),s(r),t,f,i,a);return a.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,qe=Object.prototype,Ze=qe.hasOwnProperty;function Qe(n,r,e,t,f,i){var a=e&Ye,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var I=n.constructor,v=r.constructor;I!=v&&"constructor"in n&&"constructor"in r&&!(typeof I=="function"&&I instanceof I&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Xe=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Je=Object.prototype,an=Je.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new $),a||jn(n)?Pn(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Xe)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new $),f(y,d,e,t,i)}}return c?(i||(i=new $),Qe(n,r,e,t,f,i)):!1}function Y(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new $,o;if(!(o===void 0?Y(b,u,ze|Ve,t,l):o))return!1}}return!0}function In(n){return n===n&&!ln(n)}function nt(n){for(var r=_(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,In(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=M(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&Yn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return B(n)&&In(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&qn(n,r,_)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var q=ct(lt);function bt(n){return typeof n=="function"?n:cn}function _t(n,r){var e=T(n)?pn:q;return e(n,bt(r))}function dt(n,r){var e=[];return q(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function $t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,_(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function Pt(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,q)}var yt=1/0,Tt=m&&1/H(new m([,-0]))[1]==yt?function(n){return new m(n)}:Qn,ht=200;function It(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new P}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Pe as C,Qn as D,P as S,It as a,C as b,Ot as c,_t as d,U as e,$t as f,Ln as g,Xn as h,Et as i,q as j,_ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,Pt as r,it as s,M as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
1
+ import{b0 as S,b1 as Rn,aP as T,b2 as w,b3 as xn,b4 as Mn,aO as sn,b5 as mn,b6 as un,b7 as x,aM as N,b8 as Cn,b9 as on,ba as Fn,bb as E,a_ as gn,bc as R,aK as ln,bd as Dn,be as D,bf as Gn,bg as Nn,bh as $,aS as Un,bi as Bn,aN as Kn,bj as Q,bk as jn,bl as Hn,aR as Yn,aQ as cn,aY as qn,bm as m}from"./mermaid.core-DLtRr0hs.js";var Zn="[object Symbol]";function U(n){return typeof n=="symbol"||S(n)&&Rn(n)==Zn}function bn(n,r){for(var e=-1,t=n==null?0:n.length,f=Array(t);++e<t;)f[e]=r(n[e],e,n);return f}var X=w?w.prototype:void 0,J=X?X.toString:void 0;function dn(n){if(typeof n=="string")return n;if(T(n))return bn(n,dn)+"";if(U(n))return J?J.call(n):"";var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function Qn(){}function pn(n,r){for(var e=-1,t=n==null?0:n.length;++e<t&&r(n[e],e,n)!==!1;);return n}function Xn(n,r,e,t){for(var f=n.length,i=e+-1;++i<f;)if(r(n[i],i,n))return i;return-1}function Jn(n){return n!==n}function Wn(n,r,e){for(var t=e-1,f=n.length;++t<f;)if(n[t]===r)return t;return-1}function zn(n,r,e){return r===r?Wn(n,r,e):Xn(n,Jn,e)}function Vn(n,r){var e=n==null?0:n.length;return!!e&&zn(n,r,0)>-1}function _(n){return sn(n)?xn(n):Mn(n)}var kn=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,nr=/^\w*$/;function B(n,r){if(T(n))return!1;var e=typeof n;return e=="number"||e=="symbol"||e=="boolean"||n==null||U(n)?!0:nr.test(n)||!kn.test(n)||r!=null&&n in Object(r)}var rr=500;function er(n){var r=mn(n,function(t){return e.size===rr&&e.clear(),t}),e=r.cache;return r}var tr=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,ir=/\\(\\)?/g,fr=er(function(n){var r=[];return n.charCodeAt(0)===46&&r.push(""),n.replace(tr,function(e,t,f,i){r.push(f?i.replace(ir,"$1"):t||e)}),r});function ar(n){return n==null?"":dn(n)}function An(n,r){return T(n)?n:B(n,r)?[n]:fr(ar(n))}function M(n){if(typeof n=="string"||U(n))return n;var r=n+"";return r=="0"&&1/n==-1/0?"-0":r}function yn(n,r){r=An(r,n);for(var e=0,t=r.length;n!=null&&e<t;)n=n[M(r[e++])];return e&&e==t?n:void 0}function sr(n,r,e){var t=n==null?void 0:yn(n,r);return t===void 0?e:t}function K(n,r){for(var e=-1,t=r.length,f=n.length;++e<t;)n[f+e]=r[e];return n}var W=w?w.isConcatSpreadable:void 0;function ur(n){return T(n)||un(n)||!!(W&&n&&n[W])}function Ot(n,r,e,t,f){var i=-1,a=n.length;for(e||(e=ur),f||(f=[]);++i<a;){var s=n[i];e(s)?K(f,s):t||(f[f.length]=s)}return f}function or(n,r,e,t){var f=-1,i=n==null?0:n.length;for(t&&i&&(e=n[++f]);++f<i;)e=r(e,n[f],f,n);return e}function gr(n,r){return n&&x(r,_(r),n)}function lr(n,r){return n&&x(r,N(r),n)}function Tn(n,r){for(var e=-1,t=n==null?0:n.length,f=0,i=[];++e<t;){var a=n[e];r(a,e,n)&&(i[f++]=a)}return i}function hn(){return[]}var cr=Object.prototype,br=cr.propertyIsEnumerable,z=Object.getOwnPropertySymbols,j=z?function(n){return n==null?[]:(n=Object(n),Tn(z(n),function(r){return br.call(n,r)}))}:hn;function dr(n,r){return x(n,j(n),r)}var pr=Object.getOwnPropertySymbols,wn=pr?function(n){for(var r=[];n;)K(r,j(n)),n=Cn(n);return r}:hn;function Ar(n,r){return x(n,wn(n),r)}function On(n,r,e){var t=r(n);return T(n)?t:K(t,e(n))}function G(n){return On(n,_,j)}function yr(n){return On(n,N,wn)}var Tr=Object.prototype,hr=Tr.hasOwnProperty;function wr(n){var r=n.length,e=new n.constructor(r);return r&&typeof n[0]=="string"&&hr.call(n,"index")&&(e.index=n.index,e.input=n.input),e}function Or(n,r){var e=r?on(n.buffer):n.buffer;return new n.constructor(e,n.byteOffset,n.byteLength)}var _r=/\w*$/;function $r(n){var r=new n.constructor(n.source,_r.exec(n));return r.lastIndex=n.lastIndex,r}var V=w?w.prototype:void 0,k=V?V.valueOf:void 0;function Sr(n){return k?Object(k.call(n)):{}}var Er="[object Boolean]",Pr="[object Date]",Ir="[object Map]",vr="[object Number]",Lr="[object RegExp]",Rr="[object Set]",xr="[object String]",Mr="[object Symbol]",mr="[object ArrayBuffer]",Cr="[object DataView]",Fr="[object Float32Array]",Dr="[object Float64Array]",Gr="[object Int8Array]",Nr="[object Int16Array]",Ur="[object Int32Array]",Br="[object Uint8Array]",Kr="[object Uint8ClampedArray]",jr="[object Uint16Array]",Hr="[object Uint32Array]";function Yr(n,r,e){var t=n.constructor;switch(r){case mr:return on(n);case Er:case Pr:return new t(+n);case Cr:return Or(n,e);case Fr:case Dr:case Gr:case Nr:case Ur:case Br:case Kr:case jr:case Hr:return Fn(n,e);case Ir:return new t;case vr:case xr:return new t(n);case Lr:return $r(n);case Rr:return new t;case Mr:return Sr(n)}}var qr="[object Map]";function Zr(n){return S(n)&&E(n)==qr}var nn=R&&R.isMap,Qr=nn?gn(nn):Zr,Xr="[object Set]";function Jr(n){return S(n)&&E(n)==Xr}var rn=R&&R.isSet,Wr=rn?gn(rn):Jr,zr=1,Vr=2,kr=4,_n="[object Arguments]",ne="[object Array]",re="[object Boolean]",ee="[object Date]",te="[object Error]",$n="[object Function]",ie="[object GeneratorFunction]",fe="[object Map]",ae="[object Number]",Sn="[object Object]",se="[object RegExp]",ue="[object Set]",oe="[object String]",ge="[object Symbol]",le="[object WeakMap]",ce="[object ArrayBuffer]",be="[object DataView]",de="[object Float32Array]",pe="[object Float64Array]",Ae="[object Int8Array]",ye="[object Int16Array]",Te="[object Int32Array]",he="[object Uint8Array]",we="[object Uint8ClampedArray]",Oe="[object Uint16Array]",_e="[object Uint32Array]",g={};g[_n]=g[ne]=g[ce]=g[be]=g[re]=g[ee]=g[de]=g[pe]=g[Ae]=g[ye]=g[Te]=g[fe]=g[ae]=g[Sn]=g[se]=g[ue]=g[oe]=g[ge]=g[he]=g[we]=g[Oe]=g[_e]=!0;g[te]=g[$n]=g[le]=!1;function C(n,r,e,t,f,i){var a,s=r&zr,u=r&Vr,b=r&kr;if(a!==void 0)return a;if(!ln(n))return n;var l=T(n);if(l){if(a=wr(n),!s)return Dn(n,a)}else{var o=E(n),c=o==$n||o==ie;if(D(n))return Gn(n,s);if(o==Sn||o==_n||c&&!f){if(a=u||c?{}:Nn(n),!s)return u?Ar(n,lr(a,n)):dr(n,gr(a,n))}else{if(!g[o])return f?n:{};a=Yr(n,o,s)}}i||(i=new $);var h=i.get(n);if(h)return h;i.set(n,a),Wr(n)?n.forEach(function(d){a.add(C(d,r,e,d,n,i))}):Qr(n)&&n.forEach(function(d,p){a.set(p,C(d,r,e,p,n,i))});var A=b?u?yr:G:u?N:_,y=l?void 0:A(n);return pn(y||n,function(d,p){y&&(p=d,d=n[p]),Un(a,p,C(d,r,e,p,n,i))}),a}var $e="__lodash_hash_undefined__";function Se(n){return this.__data__.set(n,$e),this}function Ee(n){return this.__data__.has(n)}function P(n){var r=-1,e=n==null?0:n.length;for(this.__data__=new Bn;++r<e;)this.add(n[r])}P.prototype.add=P.prototype.push=Se;P.prototype.has=Ee;function Pe(n,r){for(var e=-1,t=n==null?0:n.length;++e<t;)if(r(n[e],e,n))return!0;return!1}function En(n,r){return n.has(r)}var Ie=1,ve=2;function Pn(n,r,e,t,f,i){var a=e&Ie,s=n.length,u=r.length;if(s!=u&&!(a&&u>s))return!1;var b=i.get(n),l=i.get(r);if(b&&l)return b==r&&l==n;var o=-1,c=!0,h=e&ve?new P:void 0;for(i.set(n,r),i.set(r,n);++o<s;){var A=n[o],y=r[o];if(t)var d=a?t(y,A,o,r,n,i):t(A,y,o,n,r,i);if(d!==void 0){if(d)continue;c=!1;break}if(h){if(!Pe(r,function(p,O){if(!En(h,O)&&(A===p||f(A,p,e,t,i)))return h.push(O)})){c=!1;break}}else if(!(A===y||f(A,y,e,t,i))){c=!1;break}}return i.delete(n),i.delete(r),c}function Le(n){var r=-1,e=Array(n.size);return n.forEach(function(t,f){e[++r]=[f,t]}),e}function H(n){var r=-1,e=Array(n.size);return n.forEach(function(t){e[++r]=t}),e}var Re=1,xe=2,Me="[object Boolean]",me="[object Date]",Ce="[object Error]",Fe="[object Map]",De="[object Number]",Ge="[object RegExp]",Ne="[object Set]",Ue="[object String]",Be="[object Symbol]",Ke="[object ArrayBuffer]",je="[object DataView]",en=w?w.prototype:void 0,F=en?en.valueOf:void 0;function He(n,r,e,t,f,i,a){switch(e){case je:if(n.byteLength!=r.byteLength||n.byteOffset!=r.byteOffset)return!1;n=n.buffer,r=r.buffer;case Ke:return!(n.byteLength!=r.byteLength||!i(new Q(n),new Q(r)));case Me:case me:case De:return Kn(+n,+r);case Ce:return n.name==r.name&&n.message==r.message;case Ge:case Ue:return n==r+"";case Fe:var s=Le;case Ne:var u=t&Re;if(s||(s=H),n.size!=r.size&&!u)return!1;var b=a.get(n);if(b)return b==r;t|=xe,a.set(n,r);var l=Pn(s(n),s(r),t,f,i,a);return a.delete(n),l;case Be:if(F)return F.call(n)==F.call(r)}return!1}var Ye=1,qe=Object.prototype,Ze=qe.hasOwnProperty;function Qe(n,r,e,t,f,i){var a=e&Ye,s=G(n),u=s.length,b=G(r),l=b.length;if(u!=l&&!a)return!1;for(var o=u;o--;){var c=s[o];if(!(a?c in r:Ze.call(r,c)))return!1}var h=i.get(n),A=i.get(r);if(h&&A)return h==r&&A==n;var y=!0;i.set(n,r),i.set(r,n);for(var d=a;++o<u;){c=s[o];var p=n[c],O=r[c];if(t)var Z=a?t(O,p,c,r,n,i):t(p,O,c,n,r,i);if(!(Z===void 0?p===O||f(p,O,e,t,i):Z)){y=!1;break}d||(d=c=="constructor")}if(y&&!d){var I=n.constructor,v=r.constructor;I!=v&&"constructor"in n&&"constructor"in r&&!(typeof I=="function"&&I instanceof I&&typeof v=="function"&&v instanceof v)&&(y=!1)}return i.delete(n),i.delete(r),y}var Xe=1,tn="[object Arguments]",fn="[object Array]",L="[object Object]",Je=Object.prototype,an=Je.hasOwnProperty;function We(n,r,e,t,f,i){var a=T(n),s=T(r),u=a?fn:E(n),b=s?fn:E(r);u=u==tn?L:u,b=b==tn?L:b;var l=u==L,o=b==L,c=u==b;if(c&&D(n)){if(!D(r))return!1;a=!0,l=!1}if(c&&!l)return i||(i=new $),a||jn(n)?Pn(n,r,e,t,f,i):He(n,r,u,e,t,f,i);if(!(e&Xe)){var h=l&&an.call(n,"__wrapped__"),A=o&&an.call(r,"__wrapped__");if(h||A){var y=h?n.value():n,d=A?r.value():r;return i||(i=new $),f(y,d,e,t,i)}}return c?(i||(i=new $),Qe(n,r,e,t,f,i)):!1}function Y(n,r,e,t,f){return n===r?!0:n==null||r==null||!S(n)&&!S(r)?n!==n&&r!==r:We(n,r,e,t,Y,f)}var ze=1,Ve=2;function ke(n,r,e,t){var f=e.length,i=f;if(n==null)return!i;for(n=Object(n);f--;){var a=e[f];if(a[2]?a[1]!==n[a[0]]:!(a[0]in n))return!1}for(;++f<i;){a=e[f];var s=a[0],u=n[s],b=a[1];if(a[2]){if(u===void 0&&!(s in n))return!1}else{var l=new $,o;if(!(o===void 0?Y(b,u,ze|Ve,t,l):o))return!1}}return!0}function In(n){return n===n&&!ln(n)}function nt(n){for(var r=_(n),e=r.length;e--;){var t=r[e],f=n[t];r[e]=[t,f,In(f)]}return r}function vn(n,r){return function(e){return e==null?!1:e[n]===r&&(r!==void 0||n in Object(e))}}function rt(n){var r=nt(n);return r.length==1&&r[0][2]?vn(r[0][0],r[0][1]):function(e){return e===n||ke(e,n,r)}}function et(n,r){return n!=null&&r in Object(n)}function tt(n,r,e){r=An(r,n);for(var t=-1,f=r.length,i=!1;++t<f;){var a=M(r[t]);if(!(i=n!=null&&e(n,a)))break;n=n[a]}return i||++t!=f?i:(f=n==null?0:n.length,!!f&&Hn(f)&&Yn(a,f)&&(T(n)||un(n)))}function it(n,r){return n!=null&&tt(n,r,et)}var ft=1,at=2;function st(n,r){return B(n)&&In(r)?vn(M(n),r):function(e){var t=sr(e,n);return t===void 0&&t===r?it(e,n):Y(r,t,ft|at)}}function ut(n){return function(r){return r?.[n]}}function ot(n){return function(r){return yn(r,n)}}function gt(n){return B(n)?ut(M(n)):ot(n)}function Ln(n){return typeof n=="function"?n:n==null?cn:typeof n=="object"?T(n)?st(n[0],n[1]):rt(n):gt(n)}function lt(n,r){return n&&qn(n,r,_)}function ct(n,r){return function(e,t){if(e==null)return e;if(!sn(e))return n(e,t);for(var f=e.length,i=-1,a=Object(e);++i<f&&t(a[i],i,a)!==!1;);return e}}var q=ct(lt);function bt(n){return typeof n=="function"?n:cn}function _t(n,r){var e=T(n)?pn:q;return e(n,bt(r))}function dt(n,r){var e=[];return q(n,function(t,f,i){r(t,f,i)&&e.push(t)}),e}function $t(n,r){var e=T(n)?Tn:dt;return e(n,Ln(r))}function pt(n,r){return bn(r,function(e){return n[e]})}function St(n){return n==null?[]:pt(n,_(n))}function Et(n){return n===void 0}function At(n,r,e,t,f){return f(n,function(i,a,s){e=t?(t=!1,i):r(e,i,a,s)}),e}function Pt(n,r,e){var t=T(n)?or:At,f=arguments.length<3;return t(n,Ln(r),e,f,q)}var yt=1/0,Tt=m&&1/H(new m([,-0]))[1]==yt?function(n){return new m(n)}:Qn,ht=200;function It(n,r,e){var t=-1,f=Vn,i=n.length,a=!0,s=[],u=s;if(i>=ht){var b=r?null:Tt(n);if(b)return H(b);a=!1,f=En,u=new P}else u=r?[]:s;n:for(;++t<i;){var l=n[t],o=r?r(l):l;if(l=l!==0?l:0,a&&o===o){for(var c=u.length;c--;)if(u[c]===o)continue n;r&&u.push(o),s.push(l)}else f(u,o,e)||(u!==s&&u.push(o),s.push(l))}return s}export{Tn as A,dt as B,Pe as C,Qn as D,P as S,It as a,C as b,Ot as c,_t as d,U as e,$t as f,Ln as g,Xn as h,Et as i,q as j,_ as k,bn as l,tt as m,An as n,yn as o,bt as p,lt as q,Pt as r,it as s,M as t,ar as u,St as v,Vn as w,En as x,zn as y,yr as z};
@@ -1 +1 @@
1
- import{L as ln,M as un,N as X,O,P as N,Q as an,R as y,S as tn,T as $,V as _,W as rn,X as o,Y as sn,Z as on,$ as fn}from"./mermaid.core-DKyW12SO.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,D,S,v,R,Q,u){var E=D-l,i=S-h,n=Q-v,d=u-R,a=d*E-n*i;if(!(a*a<y))return a=(n*(h-R)-d*(l-v))/a,[l+a*E,h+a*i]}function G(l,h,D,S,v,R,Q){var u=l-D,E=h-S,i=(Q?R:-R)/$(u*u+E*E),n=i*E,d=-i*u,a=l+n,s=h+d,f=D+n,c=S+d,V=(a+f)/2,t=(s+c)/2,m=f-a,g=c-s,A=m*m+g*g,T=v-R,P=a*c-f*s,I=(g<0?-1:1)*$(on(0,T*T*A-P*P)),L=(P*g-m*I)/A,M=(-P*m-g*I)/A,w=(P*g+m*I)/A,p=(-P*m+g*I)/A,x=L-V,e=M-t,r=w-V,W=p-t;return x*x+e*e>r*r+W*W&&(L=w,M=p),{cx:L,cy:M,x01:-n,y01:-d,x11:L*(v/T-1),y11:M*(v/T-1)}}function hn(){var l=cn,h=yn,D=N(0),S=null,v=gn,R=dn,Q=mn,u=null,E=ln(i);function i(){var n,d,a=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=R.apply(this,arguments)-an,V=rn(c-f),t=c>f;if(u||(u=n=E()),s<a&&(d=s,s=a,a=d),!(s>y))u.moveTo(0,0);else if(V>tn-y)u.moveTo(s*X(f),s*O(f)),u.arc(0,0,s,f,c,!t),a>y&&(u.moveTo(a*X(c),a*O(c)),u.arc(0,0,a,c,f,t));else{var m=f,g=c,A=f,T=c,P=V,I=V,L=Q.apply(this,arguments)/2,M=L>y&&(S?+S.apply(this,arguments):$(a*a+s*s)),w=_(rn(s-a)/2,+D.apply(this,arguments)),p=w,x=w,e,r;if(M>y){var W=sn(M/a*O(L)),j=sn(M/s*O(L));(P-=W*2)>y?(W*=t?1:-1,A+=W,T-=W):(P=0,A=T=(f+c)/2),(I-=j*2)>y?(j*=t?1:-1,m+=j,g-=j):(I=0,m=g=(f+c)/2)}var Y=s*X(m),Z=s*O(m),z=a*X(T),B=a*O(T);if(w>y){var C=s*X(g),F=s*O(g),H=a*X(A),J=a*O(A),q;if(V<un)if(q=pn(Y,Z,H,J,C,F,z,B)){var K=Y-q[0],U=Z-q[1],k=C-q[0],b=F-q[1],nn=1/O(fn((K*k+U*b)/($(K*K+U*U)*$(k*k+b*b)))/2),en=$(q[0]*q[0]+q[1]*q[1]);p=_(w,(a-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}I>y?x>y?(e=G(H,J,Y,Z,s,x,t),r=G(C,F,z,B,s,x,t),u.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?u.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(u.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),u.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),u.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(u.moveTo(Y,Z),u.arc(0,0,s,m,g,!t)):u.moveTo(Y,Z),!(a>y)||!(P>y)?u.lineTo(z,B):p>y?(e=G(z,B,C,F,a,-p,t),r=G(Y,Z,H,J,a,-p,t),u.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?u.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(u.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),u.arc(0,0,a,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),u.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):u.arc(0,0,a,T,A,t)}if(u.closePath(),n)return u=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +R.apply(this,arguments))/2-un/2;return[X(d)*n,O(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:N(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:N(+n),i):h},i.cornerRadius=function(n){return arguments.length?(D=typeof n=="function"?n:N(+n),i):D},i.padRadius=function(n){return arguments.length?(S=n==null?null:typeof n=="function"?n:N(+n),i):S},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:N(+n),i):v},i.endAngle=function(n){return arguments.length?(R=typeof n=="function"?n:N(+n),i):R},i.padAngle=function(n){return arguments.length?(Q=typeof n=="function"?n:N(+n),i):Q},i.context=function(n){return arguments.length?(u=n??null,i):u},i}export{hn as d};
1
+ import{L as ln,M as un,N as X,O,P as N,Q as an,R as y,S as tn,T as $,V as _,W as rn,X as o,Y as sn,Z as on,$ as fn}from"./mermaid.core-DLtRr0hs.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,D,S,v,R,Q,u){var E=D-l,i=S-h,n=Q-v,d=u-R,a=d*E-n*i;if(!(a*a<y))return a=(n*(h-R)-d*(l-v))/a,[l+a*E,h+a*i]}function G(l,h,D,S,v,R,Q){var u=l-D,E=h-S,i=(Q?R:-R)/$(u*u+E*E),n=i*E,d=-i*u,a=l+n,s=h+d,f=D+n,c=S+d,V=(a+f)/2,t=(s+c)/2,m=f-a,g=c-s,A=m*m+g*g,T=v-R,P=a*c-f*s,I=(g<0?-1:1)*$(on(0,T*T*A-P*P)),L=(P*g-m*I)/A,M=(-P*m-g*I)/A,w=(P*g+m*I)/A,p=(-P*m+g*I)/A,x=L-V,e=M-t,r=w-V,W=p-t;return x*x+e*e>r*r+W*W&&(L=w,M=p),{cx:L,cy:M,x01:-n,y01:-d,x11:L*(v/T-1),y11:M*(v/T-1)}}function hn(){var l=cn,h=yn,D=N(0),S=null,v=gn,R=dn,Q=mn,u=null,E=ln(i);function i(){var n,d,a=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-an,c=R.apply(this,arguments)-an,V=rn(c-f),t=c>f;if(u||(u=n=E()),s<a&&(d=s,s=a,a=d),!(s>y))u.moveTo(0,0);else if(V>tn-y)u.moveTo(s*X(f),s*O(f)),u.arc(0,0,s,f,c,!t),a>y&&(u.moveTo(a*X(c),a*O(c)),u.arc(0,0,a,c,f,t));else{var m=f,g=c,A=f,T=c,P=V,I=V,L=Q.apply(this,arguments)/2,M=L>y&&(S?+S.apply(this,arguments):$(a*a+s*s)),w=_(rn(s-a)/2,+D.apply(this,arguments)),p=w,x=w,e,r;if(M>y){var W=sn(M/a*O(L)),j=sn(M/s*O(L));(P-=W*2)>y?(W*=t?1:-1,A+=W,T-=W):(P=0,A=T=(f+c)/2),(I-=j*2)>y?(j*=t?1:-1,m+=j,g-=j):(I=0,m=g=(f+c)/2)}var Y=s*X(m),Z=s*O(m),z=a*X(T),B=a*O(T);if(w>y){var C=s*X(g),F=s*O(g),H=a*X(A),J=a*O(A),q;if(V<un)if(q=pn(Y,Z,H,J,C,F,z,B)){var K=Y-q[0],U=Z-q[1],k=C-q[0],b=F-q[1],nn=1/O(fn((K*k+U*b)/($(K*K+U*U)*$(k*k+b*b)))/2),en=$(q[0]*q[0]+q[1]*q[1]);p=_(w,(a-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}I>y?x>y?(e=G(H,J,Y,Z,s,x,t),r=G(C,F,z,B,s,x,t),u.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?u.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(u.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),u.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),u.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(u.moveTo(Y,Z),u.arc(0,0,s,m,g,!t)):u.moveTo(Y,Z),!(a>y)||!(P>y)?u.lineTo(z,B):p>y?(e=G(z,B,C,F,a,-p,t),r=G(Y,Z,H,J,a,-p,t),u.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?u.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(u.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),u.arc(0,0,a,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),u.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):u.arc(0,0,a,T,A,t)}if(u.closePath(),n)return u=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +R.apply(this,arguments))/2-un/2;return[X(d)*n,O(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:N(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:N(+n),i):h},i.cornerRadius=function(n){return arguments.length?(D=typeof n=="function"?n:N(+n),i):D},i.padRadius=function(n){return arguments.length?(S=n==null?null:typeof n=="function"?n:N(+n),i):S},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:N(+n),i):v},i.endAngle=function(n){return arguments.length?(R=typeof n=="function"?n:N(+n),i):R},i.padAngle=function(n){return arguments.length?(Q=typeof n=="function"?n:N(+n),i):Q},i.context=function(n){return arguments.length?(u=n??null,i):u},i}export{hn as d};