ds-harness-remote 0.5.13 → 0.5.15

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 (77) hide show
  1. package/dist/acp/peer-bridge.d.ts +1 -0
  2. package/dist/acp/peer-bridge.d.ts.map +1 -1
  3. package/dist/acp/peer-bridge.js +4 -1
  4. package/dist/acp/peer-bridge.js.map +1 -1
  5. package/dist/client/settings.d.ts.map +1 -1
  6. package/dist/client/settings.js +30 -11
  7. package/dist/client/settings.js.map +1 -1
  8. package/dist/client/shell.d.ts.map +1 -1
  9. package/dist/client/shell.js +8 -10
  10. package/dist/client/shell.js.map +1 -1
  11. package/dist/client/types.d.ts +1 -0
  12. package/dist/client/types.d.ts.map +1 -1
  13. package/dist/client/workspaces.d.ts.map +1 -1
  14. package/dist/client/workspaces.js +86 -20
  15. package/dist/client/workspaces.js.map +1 -1
  16. package/dist/client-connection.d.ts.map +1 -1
  17. package/dist/client-connection.js +14 -9
  18. package/dist/client-connection.js.map +1 -1
  19. package/dist/client-locale.d.ts +2 -1
  20. package/dist/client-locale.d.ts.map +1 -1
  21. package/dist/client-locale.js +4 -2
  22. package/dist/client-locale.js.map +1 -1
  23. package/dist/client-runtime.d.ts +3 -0
  24. package/dist/client-runtime.d.ts.map +1 -1
  25. package/dist/client-runtime.js +112 -65
  26. package/dist/client-runtime.js.map +1 -1
  27. package/dist/client.github.js +107 -55
  28. package/dist/client.js +107 -55
  29. package/dist/codex/history-preview.d.ts +3 -0
  30. package/dist/codex/history-preview.d.ts.map +1 -0
  31. package/dist/codex/history-preview.js +71 -0
  32. package/dist/codex/history-preview.js.map +1 -0
  33. package/dist/codex/peer-bridge.d.ts +1 -0
  34. package/dist/codex/peer-bridge.d.ts.map +1 -1
  35. package/dist/codex/peer-bridge.js +5 -1
  36. package/dist/codex/peer-bridge.js.map +1 -1
  37. package/dist/compact-history.d.ts +2 -0
  38. package/dist/compact-history.d.ts.map +1 -0
  39. package/dist/compact-history.js +71 -0
  40. package/dist/compact-history.js.map +1 -0
  41. package/dist/connection-controller.d.ts +10 -1
  42. package/dist/connection-controller.d.ts.map +1 -1
  43. package/dist/connection-controller.js +5 -3
  44. package/dist/connection-controller.js.map +1 -1
  45. package/dist/control-runtime.d.ts +12 -4
  46. package/dist/control-runtime.d.ts.map +1 -1
  47. package/dist/control-runtime.js +52 -8
  48. package/dist/control-runtime.js.map +1 -1
  49. package/dist/harness-api-bridge.d.ts +1 -0
  50. package/dist/harness-api-bridge.d.ts.map +1 -1
  51. package/dist/harness-api-bridge.js +8 -2
  52. package/dist/harness-api-bridge.js.map +1 -1
  53. package/dist/harness-remote-bridge.d.ts +3 -1
  54. package/dist/harness-remote-bridge.d.ts.map +1 -1
  55. package/dist/harness-remote-bridge.js +76 -6
  56. package/dist/harness-remote-bridge.js.map +1 -1
  57. package/dist/index.d.ts.map +1 -1
  58. package/dist/index.js +610 -266
  59. package/dist/index.js.map +4 -4
  60. package/dist/plugin-route-bridge.d.ts +1 -1
  61. package/dist/plugin-route-bridge.d.ts.map +1 -1
  62. package/dist/plugin-route-bridge.js +1 -1
  63. package/dist/plugin-route-bridge.js.map +1 -1
  64. package/dist/remote-directory-browser.d.ts +6 -0
  65. package/dist/remote-directory-browser.d.ts.map +1 -1
  66. package/dist/remote-directory-browser.js +16 -1
  67. package/dist/remote-directory-browser.js.map +1 -1
  68. package/dist/rpc-router.d.ts.map +1 -1
  69. package/dist/rpc-router.js +11 -1
  70. package/dist/rpc-router.js.map +1 -1
  71. package/dist/server-connection.d.ts.map +1 -1
  72. package/dist/server-connection.js +12 -4
  73. package/dist/server-connection.js.map +1 -1
  74. package/dist/version.d.ts +1 -1
  75. package/dist/version.js +1 -1
  76. package/dsh-plugin.json +1 -1
  77. package/package.json +3 -2
package/dist/client.js CHANGED
@@ -1680,7 +1680,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
1680
1680
  enterRegistrationCode: "Enter the device authorization code.",
1681
1681
  enterAccountPassword: "Enter the Server account and password.",
1682
1682
  associationSaved: "Associated. Restart Harness to apply.",
1683
- signedOut: "Signed out. Restart Harness to disconnect this mode.",
1683
+ signedOut: "Signed out and disconnected from Remote.",
1684
1684
  remoteRequestFailed: "Remote mode request failed.",
1685
1685
  remoteControlUnavailable: "Remote plugin control is still starting. Restart DSH if it stays unavailable.",
1686
1686
  switchTarget: "Switch Local / Remote Harness target",
@@ -1873,6 +1873,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
1873
1873
  scanWithProvider: "Scan to continue with {provider}",
1874
1874
  loadingLoginProviders: "Loading sign-in methods\u2026",
1875
1875
  retryLoginProviders: "Retry loading sign-in methods",
1876
+ serverApplied: "Server address applied.",
1876
1877
  noLoginProviders: "QR sign-in is unavailable. Use email and password.",
1877
1878
  zhihuLogin: "Zhihu QR",
1878
1879
  scanWithGitHub: "Scan to continue with GitHub",
@@ -1950,7 +1951,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
1950
1951
  enterRegistrationCode: "\u8BF7\u8F93\u5165\u8BBE\u5907\u6388\u6743\u7801\u3002",
1951
1952
  enterAccountPassword: "\u8BF7\u8F93\u5165 Server \u8D26\u53F7\u548C\u5BC6\u7801\u3002",
1952
1953
  associationSaved: "\u5173\u8054\u6210\u529F\u3002\u91CD\u542F Harness \u540E\u751F\u6548\u3002",
1953
- signedOut: "\u5DF2\u9000\u51FA\u6388\u6743\u3002\u91CD\u542F Harness \u540E\u5C06\u65AD\u5F00\u6B64\u6A21\u5F0F\u3002",
1954
+ signedOut: "\u5DF2\u9000\u51FA\u8D26\u53F7\u5E76\u65AD\u5F00 Remote \u8FDE\u63A5\u3002",
1954
1955
  remoteRequestFailed: "\u8FDC\u7A0B\u6A21\u5F0F\u8BF7\u6C42\u5931\u8D25\u3002",
1955
1956
  remoteControlUnavailable: "Remote \u63D2\u4EF6\u63A7\u5236\u901A\u9053\u4ECD\u5728\u542F\u52A8\uFF1B\u5982\u679C\u4E00\u76F4\u4E0D\u53EF\u7528\uFF0C\u8BF7\u91CD\u542F DSH\u3002",
1956
1957
  switchTarget: "\u5207\u6362\u672C\u5730\u6216\u8FDC\u7A0B Harness",
@@ -2143,6 +2144,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
2143
2144
  scanWithProvider: "\u4F7F\u7528 {provider} \u626B\u7801\u767B\u5F55",
2144
2145
  loadingLoginProviders: "\u6B63\u5728\u83B7\u53D6\u767B\u5F55\u65B9\u5F0F\u2026",
2145
2146
  retryLoginProviders: "\u91CD\u65B0\u83B7\u53D6\u767B\u5F55\u65B9\u5F0F",
2147
+ serverApplied: "Server \u5730\u5740\u5DF2\u751F\u6548\u3002",
2146
2148
  noLoginProviders: "\u6682\u65E0\u53EF\u7528\u7684\u626B\u7801\u767B\u5F55\u65B9\u5F0F\uFF0C\u8BF7\u4F7F\u7528\u90AE\u7BB1\u548C\u5BC6\u7801\u3002",
2147
2149
  zhihuLogin: "\u77E5\u4E4E\u626B\u7801",
2148
2150
  scanWithGitHub: "\u4F7F\u7528 GitHub \u626B\u7801\u767B\u5F55",
@@ -2558,24 +2560,42 @@ Minimum version required to store current data is: ` + bestVersion + `.
2558
2560
  // src/client/settings.ts
