dsh-winrm 0.3.1 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/client.js CHANGED
@@ -4,8 +4,9 @@ window.__ModuleLoader__.load({
4
4
  var module = { exports: {} };
5
5
  var exports = module.exports;
6
6
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
7
- let react = require("react");
7
+ let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
8
8
  let react_jsx_runtime = require("react/jsx-runtime");
9
+ let react = require("react");
9
10
  //#region src/protocol.ts
10
11
  const WINRM_API = {
11
12
  hosts: "/api/dsh-winrm/hosts",
@@ -407,7 +408,29 @@ const zh = {
407
408
  "transfer.kib": "KB",
408
409
  "transfer.mib": "MB",
409
410
  "transfer.dir": "目录",
410
- "transfer.file": "文件"
411
+ "transfer.file": "文件",
412
+ "tool.read": "读取远程文件",
413
+ "tool.write": "写入远程文件",
414
+ "tool.edit": "编辑远程文件",
415
+ "tool.running": "执行中…",
416
+ "tool.noDetail": "无卡片数据",
417
+ "tool.created": "新建 {bytes} 字节",
418
+ "tool.updated": "覆盖 {bytes} 字节",
419
+ "tool.replacements": "替换 {count} 处",
420
+ "tool.beyondBasis": "文件超过 diff 体积上限,仅显示路径",
421
+ "tool.truncatedByBytes": "已按字节上限截断",
422
+ "tool.truncatedLines": "{count} 行过长已截断",
423
+ "tool.codeLabel": "代码",
424
+ "tool.wrapLabel": "自动换行",
425
+ "tool.unwrapLabel": "取消自动换行",
426
+ "tool.window": "第 {shown} / {total} 行",
427
+ "tool.lines": "共 {count} 行",
428
+ "tool.copy": "复制",
429
+ "tool.copied": "已复制",
430
+ "tool.collapseAria": "收起",
431
+ "tool.expandAria": "展开剩余 {hidden} 行",
432
+ "tool.collapse": "收起",
433
+ "tool.expand": "展开其余 {hidden} 行"
411
434
  };
412
435
  const en = {
413
436
  "entry.label": "Windows",
@@ -519,7 +542,29 @@ const en = {
519
542
  "transfer.kib": "KB",
520
543
  "transfer.mib": "MB",
521
544
  "transfer.dir": "dir",
522
- "transfer.file": "file"
545
+ "transfer.file": "file",
546
+ "tool.read": "Read remote file",
547
+ "tool.write": "Write remote file",
548
+ "tool.edit": "Edit remote file",
549
+ "tool.running": "Working…",
550
+ "tool.noDetail": "No card data",
551
+ "tool.created": "Created {bytes} bytes",
552
+ "tool.updated": "Overwrote {bytes} bytes",
553
+ "tool.replacements": "{count} replacements",
554
+ "tool.beyondBasis": "File is past the diff size cap; showing the path only",
555
+ "tool.truncatedByBytes": "Cut at the byte budget",
556
+ "tool.truncatedLines": "{count} long lines truncated",
557
+ "tool.codeLabel": "Code",
558
+ "tool.wrapLabel": "Wrap lines",
559
+ "tool.unwrapLabel": "Do not wrap",
560
+ "tool.window": "{shown} of {total} lines",
561
+ "tool.lines": "{count} lines",
562
+ "tool.copy": "Copy",
563
+ "tool.copied": "Copied",
564
+ "tool.collapseAria": "Collapse",
565
+ "tool.expandAria": "Expand the remaining {hidden} lines",
566
+ "tool.collapse": "Collapse",
567
+ "tool.expand": "Show the remaining {hidden} lines"
523
568
  };
524
569
  /** Translate a key in one dictionary with optional {name} params. */
525
570
  function t(dict, key, values) {
@@ -554,6 +599,476 @@ function formatBytes(bytes) {
554
599
  return bytes + " B";
555
600
  }
556
601
  //#endregion
602
+ //#region src/client/tool/card-model.ts
603
+ /** Read one string field, falling back when it is absent or the wrong type. */
604
+ function str(source, key, fallback) {
605
+ const value = source[key];
606
+ return typeof value === "string" ? value : fallback;
607
+ }
608
+ /** Read one finite number field, falling back when it is absent or not numeric. */
609
+ function num(source, key, fallback) {
610
+ const value = source[key];
611
+ return typeof value === "number" && Number.isFinite(value) ? value : fallback;
612
+ }
613
+ /** Read one boolean field, defaulting to `false`. */
614
+ function bool(source, key) {
615
+ return source[key] === true;
616
+ }
617
+ /** Narrow an unknown value to a plain record. */
618
+ function record(value) {
619
+ return typeof value === "object" && value !== null && !Array.isArray(value) ? value : void 0;
620
+ }
621
+ /**
622
+ * Narrow a `winrm_read` metadata payload into a card.
623
+ * @param meta - the persisted payload, of unknown shape.
624
+ * @param fallbackPath - the authored path, used when the payload omits one.
625
+ * @returns the card, or `undefined` when the payload is not a read card.
626
+ */
627
+ function readCard(meta, fallbackPath) {
628
+ const source = record(meta);
629
+ if (source === void 0 || source.card !== "winrm-read") return void 0;
630
+ const path = str(source, "path", fallbackPath);
631
+ const error = str(source, "error", "");
632
+ if (error !== "") return {
633
+ kind: "error",
634
+ path,
635
+ message: error
636
+ };
637
+ const rawLines = Array.isArray(source.lines) ? source.lines : [];
638
+ const lines = [];
639
+ for (const entry of rawLines) {
640
+ const line = record(entry);
641
+ if (line === void 0) continue;
642
+ lines.push({
643
+ number: num(line, "number", lines.length + 1),
644
+ text: str(line, "text", "")
645
+ });
646
+ }
647
+ return {
648
+ kind: "read",
649
+ path,
650
+ offset: num(source, "offset", 1),
651
+ lines,
652
+ totalLines: num(source, "totalLines", lines.length),
653
+ encoding: str(source, "encoding", "utf8"),
654
+ truncatedByBytes: bool(source, "truncatedByBytes"),
655
+ truncatedLines: num(source, "truncatedLines", 0)
656
+ };
657
+ }
658
+ /**
659
+ * Narrow a `winrm_write` / `winrm_edit` metadata payload into a card.
660
+ * @param meta - the persisted payload, of unknown shape.
661
+ * @param fallbackPath - the authored path, used when the payload omits one.
662
+ * @param tool - which tool produced the payload.
663
+ * @returns the card, or `undefined` when the payload belongs to another card.
664
+ */
665
+ function diffCard(meta, fallbackPath, tool) {
666
+ const source = record(meta);
667
+ if (source === void 0 || source.card !== `winrm-${tool}`) return void 0;
668
+ const path = str(source, "path", fallbackPath);
669
+ const error = str(source, "error", "");
670
+ if (error !== "") return {
671
+ kind: "error",
672
+ path,
673
+ message: error
674
+ };
675
+ const rawDiffs = Array.isArray(source.diffs) ? source.diffs : [];
676
+ const hunks = [];
677
+ for (const entry of rawDiffs) {
678
+ const hunk = record(entry);
679
+ if (hunk === void 0) continue;
680
+ hunks.push({
681
+ oldText: str(hunk, "oldText", ""),
682
+ newText: str(hunk, "newText", "")
683
+ });
684
+ }
685
+ return {
686
+ kind: "diff",
687
+ tool,
688
+ path,
689
+ operation: source.operation === "create" ? "create" : "update",
690
+ bytes: num(source, "bytes", 0),
691
+ size: num(source, "size", 0),
692
+ replacements: num(source, "replacements", 0),
693
+ encoding: str(source, "encoding", "utf8"),
694
+ hunks,
695
+ beyondBasis: bool(source, "beyondBasis")
696
+ };
697
+ }
698
+ //#endregion
699
+ //#region \0dsh-css:/home/runner/work/dsh-winrm/dsh-winrm/src/client/tool/cards.module.css.mjs
700
+ const css$1 = ".X_s05W_wrap{flex-direction:column;min-width:0;display:flex}.X_s05W_wrap:hover .X_s05W_added,.X_s05W_wrap:focus-within .X_s05W_added{color:var(--dsw-alias-state-success-primary)}.X_s05W_wrap:hover .X_s05W_removed,.X_s05W_wrap:focus-within .X_s05W_removed{color:var(--dsw-alias-state-error-primary)}.X_s05W_sep{background:var(--dsw-alias-label-caption);border-radius:1px;flex:none;width:2px;height:2px;margin:0 8px}.X_s05W_summary{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));font-variant-numeric:tabular-nums;flex:0 auto;overflow:hidden}.X_s05W_meta{white-space:nowrap;font-size:var(--dsh-content-font-size-secondary,13px);line-height:calc(24px + var(--dsh-content-font-delta,0px));font-variant-numeric:tabular-nums;flex:none;margin-left:8px}.X_s05W_diffStat{white-space:nowrap;font-family:var(--ds-font-family-code);font-size:calc(var(--dsh-content-font-size-secondary,13px) - 2px);line-height:calc(24px + var(--dsh-content-font-delta,0px));font-variant-numeric:tabular-nums;flex:none;margin-left:10px;transform:translateY(.5px)}.X_s05W_added,.X_s05W_removed{color:inherit}.X_s05W_rowError{font-family:var(--dsw-font-family);align-items:baseline;gap:8px;padding:2px 0;font-size:12px;line-height:1.55;display:flex}.X_s05W_title{color:var(--dsw-alias-label-secondary);flex:none}.X_s05W_detail{min-width:0;color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.X_s05W_rowError .X_s05W_title{color:var(--dsw-alias-state-error-primary)}.X_s05W_rowError .X_s05W_detail{color:var(--dsw-alias-state-error-primary);white-space:normal;overflow-wrap:anywhere}.X_s05W_note{color:var(--dsw-alias-label-tertiary);font-family:var(--dsw-font-family);font-variant-numeric:tabular-nums;padding:4px 0 0;font-size:12px;line-height:1.55}";
701
+ const tagId$1 = "dsh-winrm/src/client/tool/cards.module.css";
702
+ if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
703
+ const tag = document.createElement("style");
704
+ tag.dataset.plugin = "dsh-winrm";
705
+ tag.dataset.pluginCss = tagId$1;
706
+ tag.textContent = css$1;
707
+ document.head.appendChild(tag);
708
+ }
709
+ var cards_module_css_default = {
710
+ "diffStat": "X_s05W_diffStat",
711
+ "rowError": "X_s05W_rowError",
712
+ "detail": "X_s05W_detail",
713
+ "added": "X_s05W_added",
714
+ "note": "X_s05W_note",
715
+ "removed": "X_s05W_removed",
716
+ "wrap": "X_s05W_wrap",
717
+ "summary": "X_s05W_summary",
718
+ "sep": "X_s05W_sep",
719
+ "meta": "X_s05W_meta",
720
+ "title": "X_s05W_title"
721
+ };
722
+ //#endregion
723
+ //#region src/client/tool/cards.tsx
724
+ /**
725
+ * Content lines a transcript card shows before the primitive collapses the
726
+ * middle. Half the primitive's own default (16), because a chat row summarizes
727
+ * inside a message flow while a dedicated panel is the reading surface. Mirrors
728
+ * the harness's `CHAT_READ_MAX_LINES` / `CHAT_DIFF_MAX_LINES`.
729
+ */
730
+ const CHAT_READ_MAX_LINES = 8;
731
+ const CHAT_DIFF_MAX_LINES = 9;
732
+ /** Grammar hint from a remote path's extension; unknown extensions stay plain. */
733
+ const LANG_BY_EXTENSION = {
734
+ bat: "bat",
735
+ cmd: "bat",
736
+ ps1: "powershell",
737
+ psd1: "powershell",
738
+ psm1: "powershell",
739
+ c: "c",
740
+ h: "c",
741
+ cpp: "cpp",
742
+ cc: "cpp",
743
+ hpp: "cpp",
744
+ cs: "csharp",
745
+ css: "css",
746
+ scss: "scss",
747
+ less: "less",
748
+ go: "go",
749
+ rs: "rust",
750
+ java: "java",
751
+ kt: "kotlin",
752
+ swift: "swift",
753
+ js: "javascript",
754
+ mjs: "javascript",
755
+ cjs: "javascript",
756
+ jsx: "javascript",
757
+ ts: "typescript",
758
+ mts: "typescript",
759
+ cts: "typescript",
760
+ tsx: "typescript",
761
+ json: "json",
762
+ jsonc: "jsonc",
763
+ yml: "yaml",
764
+ yaml: "yaml",
765
+ toml: "toml",
766
+ ini: "ini",
767
+ md: "markdown",
768
+ markdown: "markdown",
769
+ rst: "rst",
770
+ py: "python",
771
+ rb: "ruby",
772
+ php: "php",
773
+ pl: "perl",
774
+ lua: "lua",
775
+ sh: "bash",
776
+ bash: "bash",
777
+ zsh: "bash",
778
+ fish: "bash",
779
+ sql: "sql",
780
+ xml: "xml",
781
+ html: "html",
782
+ htm: "html",
783
+ vue: "vue",
784
+ svelte: "svelte",
785
+ diff: "diff",
786
+ patch: "diff",
787
+ csv: "csv",
788
+ tsv: "tsv"
789
+ };
790
+ /**
791
+ * Guess the grammar hint from a path's extension.
792
+ * @param path - the remote path as authored.
793
+ * @returns the language id, or undefined to keep the block plain.
794
+ */
795
+ function langOf(path) {
796
+ const dot = path.lastIndexOf(".");
797
+ if (dot < 0) return void 0;
798
+ const ext = path.slice(dot + 1).toLowerCase();
799
+ return Object.hasOwn(LANG_BY_EXTENSION, ext) ? LANG_BY_EXTENSION[ext] : void 0;
800
+ }
801
+ /** Localized chrome for {@link ReadBlock}. */
802
+ function readLabels() {
803
+ return {
804
+ codeLabel: tt("tool.codeLabel"),
805
+ wrapLabel: tt("tool.wrapLabel"),
806
+ unwrapLabel: tt("tool.unwrapLabel"),
807
+ window: (shown, total) => tt("tool.window", {
808
+ shown,
809
+ total
810
+ }),
811
+ copy: tt("tool.copy"),
812
+ copied: tt("tool.copied"),
813
+ collapseAria: tt("tool.collapseAria"),
814
+ expandAria: (hidden) => tt("tool.expandAria", { hidden }),
815
+ collapse: tt("tool.collapse"),
816
+ expand: (hidden) => tt("tool.expand", { hidden })
817
+ };
818
+ }
819
+ /** Localized chrome for {@link DiffBlock}. */
820
+ function diffLabels() {
821
+ return {
822
+ codeLabel: tt("tool.codeLabel"),
823
+ wrapLabel: tt("tool.wrapLabel"),
824
+ unwrapLabel: tt("tool.unwrapLabel"),
825
+ copy: tt("tool.copy"),
826
+ copied: tt("tool.copied"),
827
+ collapseAria: tt("tool.collapseAria"),
828
+ expandAria: (hidden) => tt("tool.expandAria", { hidden }),
829
+ collapse: tt("tool.collapse"),
830
+ expand: (hidden) => tt("tool.expand", { hidden })
831
+ };
832
+ }
833
+ /** One-line row for a call that failed: the message replaces the card. */
834
+ function Row(props) {
835
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
836
+ className: cards_module_css_default.rowError,
837
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
838
+ className: cards_module_css_default.title,
839
+ children: props.title
840
+ }), props.detail !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
841
+ className: cards_module_css_default.detail,
842
+ children: props.detail
843
+ })]
844
+ });
845
+ }
846
+ /** Read the persisted metadata off a settled result node. */
847
+ function metaOf(block) {
848
+ if (typeof block !== "object" || block === null) return void 0;
849
+ return block.meta;
850
+ }
851
+ /**
852
+ * The remote path a call named, read from its arguments.
853
+ *
854
+ * Available from the first dispatch onward, which is what keeps the header line
855
+ * stable across the running → settled transition: the row keeps saying which
856
+ * file it is working on instead of swapping its text when the result lands. A
857
+ * settled node carries the call head under `call`; a running one is the head.
858
+ * @param block - any phase of the Tool block.
859
+ * @returns the authored path, or undefined when none was named yet.
860
+ */
861
+ function argsPath(block) {
862
+ if (typeof block !== "object" || block === null) return void 0;
863
+ const record = block;
864
+ const head = record.call ?? record;
865
+ if (typeof head.argsRaw !== "string" || head.argsRaw === "") return void 0;
866
+ let parsed;
867
+ try {
868
+ parsed = JSON.parse(head.argsRaw);
869
+ } catch {
870
+ return;
871
+ }
872
+ if (typeof parsed !== "object" || parsed === null) return void 0;
873
+ const path = parsed.remotePath;
874
+ return typeof path === "string" && path !== "" ? path : void 0;
875
+ }
876
+ /** Count the lines a hunk adds and removes. */
877
+ function changedLines(card) {
878
+ let added = 0;
879
+ let removed = 0;
880
+ for (const hunk of card.hunks) {
881
+ added += hunk.newText === "" ? 0 : hunk.newText.split("\n").length;
882
+ removed += hunk.oldText === "" ? 0 : hunk.oldText.split("\n").length;
883
+ }
884
+ return {
885
+ added,
886
+ removed
887
+ };
888
+ }
889
+ /** The `+n -m` figure a collapsed write or edit row shows beside its path. */
890
+ function changedTotals(card) {
891
+ const totals = changedLines(card);
892
+ return totals.added === 0 && totals.removed === 0 ? void 0 : totals;
893
+ }
894
+ /** The summary line a write or edit card shows under its diff. */
895
+ function diffSummary(card) {
896
+ const parts = [];
897
+ if (card.tool === "write") parts.push(tt(card.operation === "create" ? "tool.created" : "tool.updated", { bytes: card.bytes }));
898
+ else parts.push(tt("tool.replacements", { count: card.replacements }));
899
+ if (card.encoding !== "utf8") parts.push(card.encoding);
900
+ if (card.beyondBasis) parts.push(tt("tool.beyondBasis"));
901
+ return parts.join(" · ");
902
+ }
903
+ /**
904
+ * One collapsed file row that expands into a card.
905
+ * @param props - the disclosure state, the header material, and the card body.
906
+ * @returns the disclosure row, body included only while expanded.
907
+ */
908
+ function FileDisclosure(props) {
909
+ const meta = props.meta ?? "";
910
+ const hasPath = props.path !== "";
911
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
912
+ className: cards_module_css_default.wrap,
913
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.DisclosureRow, {
914
+ icon: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.FileTypeIcon, {
915
+ path: props.path,
916
+ size: 14
917
+ }),
918
+ title: props.title,
919
+ open: props.open,
920
+ expandable: props.expandable,
921
+ running: props.running ?? false,
922
+ expandOnRowClick: props.expandable,
923
+ onToggle: props.onToggle,
924
+ collapsedContent: hasPath || meta !== "" ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [
925
+ hasPath && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
926
+ className: cards_module_css_default.sep,
927
+ "aria-hidden": true
928
+ }),
929
+ hasPath && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
930
+ className: cards_module_css_default.summary,
931
+ children: props.path
932
+ }),
933
+ meta !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
934
+ className: cards_module_css_default.meta,
935
+ children: meta
936
+ }),
937
+ props.diff !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
938
+ className: cards_module_css_default.diffStat,
939
+ children: [
940
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
941
+ className: cards_module_css_default.added,
942
+ children: `+${props.diff.added}`
943
+ }),
944
+ " ",
945
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
946
+ className: cards_module_css_default.removed,
947
+ children: `-${props.diff.removed}`
948
+ })
949
+ ]
950
+ })
951
+ ] }) : void 0,
952
+ children: props.children
953
+ })
954
+ });
955
+ }
956
+ /** Render the settled read card. */
957
+ function ReadView(props) {
958
+ const { card, open, onToggle } = props;
959
+ const notes = [];
960
+ if (card.truncatedByBytes) notes.push(tt("tool.truncatedByBytes"));
961
+ if (card.truncatedLines > 0) notes.push(tt("tool.truncatedLines", { count: card.truncatedLines }));
962
+ if (card.encoding !== "utf8") notes.push(card.encoding);
963
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(FileDisclosure, {
964
+ path: card.path,
965
+ title: tt("tool.read"),
966
+ meta: tt("tool.lines", { count: card.totalLines }),
967
+ open,
968
+ expandable: true,
969
+ onToggle,
970
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.ReadBlock, {
971
+ label: card.path,
972
+ lines: card.lines,
973
+ totalLines: card.totalLines,
974
+ lang: langOf(card.path),
975
+ labels: readLabels(),
976
+ maxLines: CHAT_READ_MAX_LINES
977
+ }), notes.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
978
+ className: cards_module_css_default.note,
979
+ children: notes.join(" · ")
980
+ })]
981
+ });
982
+ }
983
+ /** Render the settled write or edit card. */
984
+ function DiffView(props) {
985
+ const { card, open, onToggle } = props;
986
+ const diffs = card.hunks.map((hunk) => ({
987
+ path: card.path,
988
+ oldText: hunk.oldText === "" ? null : hunk.oldText,
989
+ newText: hunk.newText
990
+ }));
991
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(FileDisclosure, {
992
+ path: card.path,
993
+ title: tt(card.tool === "write" ? "tool.write" : "tool.edit"),
994
+ diff: changedTotals(card),
995
+ open,
996
+ expandable: diffs.length > 0,
997
+ onToggle,
998
+ children: [diffs.length > 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.DiffBlock, {
999
+ diffs,
1000
+ labels: diffLabels(),
1001
+ maxLines: CHAT_DIFF_MAX_LINES
1002
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
1003
+ className: cards_module_css_default.note,
1004
+ children: diffSummary(card)
1005
+ })]
1006
+ });
1007
+ }
1008
+ /** Shared driver: one card per stage, with the model built from the metadata. */
1009
+ function FileCardView(props) {
1010
+ const { phase, block, tool, useDisclosure } = props;
1011
+ const disclosure = useDisclosure();
1012
+ const title = tt(`tool.${tool}`);
1013
+ const path = argsPath(block) ?? "";
1014
+ if (phase !== "result") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileDisclosure, {
1015
+ path,
1016
+ title,
1017
+ meta: path === "" ? tt("tool.running") : void 0,
1018
+ open: false,
1019
+ expandable: false,
1020
+ running: true,
1021
+ onToggle: () => {},
1022
+ children: null
1023
+ });
1024
+ const meta = metaOf(block);
1025
+ const card = tool === "read" ? readCard(meta, path) : diffCard(meta, path, tool);
1026
+ if (card === void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileDisclosure, {
1027
+ path,
1028
+ title,
1029
+ meta: tt("tool.noDetail"),
1030
+ open: false,
1031
+ expandable: false,
1032
+ onToggle: () => {},
1033
+ children: null
1034
+ });
1035
+ if (card.kind === "error") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Row, {
1036
+ title,
1037
+ detail: card.message
1038
+ });
1039
+ if (card.kind === "read") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ReadView, {
1040
+ card,
1041
+ open: disclosure.expanded,
1042
+ onToggle: disclosure.toggle
1043
+ });
1044
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DiffView, {
1045
+ card,
1046
+ open: disclosure.expanded,
1047
+ onToggle: disclosure.toggle
1048
+ });
1049
+ }
1050
+ /** Card for `winrm_read`. */
1051
+ function WinrmReadCard(props) {
1052
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileCardView, {
1053
+ ...props,
1054
+ tool: "read"
1055
+ });
1056
+ }
1057
+ /** Card for `winrm_write`. */
1058
+ function WinrmWriteCard(props) {
1059
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileCardView, {
1060
+ ...props,
1061
+ tool: "write"
1062
+ });
1063
+ }
1064
+ /** Card for `winrm_edit`. */
1065
+ function WinrmEditCard(props) {
1066
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(FileCardView, {
1067
+ ...props,
1068
+ tool: "edit"
1069
+ });
1070
+ }
1071
+ //#endregion
557
1072
  //#region \0dsh-css:/home/runner/work/dsh-winrm/dsh-winrm/src/client/panel/panel.module.css.mjs
558
1073
  const css = ".hAbY3W_entry{width:100%;height:32px;color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:0 12px;font-size:13px;display:flex}.hAbY3W_entry:hover{background:var(--dsw-specific-sidebar-nav-item-hover);color:var(--dsw-alias-label-primary)}.hAbY3W_entry[data-active]{background:var(--dsw-specific-sidebar-nav-item-active);color:var(--dsw-alias-label-primary);font-weight:600}.hAbY3W_entryIcon{flex:none;justify-content:center;align-items:center;display:inline-flex}.hAbY3W_entryLabel{text-overflow:ellipsis;overflow:hidden}[data-dsh-frame][data-sidebar-collapsed] .hAbY3W_entry{justify-content:center;width:100%;padding:0}[data-dsh-frame][data-sidebar-collapsed] .hAbY3W_entryLabel{display:none}.hAbY3W_panel{background:var(--dsw-alias-bg-base);min-width:0;height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);flex-direction:column;gap:10px;padding:14px 16px 16px;display:flex}.hAbY3W_panelHeader{flex:none;align-items:center;gap:10px;display:flex}.hAbY3W_panelTitle{color:var(--dsw-alias-label-primary);white-space:nowrap;flex:1;margin:0;font-size:16px;font-weight:700}.hAbY3W_backButton{align-items:center;gap:4px;display:inline-flex}.hAbY3W_tabBar{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;gap:2px;display:flex}.hAbY3W_tab{color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;padding:7px 14px;font-size:13px}.hAbY3W_tab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}.hAbY3W_tab[data-active]{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-state-business-primary);font-weight:600}.hAbY3W_panelContent{flex-direction:column;flex:1;min-height:0;display:flex;overflow:hidden}.hAbY3W_tabBody{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow-y:auto}.hAbY3W_fillBody{flex-direction:column;flex:1;gap:10px;min-height:0;display:flex;overflow:hidden}.hAbY3W_toolbar,.hAbY3W_controls{flex-wrap:wrap;flex:none;align-items:center;gap:8px;display:flex}.hAbY3W_controls .hAbY3W_input{flex:0 260px;min-width:150px}.hAbY3W_toolbarSpacer{flex:1}.hAbY3W_search{min-width:120px;color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;outline:none;flex:0 260px;padding:6px 10px;font-size:13px}.hAbY3W_search::placeholder{color:var(--dsw-alias-label-tertiary)}.hAbY3W_groupBySelect{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;outline:none;padding:6px 8px;font-size:13px}.hAbY3W_groupSection+.hAbY3W_groupSection{border-top:1px solid var(--dsw-alias-border-l1)}.hAbY3W_groupHeader{background:var(--dsw-alias-bg-base,var(--dsw-specific-input-major));align-items:center;gap:8px;padding:4px 8px;display:flex;position:sticky;top:0}.hAbY3W_groupToggle{min-width:0;color:var(--dsw-alias-label-primary);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:6px;flex:1;align-items:center;gap:6px;padding:4px 6px;font-size:12.5px;font-weight:500;display:flex}.hAbY3W_groupToggle:hover{background:var(--dsw-alias-interactive-bg-hover)}.hAbY3W_groupChevron{border-right:1.5px solid var(--dsw-alias-label-tertiary);border-bottom:1.5px solid var(--dsw-alias-label-tertiary);flex:none;width:7px;height:7px;margin-bottom:2px;transition:transform .12s;transform:rotate(45deg)}.hAbY3W_groupChevron[data-collapsed]{margin-bottom:0;transform:rotate(-45deg)}.hAbY3W_groupName{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.hAbY3W_groupCount{color:var(--dsw-alias-label-tertiary);flex:none;font-weight:400}.hAbY3W_tableWrap{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex:1;min-height:0;overflow:auto}.hAbY3W_table{border-collapse:collapse;width:100%;font-size:12.5px}.hAbY3W_table th{z-index:1;text-align:left;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);border-bottom:1px solid var(--dsw-alias-border-l1);white-space:nowrap;padding:8px 10px;font-weight:600;position:sticky;top:0}.hAbY3W_table td{border-bottom:1px solid var(--dsw-alias-separator-primary);vertical-align:top;padding:7px 10px}.hAbY3W_table tbody tr:last-child td{border-bottom:none}.hAbY3W_table tbody tr:hover td{background:var(--dsw-alias-interactive-bg-hover)}.hAbY3W_mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.hAbY3W_cellMuted{color:var(--dsw-alias-label-tertiary)}.hAbY3W_actions{white-space:nowrap;align-items:center;gap:8px;display:flex}.hAbY3W_inlineTest{color:var(--dsw-alias-label-secondary);align-items:center;gap:6px;font-size:11.5px;display:inline-flex}.hAbY3W_inlineTest[data-status=ok]{color:var(--dsw-alias-state-success-primary)}.hAbY3W_inlineTest[data-status=fail]{color:var(--dsw-alias-state-error-primary)}.hAbY3W_badge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px;line-height:1.6;display:inline-block}.hAbY3W_badge[data-kind=key]{color:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary)}.hAbY3W_badge[data-kind=password]{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}.hAbY3W_badge[data-status=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.hAbY3W_badge[data-status=fail]{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}.hAbY3W_badge[data-status=timeout]{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}.hAbY3W_primaryButton{color:var(--dsw-alias-label-primary-foreground);background:var(--dsw-alias-button-info-fill);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;padding:6px 14px;font-size:13px;font-weight:600}.hAbY3W_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}.hAbY3W_primaryButton:disabled{opacity:.5;cursor:default}.hAbY3W_ghostButton{color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:5px 12px;font-size:12px}.hAbY3W_ghostButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}.hAbY3W_ghostButton:disabled{opacity:.45;cursor:default}.hAbY3W_iconButton{width:26px;height:26px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-radius:6px;justify-content:center;align-items:center;padding:0;font-size:13px;display:inline-flex}.hAbY3W_iconButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.hAbY3W_linkButton{color:var(--dsw-alias-state-business-primary);cursor:pointer;white-space:nowrap;background:0 0;border:none;padding:0;font-size:12px}.hAbY3W_linkButton:hover:not(:disabled){text-decoration:underline}.hAbY3W_linkButton:disabled{opacity:.45;cursor:default}.hAbY3W_linkButton[data-danger]{color:var(--dsw-alias-state-error-primary)}.hAbY3W_spinner{border:2px solid var(--dsw-alias-state-business-primary);vertical-align:-1px;border-top-color:#0000;border-radius:50%;flex:none;width:11px;height:11px;animation:.8s linear infinite hAbY3W_dshSshSpin;display:inline-block}@keyframes hAbY3W_dshSshSpin{to{transform:rotate(360deg)}}.hAbY3W_banner{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;border-radius:8px;padding:8px 12px;font-size:12.5px;line-height:1.5}.hAbY3W_banner[data-kind=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}.hAbY3W_banner[data-kind=error]{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}.hAbY3W_banner[data-kind=info]{color:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary)}.hAbY3W_empty,.hAbY3W_loading{text-align:center;color:var(--dsw-alias-label-tertiary);padding:28px 12px;font-size:12.5px}.hAbY3W_modalBackdrop{z-index:40;background:var(--dsw-alias-bg-mask-1);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.hAbY3W_modal{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);width:min(560px,100vw - 48px);max-height:calc(100vh - 96px);box-shadow:var(--dsw-shadow-lv3);color:var(--dsw-alias-label-primary);border-radius:14px;flex-direction:column;gap:12px;padding:18px;display:flex;overflow-y:auto}.hAbY3W_modalTitle{margin:0;font-size:15px;font-weight:700}.hAbY3W_modalFooter{justify-content:flex-end;gap:10px;margin-top:4px;display:flex}.hAbY3W_formError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}.hAbY3W_hint{color:var(--dsw-alias-label-tertiary);font-size:11.5px}.hAbY3W_field{flex-direction:column;gap:5px;display:flex}.hAbY3W_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}.hAbY3W_input{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);resize:vertical;border-radius:8px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px}.hAbY3W_input:focus{border-color:var(--dsw-alias-state-business-primary)}.hAbY3W_input::placeholder{color:var(--dsw-alias-label-tertiary)}.hAbY3W_input:disabled{opacity:.55}.hAbY3W_formRow{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 12px;display:grid}.hAbY3W_radioRow{align-items:center;gap:16px;display:flex}.hAbY3W_radioLabel{color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:6px;font-size:13px;display:inline-flex}.hAbY3W_termBody{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex;overflow:hidden}.hAbY3W_termWrap{border:1px solid var(--dsw-alias-border-l1);background:#0b0e14;border-radius:10px;flex:1;min-height:0;position:relative;overflow:hidden}.hAbY3W_termContainer{position:absolute;inset:8px 10px}.hAbY3W_termPlaceholder{z-index:2;text-align:center;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-base);justify-content:center;align-items:center;padding:0 24px;font-size:12.5px;display:flex;position:absolute;inset:0}.hAbY3W_hiddenFile{display:none}.hAbY3W_browsePanel{border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex-direction:column;flex:none;display:flex;overflow:hidden}.hAbY3W_browseHeader{background:var(--dsw-alias-bg-layer-2);border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:8px;padding:8px 10px;display:flex}.hAbY3W_browsePath{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);flex:1;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;overflow:hidden}.hAbY3W_browseList{max-height:240px;overflow-y:auto}.hAbY3W_dirRow{text-align:left;width:100%;font:inherit;color:var(--dsw-alias-label-primary);border:none;border-bottom:1px solid var(--dsw-alias-separator-primary);cursor:pointer;background:0 0;grid-template-columns:minmax(0,1fr) auto auto;gap:12px;padding:5px 10px;font-size:12.5px;display:grid}.hAbY3W_dirRow:hover{background:var(--dsw-alias-interactive-bg-hover)}.hAbY3W_dirRow[data-type=dir] .hAbY3W_dirName{color:var(--dsw-alias-state-business-primary)}.hAbY3W_dirRow[data-up]{color:var(--dsw-alias-label-secondary)}.hAbY3W_dirName{text-overflow:ellipsis;white-space:nowrap;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;overflow:hidden}.hAbY3W_dirType{color:var(--dsw-alias-label-tertiary);white-space:nowrap}.hAbY3W_dirSize{color:var(--dsw-alias-label-tertiary);white-space:nowrap;text-align:right}.hAbY3W_transferBlock{flex-direction:column;flex:none;gap:6px;display:flex}.hAbY3W_progressMeta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}.hAbY3W_progressTrack{background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;height:8px;overflow:hidden}.hAbY3W_progressBar{background:var(--dsw-alias-state-business-primary);border-radius:999px;height:100%;transition:width .12s linear}.hAbY3W_tunnelList{flex-direction:column;flex:none;gap:8px;display:flex}.hAbY3W_tunnelRow{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:10px;align-items:center;gap:10px;padding:8px 12px;display:flex}.hAbY3W_tunnelRow[data-state=forwarding]{border-color:var(--dsw-alias-state-success-primary)}.hAbY3W_tunnelRow[data-state=connecting]{border-color:var(--dsw-alias-state-warn-primary)}.hAbY3W_tunnelRow[data-state=failed]{border-color:var(--dsw-alias-state-error-primary)}.hAbY3W_tunnelLabel{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;overflow:hidden}.hAbY3W_formCard{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex-direction:column;flex:none;gap:10px;padding:12px;display:flex}.hAbY3W_clusterForm{flex-direction:column;flex:none;gap:8px;display:flex}.hAbY3W_clusterFilters{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;display:grid}.hAbY3W_commandInput{min-height:96px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.hAbY3W_cellDetails summary{cursor:pointer;color:var(--dsw-alias-label-secondary);font-size:12px}.hAbY3W_cellPre{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;border-radius:6px;max-height:180px;margin:4px 0 0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;overflow:auto}.hAbY3W_consoleWrap{flex-direction:column;flex:1;gap:8px;min-height:0;display:flex}.hAbY3W_consoleHeader{flex:none;align-items:center;gap:8px;display:flex}.hAbY3W_consoleOutput{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;min-height:0;color:var(--dsw-alias-label-primary);border-radius:6px;flex:1;margin:0;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;line-height:1.45;overflow:auto}.hAbY3W_consoleInputRow{flex:none;align-items:center;gap:8px;display:flex}.hAbY3W_consoleInputRow .hAbY3W_input{flex:1}.hAbY3W_utf8Note{color:var(--dsw-alias-label-tertiary);flex:none;font-size:11.5px}.hAbY3W_checkRow{align-items:center;gap:6px;font-size:13px;display:flex}.hAbY3W_dialogOverlay{z-index:120;background:#0006;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.hAbY3W_dialog{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:12px;flex-direction:column;gap:10px;width:min(520px,100vw - 48px);max-height:calc(100vh - 96px);padding:16px;display:flex;overflow-y:auto}.hAbY3W_dialogTitle{margin:0;font-size:15px;font-weight:700}.hAbY3W_field{flex-direction:column;gap:4px;font-size:13px;display:flex}.hAbY3W_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px}.hAbY3W_fieldHint{color:var(--dsw-alias-label-tertiary);font-size:11.5px}.hAbY3W_formRow{align-items:flex-start;gap:10px;display:flex}.hAbY3W_formRow .hAbY3W_field{flex:1}.hAbY3W_formError{color:var(--dsw-alias-state-error-primary);font-size:12.5px}.hAbY3W_badge[data-kind=ok]{color:var(--dsw-alias-state-success-primary)}.hAbY3W_badge[data-kind=muted]{color:var(--dsw-alias-label-secondary)}.hAbY3W_badge[data-kind=password]{color:var(--dsw-alias-state-info-primary)}";