2559
2561
  function createRemotePluginOptions(React) {
2560
2562
  function RemotePluginOptions(props) {
2561
- let { t } = props, [open, setOpen] = React.useState(props.view === "page"), [serverUrl, setServerUrl] = React.useState(""), [portsBusy, setPortsBusy] = React.useState(!1), [previewPorts, setPreviewPorts] = React.useState(""), role = "host", [registrationCode, setRegistrationCode] = React.useState(""), [associations, setAssociations] = React.useState({}), [loaded, setLoaded] = React.useState(!1), [writable, setWritable] = React.useState(!1), [busy, setBusy] = React.useState(!1), [terminalEnabled, setTerminalEnabled] = React.useState(!1), [terminalBusy, setTerminalBusy] = React.useState(!1), [acpBackends, setAcpBackends] = React.useState([]), [acpAvailability, setAcpAvailability] = React.useState({}), [acpChecking, setAcpChecking] = React.useState({}), [acpCheckResults, setAcpCheckResults] = React.useState({}), [addingAcp, setAddingAcp] = React.useState(!1), [acpName, setAcpName] = React.useState(""), [acpCommand, setAcpCommand] = React.useState(""), [acpArguments, setAcpArguments] = React.useState("acp"), [reconnectBusy, setReconnectBusy] = React.useState(!1), [hostStatus, setHostStatus] = React.useState(void 0), [hostName, setHostName] = React.useState(""), [hostDeviceId, setHostDeviceId] = React.useState(""), [notice, setNotice] = React.useState(void 0), [error, setError] = React.useState(void 0), [settingsView, setSettingsView] = React.useState(void 0), persistedServerUrl = settingsView?.config.serverUrl ?? "https://dsh.r2049.cn", association = associations.client ?? associations.host, serverDirty = settingsView !== void 0 && serverUrl !== persistedServerUrl, draftDirty = serverDirty, applyView = (view) => {
2562
- setSettingsView(view), setServerUrl(view.config.serverUrl ?? "https://dsh.r2049.cn"), setTerminalEnabled(view.config.terminal?.enabled ?? !0), setPreviewPorts((view.config.loopback?.ports ?? []).join(", ")), setAcpBackends((view.config.acp?.backends ?? []).map((item) => ({ id: item.id, enabled: item.enabled !== !1 }))), setAcpAvailability(view.acpAvailability ?? {}), setAssociations(view.associations ?? (view.association === void 0 ? {} : { host: view.association })), setWritable(view.writable), setLoaded(!0);
2563
+ let { t } = props, [open, setOpen] = React.useState(props.view === "page"), [serverUrl, setServerUrl] = React.useState(""), [portsBusy, setPortsBusy] = React.useState(!1), [previewPorts, setPreviewPorts] = React.useState(""), role = "host", [registrationCode, setRegistrationCode] = React.useState(""), [associations, setAssociations] = React.useState({}), [loaded, setLoaded] = React.useState(!1), [writable, setWritable] = React.useState(!1), [busy, setBusy] = React.useState(!1), [terminalEnabled, setTerminalEnabled] = React.useState(!1), [terminalBusy, setTerminalBusy] = React.useState(!1), [acpBackends, setAcpBackends] = React.useState([]), [acpAvailability, setAcpAvailability] = React.useState({}), [acpChecking, setAcpChecking] = React.useState({}), [acpCheckResults, setAcpCheckResults] = React.useState({}), [addingAcp, setAddingAcp] = React.useState(!1), [acpName, setAcpName] = React.useState(""), [acpCommand, setAcpCommand] = React.useState(""), [acpArguments, setAcpArguments] = React.useState("acp"), [reconnectBusy, setReconnectBusy] = React.useState(!1), [hostStatus, setHostStatus] = React.useState(void 0), [hostName, setHostName] = React.useState(""), [hostDeviceId, setHostDeviceId] = React.useState(""), [notice, setNotice] = React.useState(void 0), [error, setError] = React.useState(void 0), [settingsView, setSettingsView] = React.useState(void 0), associationReadRun = React.useRef(0), persistedServerUrl = settingsView?.config.serverUrl ?? "https://dsh.r2049.cn", association = associations.client ?? associations.host, serverDirty = settingsView !== void 0 && serverUrl !== persistedServerUrl, draftDirty = serverDirty, applyAssociations = (view) => {
2564
+ setAssociations(view.associations ?? (view.association === void 0 ? {} : { host: view.association }));
2565
+ }, applyView = (view, updateAssociations = !0) => {
2566
+ setSettingsView(view), setServerUrl(view.config.serverUrl ?? "https://dsh.r2049.cn"), setTerminalEnabled(view.config.terminal?.enabled ?? !0), setPreviewPorts((view.config.loopback?.ports ?? []).join(", ")), setAcpBackends((view.config.acp?.backends ?? []).map((item) => ({ id: item.id, enabled: item.enabled !== !1 }))), setAcpAvailability(view.acpAvailability ?? {}), updateAssociations && applyAssociations(view), setWritable(view.writable), setLoaded(!0);
2563
2567
  }, load = async () => {
2564
- let [view, status] = await Promise.all([
2568
+ let run = ++associationReadRun.current, [view, status] = await Promise.all([
2565
2569
  props.control("settings.get"),
2566
2570
  props.control("status").catch(() => {
2567
2571
  })
2568
2572
  ]);
2569
- applyView(view), setHostStatus(status?.host), setHostName(status?.deviceName ?? ""), setHostDeviceId(status?.host?.deviceId ?? "");
2573
+ applyView(view, run === associationReadRun.current), setHostStatus(status?.host), setHostName(status?.deviceName ?? ""), setHostDeviceId(status?.host?.deviceId ?? "");
2570
2574
  };
2571
2575
  React.useEffect(() => {
2572
2576
  load().catch((reason) => setError(messageOf(reason)));
2573
2577
  }, []), React.useEffect(() => {
2574
- if (association !== void 0)
2575
- return props.statusFeed.subscribe((status) => {
2576
- setHostStatus(status.host), setHostName(status.deviceName ?? ""), setHostDeviceId(status.host?.deviceId ?? "");
2578
+ let active = !0, authorizationKey, unsubscribe = props.statusFeed.subscribe((status) => {
2579
+ setHostStatus(status.host), setHostName(status.deviceName ?? ""), setHostDeviceId(status.host?.deviceId ?? "");
2580
+ let key = JSON.stringify([
2581
+ status.serverUrl,
2582
+ status.deviceId,
2583
+ status.host?.deviceId,
2584
+ status.host?.authorized,
2585
+ status.host?.account
2586
+ ]);
2587
+ if (key === authorizationKey) return;
2588
+ authorizationKey = key;
2589
+ let run = ++associationReadRun.current;
2590
+ props.control("settings.get").then((view) => {
2591
+ active && run === associationReadRun.current && applyAssociations(view);
2592
+ }).catch(() => {
2577
2593
  });
2578
- }, [association !== void 0]);
2594
+ });
2595
+ return () => {
2596
+ active = !1, unsubscribe();
2597
+ };
2598
+ }, [props.statusFeed]);
2579
2599
  let save = async (event) => {
2580
2600
  if (event?.preventDefault(), !(!writable || !serverDirty)) {
2581
2601
  setBusy(!0), setNotice(void 0), setError(void 0);
@@ -2583,7 +2603,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
2583
2603
  let view = await props.control("settings.server.set", {
2584
2604
  serverUrl
2585
2605
  });
2586
- applyView(view), setNotice({ key: "serverSaved" });
2606
+ applyView(view), setNotice({ key: view.applies === "live" ? "serverApplied" : "serverSaved" });
2587
2607
  } catch (reason) {
2588
2608
  setError(messageOf(reason));
2589
2609
  } finally {
@@ -2591,10 +2611,11 @@ Minimum version required to store current data is: ` + bestVersion + `.
2591
2611
  }
2592
2612
  }
2593
2613
  }, logout = async () => {
2614
+ let run = ++associationReadRun.current;
2594
2615
  setBusy(!0), setError(void 0), setNotice(void 0);
2595
2616
  try {
2596
2617
  let view = await props.control("settings.logout");
2597
- applyView(view), setRegistrationCode(""), setNotice({ key: "signedOut" });
2618
+ applyView(view, run === associationReadRun.current), setRegistrationCode(""), setNotice({ key: "signedOut" });
2598
2619
  } catch (reason) {
2599
2620
  setError(messageOf(reason));
2600
2621
  } finally {
@@ -3009,18 +3030,15 @@ Minimum version required to store current data is: ` + bestVersion + `.
3009
3030
  ".dshRemoteTerminalUnavailable{box-sizing:border-box;margin:12px;padding:12px 14px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2);font-size:13px;line-height:1.5}",
3010
3031
  ".dshRemoteModeButton{min-height:36px;border:0;background:transparent;color:var(--dsw-alias-label-primary);display:flex;align-items:center;gap:8px;padding:0 10px;border-radius:8px}.dshRemoteModeButton:is(button){cursor:pointer}",
3011
3032
  ".dshRemoteModeButton:is(button):hover{background:var(--dsw-alias-interactive-bg-hover)}",
3012
- // Keep additive footer actions in reading order above the Settings seat.
3013
- '[class*="_footArea"]:has(.dshRemoteSidebarEntry){flex-direction:column!important;align-items:stretch;gap:0}[class*="_footerActions"]:has(.dshRemoteSidebarEntry){display:flex!important;flex-direction:column;align-items:stretch}[class*="_footerActions"]:has(.dshRemoteSidebarEntry.isRail){align-items:center}',
3014
- '[class*="_footerActions"]:has(.dshRemoteSidebarEntry.isWide) .bt-return{justify-content:flex-start}',
3015
- // Bot mode seats its account beside Connect plugins. Keep that row intact
3016
- // and let Remote span a separate row underneath it.
3017
- '[class*="_footArea"]:has(.bt-connect-wrap):has(.dshRemoteSidebarEntry.isWide){display:grid!important;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:8px 9px}[class*="_footArea"]:has(.bt-connect-wrap):has(.dshRemoteSidebarEntry.isWide)>[class*="_footerActions"]{display:contents!important}[class*="_footArea"]:has(.bt-connect-wrap):has(.dshRemoteSidebarEntry.isWide)>[class*="_footerActions"]>div:not(.dshRemoteSidebarEntry){display:contents!important}',
3018
- '[class*="_footArea"]:has(.bt-connect-wrap):has(.dshRemoteSidebarEntry.isWide) .bt-connect-wrap{grid-column:2;grid-row:1}[class*="_footArea"]:has(.bt-connect-wrap):has(.dshRemoteSidebarEntry.isWide)>[class*="_settingsArea"]{grid-column:1;grid-row:1;width:36px!important}[class*="_footArea"]:has(.bt-connect-wrap):has(.dshRemoteSidebarEntry.isWide) .dshRemoteSidebarEntry.isWide{display:block!important;grid-column:1/-1;grid-row:2;margin:0}',
3019
- '[class*="_footArea"]:has(.bt-connect-wrap):has(.bt-foot-account):has(.dshRemoteSidebarEntry.isWide){grid-template-columns:36px minmax(0,1fr) 36px}[class*="_footArea"]:has(.bt-connect-wrap):has(.bt-foot-account):has(.dshRemoteSidebarEntry.isWide) .bt-foot-account{grid-column:1;grid-row:1}[class*="_footArea"]:has(.bt-connect-wrap):has(.bt-foot-account):has(.dshRemoteSidebarEntry.isWide)>[class*="_settingsArea"]{grid-column:3}',
3033
+ // The official sidebar.footer.action slot owns the surrounding layout.
3034
+ // Style only our entry so other footer actions, usage and Settings keep
3035
+ // their host-defined geometry, including third-party sidebar variants.
3020
3036
  // Match native workspace rows: 8px inset, 16px icon slot and 6px label gap.
3021
- ".dshRemoteSidebarEntry{box-sizing:border-box;flex:none;width:36px;min-width:36px;display:block}.dshRemoteSidebarEntry .dshRemoteModeButton{box-sizing:border-box;width:36px;height:36px;min-height:36px;justify-content:center;gap:0;padding:0;border-radius:50%}.dshRemoteSidebarEntry.isWide{width:100%;min-width:0;height:36px;margin:4px 0}.dshRemoteSidebarEntry.isWide .dshRemoteModeButton{width:100%;min-width:0;justify-content:flex-start;gap:6px;padding:0 8px;border-radius:8px;font:inherit;font-size:14px;line-height:20px;text-align:start}.dshRemoteSidebarLabel{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dshRemoteSidebarEntry.isRail{height:54px}.dshRemoteSidebarEntry.isRail .dshRemoteModeButton{margin:8px 0 10px}.dshRemoteSidebarEntry.isActive .dshRemoteComputerIcon{color:var(--dsw-alias-brand-primary)}.dshRemoteSidebarEntry .dshRemoteModeButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.dshRemoteSidebarEntry .dshRemoteModeButton:disabled{opacity:.45;cursor:default}",
3037
+ ".dshRemoteSidebarEntry{box-sizing:border-box;flex:none;width:36px;min-width:36px;display:block}.dshRemoteSidebarEntry .dshRemoteModeButton{box-sizing:border-box;width:36px;height:36px;min-height:36px;justify-content:center;gap:0;padding:0;border-radius:50%}.dshRemoteSidebarEntry.isWide{flex:0 1 auto;width:100%;min-width:36px;max-width:100%;height:36px;margin:0}.dshRemoteSidebarEntry.isWide .dshRemoteModeButton{width:100%;min-width:0;justify-content:flex-start;gap:6px;padding:0 8px;border-radius:8px;font:inherit;font-size:14px;line-height:20px;text-align:start}.dshRemoteSidebarLabel{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dshRemoteSidebarEntry.isRail{height:36px}.dshRemoteSidebarEntry.isActive .dshRemoteComputerIcon{color:var(--dsw-alias-brand-primary)}.dshRemoteSidebarEntry .dshRemoteModeButton:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.dshRemoteSidebarEntry .dshRemoteModeButton:disabled{opacity:.45;cursor:default}",
3022
3038
  ".dshRemoteComputerIcon{box-sizing:border-box;width:18px;height:18px;flex:0 0 18px;color:var(--dsw-alias-label-secondary)}.dshRemoteSidebarEntry.isWide .dshRemoteComputerIcon{width:16px;height:16px;flex-basis:16px}",
3023
- ".dshRemoteSidebarEntry.isWide{position:relative}.dshRemoteSidebarEntry.isWide.isActive .dshRemoteModeButton{padding-inline-end:64px}.dshRemoteExitLink{position:absolute;inset-block-start:0;inset-inline-end:8px;min-width:44px;height:36px;border:0;border-radius:8px;background:transparent;color:var(--dsw-alias-label-secondary);padding:0 6px;font:inherit;font-size:12px;line-height:20px;white-space:nowrap;cursor:pointer}.dshRemoteExitLink:hover:not(:disabled){color:var(--dsw-alias-label-primary);text-decoration:underline}.dshRemoteExitLink:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.dshRemoteExitLink:disabled{opacity:.45;cursor:default}",
3039
+ // Keep Exit in flow: an absolute action and reserved padding can overlap
3040
+ // the icon or adjacent plugins when the host shrinks this flex item.
3041
+ ".dshRemoteSidebarEntry.isWide.isActive{display:flex;align-items:center}.dshRemoteSidebarEntry.isWide.isActive .dshRemoteModeButton{flex:1 1 auto;width:auto;overflow:hidden;padding:0}.dshRemoteSidebarEntry.isWide.isActive .dshRemoteComputerIcon{margin-inline-start:8px}.dshRemoteExitLink{margin-inline-start:auto;flex:0 0 36px;min-width:36px;height:36px;border:0;border-radius:8px;background:transparent;color:var(--dsw-alias-label-secondary);padding:0;font:inherit;font-size:12px;line-height:20px;white-space:nowrap;cursor:pointer}.dshRemoteExitLink:hover:not(:disabled){color:var(--dsw-alias-label-primary);text-decoration:underline}.dshRemoteExitLink:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px}.dshRemoteExitLink:disabled{opacity:.45;cursor:default}",
3024
3042
  // The strip sits inside the 40px Windows caption row, which the shell declares as the
3025
3043
  // window drag region. Without an explicit opt-out every press starts a window drag and
3026
3044
  // never reaches these buttons; the shell's own caption controls (sidebar toggle, new
@@ -3054,6 +3072,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
3054
3072
  ".dshRemoteOpenBar{position:sticky;bottom:-96px;display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:20px;padding:14px 0;background:var(--dsw-alias-bg-layer-1);border-top:1px solid var(--dsw-alias-border-l2)}.dshRemoteOpenBar>div{min-width:0;display:flex;flex-direction:column;gap:3px}.dshRemoteOpenBar span{color:var(--dsw-alias-label-secondary);font-size:12px}.dshRemoteOpenBar strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}.dshRemoteOpenBar>button,.dshRemoteEnable>button{min-height:40px;flex:0 0 auto;border:0;border-radius:8px;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-1);padding:8px 16px;cursor:pointer}.dshRemoteOpenBar>button:disabled,.dshRemoteEnable>button:disabled{opacity:.5;cursor:default}",
3055
3073
  ".dshRemoteEnable{box-sizing:border-box;width:min(440px,100%);max-width:100%;min-height:388px;margin:0 auto;display:flex;flex-direction:column;align-items:stretch;gap:10px}.dshRemoteEnable p{margin:0;color:var(--dsw-alias-label-secondary);line-height:1.5}",
3056
3074
  '.dshRemoteLoginTabs{width:min(440px,100%);display:flex;border-bottom:1px solid var(--dsw-alias-border-l2)}.dshRemoteLoginTabs>button{position:relative;min-height:38px;border:0;background:transparent;color:var(--dsw-alias-label-secondary);padding:6px 14px;font:inherit;font-size:13px;cursor:pointer}.dshRemoteLoginTabs>button:hover:not(:disabled){color:var(--dsw-alias-label-primary)}.dshRemoteLoginTabs>button.isActive{color:var(--dsw-alias-label-primary);font-weight:600}.dshRemoteLoginTabs>button.isActive::after{content:"";position:absolute;right:12px;bottom:-1px;left:12px;height:2px;border-radius:2px 2px 0 0;background:var(--dsw-alias-brand-primary)}.dshRemoteLoginTabs>button:focus-visible{outline:2px solid var(--dsw-alias-brand-primary);outline-offset:-2px;border-radius:6px}',
3075
+ ".dshRemoteLoginServer{width:100%;display:flex;flex-direction:column;gap:6px;margin:12px 0}.dshRemoteLoginServer>label{font-size:12px;color:var(--dsw-alias-label-secondary)}.dshRemoteLoginServer>div{display:flex;flex-wrap:wrap;gap:8px}.dshRemoteLoginServer input{box-sizing:border-box;flex:1 1 220px;min-width:0;min-height:40px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-3);color:inherit;padding:0 12px;font:inherit}.dshRemoteLoginServer button{flex:0 0 auto;min-height:40px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-3);color:inherit;padding:8px 12px;font:inherit;cursor:pointer}",
3057
3076
  ".dshRemoteClientLogin{width:min(440px,100%);display:flex;flex-direction:column;gap:8px}.dshRemoteClientLogin input{min-height:40px;border:1px solid var(--dsw-alias-border-l2);border-radius:8px;background:var(--dsw-alias-bg-layer-3);color:inherit;padding:0 12px;font:inherit}.dshRemoteClientLogin button{align-self:flex-start;min-height:40px;border:0;border-radius:8px;background:var(--dsw-alias-label-primary);color:var(--dsw-alias-bg-layer-1);padding:8px 16px;cursor:pointer}",
3058
3077
  ".dshRemoteQrLogin{width:min(440px,100%);display:flex;flex-direction:column;align-items:center;gap:8px;padding:6px 0 2px;text-align:center}.dshRemoteQrLogin img,.dshRemoteQrPlaceholder{box-sizing:border-box;width:200px;height:200px;border:1px solid var(--dsw-alias-border-l2);border-radius:12px;background:#fff;padding:8px}.dshRemoteQrOpen{display:flex;flex-direction:column;align-items:center;gap:5px;color:var(--dsw-alias-label-secondary);font-size:12px;text-decoration:none}.dshRemoteQrOpen:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}.dshRemoteQrOpen:hover img{border-color:var(--dsw-alias-label-dimmed)}.dshRemoteQrOpen:focus-visible{border-radius:12px;outline:2px solid var(--dsw-alias-brand-primary);outline-offset:3px}.dshRemoteQrPlaceholder{display:flex;align-items:center;justify-content:center;color:var(--dsw-alias-label-secondary)}.dshRemoteQrLogin>strong{font-size:14px}.dshRemoteQrLogin>p{max-width:48ch;margin:0;color:var(--dsw-alias-label-secondary);font-size:12px;line-height:1.5}.dshRemoteQrLogin>.dshRemoteServiceAddress{margin-top:2px;color:var(--dsw-alias-label-tertiary)}.dshRemoteServiceAddress>a{color:var(--dsw-alias-label-secondary);text-decoration:none}.dshRemoteServiceAddress>a:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}.dshRemoteQrLogin>button,.dshRemoteClientLogin>.dshRemoteLoginSwitch{min-height:32px;border:0;background:transparent;color:var(--dsw-alias-label-secondary);padding:4px 8px;font:inherit;font-size:12px;cursor:pointer}.dshRemoteQrLogin>button:hover,.dshRemoteClientLogin>.dshRemoteLoginSwitch:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}.dshRemoteClientLogin>.dshRemoteLoginSwitch{align-self:flex-start;background:transparent;color:var(--dsw-alias-label-secondary);padding-left:0}",
3059
3078
  ".dshRemoteLoginHeading{box-sizing:border-box;width:100%;display:flex;align-items:baseline;gap:10px;overflow:hidden;white-space:nowrap}.dshRemoteLoginTitle{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dshRemoteLoginHeading>span{flex:0 0 auto;color:var(--dsw-alias-label-secondary);font-size:13px;font-weight:400}.dshRemoteLoginTabs{box-sizing:border-box;width:100%;flex-wrap:nowrap;overflow-x:auto}.dshRemoteLoginTabs>button{min-width:max-content;flex:1 0 auto;display:flex;align-items:center;justify-content:center;padding:6px 10px;white-space:nowrap;text-align:center}.dshRemoteLoginTabs>button.isActive::after{right:0;left:0;bottom:0;border-radius:0}.dshRemoteClientLogin,.dshRemoteQrLogin{box-sizing:border-box;width:100%;height:300px;min-height:300px}.dshRemoteClientLogin{align-items:stretch;padding-top:16px}.dshRemoteClientLogin>button{align-self:stretch;width:100%}.dshRemoteQrLogin{padding-top:12px}",
@@ -3116,7 +3135,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
3116
3135
  function createRemoteWorkspaceAction(React) {
3117
3136
  let RemoteProgressView = createRemoteProgressView(React);
3118
3137
  function RemoteWorkspaceAction(props) {
3119
- let { t } = props, [open, setOpen] = React.useState(!1), [status, setStatus] = React.useState(void 0), [devices, setDevices] = React.useState([]), [selectedHost, setSelectedHost] = React.useState(void 0), [connectingHost, setConnectingHost] = React.useState(void 0), [workspaces, setWorkspaces] = React.useState([]), [codexWorkspaces, setCodexWorkspaces] = React.useState([]), [cursorWorkspaces, setCursorWorkspaces] = React.useState([]), [antigravityWorkspaces, setAntigravityWorkspaces] = React.useState([]), [piWorkspaces, setPiWorkspaces] = React.useState([]), [opencodeWorkspaces, setOpencodeWorkspaces] = React.useState([]), [claudeWorkspaces, setClaudeWorkspaces] = React.useState([]), [workspaceBackend, setWorkspaceBackend] = React.useState("harness"), [codexWorkspaceId, setCodexWorkspaceId] = React.useState(void 0), [cursorWorkspaceId, setCursorWorkspaceId] = React.useState(void 0), [antigravityWorkspaceId, setAntigravityWorkspaceId] = React.useState(void 0), [piWorkspaceId, setPiWorkspaceId] = React.useState(void 0), [opencodeWorkspaceId, setOpencodeWorkspaceId] = React.useState(void 0), [claudeWorkspaceId, setClaudeWorkspaceId] = React.useState(void 0), [directory, setDirectory] = React.useState(void 0), [path, setPath] = React.useState(""), [addingWorkspace, setAddingWorkspace] = React.useState(!1), [showAllWorkspaces, setShowAllWorkspaces] = React.useState(!1), [showAllCodexWorkspaces, setShowAllCodexWorkspaces] = React.useState(!1), [devicesOpen, setDevicesOpen] = React.useState(!1), [showAllCursorWorkspaces, setShowAllCursorWorkspaces] = React.useState(!1), [showAllAntigravityWorkspaces, setShowAllAntigravityWorkspaces] = React.useState(!1), [showAllPiWorkspaces, setShowAllPiWorkspaces] = React.useState(!1), [showAllOpencodeWorkspaces, setShowAllOpencodeWorkspaces] = React.useState(!1), [showAllClaudeWorkspaces, setShowAllClaudeWorkspaces] = React.useState(!1), workspaceListId = "dsh-remote-workspace-list", codexWorkspaceHeadingId = "dsh-remote-codex-workspace-heading", codexWorkspaceListId = "dsh-remote-codex-workspace-list", cursorWorkspaceHeadingId = "dsh-remote-cursor-workspace-heading", cursorWorkspaceListId = "dsh-remote-cursor-workspace-list", antigravityWorkspaceHeadingId = "dsh-remote-antigravity-workspace-heading", piWorkspaceHeadingId = "dsh-remote-pi-workspace-heading", opencodeWorkspaceHeadingId = "dsh-remote-opencode-workspace-heading", claudeWorkspaceHeadingId = "dsh-remote-claude-workspace-heading", antigravityWorkspaceListId = "dsh-remote-antigravity-workspace-list", piWorkspaceListId = "dsh-remote-pi-workspace-list", opencodeWorkspaceListId = "dsh-remote-opencode-workspace-list", claudeWorkspaceListId = "dsh-remote-claude-workspace-list", [busy, setBusy] = React.useState(!1), [needsAuthorization, setNeedsAuthorization] = React.useState(!1), [email, setEmail] = React.useState(""), [password, setPassword] = React.useState(""), [loginServerUrl, setLoginServerUrl] = React.useState("https://dsh.r2049.cn"), [loginMethod, setLoginMethod] = React.useState("password"), loginMethodManuallySelected = React.useRef(!1), [oauthProviders, setOAuthProviders] = React.useState([]), [providersLoading, setProvidersLoading] = React.useState(!1), [providersFailed, setProvidersFailed] = React.useState(!1), [providerReload, setProviderReload] = React.useState(0), [qrSession, setQrSession] = React.useState(void 0), [qrImage, setQrImage] = React.useState(void 0), [qrExpired, setQrExpired] = React.useState(!1), [progress, setProgress] = React.useState(void 0), progressRun = React.useRef(0), qrFlowRun = React.useRef(0), [notice, setNotice] = React.useState(void 0), [error, setError] = React.useState(void 0);
3138
+ let { t } = props, [open, setOpen] = React.useState(!1), [status, setStatus] = React.useState(void 0), [devices, setDevices] = React.useState([]), [selectedHost, setSelectedHost] = React.useState(void 0), [connectingHost, setConnectingHost] = React.useState(void 0), [workspaces, setWorkspaces] = React.useState([]), [codexWorkspaces, setCodexWorkspaces] = React.useState([]), [cursorWorkspaces, setCursorWorkspaces] = React.useState([]), [antigravityWorkspaces, setAntigravityWorkspaces] = React.useState([]), [piWorkspaces, setPiWorkspaces] = React.useState([]), [opencodeWorkspaces, setOpencodeWorkspaces] = React.useState([]), [claudeWorkspaces, setClaudeWorkspaces] = React.useState([]), [workspaceBackend, setWorkspaceBackend] = React.useState("harness"), [codexWorkspaceId, setCodexWorkspaceId] = React.useState(void 0), [cursorWorkspaceId, setCursorWorkspaceId] = React.useState(void 0), [antigravityWorkspaceId, setAntigravityWorkspaceId] = React.useState(void 0), [piWorkspaceId, setPiWorkspaceId] = React.useState(void 0), [opencodeWorkspaceId, setOpencodeWorkspaceId] = React.useState(void 0), [claudeWorkspaceId, setClaudeWorkspaceId] = React.useState(void 0), [directory, setDirectory] = React.useState(void 0), [path, setPath] = React.useState(""), [addingWorkspace, setAddingWorkspace] = React.useState(!1), [showAllWorkspaces, setShowAllWorkspaces] = React.useState(!1), [showAllCodexWorkspaces, setShowAllCodexWorkspaces] = React.useState(!1), [devicesOpen, setDevicesOpen] = React.useState(!1), [showAllCursorWorkspaces, setShowAllCursorWorkspaces] = React.useState(!1), [showAllAntigravityWorkspaces, setShowAllAntigravityWorkspaces] = React.useState(!1), [showAllPiWorkspaces, setShowAllPiWorkspaces] = React.useState(!1), [showAllOpencodeWorkspaces, setShowAllOpencodeWorkspaces] = React.useState(!1), [showAllClaudeWorkspaces, setShowAllClaudeWorkspaces] = React.useState(!1), workspaceListId = "dsh-remote-workspace-list", codexWorkspaceHeadingId = "dsh-remote-codex-workspace-heading", codexWorkspaceListId = "dsh-remote-codex-workspace-list", cursorWorkspaceHeadingId = "dsh-remote-cursor-workspace-heading", cursorWorkspaceListId = "dsh-remote-cursor-workspace-list", antigravityWorkspaceHeadingId = "dsh-remote-antigravity-workspace-heading", piWorkspaceHeadingId = "dsh-remote-pi-workspace-heading", opencodeWorkspaceHeadingId = "dsh-remote-opencode-workspace-heading", claudeWorkspaceHeadingId = "dsh-remote-claude-workspace-heading", antigravityWorkspaceListId = "dsh-remote-antigravity-workspace-list", piWorkspaceListId = "dsh-remote-pi-workspace-list", opencodeWorkspaceListId = "dsh-remote-opencode-workspace-list", claudeWorkspaceListId = "dsh-remote-claude-workspace-list", [busy, setBusy] = React.useState(!1), [needsAuthorization, setNeedsAuthorization] = React.useState(!1), [email, setEmail] = React.useState(""), [password, setPassword] = React.useState(""), [loginServerUrl, setLoginServerUrl] = React.useState("https://dsh.r2049.cn"), [savingServer, setSavingServer] = React.useState(!1), serverDirty = loginServerUrl.trim() !== (status?.serverUrl ?? ""), [loginMethod, setLoginMethod] = React.useState("password"), loginMethodManuallySelected = React.useRef(!1), [oauthProviders, setOAuthProviders] = React.useState([]), [providersLoading, setProvidersLoading] = React.useState(!1), [providersFailed, setProvidersFailed] = React.useState(!1), [providerReload, setProviderReload] = React.useState(0), providerRequestRun = React.useRef(0), [qrSession, setQrSession] = React.useState(void 0), [qrImage, setQrImage] = React.useState(void 0), [qrExpired, setQrExpired] = React.useState(!1), [progress, setProgress] = React.useState(void 0), progressRun = React.useRef(0), qrFlowRun = React.useRef(0), [notice, setNotice] = React.useState(void 0), [error, setError] = React.useState(void 0);
3120
3139
  React.useEffect(() => {
3121
3140
  open || (setDevicesOpen(!1), qrFlowRun.current += 1, setBusy(!1));
3122
3141
  }, [open]), React.useEffect(() => {
@@ -3144,7 +3163,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
3144
3163
  props.control("status").then(setStatus).catch(() => {
3145
3164
  });
3146
3165
  }, []), React.useEffect(() => {
3147
- status?.serverUrl !== void 0 && loginServerUrl === "https://dsh.r2049.cn" && setLoginServerUrl(status.serverUrl);
3166
+ status?.serverUrl !== void 0 && setLoginServerUrl(status.serverUrl);
3148
3167
  }, [status?.serverUrl]), React.useEffect(() => {
3149
3168
  let remoteActive = status?.mode === "remote";
3150
3169
  return document.documentElement.classList.toggle("dshRemoteTargetActive", remoteActive), () => {
@@ -3169,10 +3188,10 @@ Minimum version required to store current data is: ` + bestVersion + `.
3169
3188
  }
3170
3189
  };
3171
3190
  React.useEffect(() => {
3172
- if (!open || !needsAuthorization) return;
3173
- let active = !0;
3191
+ if (!open || !needsAuthorization || savingServer || serverDirty) return;
3192
+ let active = !0, run = ++providerRequestRun.current;
3174
3193
  return qrFlowRun.current += 1, setBusy(!1), setQrSession(void 0), setQrImage(void 0), setQrExpired(!1), setOAuthProviders([]), setProvidersLoading(!0), setProvidersFailed(!1), props.control("client.account.providers").then((items) => {
3175
- if (!active) return;
3194
+ if (!active || run !== providerRequestRun.current) return;
3176
3195
  let available = items.filter((item) => item.qrStartUrl != null);
3177
3196
  setOAuthProviders(available), setLoginMethod((current) => {
3178
3197
  if (loginMethodManuallySelected.current && (current === "password" || available.some((item) => `oauth:${item.id}` === current))) return current;
@@ -3180,16 +3199,16 @@ Minimum version required to store current data is: ` + bestVersion + `.
3180
3199
  return preferred === void 0 ? "password" : `oauth:${preferred.id}`;
3181
3200
  });
3182
3201
  }).catch((reason) => {
3183
- active && (setProvidersFailed(!0), setLoginMethod("password"), setError(messageOf(reason)));
3202
+ !active || run !== providerRequestRun.current || (setProvidersFailed(!0), setLoginMethod("password"), setError(messageOf(reason)));
3184
3203
  }).finally(() => {
3185
- active && setProvidersLoading(!1);
3204
+ active && run === providerRequestRun.current && setProvidersLoading(!1);
3186
3205
  }), () => {
3187
3206
  active = !1;
3188
3207
  };
3189
- }, [open, needsAuthorization, status?.serverUrl, props.preferredQrProvider, providerReload]), React.useEffect(() => {
3190
- !open || !needsAuthorization || providersLoading || loginMethod === "password" || !oauthProviders.some((item) => `oauth:${item.id}` === loginMethod) || qrSession !== void 0 || qrExpired || startQrLogin(loginMethod.slice(6));
3191
- }, [open, needsAuthorization, providersLoading, oauthProviders, loginMethod, qrSession, qrExpired]), React.useEffect(() => {
3192
- if (!open || loginMethod === "password" || qrSession === void 0) return;
3208
+ }, [open, needsAuthorization, status?.serverUrl, props.preferredQrProvider, providerReload, savingServer, serverDirty]), React.useEffect(() => {
3209
+ !open || !needsAuthorization || savingServer || serverDirty || providersLoading || loginMethod === "password" || !oauthProviders.some((item) => `oauth:${item.id}` === loginMethod) || qrSession !== void 0 || qrExpired || startQrLogin(loginMethod.slice(6));
3210
+ }, [open, needsAuthorization, providersLoading, oauthProviders, loginMethod, qrSession, qrExpired, savingServer, serverDirty]), React.useEffect(() => {
3211
+ if (!open || savingServer || serverDirty || loginMethod === "password" || qrSession === void 0) return;
3193
3212
  let active = !0, polling = !1, settled = !1, run = qrFlowRun.current, timer, poll = () => {
3194
3213
  polling || settled || (polling = !0, props.control("client.account.qr.poll", { qrId: qrSession.qrId }).then(async (result) => {
3195
3214
  if (!(!active || settled || run !== qrFlowRun.current))
@@ -3216,7 +3235,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
3216
3235
  return poll(), timer = window.setInterval(poll, 1500), () => {
3217
3236
  active = !1, timer !== void 0 && window.clearInterval(timer);
3218
3237
  };
3219
- }, [open, loginMethod, qrSession]);
3238
+ }, [open, loginMethod, qrSession, savingServer, serverDirty]);
3220
3239
  let selectLoginMethod = (method) => {
3221
3240
  loginMethodManuallySelected.current = !0, method !== loginMethod && (qrFlowRun.current += 1, setLoginMethod(method), setQrSession(void 0), setQrImage(void 0), setQrExpired(!1), setError(void 0));
3222
3241
  }, orderedQrProviders = [...oauthProviders].sort((a, b) => +(b.id === props.preferredQrProvider) - +(a.id === props.preferredQrProvider)), selectedProvider = oauthProviders.find((item) => `oauth:${item.id}` === loginMethod), scanLabel = t("scanWithProvider", { provider: selectedProvider?.displayName ?? "" }), qrLoginTab = (provider) => React.createElement("button", {
@@ -3332,8 +3351,26 @@ Minimum version required to store current data is: ` + bestVersion + `.
3332
3351
  }, [open, selectedHost]);
3333
3352
  let chooseAnotherHost = () => {
3334
3353
  setSelectedHost(void 0), setWorkspaces([]), setCodexWorkspaces([]), setCursorWorkspaces([]), setAntigravityWorkspaces([]), setPiWorkspaces([]), setOpencodeWorkspaces([]), setClaudeWorkspaces([]), setShowAllWorkspaces(!1), setShowAllCodexWorkspaces(!1), setShowAllCursorWorkspaces(!1), setShowAllAntigravityWorkspaces(!1), setShowAllPiWorkspaces(!1), setShowAllOpencodeWorkspaces(!1), setShowAllClaudeWorkspaces(!1), setWorkspaceBackend("harness"), setCodexWorkspaceId(void 0), setCursorWorkspaceId(void 0), setAntigravityWorkspaceId(void 0), setPiWorkspaceId(void 0), setOpencodeWorkspaceId(void 0), setClaudeWorkspaceId(void 0), setDirectory(void 0), setPath(""), setAddingWorkspace(!1), setError(void 0);
3354
+ }, resetLoginFlow = () => {
3355
+ providerRequestRun.current += 1, qrFlowRun.current += 1, setQrSession(void 0), setQrImage(void 0), setQrExpired(!1), setOAuthProviders([]), setProvidersFailed(!1), setProvidersLoading(!1), setLoginMethod("password"), loginMethodManuallySelected.current = !1, setPassword(""), setError(void 0), setNotice(void 0);
3356
+ }, saveLoginServer = async () => {
3357
+ if (!(loginServerUrl.trim() === "" || savingServer)) {
3358
+ resetLoginFlow(), setSavingServer(!0), setBusy(!0);
3359
+ try {
3360
+ if ((await props.control("settings.server.set", { serverUrl: loginServerUrl.trim() })).applies !== "live") {
3361
+ setNotice(t("serverSaved"));
3362
+ return;
3363
+ }
3364
+ let nextStatus = await props.control("status");
3365
+ setStatus(nextStatus), setLoginServerUrl(nextStatus.serverUrl ?? loginServerUrl.trim()), setProviderReload((value) => value + 1);
3366
+ } catch (reason) {
3367
+ setError(messageOf(reason));
3368
+ } finally {
3369
+ setSavingServer(!1), setBusy(!1);
3370
+ }
3371
+ }
3335
3372
  }, signInClient = async () => {
3336
- if (!(email.trim() === "" || password === "" || loginServerUrl.trim() === "")) {
3373
+ if (!(serverDirty || savingServer || email.trim() === "" || password === "" || loginServerUrl.trim() === "")) {
3337
3374
  setBusy(!0), setError(void 0);
3338
3375
  try {
3339
3376
  await props.control("settings.configure", {
@@ -3365,9 +3402,9 @@ Minimum version required to store current data is: ` + bestVersion + `.
3365
3402
  setBusy(!1);
3366
3403
  }
3367
3404
  }, logoutRemote = async () => {
3368
- setBusy(!0), setError(void 0);
3405
+ qrFlowRun.current += 1, progressRun.current += 1, setBusy(!0), setError(void 0);
3369
3406
  try {
3370
- await props.control("settings.logout"), setDevices([]), setNeedsAuthorization(!0), setQrSession(void 0), setQrImage(void 0), setQrExpired(!1), setStatus(await props.control("status"));
3407
+ await props.control("settings.logout"), setDevices([]), setSelectedHost(void 0), setConnectingHost(void 0), setWorkspaces([]), setCodexWorkspaces([]), setCursorWorkspaces([]), setAntigravityWorkspaces([]), setPiWorkspaces([]), setOpencodeWorkspaces([]), setClaudeWorkspaces([]), setDirectory(void 0), setPath(""), setPassword(""), setProgress(void 0), setNeedsAuthorization(!0), setQrSession(void 0), setQrImage(void 0), setQrExpired(!1), setStatus(await props.control("status"));
3371
3408
  } catch (reason) {
3372
3409
  setError(messageOf(reason));
3373
3410
  } finally {
@@ -3566,6 +3603,36 @@ Minimum version required to store current data is: ` + bestVersion + `.
3566
3603
  React.createElement("strong", { className: "dshRemoteLoginTitle" }, t("signInClient")),
3567
3604
  React.createElement("span", null, t("signInClientDescription"))
3568
3605
  ),
3606
+ React.createElement(
3607
+ "form",
3608
+ {
3609
+ className: "dshRemoteLoginServer",
3610
+ onSubmit: (event) => {
3611
+ event.preventDefault(), saveLoginServer();
3612
+ }
3613
+ },
3614
+ React.createElement("label", { htmlFor: "dsh-remote-login-server" }, t("serverUrl")),
3615
+ React.createElement(
3616
+ "div",
3617
+ null,
3618
+ React.createElement("input", {
3619
+ id: "dsh-remote-login-server",
3620
+ type: "url",
3621
+ required: !0,
3622
+ value: loginServerUrl,
3623
+ disabled: busy || savingServer,
3624
+ autoComplete: "url",
3625
+ placeholder: t("serverUrl"),
3626
+ onChange: (event) => {
3627
+ resetLoginFlow(), setLoginServerUrl(event.target.value);
3628
+ }
3629
+ }),
3630
+ React.createElement("button", {
3631
+ type: "submit",
3632
+ disabled: busy || savingServer || loginServerUrl.trim() === ""
3633
+ }, t(savingServer ? "saving" : "save"))
3634
+ )
3635
+ ),
3569
3636
  React.createElement(
3570
3637
  "div",
3571
3638
  { className: "dshRemoteLoginTabs", role: "tablist" },
@@ -3577,18 +3644,12 @@ Minimum version required to store current data is: ` + bestVersion + `.
3577
3644
  "aria-selected": loginMethod === "password",
3578
3645
  "aria-controls": "dsh-remote-password-panel",
3579
3646
  className: loginMethod === "password" ? "isActive" : "",
3580
- disabled: busy,
3647
+ disabled: busy || savingServer || serverDirty,
3581
3648
  onClick: () => selectLoginMethod("password")
3582
3649
  }, t("accountPasswordLogin"))
3583
3650
  ),
3584
3651
  providersLoading ? React.createElement("p", { role: "status" }, t("loadingLoginProviders")) : null,
3585
- providersFailed ? React.createElement("button", {
3586
- type: "button",
3587
- onClick: () => {
3588
- setError(void 0), setProviderReload((value) => value + 1);
3589
- }
3590
- }, t("retryLoginProviders")) : null,
3591
- !providersLoading && !providersFailed && oauthProviders.length === 0 ? React.createElement("p", { role: "status" }, t("noLoginProviders")) : null,
3652
+ !savingServer && !serverDirty && !providersLoading && !providersFailed && oauthProviders.length === 0 ? React.createElement("p", { role: "status" }, t("noLoginProviders")) : null,
3592
3653
  loginMethod !== "password" && selectedProvider !== void 0 ? React.createElement(
3593
3654
  "div",
3594
3655
  {
@@ -3644,15 +3705,6 @@ Minimum version required to store current data is: ` + bestVersion + `.
3644
3705
  id: "dsh-remote-password-panel",
3645
3706
  "aria-labelledby": "dsh-remote-password-tab"
3646
3707
  },
3647
- React.createElement("input", {
3648
- type: "url",
3649
- value: loginServerUrl,
3650
- disabled: busy,
3651
- autoComplete: "url",
3652
- placeholder: t("serverUrl"),
3653
- "aria-label": t("serverUrl"),
3654
- onChange: (event) => setLoginServerUrl(event.target.value)
3655
- }),
3656
3708
  React.createElement("input", {
3657
3709
  type: "email",
3658
3710
  value: email,
@@ -3671,7 +3723,7 @@ Minimum version required to store current data is: ` + bestVersion + `.
3671
3723
  "aria-label": t("password"),
3672
3724
  onChange: (event) => setPassword(event.target.value)
3673
3725
  }),
3674
- React.createElement("button", { type: "button", disabled: busy || loginServerUrl.trim() === "" || email.trim() === "" || password === "", onClick: () => void signInClient() }, t(busy ? "signingIn" : "startSignIn"))
3726
+ React.createElement("button", { type: "button", disabled: busy || savingServer || serverDirty || loginServerUrl.trim() === "" || email.trim() === "" || password === "", onClick: () => void signInClient() }, t(busy ? "signingIn" : "startSignIn"))
3675
3727
  )
3676
3728
  ) : null,
3677
3729
  needsAuthorization ? null : React.createElement(
@@ -0,0 +1,3 @@
1
+ /** Ephemeral read-only detail handles are bound to one authenticated peer, never written to disk. */
2
+ export declare function previewCall(peer: object, input: unknown, invoke: (input: unknown) => Promise<unknown>): Promise<unknown>;
3
+ //# sourceMappingURL=history-preview.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-preview.d.ts","sourceRoot":"","sources":["../../src/codex/history-preview.ts"],"names":[],"mappings":"AAQA,qGAAqG;AACrG,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAmD9H"}
@@ -0,0 +1,71 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { RpcError } from '../safe-error.js';
3
+ const object = (v) => v !== null && typeof v === 'object' && !Array.isArray(v) ? v : {};
4
+ const details = new WeakMap();
5
+ const MAX_CACHE = 16 * 1024 * 1024;
6
+ const size = (v) => Buffer.byteLength(JSON.stringify(v), 'utf8');
7
+ /** Ephemeral read-only detail handles are bound to one authenticated peer, never written to disk. */
8
+ export async function previewCall(peer, input, invoke) {
9
+ const call = object(input), params = object(call.params);
10
+ if (call.method === 'dsh/historyDetail') {
11
+ if (Object.keys(call).some(k => !['method', 'params'].includes(k)) || Object.keys(params).some(k => !['threadId', 'detailId'].includes(k))
12
+ || typeof params.threadId !== 'string' || typeof params.detailId !== 'string')
13
+ throw new RpcError('INVALID_MESSAGE', 'Invalid history detail request.');
14
+ const detail = details.get(peer)?.get(params.detailId);
15
+ if (!detail || detail.threadId !== params.threadId || detail.until < Date.now())
16
+ throw new RpcError('HISTORY_DETAIL_EXPIRED', 'Tool details expired. Reopen the conversation and try again.');
17
+ await invoke({ method: 'thread/read', params: { threadId: detail.threadId, includeTurns: false } });
18
+ return detail.record;
19
+ }
20
+ if (call.previewHistory !== true)
21
+ return invoke(input);
22
+ if (call.method !== 'dsh/sessionHistory' || Object.keys(call).some(k => !['method', 'params', 'previewHistory'].includes(k)))
23
+ throw new RpcError('INVALID_MESSAGE', 'History preview is read-only.');
24
+ const result = object(await invoke({ method: call.method, params: call.params }));
25
+ if (!Array.isArray(result.records) || typeof params.threadId !== 'string')
26
+ return result;
27
+ let cache = details.get(peer);
28
+ if (!cache)
29
+ details.set(peer, cache = new Map());
30
+ for (const [id, value] of cache)
31
+ if (value.until < Date.now())
32
+ cache.delete(id);
33
+ // Stage the whole page before evicting anything. Every returned handle must
34
+ // fit together; otherwise let the client retry through bounded transfer.
35
+ const pending = new Map();
36
+ let pendingBytes = 0;
37
+ const records = result.records.map(raw => {
38
+ const record = object(raw), event = object(record.event), data = object(event.data);
39
+ if (event.type !== 'tool/result' || size(record) < 4096)
40
+ return raw;
41
+ const bytes = size(record);
42
+ if (bytes > MAX_CACHE)
43
+ return raw;
44
+ if (pending.size >= 64 || pendingBytes + bytes > MAX_CACHE) {
45
+ throw new RpcError('RESPONSE_TOO_LARGE', 'History requires chunked transfer.');
46
+ }
47
+ const id = randomUUID();
48
+ pending.set(id, { threadId: params.threadId, record: raw, bytes, until: Date.now() + 10 * 60_000 });
49
+ pendingBytes += bytes;
50
+ const message = object(data.message);
51
+ return { ...record, view: undefined, event: { ...event, data: {
52
+ id: data.id, callId: data.callId, name: data.name, toolName: data.toolName, turn: data.turn, step: data.step,
53
+ message: { source: message.source, isError: message.isError === true || (Array.isArray(message.content) && message.content.some(v => object(v).isError === true)), content: [{ type: 'text', text: 'Expand to load tool output' }] },
54
+ isError: data.isError === true, failed: data.failed, error: data.error ? { message: 'Tool execution failed' } : undefined,
55
+ remoteDetail: { threadId: params.threadId, detailId: id },
56
+ } } };
57
+ });
58
+ const preview = { ...result, records };
59
+ if (size(preview) > 2 * 1024 * 1024)
60
+ throw new RpcError('RESPONSE_TOO_LARGE', 'History requires chunked transfer.');
61
+ let cachedBytes = [...cache.values()].reduce((n, value) => n + value.bytes, 0);
62
+ while (cache.size + pending.size > 64 || cachedBytes + pendingBytes > MAX_CACHE) {
63
+ const oldest = cache.keys().next().value;
64
+ cachedBytes -= cache.get(oldest).bytes;
65
+ cache.delete(oldest);
66
+ }
67
+ for (const [id, detail] of pending)
68
+ cache.set(id, detail);
69
+ return preview;
70
+ }
71
+ //# sourceMappingURL=history-preview.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history-preview.js","sourceRoot":"","sources":["../../src/codex/history-preview.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export declare class CodexPeerBridge {
9
9
  private readonly context;
10
10
  private readonly publish;
11
11
  private readonly logger?;
12
+ compactHistoryEnabled: boolean;
12
13
  private readonly streams;
13
14
  private readonly incomingTransfers;
14
15
  private readonly outgoingTransfers;
@@ -1 +1 @@
1
- {"version":3,"file":"peer-bridge.d.ts","sourceRoot":"","sources":["../../src/codex/peer-bridge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,wBAAwB,EAExB,4BAA4B,EAG5B,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAU7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,MAAM,iBAAiB,GAAG,CAC9B,KAAK,EAAE,iBAAiB,GAAG,yBAAyB,EACpD,IAAI,EAAE,iBAAiB,GAAG,wBAAwB,KAC/C,OAAO,CAAC,IAAI,CAAC,CAAA;AAuClB,sEAAsE;AACtE,qBAAa,eAAe;IAOxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAT1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsC;IACxE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsC;IACxE,OAAO,CAAC,MAAM,CAAQ;gBAGH,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,UAAU,YAAA;IAGhC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAI9B,UAAU;IAexB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC;IAK9C,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB/F,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAM/D,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAuBlE,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAyB/E,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,4BAA4B,CAAC;IA6C3E,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B;IAqBxD,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAMtE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIhD,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM3C,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3F,WAAW,CAAC,MAAM,GAAE,wBAAwB,CAAC,QAAQ,CAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjF,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,WAAW;CAGpB"}
1
+ {"version":3,"file":"peer-bridge.d.ts","sourceRoot":"","sources":["../../src/codex/peer-bridge.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,iBAAiB,EACjB,wBAAwB,EAExB,4BAA4B,EAG5B,0BAA0B,EAC3B,MAAM,sBAAsB,CAAA;AAU7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AACxE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAE/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,MAAM,iBAAiB,GAAG,CAC9B,KAAK,EAAE,iBAAiB,GAAG,yBAAyB,EACpD,IAAI,EAAE,iBAAiB,GAAG,wBAAwB,KAC/C,OAAO,CAAC,IAAI,CAAC,CAAA;AAuClB,sEAAsE;AACtE,qBAAa,eAAe;IAQxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;IAV1B,qBAAqB,UAAQ;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsC;IACxE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsC;IACxE,OAAO,CAAC,MAAM,CAAQ;gBAGH,MAAM,EAAE,iBAAiB,EACzB,OAAO,EAAE,qBAAqB,EAC9B,OAAO,EAAE,iBAAiB,EAC1B,MAAM,CAAC,EAAE,UAAU,YAAA;IAGhC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;YAI9B,UAAU;IAgBxB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,IAAI,CAAA;KAAE,CAAC;IAK9C,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAiB/F,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE;IAM/D,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,MAAM,EAAE,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAuBlE,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,QAAQ,EAAE,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE;IAyB/E,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,4BAA4B,CAAC;IA6C3E,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,0BAA0B;IAqBxD,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE;IAMtE,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIhD,yBAAyB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAM3C,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiB3F,WAAW,CAAC,MAAM,GAAE,wBAAwB,CAAC,QAAQ,CAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAYjF,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAc/B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,WAAW;CAGpB"}
@@ -1,3 +1,5 @@
1
+ import { compactHistory } from '../compact-history.js';
2
+ import { previewCall } from './history-preview.js';
1
3
  import { Buffer } from 'node:buffer';
2
4
  import { CODEX_APP_TRANSFER_CHUNK_BYTES, MAX_ACTIVE_TRANSFERS_PER_DIRECTION, MAX_ALPHA_STREAMS_PER_CONNECTION, MAX_CODEX_APP_TRANSFER_BYTES, MAX_SECURE_MESSAGE_BYTES, TRANSFER_IDLE_MS, } from '@dsh-remote/protocol';
3
5
  import { z } from 'zod';
@@ -28,6 +30,7 @@ export class CodexPeerBridge {
28
30
  context;
29
31
  publish;
30
32
  logger;
33
+ compactHistoryEnabled = false;
31
34
  streams = new Map();
32
35
  incomingTransfers = new Map();
33
36
  outgoingTransfers = new Map();
@@ -44,7 +47,8 @@ export class CodexPeerBridge {
44
47
  async callDomain(input, logFailure) {
45
48
  this.requireOpen();
46
49
  try {
47
- return await this.domain.call(this.context.connectionId, input);
50
+ const result = await previewCall(this, input, value => this.domain.call(this.context.connectionId, value));
51
+ return this.compactHistoryEnabled && safeMethod(input) === 'dsh/sessionHistory' ? compactHistory(result) : result;
48
52
  }
49
53
  catch (error) {
50
54
  if (logFailure) {
@@ -1 +1 @@
1
- {"version":3,"file":"peer-bridge.js","sourceRoot":"","sources":["../../src/codex/peer-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"peer-bridge.js","sourceRoot":"","sources":["../../src/codex/peer-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAUpC,OAAO,EACL,8BAA8B,EAC9B,kCAAkC,EAClC,gCAAgC,EAChC,4BAA4B,EAC5B,wBAAwB,EACxB,gBAAgB,GACjB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAuB3C,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;CACrC,CAAC,CAAC,MAAM,EAAE,CAAA;AACX,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;AACrF,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC7B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,4BAA4B,CAAC;IACzE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC,CAAC,MAAM,EAAE,CAAA;AACX,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE;IAC7B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACrC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,8BAA8B,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;CAC/E,CAAC,CAAC,MAAM,EAAE,CAAA;AACX,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;AAC7E,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA;AAEtH,MAAM,kBAAkB,GAAG,gCAAgC,CAAA;AAC3D,MAAM,oBAAoB,GAAG,kCAAkC,CAAA;AAC/D,MAAM,8BAA8B,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAA;AAEtD,sEAAsE;AACtE,MAAM,OAAO,eAAe;IAQP;IACA;IACA;IACA;IAVnB,qBAAqB,GAAG,KAAK,CAAA;IACZ,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAA;IACnC,iBAAiB,GAAG,IAAI,GAAG,EAA4B,CAAA;IACvD,iBAAiB,GAAG,IAAI,GAAG,EAA4B,CAAA;IAChE,MAAM,GAAG,KAAK,CAAA;IAEtB,YACmB,MAAyB,EACzB,OAA8B,EAC9B,OAA0B,EAC1B,MAAmB;QAHnB,WAAM,GAAN,MAAM,CAAmB;QACzB,YAAO,GAAP,OAAO,CAAuB;QAC9B,YAAO,GAAP,OAAO,CAAmB;QAC1B,WAAM,GAAN,MAAM,CAAa;IACnC,CAAC;IAEJ,KAAK,CAAC,IAAI,CAAC,KAAc;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACrC,CAAC;IAEO,KAAK,CAAC,UAAU,CAAC,KAAc,EAAE,UAAmB;QAC1D,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAA;YAC1G,OAAO,IAAI,CAAC,qBAAqB,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,oBAAoB,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;QACnH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,mBAAmB,EAAE;oBACrC,MAAM,EAAE,UAAU,CAAC,KAAK,CAAC;oBACzB,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;iBAC3B,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC;IAED,OAAO,CAAC,KAAc;QACpB,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IAC9D,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAc;QAC7B,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC5C,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;YAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,wCAAwC,CAAC,CAAA;QACvH,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,kBAAkB,EAAE,CAAC;YAC5C,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,wDAAwD,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAC/G,CAAC;QACD,wEAAwE;QACxE,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YAChD,MAAM,EAAE,aAAa;YACrB,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE;SAC3D,CAAC,CAAA;QACF,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QAClD,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAA;IAC/E,CAAC;IAED,WAAW,CAAC,KAAc;QACxB,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC7C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QACpC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAA;IACpD,CAAC;IAED,YAAY,CAAC,KAAc;QACzB,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAA+B,CAAA;QAC5E,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,8BAA8B,CAAC,EAAE,CAAC;YACzF,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,4CAA4C,CAAC,CAAA;QACrF,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACnG,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,0CAA0C,CAAC,CAAA;QACpF,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,oBAAoB,EAAE,CAAC;YACxD,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,sCAAsC,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAC7F,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE;YAC5C,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,MAAM,EAAE,EAAE;YACV,aAAa,EAAE,CAAC;YAChB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;QACF,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAA;IACxD,CAAC;IAED,cAAc,CAAC,KAAc;QAC3B,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,KAAK,CAAgC,CAAA;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC9D,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,mCAAmC,CAAC,CAAA;QACzG,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YACpF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAChD,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,8DAA8D,CAAC,CAAA;QACvG,CAAC;QACD,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QAChD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAC5B,8BAA8B,EAC9B,QAAQ,CAAC,UAAU,GAAG,MAAM,CAAC,KAAK,GAAG,8BAA8B,CACpE,CAAA;QACD,IAAI,KAAK,CAAC,UAAU,KAAK,aAAa,EAAE,CAAC;YACvC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAChD,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,2CAA2C,CAAC,CAAA;QACpF,CAAC;QACD,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC3B,QAAQ,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,CAAA;QAC1C,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC/B,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAA;IAC/E,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,KAAc;QACjC,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC9D,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,mCAAmC,CAAC,CAAA;QACzG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAChD,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,WAAW,IAAI,QAAQ,CAAC,aAAa,KAAK,QAAQ,CAAC,UAAU,EAAE,CAAC;YACtG,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,mCAAmC,CAAC,CAAA;QAC5E,CAAC;QACD,IAAI,OAAgB,CAAA;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAC5H,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,sDAAsD,CAAC,CAAA;QAC/F,CAAC;QACD,IAAI,QAAiB,CAAA;QACrB,IAAI,CAAC;YACH,QAAQ,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,4BAA4B,EAAE;gBAC9C,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC;gBAC3B,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;aAC3B,CAAC,CAAA;YACF,MAAM,KAAK,CAAA;QACb,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,MAAM,aAAa,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAA;QACxE,IAAI,aAAa,CAAC,UAAU,IAAI,8BAA8B;YAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAA;QACnG,IAAI,aAAa,CAAC,UAAU,GAAG,4BAA4B,EAAE,CAAC;YAC5D,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,wDAAwD,CAAC,CAAA;QACpG,CAAC;QACD,IAAI,IAAI,CAAC,iBAAiB,CAAC,IAAI,IAAI,oBAAoB,EAAE,CAAC;YACxD,MAAM,IAAI,QAAQ,CAAC,cAAc,EAAE,+CAA+C,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QACtG,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,8BAA8B,CAAC,CAAA;QACxF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE;YAC5C,KAAK,EAAE,aAAa;YACpB,WAAW;YACX,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;SACtB,CAAC,CAAA;QACF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,aAAa,CAAC,UAAU,EAAE,WAAW,EAAE,CAAA;IAC9G,CAAC;IAED,YAAY,CAAC,KAAc;QACzB,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,cAAc,EAAE,CAAA;QACrB,MAAM,MAAM,GAAG,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAA+B,CAAA;QAC5E,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QAC9D,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,4CAA4C,CAAC,CAAA;QAClH,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;YAChF,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;YAChD,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,+DAA+D,CAAC,CAAA;QACxG,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,GAAG,8BAA8B,CAAA;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,8BAA8B,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;QACvF,QAAQ,CAAC,SAAS,IAAI,CAAC,CAAA;QACvB,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC/B,OAAO;YACL,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAC1E,CAAA;IACH,CAAC;IAED,aAAa,CAAC,KAAc;QAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;QACnH,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAA;IAClD,CAAC;IAED,qBAAqB,CAAC,QAAgB;QACpC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;IACtD,CAAC;IAED,yBAAyB,CAAC,QAAgB;QACxC,KAAK,MAAM,CAAC,QAAQ,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtD,IAAI,cAAc,KAAK,QAAQ;gBAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAChE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAgB,EAAE,KAA0C;QAC/E,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QACvB,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1C,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,cAAc,KAAK,QAAQ,CAAC;aAC3D,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAA;QAChC,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,GAAsB,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAA;YACnD,IAAI,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,wBAAwB,EAAE,CAAC;gBACzF,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;gBAC7B,MAAM,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAC7E,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,2CAA2C,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;gBAC5E,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAA;QAC7C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,SAA6C,QAAQ;QACrE,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QACvB,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAC9B,MAAM,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;YAClF,QAAQ;YACR,MAAM;SACP,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,KAAK,CAAC,QAAQ;QACZ,IAAI,IAAI,CAAC,MAAM;YAAE,OAAM;QACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAA;QAClB,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAC9B,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAA;QAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;QAChE,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;gBAC9F,QAAQ;gBACR,MAAM,EAAE,mBAAmB;aAC5B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;IAC9B,CAAC;IAEO,cAAc;QACpB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAA;QACjD,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpD,IAAI,QAAQ,CAAC,SAAS,GAAG,WAAW;gBAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACzE,CAAC;QACD,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACpD,IAAI,QAAQ,CAAC,SAAS,GAAG,WAAW;gBAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACzE,CAAC;IACH,CAAC;IAEO,WAAW;QACjB,IAAI,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,QAAQ,CAAC,yBAAyB,EAAE,iCAAiC,CAAC,CAAA;IACnG,CAAC;CACF;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,CAAC,kEAAkE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpF,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,mDAAmD,CAAC,CAAA;IAC5F,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC5C,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,KAAK,EAAE,CAAC;QACzC,MAAM,IAAI,QAAQ,CAAC,iBAAiB,EAAE,mDAAmD,CAAC,CAAA;IAC5F,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;AAC7E,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,IAAI,CAAA;IACxE,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAA;AACvF,CAAC;AAED,SAAS,YAAY,CAAC,MAA6B,EAAE,UAAkB;IACrE,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAA;IACzC,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;QACzB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAA;IAC5B,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function compactHistory<T>(value: T): T;
2
+ //# sourceMappingURL=compact-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compact-history.d.ts","sourceRoot":"","sources":["../src/compact-history.ts"],"names":[],"mappings":"AAuDA,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAE7C"}