559
1074
  const tagId = "dsh-winrm/src/client/panel/panel.module.css";
@@ -565,93 +1080,93 @@ if (typeof document !== "undefined" && document.querySelector("style[data-plugin
565
1080
  document.head.appendChild(tag);
566
1081
  }
567
1082
  var panel_module_css_default = {
568
- "formRow": "hAbY3W_formRow",
569
- "termPlaceholder": "hAbY3W_termPlaceholder",
570
- "entryLabel": "hAbY3W_entryLabel",
571
- "search": "hAbY3W_search",
572
- "inlineTest": "hAbY3W_inlineTest",
573
- "loading": "hAbY3W_loading",
574
- "checkRow": "hAbY3W_checkRow",
575
- "tabBody": "hAbY3W_tabBody",
576
1083
  "linkButton": "hAbY3W_linkButton",
577
- "browseList": "hAbY3W_browseList",
1084
+ "browsePath": "hAbY3W_browsePath",
578
1085
  "dirRow": "hAbY3W_dirRow",
579
- "clusterFilters": "hAbY3W_clusterFilters",
580
- "cellPre": "hAbY3W_cellPre",
581
- "dialog": "hAbY3W_dialog",
582
- "fieldLabel": "hAbY3W_fieldLabel",
583
- "panelContent": "hAbY3W_panelContent",
584
- "spinner": "hAbY3W_spinner",
585
- "transferBlock": "hAbY3W_transferBlock",
586
- "consoleOutput": "hAbY3W_consoleOutput",
587
- "table": "hAbY3W_table",
1086
+ "dirType": "hAbY3W_dirType",
1087
+ "toolbarSpacer": "hAbY3W_toolbarSpacer",
588
1088
  "dialogOverlay": "hAbY3W_dialogOverlay",
589
- "tunnelRow": "hAbY3W_tunnelRow",
590
- "browseHeader": "hAbY3W_browseHeader",
591
- "primaryButton": "hAbY3W_primaryButton",
592
- "panelHeader": "hAbY3W_panelHeader",
593
- "consoleInputRow": "hAbY3W_consoleInputRow",
594
- "entry": "hAbY3W_entry",
595
- "groupSection": "hAbY3W_groupSection",
596
- "panelTitle": "hAbY3W_panelTitle",
1089
+ "table": "hAbY3W_table",
1090
+ "backButton": "hAbY3W_backButton",
1091
+ "ghostButton": "hAbY3W_ghostButton",
1092
+ "dirName": "hAbY3W_dirName",
1093
+ "groupBySelect": "hAbY3W_groupBySelect",
1094
+ "dirSize": "hAbY3W_dirSize",
1095
+ "tabBody": "hAbY3W_tabBody",
1096
+ "tunnelLabel": "hAbY3W_tunnelLabel",
1097
+ "clusterForm": "hAbY3W_clusterForm",
1098
+ "checkRow": "hAbY3W_checkRow",
1099
+ "formError": "hAbY3W_formError",
1100
+ "progressBar": "hAbY3W_progressBar",
597
1101
  "banner": "hAbY3W_banner",
598
- "empty": "hAbY3W_empty",
1102
+ "modal": "hAbY3W_modal",
1103
+ "groupName": "hAbY3W_groupName",
1104
+ "input": "hAbY3W_input",
1105
+ "entryIcon": "hAbY3W_entryIcon",
1106
+ "hint": "hAbY3W_hint",
1107
+ "fillBody": "hAbY3W_fillBody",
1108
+ "transferBlock": "hAbY3W_transferBlock",
1109
+ "groupSection": "hAbY3W_groupSection",
599
1110
  "modalTitle": "hAbY3W_modalTitle",
600
- "modalFooter": "hAbY3W_modalFooter",
1111
+ "progressTrack": "hAbY3W_progressTrack",
1112
+ "actions": "hAbY3W_actions",
1113
+ "tab": "hAbY3W_tab",
1114
+ "utf8Note": "hAbY3W_utf8Note",
1115
+ "panelTitle": "hAbY3W_panelTitle",
1116
+ "consoleOutput": "hAbY3W_consoleOutput",
1117
+ "hiddenFile": "hAbY3W_hiddenFile",
1118
+ "tunnelRow": "hAbY3W_tunnelRow",
601
1119
  "groupCount": "hAbY3W_groupCount",
602
- "radioRow": "hAbY3W_radioRow",
1120
+ "spinner": "hAbY3W_spinner",
1121
+ "termPlaceholder": "hAbY3W_termPlaceholder",
1122
+ "mono": "hAbY3W_mono",
1123
+ "modalBackdrop": "hAbY3W_modalBackdrop",
1124
+ "cellDetails": "hAbY3W_cellDetails",
603
1125
  "termBody": "hAbY3W_termBody",
604
- "groupName": "hAbY3W_groupName",
605
- "dirSize": "hAbY3W_dirSize",
606
- "field": "hAbY3W_field",
607
- "progressMeta": "hAbY3W_progressMeta",
1126
+ "cellPre": "hAbY3W_cellPre",
608
1127
  "fieldHint": "hAbY3W_fieldHint",
609
- "utf8Note": "hAbY3W_utf8Note",
610
- "panel": "hAbY3W_panel",
611
- "hiddenFile": "hAbY3W_hiddenFile",
612
- "backButton": "hAbY3W_backButton",
613
1128
  "tableWrap": "hAbY3W_tableWrap",
614
- "clusterForm": "hAbY3W_clusterForm",
615
- "tab": "hAbY3W_tab",
616
- "input": "hAbY3W_input",
617
- "tunnelLabel": "hAbY3W_tunnelLabel",
618
- "iconButton": "hAbY3W_iconButton",
619
- "actions": "hAbY3W_actions",
620
- "fillBody": "hAbY3W_fillBody",
621
- "toolbarSpacer": "hAbY3W_toolbarSpacer",
622
- "ghostButton": "hAbY3W_ghostButton",
623
- "termWrap": "hAbY3W_termWrap",
624
- "browsePanel": "hAbY3W_browsePanel",
625
- "browsePath": "hAbY3W_browsePath",
626
- "modal": "hAbY3W_modal",
627
- "groupBySelect": "hAbY3W_groupBySelect",
628
- "groupHeader": "hAbY3W_groupHeader",
629
1129
  "dshSshSpin": "hAbY3W_dshSshSpin",
630
- "hint": "hAbY3W_hint",
631
- "dirName": "hAbY3W_dirName",
632
- "dirType": "hAbY3W_dirType",
633
- "progressBar": "hAbY3W_progressBar",
634
- "formCard": "hAbY3W_formCard",
635
- "modalBackdrop": "hAbY3W_modalBackdrop",
1130
+ "field": "hAbY3W_field",
1131
+ "fieldLabel": "hAbY3W_fieldLabel",
636
1132
  "commandInput": "hAbY3W_commandInput",
637
- "cellDetails": "hAbY3W_cellDetails",
638
- "progressTrack": "hAbY3W_progressTrack",
639
- "dialogTitle": "hAbY3W_dialogTitle",
640
- "controls": "hAbY3W_controls",
641
- "termContainer": "hAbY3W_termContainer",
642
1133
  "consoleWrap": "hAbY3W_consoleWrap",
1134
+ "panel": "hAbY3W_panel",
1135
+ "dialogTitle": "hAbY3W_dialogTitle",
1136
+ "browseHeader": "hAbY3W_browseHeader",
1137
+ "inlineTest": "hAbY3W_inlineTest",
1138
+ "browseList": "hAbY3W_browseList",
643
1139
  "consoleHeader": "hAbY3W_consoleHeader",
644
- "radioLabel": "hAbY3W_radioLabel",
645
- "entryIcon": "hAbY3W_entryIcon",
1140
+ "consoleInputRow": "hAbY3W_consoleInputRow",
1141
+ "formRow": "hAbY3W_formRow",
646
1142
  "badge": "hAbY3W_badge",
647
- "mono": "hAbY3W_mono",
648
- "formError": "hAbY3W_formError",
1143
+ "clusterFilters": "hAbY3W_clusterFilters",
1144
+ "primaryButton": "hAbY3W_primaryButton",
649
1145
  "toolbar": "hAbY3W_toolbar",
650
1146
  "groupToggle": "hAbY3W_groupToggle",
651
- "groupChevron": "hAbY3W_groupChevron",
652
- "tabBar": "hAbY3W_tabBar",
1147
+ "modalFooter": "hAbY3W_modalFooter",
1148
+ "radioRow": "hAbY3W_radioRow",
1149
+ "progressMeta": "hAbY3W_progressMeta",
1150
+ "search": "hAbY3W_search",
1151
+ "browsePanel": "hAbY3W_browsePanel",
1152
+ "termWrap": "hAbY3W_termWrap",
1153
+ "entry": "hAbY3W_entry",
1154
+ "controls": "hAbY3W_controls",
1155
+ "empty": "hAbY3W_empty",
1156
+ "panelHeader": "hAbY3W_panelHeader",
1157
+ "loading": "hAbY3W_loading",
1158
+ "dialog": "hAbY3W_dialog",
1159
+ "formCard": "hAbY3W_formCard",
1160
+ "panelContent": "hAbY3W_panelContent",
653
1161
  "cellMuted": "hAbY3W_cellMuted",
654
- "tunnelList": "hAbY3W_tunnelList"
1162
+ "tabBar": "hAbY3W_tabBar",
1163
+ "tunnelList": "hAbY3W_tunnelList",
1164
+ "entryLabel": "hAbY3W_entryLabel",
1165
+ "groupChevron": "hAbY3W_groupChevron",
1166
+ "iconButton": "hAbY3W_iconButton",
1167
+ "radioLabel": "hAbY3W_radioLabel",
1168
+ "groupHeader": "hAbY3W_groupHeader",
1169
+ "termContainer": "hAbY3W_termContainer"
655
1170
  };
656
1171
  //#endregion
657
1172
  //#region src/client/panel/ConsoleTab.tsx
@@ -2058,6 +2573,15 @@ function apply(ctx) {
2058
2573
  }
2059
2574
  })
2060
2575
  }, WinrmPanel));
2576
+ for (const [key, card] of [
2577
+ ["winrm_read", WinrmReadCard],
2578
+ ["winrm_write", WinrmWriteCard],
2579
+ ["winrm_edit", WinrmEditCard]
2580
+ ]) ctx.slots.inject("tool.call.toolview", () => ctx.slots.register({
2581
+ name: "tool.call.toolview",
2582
+ key,
2583
+ locale: NS
2584
+ }, card));
2061
2585
  ctx.slots.inject("sidebar.panellist", () => ctx.slots.register({
2062
2586
  name: "sidebar.panellist",
2063
2587
  id: PANEL_ID,