dsh-desktop-enhance 0.3.1 → 0.3.2

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
@@ -69,7 +69,7 @@ window.__ModuleLoader__.load({
69
69
  "settings.defaults.close": "收起面板 ✕",
70
70
  "settings.defaults.allEnabled": "默认全部启用",
71
71
  "settings.defaults.enabledPrefix": "默认启用 ",
72
- "settings.tools.search": "搜索工具名或描述…",
72
+ "settings.tools.search": "搜索工具名、描述或插件来源…",
73
73
  "settings.tools.refresh": "刷新列表",
74
74
  "settings.tools.enableAll": "全部启用",
75
75
  "settings.tools.disableAll": "全部禁用",
@@ -79,6 +79,8 @@ window.__ModuleLoader__.load({
79
79
  "settings.tools.disabled": "已禁用",
80
80
  "settings.tools.allDisabled": "全部已禁用",
81
81
  "settings.tools.empty": "没有匹配的工具。",
82
+ "settings.tools.scope.builtin": "内置工具",
83
+ "settings.tools.scope.plugin": "插件与 MCP 工具",
82
84
  "settings.skills.search": "搜索 Skill 名称、描述或来源…",
83
85
  "settings.skills.empty": "没有匹配的 Skill。",
84
86
  "settings.skills.scope.project": "项目级 Skill",
@@ -170,7 +172,7 @@ window.__ModuleLoader__.load({
170
172
  "settings.defaults.close": "Close panel ✕",
171
173
  "settings.defaults.allEnabled": "All enabled by default",
172
174
  "settings.defaults.enabledPrefix": "Enabled ",
173
- "settings.tools.search": "Search tool name or description…",
175
+ "settings.tools.search": "Search tool name, description, or plugin…",
174
176
  "settings.tools.refresh": "Refresh",
175
177
  "settings.tools.enableAll": "Enable all",
176
178
  "settings.tools.disableAll": "Disable all",
@@ -180,6 +182,8 @@ window.__ModuleLoader__.load({
180
182
  "settings.tools.disabled": "Disabled",
181
183
  "settings.tools.allDisabled": "All disabled",
182
184
  "settings.tools.empty": "No matching tools.",
185
+ "settings.tools.scope.builtin": "Built-in tools",
186
+ "settings.tools.scope.plugin": "Plugin & MCP tools",
183
187
  "settings.skills.search": "Search skill name, description, or source…",
184
188
  "settings.skills.empty": "No matching skills.",
185
189
  "settings.skills.scope.project": "Project skills",
@@ -736,6 +740,7 @@ window.__ModuleLoader__.load({
736
740
  }
737
741
  //#endregion
738
742
  //#region src/shared/tools-manager.ts
743
+ const TOOL_SCOPE_ORDER = ["builtin", "plugin"];
739
744
  const DISABLED_TOOL_PREFIX = "tool is disabled by desktop-enhance:";
740
745
  function compareCodeUnits(a, b) {
741
746
  return a < b ? -1 : a > b ? 1 : 0;
@@ -757,6 +762,492 @@ window.__ModuleLoader__.load({
757
762
  }
758
763
  return [...unique].sort(compareCodeUnits).join(",");
759
764
  }
765
+ const ACTION_VERB_PREFIXES = new Set([
766
+ "add",
767
+ "call",
768
+ "check",
769
+ "clear",
770
+ "close",
771
+ "create",
772
+ "delete",
773
+ "edit",
774
+ "enable",
775
+ "disable",
776
+ "enter",
777
+ "exit",
778
+ "fetch",
779
+ "find",
780
+ "generate",
781
+ "get",
782
+ "interrupt",
783
+ "kill",
784
+ "list",
785
+ "load",
786
+ "open",
787
+ "query",
788
+ "remove",
789
+ "reset",
790
+ "resolve",
791
+ "run",
792
+ "save",
793
+ "search",
794
+ "select",
795
+ "send",
796
+ "set",
797
+ "show",
798
+ "spawn",
799
+ "start",
800
+ "stop",
801
+ "trigger",
802
+ "update",
803
+ "verify",
804
+ "view",
805
+ "wait",
806
+ "write"
807
+ ]);
808
+ const OPTIONAL_OFFICIAL_TOOL_PACKAGES = new Set([
809
+ "@deepseek-ai/dsh-tool-terminal",
810
+ "@deepseek-ai/dsh-tool-session-query",
811
+ "@deepseek-ai/dsh-tool-ralph",
812
+ "@deepseek-ai/dsh-mcp-resources",
813
+ "@deepseek-ai/dsh-mcp-client"
814
+ ]);
815
+ function isPluginToolPackage(pkg) {
816
+ if (pkg.startsWith("mcp:")) return true;
817
+ if (!pkg.startsWith("@deepseek-ai/")) return true;
818
+ if (pkg.startsWith("@deepseek-ai/dsh-experimental-")) return true;
819
+ return OPTIONAL_OFFICIAL_TOOL_PACKAGES.has(pkg);
820
+ }
821
+ const BUILTIN_TOOL_PACKAGES = new Map([
822
+ ["@deepseek-ai/dsh-tool-bash", "bash"],
823
+ ["@deepseek-ai/dsh-tool-bash-persistent", "bash"],
824
+ ["@deepseek-ai/dsh-tool-pwsh", "pwsh"],
825
+ ["@deepseek-ai/dsh-tool-pwsh-persistent", "pwsh"],
826
+ ["@deepseek-ai/dsh-tool-fs", "fs"],
827
+ ["@deepseek-ai/dsh-tool-fs-search", "fs_search"],
828
+ ["@deepseek-ai/dsh-tool-str-replace-editor", "str_replace_editor"],
829
+ ["@deepseek-ai/dsh-tool-working-directory", "working_directory"],
830
+ ["@deepseek-ai/dsh-tool-workspace-dependencies", "workspace_dependencies"],
831
+ ["@deepseek-ai/dsh-tool-jobs", "job"],
832
+ ["@deepseek-ai/dsh-tool-schedule", "schedule"],
833
+ ["@deepseek-ai/dsh-schedule", "schedule"],
834
+ ["@deepseek-ai/dsh-tool-goal", "goal"],
835
+ ["@deepseek-ai/dsh-plan-mode", "plan"],
836
+ ["@deepseek-ai/dsh-tool-todo", "todo"],
837
+ ["@deepseek-ai/dsh-tool-ask-user", "ask_user"],
838
+ ["@deepseek-ai/dsh-tool-skill", "skill"],
839
+ ["@deepseek-ai/dsh-tool-present", "present"],
840
+ ["@deepseek-ai/dsh-tool-web", "web"],
841
+ ["@deepseek-ai/dsh-tool-subagent", "subagent"],
842
+ ["@deepseek-ai/dsh-tool-subagent-control", "subagent"],
843
+ ["@deepseek-ai/dsh-subagent", "subagent"],
844
+ ["@deepseek-ai/dsh-tool-workflow", "workflow"],
845
+ ["@deepseek-ai/dsh-tool-cordis", "cordis_inspect"],
846
+ ["@deepseek-ai/dsh-cordis-host-runner", "cordis_inspect"],
847
+ ["@deepseek-ai/dsh-plugin-manager", "plugin_manager"],
848
+ ["@deepseek-ai/dsh-plugin-market", "plugin_manager"],
849
+ ["@deepseek-ai/dsh-tools", "builtin"]
850
+ ]);
851
+ const KNOWN_TOOL_SPECS = {
852
+ bash: {
853
+ scope: "builtin",
854
+ pluginName: "@deepseek-ai/dsh-tool-bash",
855
+ groupKey: "bash"
856
+ },
857
+ pwsh: {
858
+ scope: "builtin",
859
+ pluginName: "@deepseek-ai/dsh-tool-pwsh",
860
+ groupKey: "pwsh"
861
+ },
862
+ read: {
863
+ scope: "builtin",
864
+ pluginName: "@deepseek-ai/dsh-tool-fs",
865
+ groupKey: "read"
866
+ },
867
+ read_image: {
868
+ scope: "builtin",
869
+ pluginName: "@deepseek-ai/dsh-tool-fs",
870
+ groupKey: "read"
871
+ },
872
+ write: {
873
+ scope: "builtin",
874
+ pluginName: "@deepseek-ai/dsh-tool-fs",
875
+ groupKey: "write"
876
+ },
877
+ edit: {
878
+ scope: "builtin",
879
+ pluginName: "@deepseek-ai/dsh-tool-fs",
880
+ groupKey: "edit"
881
+ },
882
+ str_replace_editor: {
883
+ scope: "builtin",
884
+ pluginName: "@deepseek-ai/dsh-tool-str-replace-editor",
885
+ groupKey: "str_replace_editor"
886
+ },
887
+ glob: {
888
+ scope: "builtin",
889
+ pluginName: "@deepseek-ai/dsh-tool-fs-search",
890
+ groupKey: "glob"
891
+ },
892
+ grep: {
893
+ scope: "builtin",
894
+ pluginName: "@deepseek-ai/dsh-tool-fs-search",
895
+ groupKey: "grep"
896
+ },
897
+ working_directory: {
898
+ scope: "builtin",
899
+ pluginName: "@deepseek-ai/dsh-tool-working-directory",
900
+ groupKey: "working_directory"
901
+ },
902
+ load_workspace_dependencies: {
903
+ scope: "builtin",
904
+ pluginName: "@deepseek-ai/dsh-tool-workspace-dependencies",
905
+ groupKey: "load_workspace_dependencies"
906
+ },
907
+ job_output: {
908
+ scope: "builtin",
909
+ pluginName: "@deepseek-ai/dsh-tool-jobs",
910
+ groupKey: "job"
911
+ },
912
+ job_list: {
913
+ scope: "builtin",
914
+ pluginName: "@deepseek-ai/dsh-tool-jobs",
915
+ groupKey: "job"
916
+ },
917
+ job_kill: {
918
+ scope: "builtin",
919
+ pluginName: "@deepseek-ai/dsh-tool-jobs",
920
+ groupKey: "job"
921
+ },
922
+ schedule_create: {
923
+ scope: "builtin",
924
+ pluginName: "@deepseek-ai/dsh-tool-schedule",
925
+ groupKey: "schedule"
926
+ },
927
+ schedule_list: {
928
+ scope: "builtin",
929
+ pluginName: "@deepseek-ai/dsh-tool-schedule",
930
+ groupKey: "schedule"
931
+ },
932
+ schedule_update: {
933
+ scope: "builtin",
934
+ pluginName: "@deepseek-ai/dsh-tool-schedule",
935
+ groupKey: "schedule"
936
+ },
937
+ schedule_delete: {
938
+ scope: "builtin",
939
+ pluginName: "@deepseek-ai/dsh-tool-schedule",
940
+ groupKey: "schedule"
941
+ },
942
+ create_goal: {
943
+ scope: "builtin",
944
+ pluginName: "@deepseek-ai/dsh-tool-goal",
945
+ groupKey: "goal"
946
+ },
947
+ get_goal: {
948
+ scope: "builtin",
949
+ pluginName: "@deepseek-ai/dsh-tool-goal",
950
+ groupKey: "goal"
951
+ },
952
+ update_goal: {
953
+ scope: "builtin",
954
+ pluginName: "@deepseek-ai/dsh-tool-goal",
955
+ groupKey: "goal"
956
+ },
957
+ plan: {
958
+ scope: "builtin",
959
+ pluginName: "@deepseek-ai/dsh-plan-mode",
960
+ groupKey: "plan"
961
+ },
962
+ exit_plan_mode: {
963
+ scope: "builtin",
964
+ pluginName: "@deepseek-ai/dsh-plan-mode",
965
+ groupKey: "plan"
966
+ },
967
+ todo_write: {
968
+ scope: "builtin",
969
+ pluginName: "@deepseek-ai/dsh-tool-todo",
970
+ groupKey: "todo_write"
971
+ },
972
+ ask_user_question: {
973
+ scope: "builtin",
974
+ pluginName: "@deepseek-ai/dsh-tool-ask-user",
975
+ groupKey: "ask_user_question"
976
+ },
977
+ skill: {
978
+ scope: "builtin",
979
+ pluginName: "@deepseek-ai/dsh-tool-skill",
980
+ groupKey: "skill"
981
+ },
982
+ present: {
983
+ scope: "builtin",
984
+ pluginName: "@deepseek-ai/dsh-tool-present",
985
+ groupKey: "present"
986
+ },
987
+ web_search: {
988
+ scope: "builtin",
989
+ pluginName: "@deepseek-ai/dsh-tool-web",
990
+ groupKey: "web"
991
+ },
992
+ web_fetch: {
993
+ scope: "builtin",
994
+ pluginName: "@deepseek-ai/dsh-tool-web",
995
+ groupKey: "web"
996
+ },
997
+ subagent: {
998
+ scope: "builtin",
999
+ pluginName: "@deepseek-ai/dsh-tool-subagent",
1000
+ groupKey: "subagent"
1001
+ },
1002
+ subagent_fork: {
1003
+ scope: "builtin",
1004
+ pluginName: "@deepseek-ai/dsh-tool-subagent",
1005
+ groupKey: "subagent"
1006
+ },
1007
+ list_subagent_models: {
1008
+ scope: "builtin",
1009
+ pluginName: "@deepseek-ai/dsh-tool-subagent",
1010
+ groupKey: "subagent"
1011
+ },
1012
+ send_message: {
1013
+ scope: "builtin",
1014
+ pluginName: "@deepseek-ai/dsh-tool-subagent-control",
1015
+ groupKey: "subagent"
1016
+ },
1017
+ interrupt_agent: {
1018
+ scope: "builtin",
1019
+ pluginName: "@deepseek-ai/dsh-tool-subagent-control",
1020
+ groupKey: "subagent"
1021
+ },
1022
+ list_agents: {
1023
+ scope: "builtin",
1024
+ pluginName: "@deepseek-ai/dsh-tool-subagent-control",
1025
+ groupKey: "subagent"
1026
+ },
1027
+ workflow: {
1028
+ scope: "builtin",
1029
+ pluginName: "@deepseek-ai/dsh-tool-workflow",
1030
+ groupKey: "workflow"
1031
+ },
1032
+ cordis_inspect_list: {
1033
+ scope: "builtin",
1034
+ pluginName: "@deepseek-ai/dsh-tool-cordis",
1035
+ groupKey: "cordis_inspect"
1036
+ },
1037
+ cordis_inspect_query: {
1038
+ scope: "builtin",
1039
+ pluginName: "@deepseek-ai/dsh-tool-cordis",
1040
+ groupKey: "cordis_inspect"
1041
+ },
1042
+ cordis_dynamic: {
1043
+ scope: "builtin",
1044
+ pluginName: "@deepseek-ai/dsh-cordis-host-runner",
1045
+ groupKey: "cordis_inspect"
1046
+ },
1047
+ plugin_manager: {
1048
+ scope: "builtin",
1049
+ pluginName: "@deepseek-ai/dsh-plugin-manager",
1050
+ groupKey: "plugin_manager"
1051
+ },
1052
+ plugin_market: {
1053
+ scope: "builtin",
1054
+ pluginName: "@deepseek-ai/dsh-plugin-market",
1055
+ groupKey: "plugin_manager"
1056
+ },
1057
+ create_worktree: {
1058
+ scope: "plugin",
1059
+ pluginName: "@deepseek-ai/dsh-experimental-tool-worktree",
1060
+ groupKey: "dsh-experimental-tool-worktree"
1061
+ },
1062
+ spawn_teammate: {
1063
+ scope: "plugin",
1064
+ pluginName: "@deepseek-ai/dsh-experimental-tool-agent-team",
1065
+ groupKey: "dsh-experimental-tool-agent-team"
1066
+ },
1067
+ wait_agent: {
1068
+ scope: "plugin",
1069
+ pluginName: "@deepseek-ai/dsh-experimental-tool-agent-team",
1070
+ groupKey: "dsh-experimental-tool-agent-team"
1071
+ },
1072
+ team_task_create: {
1073
+ scope: "plugin",
1074
+ pluginName: "@deepseek-ai/dsh-experimental-tool-agent-team",
1075
+ groupKey: "dsh-experimental-tool-agent-team"
1076
+ },
1077
+ team_task_list: {
1078
+ scope: "plugin",
1079
+ pluginName: "@deepseek-ai/dsh-experimental-tool-agent-team",
1080
+ groupKey: "dsh-experimental-tool-agent-team"
1081
+ },
1082
+ team_task_get: {
1083
+ scope: "plugin",
1084
+ pluginName: "@deepseek-ai/dsh-experimental-tool-agent-team",
1085
+ groupKey: "dsh-experimental-tool-agent-team"
1086
+ },
1087
+ team_task_update: {
1088
+ scope: "plugin",
1089
+ pluginName: "@deepseek-ai/dsh-experimental-tool-agent-team",
1090
+ groupKey: "dsh-experimental-tool-agent-team"
1091
+ },
1092
+ terminal_open: {
1093
+ scope: "plugin",
1094
+ pluginName: "@deepseek-ai/dsh-tool-terminal",
1095
+ groupKey: "dsh-tool-terminal"
1096
+ },
1097
+ terminal_send: {
1098
+ scope: "plugin",
1099
+ pluginName: "@deepseek-ai/dsh-tool-terminal",
1100
+ groupKey: "dsh-tool-terminal"
1101
+ },
1102
+ terminal_read: {
1103
+ scope: "plugin",
1104
+ pluginName: "@deepseek-ai/dsh-tool-terminal",
1105
+ groupKey: "dsh-tool-terminal"
1106
+ },
1107
+ terminal_signal: {
1108
+ scope: "plugin",
1109
+ pluginName: "@deepseek-ai/dsh-tool-terminal",
1110
+ groupKey: "dsh-tool-terminal"
1111
+ },
1112
+ terminal_close: {
1113
+ scope: "plugin",
1114
+ pluginName: "@deepseek-ai/dsh-tool-terminal",
1115
+ groupKey: "dsh-tool-terminal"
1116
+ },
1117
+ terminal_list: {
1118
+ scope: "plugin",
1119
+ pluginName: "@deepseek-ai/dsh-tool-terminal",
1120
+ groupKey: "dsh-tool-terminal"
1121
+ },
1122
+ session_search: {
1123
+ scope: "plugin",
1124
+ pluginName: "@deepseek-ai/dsh-tool-session-query",
1125
+ groupKey: "dsh-tool-session-query"
1126
+ },
1127
+ session_event_search: {
1128
+ scope: "plugin",
1129
+ pluginName: "@deepseek-ai/dsh-tool-session-query",
1130
+ groupKey: "dsh-tool-session-query"
1131
+ },
1132
+ session_trace: {
1133
+ scope: "plugin",
1134
+ pluginName: "@deepseek-ai/dsh-tool-session-query",
1135
+ groupKey: "dsh-tool-session-query"
1136
+ },
1137
+ session_event_trace: {
1138
+ scope: "plugin",
1139
+ pluginName: "@deepseek-ai/dsh-tool-session-query",
1140
+ groupKey: "dsh-tool-session-query"
1141
+ },
1142
+ session_event_read: {
1143
+ scope: "plugin",
1144
+ pluginName: "@deepseek-ai/dsh-tool-session-query",
1145
+ groupKey: "dsh-tool-session-query"
1146
+ },
1147
+ ralph: {
1148
+ scope: "plugin",
1149
+ pluginName: "@deepseek-ai/dsh-tool-ralph",
1150
+ groupKey: "dsh-tool-ralph"
1151
+ },
1152
+ list_mcp_resources: {
1153
+ scope: "plugin",
1154
+ pluginName: "@deepseek-ai/dsh-mcp-resources",
1155
+ groupKey: "dsh-mcp-resources"
1156
+ },
1157
+ list_mcp_resource_templates: {
1158
+ scope: "plugin",
1159
+ pluginName: "@deepseek-ai/dsh-mcp-resources",
1160
+ groupKey: "dsh-mcp-resources"
1161
+ },
1162
+ read_mcp_resource: {
1163
+ scope: "plugin",
1164
+ pluginName: "@deepseek-ai/dsh-mcp-resources",
1165
+ groupKey: "dsh-mcp-resources"
1166
+ },
1167
+ sidebar_open: {
1168
+ scope: "plugin",
1169
+ pluginName: "dsh-better-sidebar",
1170
+ groupKey: "dsh-better-sidebar"
1171
+ },
1172
+ task_memory_write: {
1173
+ scope: "plugin",
1174
+ pluginName: "dsh-expedition-memory",
1175
+ groupKey: "dsh-expedition-memory"
1176
+ },
1177
+ task_memory_write_document: {
1178
+ scope: "plugin",
1179
+ pluginName: "dsh-expedition-memory",
1180
+ groupKey: "dsh-expedition-memory"
1181
+ },
1182
+ task_memory_update: {
1183
+ scope: "plugin",
1184
+ pluginName: "dsh-expedition-memory",
1185
+ groupKey: "dsh-expedition-memory"
1186
+ },
1187
+ task_memory_retire: {
1188
+ scope: "plugin",
1189
+ pluginName: "dsh-expedition-memory",
1190
+ groupKey: "dsh-expedition-memory"
1191
+ },
1192
+ canvas_state: {
1193
+ scope: "plugin",
1194
+ pluginName: "dsh-image-gen",
1195
+ groupKey: "dsh-image-gen"
1196
+ },
1197
+ view_canvas: {
1198
+ scope: "plugin",
1199
+ pluginName: "dsh-image-gen",
1200
+ groupKey: "dsh-image-gen"
1201
+ },
1202
+ generate_image: {
1203
+ scope: "plugin",
1204
+ pluginName: "dsh-image-gen",
1205
+ groupKey: "dsh-image-gen"
1206
+ },
1207
+ generate_images: {
1208
+ scope: "plugin",
1209
+ pluginName: "dsh-image-gen",
1210
+ groupKey: "dsh-image-gen"
1211
+ },
1212
+ edit_image: {
1213
+ scope: "plugin",
1214
+ pluginName: "dsh-image-gen",
1215
+ groupKey: "dsh-image-gen"
1216
+ },
1217
+ find_inspiration: {
1218
+ scope: "plugin",
1219
+ pluginName: "dsh-image-gen",
1220
+ groupKey: "dsh-image-gen"
1221
+ }
1222
+ };
1223
+ function normalizeBarePackageName(raw) {
1224
+ const trimmed = raw.trim();
1225
+ if (trimmed === "" || trimmed.startsWith("mcp:")) return trimmed;
1226
+ const parts = trimmed.split("/");
1227
+ if (trimmed.startsWith("@") && parts.length >= 2) return `${parts[0]}/${parts[1]}`;
1228
+ return parts[0] ?? trimmed;
1229
+ }
1230
+ function shortBadgeOfPackage(pkgName) {
1231
+ return pkgName.startsWith("@deepseek-ai/") ? pkgName.slice(13) : pkgName;
1232
+ }
1233
+ function makeMcpOrigin(rawServer) {
1234
+ const server = rawServer.trim() || "mcp";
1235
+ return {
1236
+ scope: "plugin",
1237
+ pluginName: `mcp:${server}`,
1238
+ sourceBadge: `mcp:${server}`,
1239
+ groupKey: `mcp__${server}`
1240
+ };
1241
+ }
1242
+ function makeKnownOrigin(spec) {
1243
+ const badge = shortBadgeOfPackage(spec.pluginName);
1244
+ return {
1245
+ scope: spec.scope,
1246
+ pluginName: spec.pluginName,
1247
+ sourceBadge: badge,
1248
+ groupKey: spec.groupKey ?? badge
1249
+ };
1250
+ }
760
1251
  function splitToolName(name) {
761
1252
  const parts = name.split("__");
762
1253
  if (parts.length > 1) {
@@ -773,7 +1264,62 @@ window.__ModuleLoader__.load({
773
1264
  return result.length > 0 ? result : [name];
774
1265
  }
775
1266
  const sub = name.split("_").filter((s) => s !== "");
776
- return sub.length > 0 ? sub : [name];
1267
+ if (sub.length <= 1) return [name];
1268
+ const firstWord = sub[0]?.toLowerCase() ?? "";
1269
+ if (ACTION_VERB_PREFIXES.has(firstWord)) return [name];
1270
+ return sub;
1271
+ }
1272
+ function classifyToolOrigin(toolName, rawPluginName) {
1273
+ const name = typeof toolName === "string" ? toolName.trim() : "";
1274
+ if (name.startsWith("mcp__")) return makeMcpOrigin(name.split("__").filter((s) => s !== "")[1] ?? "mcp");
1275
+ const explicitPkg = typeof rawPluginName === "string" ? normalizeBarePackageName(rawPluginName) : "";
1276
+ const known = KNOWN_TOOL_SPECS[name];
1277
+ if (explicitPkg !== "" && explicitPkg !== "root" && explicitPkg !== "builtin") {
1278
+ if (explicitPkg.startsWith("mcp:")) return makeMcpOrigin(explicitPkg.slice(4));
1279
+ if (isPluginToolPackage(explicitPkg)) {
1280
+ const badge = shortBadgeOfPackage(explicitPkg);
1281
+ return {
1282
+ scope: "plugin",
1283
+ pluginName: explicitPkg,
1284
+ sourceBadge: badge,
1285
+ groupKey: badge
1286
+ };
1287
+ }
1288
+ if (known !== void 0 && known.scope === "builtin") return makeKnownOrigin(known);
1289
+ const builtinGroup = BUILTIN_TOOL_PACKAGES.get(explicitPkg);
1290
+ const groupKey = builtinGroup === void 0 || builtinGroup === "builtin" ? splitToolName(name)[0] ?? name : builtinGroup === "fs" ? name === "read" || name === "read_image" ? "read" : name : builtinGroup === "fs_search" ? name : builtinGroup;
1291
+ return {
1292
+ scope: "builtin",
1293
+ pluginName: explicitPkg,
1294
+ sourceBadge: shortBadgeOfPackage(explicitPkg),
1295
+ groupKey
1296
+ };
1297
+ }
1298
+ if (known !== void 0) return makeKnownOrigin(known);
1299
+ const segments = splitToolName(name);
1300
+ return {
1301
+ scope: "builtin",
1302
+ pluginName: "builtin",
1303
+ sourceBadge: "builtin",
1304
+ groupKey: segments.length > 1 ? segments[0] ?? name : name
1305
+ };
1306
+ }
1307
+ function resolveToolMeta(tool) {
1308
+ if ((tool.scope === "builtin" || tool.scope === "plugin") && typeof tool.pluginName === "string" && tool.pluginName !== "" && typeof tool.sourceBadge === "string" && tool.sourceBadge !== "" && typeof tool.groupKey === "string" && tool.groupKey !== "") return {
1309
+ scope: tool.scope,
1310
+ pluginName: tool.pluginName,
1311
+ sourceBadge: tool.sourceBadge,
1312
+ groupKey: tool.groupKey
1313
+ };
1314
+ return classifyToolOrigin(tool.name, tool.pluginName);
1315
+ }
1316
+ function segmentsForTool(tool, meta) {
1317
+ if (tool.name.startsWith("mcp__")) {
1318
+ const leafLabel = splitToolName(tool.name).at(-1) ?? tool.name;
1319
+ return [meta.groupKey, leafLabel];
1320
+ }
1321
+ if (meta.groupKey !== "" && meta.groupKey !== tool.name) return [meta.groupKey, tool.name];
1322
+ return splitToolName(tool.name);
777
1323
  }
778
1324
  function finalizeBranch(branch) {
779
1325
  const nodes = [];
@@ -793,7 +1339,9 @@ window.__ModuleLoader__.load({
793
1339
  label: `${child.label}${sep}${firstChild.label}`,
794
1340
  children: firstChild.children,
795
1341
  total: firstChild.total,
796
- disabled: firstChild.disabled
1342
+ disabled: firstChild.disabled,
1343
+ ...firstChild.scope !== void 0 ? { scope: firstChild.scope } : {},
1344
+ ...firstChild.sourceBadge !== void 0 ? { sourceBadge: firstChild.sourceBadge } : {}
797
1345
  });
798
1346
  continue;
799
1347
  }
@@ -809,7 +1357,9 @@ window.__ModuleLoader__.load({
809
1357
  label: child.label,
810
1358
  children,
811
1359
  total,
812
- disabled
1360
+ disabled,
1361
+ ...child.scope !== void 0 ? { scope: child.scope } : {},
1362
+ ...child.sourceBadge !== void 0 ? { sourceBadge: child.sourceBadge } : {}
813
1363
  });
814
1364
  }
815
1365
  nodes.sort((a, b) => {
@@ -820,10 +1370,14 @@ window.__ModuleLoader__.load({
820
1370
  }
821
1371
  function buildToolPrefixTree(tools, disabled, query = "") {
822
1372
  const needle = typeof query === "string" ? query.trim().toLowerCase() : "";
823
- const filtered = needle === "" ? tools : tools.filter((t) => t.name.toLowerCase().includes(needle) || t.description.toLowerCase().includes(needle));
1373
+ const filtered = needle === "" ? tools : tools.filter((t) => {
1374
+ const meta = resolveToolMeta(t);
1375
+ return t.name.toLowerCase().includes(needle) || t.description.toLowerCase().includes(needle) || meta.sourceBadge.toLowerCase().includes(needle) || meta.pluginName.toLowerCase().includes(needle) || meta.groupKey.toLowerCase().includes(needle);
1376
+ });
824
1377
  const root = { children: new Map() };
825
1378
  for (const tool of filtered) {
826
- const segments = splitToolName(tool.name);
1379
+ const meta = resolveToolMeta(tool);
1380
+ const segments = segmentsForTool(tool, meta);
827
1381
  let current = root;
828
1382
  for (let i = 0; i < segments.length; i++) {
829
1383
  const seg = segments[i];
@@ -837,18 +1391,24 @@ window.__ModuleLoader__.load({
837
1391
  description: tool.description,
838
1392
  disabled: isOff,
839
1393
  total: 1,
840
- disabledCount: isOff ? 1 : 0
1394
+ disabledCount: isOff ? 1 : 0,
1395
+ scope: meta.scope,
1396
+ pluginName: meta.pluginName,
1397
+ sourceBadge: meta.sourceBadge
841
1398
  };
842
1399
  const existing = current.children.get(seg);
843
1400
  if (existing !== void 0 && existing.kind === "branch") existing.branch.children.set(`__self__:${tool.name}`, leaf);
844
1401
  else current.children.set(seg, leaf);
845
1402
  } else {
846
1403
  let next = current.children.get(seg);
1404
+ const prefixKey = segments[0] === "mcp" ? segments.slice(0, i + 1).join("__") : segments.slice(0, i + 1).join("_");
847
1405
  if (next === void 0) {
848
1406
  next = {
849
1407
  kind: "branch",
850
- prefix: segments.slice(0, i + 1).join("_"),
1408
+ prefix: prefixKey,
851
1409
  label: seg,
1410
+ scope: meta.scope,
1411
+ sourceBadge: meta.sourceBadge,
852
1412
  branch: { children: new Map() }
853
1413
  };
854
1414
  current.children.set(seg, next);
@@ -857,8 +1417,10 @@ window.__ModuleLoader__.load({
857
1417
  branch.children.set(`__self__:${next.name}`, next);
858
1418
  next = {
859
1419
  kind: "branch",
860
- prefix: segments.slice(0, i + 1).join("_"),
1420
+ prefix: prefixKey,
861
1421
  label: seg,
1422
+ scope: meta.scope,
1423
+ sourceBadge: meta.sourceBadge,
862
1424
  branch
863
1425
  };
864
1426
  current.children.set(seg, next);
@@ -869,6 +1431,52 @@ window.__ModuleLoader__.load({
869
1431
  }
870
1432
  return finalizeBranch(root);
871
1433
  }
1434
+ function buildToolScopeGroups(tools, disabled, query = "") {
1435
+ const buckets = new Map();
1436
+ for (const scope of TOOL_SCOPE_ORDER) buckets.set(scope, []);
1437
+ for (const tool of tools) {
1438
+ const meta = resolveToolMeta(tool);
1439
+ const bucket = buckets.get(meta.scope);
1440
+ if (bucket !== void 0) bucket.push({
1441
+ ...tool,
1442
+ scope: meta.scope,
1443
+ pluginName: meta.pluginName,
1444
+ sourceBadge: meta.sourceBadge,
1445
+ groupKey: meta.groupKey
1446
+ });
1447
+ }
1448
+ const groups = [];
1449
+ for (const scope of TOOL_SCOPE_ORDER) {
1450
+ const bucketTools = buckets.get(scope) ?? [];
1451
+ if (bucketTools.length === 0) continue;
1452
+ const children = buildToolPrefixTree(bucketTools, disabled, query);
1453
+ if (children.length === 0) continue;
1454
+ let total = 0;
1455
+ let disabledCount = 0;
1456
+ for (const child of children) {
1457
+ total += child.total;
1458
+ disabledCount += child.kind === "leaf" ? child.disabledCount : child.disabled;
1459
+ }
1460
+ groups.push({
1461
+ scope,
1462
+ children,
1463
+ total,
1464
+ disabled: disabledCount
1465
+ });
1466
+ }
1467
+ return groups;
1468
+ }
1469
+ function toggleNamesInSet(current, names) {
1470
+ const next = new Set(current);
1471
+ if (names.some((name) => !current.has(name))) for (const name of names) next.add(name);
1472
+ else for (const name of names) next.delete(name);
1473
+ return next;
1474
+ }
1475
+ function toggleToolScopeGroupInSet(current, group) {
1476
+ const names = [];
1477
+ for (const child of group.children) names.push(...collectNodeLeafNames(child));
1478
+ return toggleNamesInSet(current, names);
1479
+ }
872
1480
  function collectNodeLeafNames(node) {
873
1481
  if (node.kind === "leaf") return [node.name];
874
1482
  const out = [];
@@ -882,11 +1490,7 @@ window.__ModuleLoader__.load({
882
1490
  return next;
883
1491
  }
884
1492
  function toggleNodeInSet(current, node) {
885
- const names = collectNodeLeafNames(node);
886
- const next = new Set(current);
887
- if (names.some((name) => !current.has(name))) for (const name of names) next.add(name);
888
- else for (const name of names) next.delete(name);
889
- return next;
1493
+ return toggleNamesInSet(current, collectNodeLeafNames(node));
890
1494
  }
891
1495
  function disabledToolReason(toolName, enabled, disabled) {
892
1496
  if (!enabled || disabled.size === 0) return void 0;
@@ -900,14 +1504,32 @@ window.__ModuleLoader__.load({
900
1504
  const byName = new Map();
901
1505
  for (const item of list) {
902
1506
  if (item === null || item === void 0 || typeof item !== "object") continue;
903
- const name = item.name;
1507
+ const rec = item;
1508
+ const name = rec.name;
904
1509
  if (typeof name !== "string" || name.trim() === "") continue;
905
1510
  const trimmed = name.trim();
906
- if (excludedNames?.has(trimmed) || byName.has(trimmed)) continue;
907
- const desc = item.description;
1511
+ if (excludedNames?.has(trimmed)) continue;
1512
+ const desc = typeof rec.description === "string" ? rec.description.trim() : "";
1513
+ const origin = classifyToolOrigin(trimmed, rec.pluginName);
1514
+ const existing = byName.get(trimmed);
1515
+ if (existing !== void 0) {
1516
+ if (typeof rec.pluginName === "string" && rec.pluginName.trim() !== "" && existing.pluginName !== origin.pluginName) byName.set(trimmed, {
1517
+ name: trimmed,
1518
+ description: existing.description !== "" ? existing.description : desc,
1519
+ scope: origin.scope,
1520
+ pluginName: origin.pluginName,
1521
+ sourceBadge: origin.sourceBadge,
1522
+ groupKey: origin.groupKey
1523
+ });
1524
+ continue;
1525
+ }
908
1526
  byName.set(trimmed, {
909
1527
  name: trimmed,
910
- description: typeof desc === "string" ? desc.trim() : ""
1528
+ description: desc,
1529
+ scope: origin.scope,
1530
+ pluginName: origin.pluginName,
1531
+ sourceBadge: origin.sourceBadge,
1532
+ groupKey: origin.groupKey
911
1533
  });
912
1534
  }
913
1535
  return [...byName.values()].sort((a, b) => compareCodeUnits(a.name, b.name));
@@ -1802,15 +2424,23 @@ window.__ModuleLoader__.load({
1802
2424
  key: `leaf:${node.name}`,
1803
2425
  className: "de-defaults-leaf",
1804
2426
  "data-default-tool-leaf": node.name,
2427
+ "data-tool-scope": node.scope,
1805
2428
  "data-disabled": node.disabled ? "true" : "false",
1806
2429
  style: depth > 0 ? { paddingLeft: `${String(depth * 16 + 8)}px` } : void 0
1807
2430
  }, [h("div", {
1808
2431
  key: "info",
1809
2432
  className: "de-defaults-leaf-info"
1810
2433
  }, [h("div", {
2434
+ key: "head",
2435
+ className: "de-defaults-leaf-head"
2436
+ }, [h("span", {
1811
2437
  key: "name",
1812
2438
  className: "de-defaults-leaf-name"
1813
- }, node.name), node.description !== "" ? h("div", {
2439
+ }, node.name), node.scope === "plugin" && node.sourceBadge !== "" ? h("span", {
2440
+ key: "badge",
2441
+ className: "de-defaults-source-badge",
2442
+ "data-tool-scope": node.scope
2443
+ }, node.sourceBadge) : null]), node.description !== "" ? h("div", {
1814
2444
  key: "desc",
1815
2445
  className: "de-defaults-leaf-desc"
1816
2446
  }, node.description) : null]), renderDefaultLeafControls({
@@ -1846,7 +2476,7 @@ window.__ModuleLoader__.load({
1846
2476
  className: "de-defaults-group-children"
1847
2477
  }, node.children.map((child) => renderTreeNode(child, depth + 1))) : null]);
1848
2478
  };
1849
- const treeNodes = open ? buildToolPrefixTree(tools, disabledSet, query) : [];
2479
+ const scopeGroups = open ? buildToolScopeGroups(tools, disabledSet, query) : [];
1850
2480
  return renderDefaultsManagerBox({
1851
2481
  kind: "tools",
1852
2482
  t,
@@ -1868,7 +2498,33 @@ window.__ModuleLoader__.load({
1868
2498
  onQueryChange: setQuery,
1869
2499
  onEnableAll: () => commitSet(new Set()),
1870
2500
  onRefresh: refreshCatalog,
1871
- treeElements: treeNodes.map((n) => renderTreeNode(n, 0))
2501
+ treeElements: scopeGroups.map((group) => {
2502
+ const scopeKey = `scope:${group.scope}`;
2503
+ const isOpen = query.trim() !== "" || !collapsedNodes.includes(scopeKey);
2504
+ return h("div", {
2505
+ key: `scope:${group.scope}`,
2506
+ className: "de-defaults-group",
2507
+ "data-default-tool-scope": group.scope
2508
+ }, [renderDefaultGroupHeader({
2509
+ t,
2510
+ headerAttr: "data-default-tool-scope-header",
2511
+ batchAttr: "data-default-tool-scope-batch",
2512
+ groupKey: group.scope,
2513
+ label: t("settings.tools.scope." + group.scope),
2514
+ isOpen,
2515
+ total: group.total,
2516
+ disabledCount: group.disabled,
2517
+ controlDisabled: disabled,
2518
+ depth: 0,
2519
+ onToggleOpen: () => {
2520
+ setCollapsedNodes((curr) => curr.includes(scopeKey) ? curr.filter((p) => p !== scopeKey) : [...curr, scopeKey]);
2521
+ },
2522
+ onBatchToggle: () => commitSet(toggleToolScopeGroupInSet(disabledSet, group))
2523
+ }), isOpen ? h("div", {
2524
+ key: "children",
2525
+ className: "de-defaults-group-children"
2526
+ }, group.children.map((n) => renderTreeNode(n, 1))) : null]);
2527
+ })
1872
2528
  });
1873
2529
  }
1874
2530
  function DefaultSkillsManager({ t, disabledRaw, disabled, onSave }) {
@@ -3253,10 +3909,49 @@ window.__ModuleLoader__.load({
3253
3909
  banner.appendChild(resetBtn);
3254
3910
  slot.replaceChildren(banner);
3255
3911
  }
3912
+ function buildCollapsibleGroupHeaderDom(opts) {
3913
+ const { t, headerAttr, headerValue, extraHeaderAttr, batchAttr, batchValue, labelText, isOpen, total, disabledCount, writable, depth = 0, onToggleOpen, onBatchToggle } = opts;
3914
+ const head = globalThis.document.createElement("div");
3915
+ head.setAttribute(headerAttr, headerValue);
3916
+ if (extraHeaderAttr !== void 0) head.setAttribute(extraHeaderAttr.name, extraHeaderAttr.value);
3917
+ if (depth > 0) head.setAttribute("style", `padding-left: ${String(depth * 18 + 8)}px;`);
3918
+ const title = globalThis.document.createElement("span");
3919
+ title.setAttribute("data-tools-node-title", "");
3920
+ const arrow = globalThis.document.createElement("span");
3921
+ arrow.setAttribute("data-session-info-arrow", "");
3922
+ arrow.textContent = isOpen ? "▾" : "▸";
3923
+ const label = globalThis.document.createElement("span");
3924
+ label.textContent = labelText;
3925
+ title.appendChild(arrow);
3926
+ title.appendChild(label);
3927
+ head.appendChild(title);
3928
+ const ctrls = globalThis.document.createElement("div");
3929
+ ctrls.setAttribute("data-tools-controls", "");
3930
+ const enabledInGroup = total - disabledCount;
3931
+ const pill = globalThis.document.createElement("span");
3932
+ pill.setAttribute("data-tools-pill", "");
3933
+ pill.setAttribute("data-disabled", enabledInGroup === 0 ? "true" : "false");
3934
+ pill.textContent = enabledInGroup === 0 ? t("settings.tools.allDisabled") : `${String(enabledInGroup)}/${String(total)}`;
3935
+ ctrls.appendChild(pill);
3936
+ const batchBtn = globalThis.document.createElement("button");
3937
+ batchBtn.setAttribute("type", "button");
3938
+ batchBtn.setAttribute("data-tools-btn", "");
3939
+ batchBtn.setAttribute(batchAttr, batchValue);
3940
+ batchBtn.textContent = enabledInGroup > 0 ? t("settings.tools.disableAll") : t("settings.tools.enableAll");
3941
+ if (!writable) batchBtn.setAttribute("disabled", "");
3942
+ batchBtn.addEventListener("click", (e) => {
3943
+ e?.stopPropagation?.();
3944
+ onBatchToggle();
3945
+ });
3946
+ ctrls.appendChild(batchBtn);
3947
+ head.appendChild(ctrls);
3948
+ head.addEventListener("click", onToggleOpen);
3949
+ return head;
3950
+ }
3256
3951
  function buildToolTreeDomNodes(opts) {
3257
3952
  const { t, toolsCatalog, disabledSet, searchQuery, expandedToolNodes, writable, onToggleNodeExpand, onCommitSet } = opts;
3258
- const treeNodes = buildToolPrefixTree(toolsCatalog, disabledSet, searchQuery);
3259
- if (treeNodes.length === 0) {
3953
+ const scopeGroups = buildToolScopeGroups(toolsCatalog, disabledSet, searchQuery);
3954
+ if (scopeGroups.length === 0) {
3260
3955
  const empty = globalThis.document.createElement("div");
3261
3956
  empty.setAttribute("data-tools-empty", "");
3262
3957
  empty.textContent = t("settings.tools.empty");
@@ -3266,14 +3961,24 @@ window.__ModuleLoader__.load({
3266
3961
  if (node.kind === "leaf") {
3267
3962
  const row = globalThis.document.createElement("div");
3268
3963
  row.setAttribute("data-tools-leaf", node.name);
3964
+ row.setAttribute("data-tool-scope", node.scope);
3269
3965
  row.setAttribute("data-disabled", node.disabled ? "true" : "false");
3270
3966
  if (depth > 0) row.setAttribute("style", `padding-left: ${String(depth * 18 + 8)}px;`);
3271
3967
  const info = globalThis.document.createElement("div");
3272
3968
  info.setAttribute("data-tools-leaf-info", "");
3273
- const nameEl = globalThis.document.createElement("div");
3969
+ const nameRow = globalThis.document.createElement("div");
3970
+ nameRow.setAttribute("data-tools-leaf-header", "");
3971
+ const nameEl = globalThis.document.createElement("span");
3274
3972
  nameEl.setAttribute("data-tools-leaf-name", "");
3275
3973
  nameEl.textContent = node.name;
3276
- info.appendChild(nameEl);
3974
+ nameRow.appendChild(nameEl);
3975
+ if (node.scope === "plugin" && node.sourceBadge !== "") {
3976
+ const badgeEl = globalThis.document.createElement("span");
3977
+ badgeEl.setAttribute("data-tools-source-badge", node.scope);
3978
+ badgeEl.textContent = node.sourceBadge;
3979
+ nameRow.appendChild(badgeEl);
3980
+ }
3981
+ info.appendChild(nameRow);
3277
3982
  if (node.description !== "") {
3278
3983
  const descEl = globalThis.document.createElement("div");
3279
3984
  descEl.setAttribute("data-tools-leaf-desc", "");
@@ -3304,47 +4009,52 @@ window.__ModuleLoader__.load({
3304
4009
  const isOpen = searchQuery.trim() !== "" || expandedToolNodes.has(node.prefix);
3305
4010
  const groupEl = globalThis.document.createElement("div");
3306
4011
  groupEl.setAttribute("data-tools-node", node.prefix);
3307
- const head = globalThis.document.createElement("div");
3308
- head.setAttribute("data-tools-node-header", node.prefix);
3309
- if (depth > 0) head.setAttribute("style", `padding-left: ${String(depth * 18 + 8)}px;`);
3310
- const title = globalThis.document.createElement("span");
3311
- title.setAttribute("data-tools-node-title", "");
3312
- const arrow = globalThis.document.createElement("span");
3313
- arrow.setAttribute("data-session-info-arrow", "");
3314
- arrow.textContent = isOpen ? "▾" : "▸";
3315
- const label = globalThis.document.createElement("span");
3316
- label.textContent = node.label;
3317
- title.appendChild(arrow);
3318
- title.appendChild(label);
3319
- head.appendChild(title);
3320
- const ctrls = globalThis.document.createElement("div");
3321
- ctrls.setAttribute("data-tools-controls", "");
3322
- const enabledInNode = node.total - node.disabled;
3323
- const pill = globalThis.document.createElement("span");
3324
- pill.setAttribute("data-tools-pill", "");
3325
- pill.setAttribute("data-disabled", enabledInNode === 0 ? "true" : "false");
3326
- pill.textContent = enabledInNode === 0 ? t("settings.tools.allDisabled") : `${String(enabledInNode)}/${String(node.total)}`;
3327
- ctrls.appendChild(pill);
3328
- const batchBtn = globalThis.document.createElement("button");
3329
- batchBtn.setAttribute("type", "button");
3330
- batchBtn.setAttribute("data-tools-btn", "");
3331
- batchBtn.setAttribute("data-tools-batch", node.prefix);
3332
- batchBtn.textContent = enabledInNode > 0 ? t("settings.tools.disableAll") : t("settings.tools.enableAll");
3333
- if (!writable) batchBtn.setAttribute("disabled", "");
3334
- batchBtn.addEventListener("click", (e) => {
3335
- e?.stopPropagation?.();
3336
- onCommitSet(toggleNodeInSet(disabledSet, node));
3337
- });
3338
- ctrls.appendChild(batchBtn);
3339
- head.appendChild(ctrls);
3340
- head.addEventListener("click", () => {
3341
- onToggleNodeExpand(node.prefix);
3342
- });
3343
- groupEl.appendChild(head);
4012
+ groupEl.appendChild(buildCollapsibleGroupHeaderDom({
4013
+ t,
4014
+ headerAttr: "data-tools-node-header",
4015
+ headerValue: node.prefix,
4016
+ batchAttr: "data-tools-batch",
4017
+ batchValue: node.prefix,
4018
+ labelText: node.label,
4019
+ isOpen,
4020
+ total: node.total,
4021
+ disabledCount: node.disabled,
4022
+ writable,
4023
+ depth,
4024
+ onToggleOpen: () => onToggleNodeExpand(node.prefix),
4025
+ onBatchToggle: () => onCommitSet(toggleNodeInSet(disabledSet, node))
4026
+ }));
3344
4027
  if (isOpen) for (const child of node.children) groupEl.appendChild(buildNodeDom(child, depth + 1));
3345
4028
  return groupEl;
3346
4029
  };
3347
- return treeNodes.map((n) => buildNodeDom(n, 0));
4030
+ const buildScopeGroupDom = (group) => {
4031
+ const scopeNodeKey = `scope:${group.scope}`;
4032
+ const isOpen = searchQuery.trim() !== "" || expandedToolNodes.has(scopeNodeKey);
4033
+ const groupEl = globalThis.document.createElement("div");
4034
+ groupEl.setAttribute("data-tools-scope-group", group.scope);
4035
+ groupEl.appendChild(buildCollapsibleGroupHeaderDom({
4036
+ t,
4037
+ headerAttr: "data-tools-node-header",
4038
+ headerValue: scopeNodeKey,
4039
+ extraHeaderAttr: {
4040
+ name: "data-tools-scope-header",
4041
+ value: group.scope
4042
+ },
4043
+ batchAttr: "data-tools-scope-batch",
4044
+ batchValue: group.scope,
4045
+ labelText: t(`settings.tools.scope.${group.scope}`),
4046
+ isOpen,
4047
+ total: group.total,
4048
+ disabledCount: group.disabled,
4049
+ writable,
4050
+ depth: 0,
4051
+ onToggleOpen: () => onToggleNodeExpand(scopeNodeKey),
4052
+ onBatchToggle: () => onCommitSet(toggleToolScopeGroupInSet(disabledSet, group))
4053
+ }));
4054
+ if (isOpen) for (const child of group.children) groupEl.appendChild(buildNodeDom(child, 1));
4055
+ return groupEl;
4056
+ };
4057
+ return scopeGroups.map(buildScopeGroupDom);
3348
4058
  }
3349
4059
  function buildSkillGroupDomNodes(opts) {
3350
4060
  const { t, skillsCatalog, disabledSet, searchQuery, expandedSkillScopes, includeProject, writable, onToggleScopeExpand, onCommitSet, onPreviewSkill } = opts;
@@ -3793,7 +4503,7 @@ window.__ModuleLoader__.load({
3793
4503
  let toolsCatalogAttempted = false;
3794
4504
  let toolsLoading = false;
3795
4505
  let toolsSearchQuery = "";
3796
- const expandedToolNodes = new Set();
4506
+ const expandedToolNodes = new Set(TOOL_SCOPE_ORDER.map((s) => `scope:${s}`));
3797
4507
  let defaultExpandedToolsSeeded = false;
3798
4508
  const skillsChannel = createPolicyChannel(skillsBridge);
3799
4509
  let skillsCatalog = [];
@@ -3856,8 +4566,11 @@ window.__ModuleLoader__.load({
3856
4566
  toolsCatalogLoaded = true;
3857
4567
  if (!defaultExpandedToolsSeeded) {
3858
4568
  defaultExpandedToolsSeeded = true;
3859
- const initialTree = buildToolPrefixTree(toolsCatalog, toolsChannel.effectiveSet(sessionId), "");
3860
- for (const node of initialTree) if (node.kind === "node") expandedToolNodes.add(node.prefix);
4569
+ const initialGroups = buildToolScopeGroups(toolsCatalog, toolsChannel.effectiveSet(sessionId), "");
4570
+ for (const group of initialGroups) {
4571
+ expandedToolNodes.add(`scope:${group.scope}`);
4572
+ for (const node of group.children) if (node.kind === "node") expandedToolNodes.add(node.prefix);
4573
+ }
3861
4574
  }
3862
4575
  lastSignature = "";
3863
4576
  const current = findActiveChatConversation();
@@ -4246,7 +4959,7 @@ window.__ModuleLoader__.load({
4246
4959
  }
4247
4960
  //#endregion
4248
4961
  //#region \0dsh-desktop-enhance-css:/Users/lijiechengbj/projects/AI-agents/dsh-desktop-enhance/src/client/styles/enhance.css.mjs
4249
- var enhance_css_default = "\n\n:root:not([data-desktop-enhance-off-compaction-row])\n [hidden=\"until-found\"]:has([data-chat-flow-kind=\"compaction\"]),\n:root:not([data-desktop-enhance-off-compaction-row])\n [hidden=\"until-found\"]:has([data-chat-flow-kind=\"manual-compaction\"]) {\n content-visibility: visible !important;\n}\n\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"compaction\"][hidden=\"until-found\"],\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"manual-compaction\"][hidden=\"until-found\"] {\n content-visibility: visible !important;\n}\n:root:not([data-desktop-enhance-off-compaction-row])\n [hidden=\"until-found\"]:has([data-chat-flow-kind=\"compaction\"])\n [data-turn-process-member=\"true\"]:not([data-chat-flow-kind=\"compaction\"]):not([data-chat-flow-kind=\"manual-compaction\"]),\n:root:not([data-desktop-enhance-off-compaction-row])\n [hidden=\"until-found\"]:has([data-chat-flow-kind=\"manual-compaction\"])\n [data-turn-process-member=\"true\"]:not([data-chat-flow-kind=\"compaction\"]):not([data-chat-flow-kind=\"manual-compaction\"]) {\n display: none !important;\n}\n\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-step-process=\"true\"][hidden=\"until-found\"]:has([data-chat-flow-kind=\"compaction\"])\n > div:has(> [data-process-activity]),\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-step-process=\"true\"][hidden=\"until-found\"]:has([data-chat-flow-kind=\"manual-compaction\"])\n > div:has(> [data-process-activity]) {\n display: none !important;\n}\n\n\n:root:not([data-desktop-enhance-off-compaction-row]) [data-chat-flow-kind=\"compaction\"],\n:root:not([data-desktop-enhance-off-compaction-row]) [data-chat-flow-kind=\"manual-compaction\"] {\n padding: 6px 0 !important;\n}\n\n:root:not([data-desktop-enhance-off-compaction-row]) [data-chat-flow-kind=\"compaction\"] button,\n:root:not([data-desktop-enhance-off-compaction-row]) [data-chat-flow-kind=\"manual-compaction\"] button {\n width: fit-content !important;\n margin: 0 auto !important;\n height: auto !important;\n min-height: 28px;\n padding: 0 14px !important;\n justify-content: center !important;\n background: var(--dsw-alias-state-warn-tertiary) !important;\n border-radius: 999px !important;\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--dsw-alias-state-warn-primary) 45%, transparent);\n color: var(--dsw-alias-state-warn-label) !important;\n}\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"compaction\"] button:hover:not(:disabled),\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"manual-compaction\"] button:hover:not(:disabled) {\n background: var(--dsw-alias-state-warn-secondary) !important;\n}\n\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"compaction\"] button:has([data-compaction-disclosure=\"expanded\"]),\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"manual-compaction\"] button:has([data-compaction-disclosure=\"expanded\"]) {\n width: 100% !important;\n margin: 0 !important;\n border-radius: var(--dsw-radius-sm) !important;\n}\n\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"compaction\"] button > span:not([aria-hidden]):not(:last-child),\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"manual-compaction\"] button > span:not([aria-hidden]):not(:last-child) {\n font-weight: 600;\n}\n\n\n[data-desktop-enhance-reveal] {\n content-visibility: visible !important;\n}\n[hidden=\"until-found\"]:has([data-chat-flow-kind=\"compaction\"])\n [data-turn-process-member=\"true\"][data-desktop-enhance-reveal]:not([data-chat-flow-kind=\"compaction\"]) {\n display: revert !important;\n}\n\n\n:root:not([data-desktop-enhance-off-turn-prefix]) [data-desktop-enhance-turn]::before {\n content: attr(data-desktop-enhance-turn);\n flex: none;\n margin-right: 6px;\n padding: 0 5px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxxs-strong-11);\n}\n\n\n\n:root[data-desktop-enhance-off-find-bar] [data-desktop-enhance-findbar] {\n display: none !important;\n}\n[data-desktop-enhance-findbar] {\n position: absolute;\n top: 12px;\n right: 20px;\n z-index: 30;\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 8px;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--dsw-elevation-panel);\n}\n[data-desktop-enhance-findbar] input {\n width: 200px;\n border: none;\n outline: none;\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-s-14);\n}\n[data-desktop-enhance-findbar] input:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n[data-desktop-enhance-findbar] .count {\n min-width: 44px;\n text-align: right;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n[data-desktop-enhance-findbar] button {\n display: grid;\n place-items: center;\n width: 22px;\n height: 22px;\n padding: 0;\n border: none;\n border-radius: var(--dsw-radius-xs);\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n font: var(--dsw-font-s-14);\n}\n[data-desktop-enhance-findbar] button:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n[data-desktop-enhance-findbar] button:disabled {\n opacity: .4;\n cursor: default;\n}\n::highlight(desktop-enhance-find) {\n background-color: var(--dsw-alias-state-warn-tertiary);\n}\n::highlight(desktop-enhance-find-current) {\n background-color: var(--dsw-alias-state-warn-primary);\n color: var(--dsw-alias-label-primary-inverted);\n}\n\n\n[data-desktop-enhance-settings] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 0;\n}\n[data-desktop-enhance-settings] .de-head-title {\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-s-14);\n font-weight: 600;\n}\n[data-desktop-enhance-settings] .de-head-desc,\n[data-desktop-enhance-settings] .de-desc {\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n[data-desktop-enhance-settings] .de-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n[data-desktop-enhance-settings] .de-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n[data-desktop-enhance-settings] .de-title {\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-s-14);\n}\n\n[data-desktop-enhance-settings] .de-switch {\n position: relative;\n flex: none;\n width: 36px;\n height: 20px;\n padding: 0;\n border: none;\n border-radius: 999px;\n background: var(--dsw-alias-interactive-bg-hover-solid);\n cursor: pointer;\n transition: background .15s;\n}\n[data-desktop-enhance-settings] .de-switch::after {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--dsw-alias-switch-thumb);\n transition: transform .15s;\n}\n[data-desktop-enhance-settings] .de-switch[aria-checked=\"true\"] {\n background: var(--dsw-alias-state-success-primary);\n}\n[data-desktop-enhance-settings] .de-switch[aria-checked=\"true\"]::after {\n transform: translateX(16px);\n}\n[data-desktop-enhance-settings] .de-switch:disabled {\n opacity: .5;\n cursor: default;\n}\n[data-desktop-enhance-settings] .de-note {\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n[data-desktop-enhance-settings] .de-error {\n color: var(--dsw-alias-state-error-primary);\n font: var(--dsw-font-xxs-12);\n}\n\n\n\n[data-desktop-enhance-settings] .de-suggest-settings {\n display: flex;\n flex-direction: column;\n gap: 12px;\n \n border-top: 1px solid var(--dsw-alias-border-l1);\n margin-top: 4px;\n padding-top: 12px;\n}\n[data-desktop-enhance-settings] .de-item-block {\n align-items: stretch;\n flex-direction: column;\n gap: 6px;\n}\n[data-desktop-enhance-settings] .de-select,\n[data-desktop-enhance-settings] .de-text-input,\n[data-desktop-enhance-settings] .de-textarea {\n background: var(--dsw-alias-bg-layer-2);\n border: 1px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-xs-13);\n padding: 6px 8px;\n width: 100%;\n}\n[data-desktop-enhance-settings] .de-select:disabled,\n[data-desktop-enhance-settings] .de-text-input:disabled,\n[data-desktop-enhance-settings] .de-textarea:disabled {\n opacity: .5;\n}\n\n[data-desktop-enhance-settings] .de-textarea {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n line-height: 1.5;\n resize: vertical;\n white-space: pre-wrap;\n}\n[data-desktop-enhance-settings] .de-prompt {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n[data-desktop-enhance-settings] .de-prompt-meta {\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n[data-desktop-enhance-settings] .de-prompt-actions {\n display: flex;\n gap: 8px;\n}\n[data-desktop-enhance-settings] .de-button {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n border: 1px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n font: var(--dsw-font-xxs-12);\n padding: 4px 10px;\n}\n[data-desktop-enhance-settings] .de-button:hover {\n border-color: var(--dsw-alias-border-l2);\n}\n[data-desktop-enhance-settings] .de-button:disabled {\n cursor: default;\n opacity: .5;\n}\n\n\n\n\n:root[data-desktop-enhance-off-suggest] [data-desktop-enhance='suggest'] {\n display: none !important;\n}\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest {\n align-items: center;\n \n background: color-mix(in srgb, var(--dsw-alias-state-business-tertiary) 10%, transparent);\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 20%, transparent);\n border-radius: var(--dsw-radius-md);\n box-sizing: border-box;\n display: flex;\n \n flex-wrap: wrap;\n gap: 6px;\n \n margin: 0 auto 6px;\n max-width: var(--dsh-composer-card-max-width, 100%);\n \n min-width: 0;\n \n padding: 4px 10px 4px 13px;\n width: calc(100% - var(--dsh-composer-side-clearance, 0px) - var(--dsh-composer-side-clearance, 0px));\n}\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-head {\n align-items: center;\n display: flex;\n flex: none;\n gap: 2px;\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-title {\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n \n white-space: nowrap;\n}\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-close {\n appearance: none;\n background: none;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n flex: none;\n font: var(--dsw-font-xxs-12);\n line-height: 1;\n padding: 2px 4px;\n}\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-close:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-row {\n appearance: none;\n align-items: center;\n background: none;\n \n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 35%, transparent);\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n display: flex;\n flex: 0 1 auto;\n font: var(--dsw-font-xs-13);\n gap: 6px;\n \n max-width: 100%;\n min-width: 0;\n padding: 4px 10px;\n text-align: left;\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-row:hover {\n background: var(--dsw-alias-state-business-tertiary);\n border-color: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-state-business-primary);\n transition: background-color .12s ease, border-color .12s ease, color .12s ease;\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-row[data-used='true'] {\n border-color: var(--dsw-alias-brand-primary);\n color: var(--dsw-alias-label-secondary);\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-num {\n color: var(--dsw-alias-label-primary);\n flex: none;\n font: var(--dsw-font-xs-13);\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-text {\n max-width: 22ch;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-loading {\n border-style: dashed;\n color: var(--dsw-alias-label-secondary);\n cursor: default;\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-error {\n color: var(--dsw-alias-state-error-primary);\n flex: 1 1 auto;\n font: var(--dsw-font-xxs-12);\n min-width: 0;\n padding: 2px;\n}\n\n\n:root:not([data-desktop-enhance-off-step-duration]) [data-desktop-enhance-duration]::after {\n content: attr(data-desktop-enhance-duration);\n \n margin-left: 8px;\n font-size: inherit;\n line-height: inherit;\n \n font-variant-numeric: tabular-nums;\n color: inherit;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n:root:not([data-desktop-enhance-off-step-duration])\n [data-desktop-enhance-duration]:has([data-step-process-icon])::after {\n margin-left: 2px;\n}\n\n\n:root[data-desktop-enhance-off-session-info] [data-desktop-enhance-session-info] {\n display: none !important;\n}\n:root:not([data-desktop-enhance-off-session-info]) [data-desktop-enhance-session-info] {\n position: absolute;\n top: 12px;\n right: 36px;\n z-index: 10;\n width: 244px;\n box-sizing: border-box;\n border-radius: var(--dsw-radius-lg);\n border: 1px solid var(--dsw-alias-border-l2);\n background: color-mix(in srgb, var(--dsw-alias-bg-layer-1) 90%, transparent);\n backdrop-filter: blur(12px);\n -webkit-backdrop-filter: blur(12px);\n box-shadow: var(--dsw-elevation-panel);\n color: var(--dsw-alias-label-primary);\n overflow: hidden;\n}\n:root:not([data-desktop-enhance-off-session-info])\n [data-desktop-enhance-session-info][data-minimized=\"true\"] {\n width: auto;\n border-radius: 999px;\n}\n[data-desktop-enhance-session-info] [data-session-info-header] {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 6px 10px;\n border: none;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: color-mix(in srgb, var(--dsw-alias-bg-module-platform) 60%, transparent);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-strong-12, 600 12px/18px sans-serif);\n cursor: pointer;\n user-select: none;\n}\n[data-desktop-enhance-session-info][data-minimized=\"true\"] [data-session-info-header] {\n border-bottom: none;\n background: transparent;\n padding: 5px 11px;\n}\n[data-desktop-enhance-session-info] [data-session-info-header]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n[data-desktop-enhance-session-info] [data-session-info-title] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n}\n[data-desktop-enhance-session-info] [data-session-info-dot] {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n flex: none;\n background: var(--dsw-alias-state-business-primary);\n box-shadow: 0 0 0 2.5px var(--dsw-alias-state-business-tertiary);\n}\n[data-desktop-enhance-session-info] [data-session-info-dot=\"idle\"] {\n background: var(--dsw-alias-label-caption);\n box-shadow: none;\n}\n[data-desktop-enhance-session-info] [data-session-info-chevron] {\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 1;\n}\n[data-desktop-enhance-session-info] [data-session-info-section] {\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n[data-desktop-enhance-session-info] [data-session-info-section]:last-child {\n border-bottom: none;\n}\n[data-desktop-enhance-session-info] [data-session-info-section-header] {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 6px 10px;\n border: none;\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-xxs-strong-12, 600 12px/18px sans-serif);\n cursor: pointer;\n user-select: none;\n}\n[data-desktop-enhance-session-info] [data-session-info-section-header]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n[data-desktop-enhance-session-info] [data-session-info-section-label] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n min-width: 0;\n}\n[data-desktop-enhance-session-info] [data-session-info-arrow] {\n color: var(--dsw-alias-label-tertiary);\n font-size: 10px;\n}\n[data-desktop-enhance-session-info] [data-session-info-count] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 11px;\n font-weight: 600;\n padding: 0 5px;\n line-height: 16px;\n border-radius: 999px;\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-desktop-enhance-session-info][data-empty=\"true\"] [data-session-info-count] {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-tertiary);\n}\n[data-desktop-enhance-session-info] [data-session-info-body] {\n padding: 2px 6px 6px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n max-height: 184px;\n overflow-y: auto;\n}\n[data-desktop-enhance-session-info] [data-session-info-empty] {\n padding: 4px 6px;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n[data-desktop-enhance-session-info] [data-session-info-item] {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 5px 8px;\n border: none;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n text-align: left;\n}\n[data-desktop-enhance-session-info] [data-session-info-item]:hover {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n}\n[data-desktop-enhance-session-info] [data-session-info-item-name] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n[data-desktop-enhance-session-info] [data-session-info-item-meta] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n flex: none;\n}\n[data-desktop-enhance-session-info] [data-session-info-item-badge] {\n font-size: 10.5px;\n color: var(--dsw-alias-label-tertiary);\n}\n[data-desktop-enhance-session-info] [data-session-info-item-turn] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 11px;\n padding: 0 5px;\n line-height: 16px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n}\n\n\n:root[data-desktop-enhance-off-tools-manager] [data-session-info-section=\"tools\"],\n:root[data-desktop-enhance-off-tools-manager] [data-desktop-enhance-tools-popover],\n:root[data-desktop-enhance-off-tools-manager] [data-desktop-enhance-defaults=\"tools\"] {\n display: none !important;\n}\n:root[data-desktop-enhance-off-skills-manager] [data-session-info-skills-summary],\n:root[data-desktop-enhance-off-skills-manager] [data-desktop-enhance-skills-popover],\n:root[data-desktop-enhance-off-skills-manager] [data-desktop-enhance-defaults=\"skills\"] {\n display: none !important;\n}\n[data-desktop-enhance-session-info] [data-session-info-skills-summary] {\n border-top: 0.5px dashed var(--dsw-alias-border-l2);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-row] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 10px;\n gap: 8px;\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-left] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n min-width: 0;\n flex-wrap: wrap;\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-title] {\n font: var(--dsw-font-xxs-strong-12, 600 12px/18px sans-serif);\n color: var(--dsw-alias-label-primary);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-count] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 11px;\n font-weight: 600;\n padding: 0 5px;\n line-height: 16px;\n border-radius: 999px;\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-count][data-has-disabled=\"true\"] {\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-state-warn-label);\n}\n[data-desktop-enhance-session-info] [data-session-info-override-badge] {\n font-size: 10px;\n padding: 0 5px;\n line-height: 15px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-state-business-primary);\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 25%, transparent);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-manage] {\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 30%, transparent);\n border-radius: var(--dsw-radius-xs);\n padding: 2px 8px;\n font: var(--dsw-font-xxs-strong-12, 600 11px/16px sans-serif);\n cursor: pointer;\n flex: none;\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-manage]:hover {\n background: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-bg-layer-1);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-disabled],\n[data-desktop-enhance-session-info] [data-session-info-skills-disabled] {\n padding: 0 10px 7px;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 4px;\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-muted],\n[data-desktop-enhance-tools-popover] [data-session-info-tools-muted],\n[data-desktop-enhance-skills-popover] [data-session-info-tools-muted] {\n font: var(--dsw-font-xxs-12);\n font-size: 11px;\n color: var(--dsw-alias-label-tertiary);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-tag],\n[data-desktop-enhance-session-info] [data-session-info-skills-tag] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 10.5px;\n padding: 1px 5px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n text-decoration: line-through;\n}\n:root:not([data-desktop-enhance-off-tools-manager]) [data-desktop-enhance-tools-popover],\n:root:not([data-desktop-enhance-off-skills-manager]) [data-desktop-enhance-skills-popover] {\n position: absolute;\n top: 12px;\n right: 292px;\n width: 520px;\n max-width: calc(100% - 308px);\n z-index: 20;\n background: var(--dsw-alias-bg-layer-2);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n box-shadow: var(--dsw-alias-shadow-l2, 0 8px 24px color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent));\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-primary);\n}\n[data-tools-popover-header] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3);\n}\n[data-tools-popover-title-wrap] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n[data-tools-popover-title] {\n font: var(--dsw-font-xs-strong-13, 600 13px/18px sans-serif);\n color: var(--dsw-alias-label-primary);\n}\n[data-tools-popover-close] {\n background: transparent;\n border: none;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n font: var(--dsw-font-xs-13);\n padding: 4px 6px;\n border-radius: var(--dsw-radius-xs);\n}\n[data-tools-popover-close]:hover {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-primary);\n}\n[data-tools-popover-body] {\n display: flex;\n flex-direction: column;\n padding: 10px 12px;\n gap: 8px;\n}\n[data-popover-override-banner] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 6px 10px;\n border-radius: var(--dsw-radius-sm);\n background: color-mix(in srgb, var(--dsw-alias-state-business-tertiary) 45%, transparent);\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 25%, transparent);\n font-size: 11.5px;\n color: var(--dsw-alias-label-primary);\n}\n[data-tools-popover-toolbar] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n[data-tools-popover-search] {\n flex: 1 1 auto;\n min-width: 0;\n background: var(--dsw-alias-bg-layer-1);\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n padding: 5px 9px;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-primary);\n}\n[data-tools-popover-actions] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex: none;\n}\n[data-tools-popover-tree] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n max-height: 380px;\n overflow-y: auto;\n padding-right: 2px;\n}\n[data-tools-node-header] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 5px 8px;\n border-radius: var(--dsw-radius-xs);\n cursor: pointer;\n user-select: none;\n}\n[data-tools-node-header]:hover,\n[data-tools-leaf]:hover {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n}\n[data-tools-node-title] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n min-width: 0;\n}\n[data-tools-leaf] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 10px;\n padding: 5px 8px;\n border-radius: var(--dsw-radius-xs);\n}\n[data-tools-leaf-info] {\n flex: 1 1 auto;\n min-width: 0;\n}\n[data-skills-leaf-header] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px;\n}\n[data-tools-leaf-name] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n word-break: break-all;\n}\n[data-tools-leaf][data-disabled=\"true\"] [data-tools-leaf-name] {\n color: var(--dsw-alias-label-tertiary);\n text-decoration: line-through;\n}\n[data-skills-source-badge],\n[data-skills-user-only] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 10px;\n padding: 0 5px;\n line-height: 15px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n}\n[data-skills-source-badge=\"project\"] {\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-skills-preview] {\n background: transparent;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n font-size: 10px;\n padding: 0 5px;\n line-height: 15px;\n}\n[data-skills-preview]:hover {\n border-color: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-state-business-primary);\n}\n[data-tools-leaf-desc] {\n font-size: 11px;\n line-height: 16px;\n color: var(--dsw-alias-label-tertiary);\n margin-top: 2px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n}\n[data-tools-controls] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex: none;\n}\n[data-tools-pill] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 10.5px;\n padding: 1px 6px;\n line-height: 16px;\n border-radius: 999px;\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-tools-pill][data-disabled=\"true\"] {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-tertiary);\n}\n[data-tools-btn] {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n font: var(--dsw-font-xxs-12);\n font-size: 11px;\n padding: 2px 8px;\n}\n[data-tools-btn]:hover:not(:disabled) {\n border-color: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-state-business-primary);\n}\n[data-tools-btn]:disabled {\n cursor: default;\n opacity: .5;\n}\n[data-tools-empty] {\n padding: 8px;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n\n\n[data-desktop-enhance-settings] .de-defaults-box {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 10px 12px;\n border-radius: var(--dsw-radius-sm);\n border: 1px solid var(--dsw-alias-border-l1);\n background: color-mix(in srgb, var(--dsw-alias-bg-layer-2) 60%, transparent);\n}\n[data-desktop-enhance-settings] .de-defaults-summary {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n}\n[data-desktop-enhance-settings] .de-defaults-title-row {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n[data-desktop-enhance-settings] .de-defaults-tags {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 4px;\n margin-top: 2px;\n}\n[data-desktop-enhance-settings] .de-defaults-status,\n[data-desktop-enhance-settings] .de-defaults-muted {\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n font-size: 11px;\n}\n[data-desktop-enhance-settings] .de-defaults-tag {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 11px;\n padding: 1px 6px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n text-decoration: line-through;\n}\n[data-desktop-enhance-settings] .de-defaults-panel {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--dsw-alias-border-l1);\n}\n[data-desktop-enhance-settings] .de-defaults-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n[data-desktop-enhance-settings] .de-defaults-tree {\n display: flex;\n flex-direction: column;\n gap: 2px;\n max-height: 320px;\n overflow-y: auto;\n}\n[data-desktop-enhance-settings] .de-defaults-group-head,\n[data-desktop-enhance-settings] .de-defaults-leaf {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n padding: 5px 8px;\n border-radius: var(--dsw-radius-xs);\n}\n[data-desktop-enhance-settings] .de-defaults-group-head {\n cursor: pointer;\n user-select: none;\n}\n[data-desktop-enhance-settings] .de-defaults-group-head:hover,\n[data-desktop-enhance-settings] .de-defaults-leaf:hover {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n}\n[data-desktop-enhance-settings] .de-defaults-group-title {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n[data-desktop-enhance-settings] .de-defaults-leaf-info {\n flex: 1 1 auto;\n min-width: 0;\n}\n[data-desktop-enhance-settings] .de-defaults-leaf-head {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px;\n}\n[data-desktop-enhance-settings] .de-defaults-leaf-name {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n[data-desktop-enhance-settings] .de-defaults-leaf[data-disabled=\"true\"] .de-defaults-leaf-name {\n color: var(--dsw-alias-label-tertiary);\n text-decoration: line-through;\n}\n[data-desktop-enhance-settings] .de-defaults-leaf-desc {\n font-size: 11px;\n line-height: 16px;\n color: var(--dsw-alias-label-tertiary);\n margin-top: 2px;\n}\n[data-desktop-enhance-settings] .de-defaults-source-badge {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 10px;\n padding: 0 5px;\n line-height: 15px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n}\n[data-desktop-enhance-settings] .de-defaults-controls {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex: none;\n}\n[data-desktop-enhance-settings] .de-defaults-pill {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 10.5px;\n padding: 1px 6px;\n line-height: 16px;\n border-radius: 999px;\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-desktop-enhance-settings] .de-defaults-pill[data-disabled=\"true\"] {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n\n";
4962
+ var enhance_css_default = "\n\n:root:not([data-desktop-enhance-off-compaction-row])\n [hidden=\"until-found\"]:has([data-chat-flow-kind=\"compaction\"]),\n:root:not([data-desktop-enhance-off-compaction-row])\n [hidden=\"until-found\"]:has([data-chat-flow-kind=\"manual-compaction\"]) {\n content-visibility: visible !important;\n}\n\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"compaction\"][hidden=\"until-found\"],\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"manual-compaction\"][hidden=\"until-found\"] {\n content-visibility: visible !important;\n}\n:root:not([data-desktop-enhance-off-compaction-row])\n [hidden=\"until-found\"]:has([data-chat-flow-kind=\"compaction\"])\n [data-turn-process-member=\"true\"]:not([data-chat-flow-kind=\"compaction\"]):not([data-chat-flow-kind=\"manual-compaction\"]),\n:root:not([data-desktop-enhance-off-compaction-row])\n [hidden=\"until-found\"]:has([data-chat-flow-kind=\"manual-compaction\"])\n [data-turn-process-member=\"true\"]:not([data-chat-flow-kind=\"compaction\"]):not([data-chat-flow-kind=\"manual-compaction\"]) {\n display: none !important;\n}\n\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-step-process=\"true\"][hidden=\"until-found\"]:has([data-chat-flow-kind=\"compaction\"])\n > div:has(> [data-process-activity]),\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-step-process=\"true\"][hidden=\"until-found\"]:has([data-chat-flow-kind=\"manual-compaction\"])\n > div:has(> [data-process-activity]) {\n display: none !important;\n}\n\n\n:root:not([data-desktop-enhance-off-compaction-row]) [data-chat-flow-kind=\"compaction\"],\n:root:not([data-desktop-enhance-off-compaction-row]) [data-chat-flow-kind=\"manual-compaction\"] {\n padding: 6px 0 !important;\n}\n\n:root:not([data-desktop-enhance-off-compaction-row]) [data-chat-flow-kind=\"compaction\"] button,\n:root:not([data-desktop-enhance-off-compaction-row]) [data-chat-flow-kind=\"manual-compaction\"] button {\n width: fit-content !important;\n margin: 0 auto !important;\n height: auto !important;\n min-height: 28px;\n padding: 0 14px !important;\n justify-content: center !important;\n background: var(--dsw-alias-state-warn-tertiary) !important;\n border-radius: 999px !important;\n box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--dsw-alias-state-warn-primary) 45%, transparent);\n color: var(--dsw-alias-state-warn-label) !important;\n}\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"compaction\"] button:hover:not(:disabled),\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"manual-compaction\"] button:hover:not(:disabled) {\n background: var(--dsw-alias-state-warn-secondary) !important;\n}\n\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"compaction\"] button:has([data-compaction-disclosure=\"expanded\"]),\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"manual-compaction\"] button:has([data-compaction-disclosure=\"expanded\"]) {\n width: 100% !important;\n margin: 0 !important;\n border-radius: var(--dsw-radius-sm) !important;\n}\n\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"compaction\"] button > span:not([aria-hidden]):not(:last-child),\n:root:not([data-desktop-enhance-off-compaction-row])\n [data-chat-flow-kind=\"manual-compaction\"] button > span:not([aria-hidden]):not(:last-child) {\n font-weight: 600;\n}\n\n\n[data-desktop-enhance-reveal] {\n content-visibility: visible !important;\n}\n[hidden=\"until-found\"]:has([data-chat-flow-kind=\"compaction\"])\n [data-turn-process-member=\"true\"][data-desktop-enhance-reveal]:not([data-chat-flow-kind=\"compaction\"]) {\n display: revert !important;\n}\n\n\n:root:not([data-desktop-enhance-off-turn-prefix]) [data-desktop-enhance-turn]::before {\n content: attr(data-desktop-enhance-turn);\n flex: none;\n margin-right: 6px;\n padding: 0 5px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxxs-strong-11);\n}\n\n\n\n:root[data-desktop-enhance-off-find-bar] [data-desktop-enhance-findbar] {\n display: none !important;\n}\n[data-desktop-enhance-findbar] {\n position: absolute;\n top: 12px;\n right: 20px;\n z-index: 30;\n display: flex;\n align-items: center;\n gap: 6px;\n padding: 6px 8px;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n background: var(--dsw-alias-bg-layer-1);\n box-shadow: var(--dsw-elevation-panel);\n}\n[data-desktop-enhance-findbar] input {\n width: 200px;\n border: none;\n outline: none;\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-s-14);\n}\n[data-desktop-enhance-findbar] input:focus-visible {\n outline: 1px solid var(--dsw-focus-ring-color);\n outline-offset: 2px;\n}\n[data-desktop-enhance-findbar] .count {\n min-width: 44px;\n text-align: right;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n[data-desktop-enhance-findbar] button {\n display: grid;\n place-items: center;\n width: 22px;\n height: 22px;\n padding: 0;\n border: none;\n border-radius: var(--dsw-radius-xs);\n background: transparent;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n font: var(--dsw-font-s-14);\n}\n[data-desktop-enhance-findbar] button:hover:not(:disabled) {\n background: var(--dsw-alias-interactive-bg-hover);\n color: var(--dsw-alias-label-primary);\n}\n[data-desktop-enhance-findbar] button:disabled {\n opacity: .4;\n cursor: default;\n}\n::highlight(desktop-enhance-find) {\n background-color: var(--dsw-alias-state-warn-tertiary);\n}\n::highlight(desktop-enhance-find-current) {\n background-color: var(--dsw-alias-state-warn-primary);\n color: var(--dsw-alias-label-primary-inverted);\n}\n\n\n[data-desktop-enhance-settings] {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 16px 0;\n}\n[data-desktop-enhance-settings] .de-head-title {\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-s-14);\n font-weight: 600;\n}\n[data-desktop-enhance-settings] .de-head-desc,\n[data-desktop-enhance-settings] .de-desc {\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n[data-desktop-enhance-settings] .de-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 16px;\n}\n[data-desktop-enhance-settings] .de-text {\n display: flex;\n flex-direction: column;\n gap: 2px;\n min-width: 0;\n}\n[data-desktop-enhance-settings] .de-title {\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-s-14);\n}\n\n[data-desktop-enhance-settings] .de-switch {\n position: relative;\n flex: none;\n width: 36px;\n height: 20px;\n padding: 0;\n border: none;\n border-radius: 999px;\n background: var(--dsw-alias-interactive-bg-hover-solid);\n cursor: pointer;\n transition: background .15s;\n}\n[data-desktop-enhance-settings] .de-switch::after {\n content: \"\";\n position: absolute;\n top: 2px;\n left: 2px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: var(--dsw-alias-switch-thumb);\n transition: transform .15s;\n}\n[data-desktop-enhance-settings] .de-switch[aria-checked=\"true\"] {\n background: var(--dsw-alias-state-success-primary);\n}\n[data-desktop-enhance-settings] .de-switch[aria-checked=\"true\"]::after {\n transform: translateX(16px);\n}\n[data-desktop-enhance-settings] .de-switch:disabled {\n opacity: .5;\n cursor: default;\n}\n[data-desktop-enhance-settings] .de-note {\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n[data-desktop-enhance-settings] .de-error {\n color: var(--dsw-alias-state-error-primary);\n font: var(--dsw-font-xxs-12);\n}\n\n\n\n[data-desktop-enhance-settings] .de-suggest-settings {\n display: flex;\n flex-direction: column;\n gap: 12px;\n \n border-top: 1px solid var(--dsw-alias-border-l1);\n margin-top: 4px;\n padding-top: 12px;\n}\n[data-desktop-enhance-settings] .de-item-block {\n align-items: stretch;\n flex-direction: column;\n gap: 6px;\n}\n[data-desktop-enhance-settings] .de-select,\n[data-desktop-enhance-settings] .de-text-input,\n[data-desktop-enhance-settings] .de-textarea {\n background: var(--dsw-alias-bg-layer-2);\n border: 1px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-xs-13);\n padding: 6px 8px;\n width: 100%;\n}\n[data-desktop-enhance-settings] .de-select:disabled,\n[data-desktop-enhance-settings] .de-text-input:disabled,\n[data-desktop-enhance-settings] .de-textarea:disabled {\n opacity: .5;\n}\n\n[data-desktop-enhance-settings] .de-textarea {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n line-height: 1.5;\n resize: vertical;\n white-space: pre-wrap;\n}\n[data-desktop-enhance-settings] .de-prompt {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n[data-desktop-enhance-settings] .de-prompt-meta {\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n[data-desktop-enhance-settings] .de-prompt-actions {\n display: flex;\n gap: 8px;\n}\n[data-desktop-enhance-settings] .de-button {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n border: 1px solid var(--dsw-alias-border-l1);\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n font: var(--dsw-font-xxs-12);\n padding: 4px 10px;\n}\n[data-desktop-enhance-settings] .de-button:hover {\n border-color: var(--dsw-alias-border-l2);\n}\n[data-desktop-enhance-settings] .de-button:disabled {\n cursor: default;\n opacity: .5;\n}\n\n\n\n\n:root[data-desktop-enhance-off-suggest] [data-desktop-enhance='suggest'] {\n display: none !important;\n}\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest {\n align-items: center;\n \n background: color-mix(in srgb, var(--dsw-alias-state-business-tertiary) 10%, transparent);\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 20%, transparent);\n border-radius: var(--dsw-radius-md);\n box-sizing: border-box;\n display: flex;\n \n flex-wrap: wrap;\n gap: 6px;\n \n margin: 0 auto 6px;\n max-width: var(--dsh-composer-card-max-width, 100%);\n \n min-width: 0;\n \n padding: 4px 10px 4px 13px;\n width: calc(100% - var(--dsh-composer-side-clearance, 0px) - var(--dsh-composer-side-clearance, 0px));\n}\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-head {\n align-items: center;\n display: flex;\n flex: none;\n gap: 2px;\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-title {\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-xs-13);\n font-weight: 500;\n \n white-space: nowrap;\n}\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-close {\n appearance: none;\n background: none;\n border: 0;\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n flex: none;\n font: var(--dsw-font-xxs-12);\n line-height: 1;\n padding: 2px 4px;\n}\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-close:hover {\n color: var(--dsw-alias-label-primary);\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-row {\n appearance: none;\n align-items: center;\n background: none;\n \n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 35%, transparent);\n border-radius: var(--dsw-radius-sm);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n display: flex;\n flex: 0 1 auto;\n font: var(--dsw-font-xs-13);\n gap: 6px;\n \n max-width: 100%;\n min-width: 0;\n padding: 4px 10px;\n text-align: left;\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-row:hover {\n background: var(--dsw-alias-state-business-tertiary);\n border-color: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-state-business-primary);\n transition: background-color .12s ease, border-color .12s ease, color .12s ease;\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-row[data-used='true'] {\n border-color: var(--dsw-alias-brand-primary);\n color: var(--dsw-alias-label-secondary);\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-num {\n color: var(--dsw-alias-label-primary);\n flex: none;\n font: var(--dsw-font-xs-13);\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-text {\n max-width: 22ch;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-loading {\n border-style: dashed;\n color: var(--dsw-alias-label-secondary);\n cursor: default;\n}\n\n:root:not([data-desktop-enhance-off-suggest]) .de-suggest-error {\n color: var(--dsw-alias-state-error-primary);\n flex: 1 1 auto;\n font: var(--dsw-font-xxs-12);\n min-width: 0;\n padding: 2px;\n}\n\n\n:root:not([data-desktop-enhance-off-step-duration]) [data-desktop-enhance-duration]::after {\n content: attr(data-desktop-enhance-duration);\n \n margin-left: 8px;\n font-size: inherit;\n line-height: inherit;\n \n font-variant-numeric: tabular-nums;\n color: inherit;\n white-space: nowrap;\n pointer-events: none;\n user-select: none;\n}\n\n:root:not([data-desktop-enhance-off-step-duration])\n [data-desktop-enhance-duration]:has([data-step-process-icon])::after {\n margin-left: 2px;\n}\n\n\n:root[data-desktop-enhance-off-session-info] [data-desktop-enhance-session-info] {\n display: none !important;\n}\n:root:not([data-desktop-enhance-off-session-info]) [data-desktop-enhance-session-info] {\n position: absolute;\n top: 12px;\n right: 36px;\n z-index: 10;\n width: 244px;\n box-sizing: border-box;\n border-radius: var(--dsw-radius-lg);\n border: 1px solid var(--dsw-alias-border-l2);\n background: color-mix(in srgb, var(--dsw-alias-bg-layer-1) 90%, transparent);\n backdrop-filter: blur(12px);\n -webkit-backdrop-filter: blur(12px);\n box-shadow: var(--dsw-elevation-panel);\n color: var(--dsw-alias-label-primary);\n overflow: hidden;\n}\n:root:not([data-desktop-enhance-off-session-info])\n [data-desktop-enhance-session-info][data-minimized=\"true\"] {\n width: auto;\n border-radius: 999px;\n}\n[data-desktop-enhance-session-info] [data-session-info-header] {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 6px 10px;\n border: none;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: color-mix(in srgb, var(--dsw-alias-bg-module-platform) 60%, transparent);\n color: var(--dsw-alias-label-secondary);\n font: var(--dsw-font-xxs-strong-12, 600 12px/18px sans-serif);\n cursor: pointer;\n user-select: none;\n}\n[data-desktop-enhance-session-info][data-minimized=\"true\"] [data-session-info-header] {\n border-bottom: none;\n background: transparent;\n padding: 5px 11px;\n}\n[data-desktop-enhance-session-info] [data-session-info-header]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n[data-desktop-enhance-session-info] [data-session-info-title] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n min-width: 0;\n}\n[data-desktop-enhance-session-info] [data-session-info-dot] {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n flex: none;\n background: var(--dsw-alias-state-business-primary);\n box-shadow: 0 0 0 2.5px var(--dsw-alias-state-business-tertiary);\n}\n[data-desktop-enhance-session-info] [data-session-info-dot=\"idle\"] {\n background: var(--dsw-alias-label-caption);\n box-shadow: none;\n}\n[data-desktop-enhance-session-info] [data-session-info-chevron] {\n color: var(--dsw-alias-label-tertiary);\n font-size: 12px;\n line-height: 1;\n}\n[data-desktop-enhance-session-info] [data-session-info-section] {\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n}\n[data-desktop-enhance-session-info] [data-session-info-section]:last-child {\n border-bottom: none;\n}\n[data-desktop-enhance-session-info] [data-session-info-section-header] {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 6px 10px;\n border: none;\n background: transparent;\n color: var(--dsw-alias-label-primary);\n font: var(--dsw-font-xxs-strong-12, 600 12px/18px sans-serif);\n cursor: pointer;\n user-select: none;\n}\n[data-desktop-enhance-session-info] [data-session-info-section-header]:hover {\n background: var(--dsw-alias-interactive-bg-hover);\n}\n[data-desktop-enhance-session-info] [data-session-info-section-label] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n min-width: 0;\n}\n[data-desktop-enhance-session-info] [data-session-info-arrow] {\n color: var(--dsw-alias-label-tertiary);\n font-size: 10px;\n}\n[data-desktop-enhance-session-info] [data-session-info-count] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 11px;\n font-weight: 600;\n padding: 0 5px;\n line-height: 16px;\n border-radius: 999px;\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-desktop-enhance-session-info][data-empty=\"true\"] [data-session-info-count] {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-tertiary);\n}\n[data-desktop-enhance-session-info] [data-session-info-body] {\n padding: 2px 6px 6px;\n display: flex;\n flex-direction: column;\n gap: 2px;\n max-height: 184px;\n overflow-y: auto;\n}\n[data-desktop-enhance-session-info] [data-session-info-empty] {\n padding: 4px 6px;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n[data-desktop-enhance-session-info] [data-session-info-item] {\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 5px 8px;\n border: none;\n border-radius: var(--dsw-radius-sm);\n background: transparent;\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n text-align: left;\n}\n[data-desktop-enhance-session-info] [data-session-info-item]:hover {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n}\n[data-desktop-enhance-session-info] [data-session-info-item-name] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-width: 0;\n}\n[data-desktop-enhance-session-info] [data-session-info-item-meta] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n flex: none;\n}\n[data-desktop-enhance-session-info] [data-session-info-item-badge] {\n font-size: 10.5px;\n color: var(--dsw-alias-label-tertiary);\n}\n[data-desktop-enhance-session-info] [data-session-info-item-turn] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 11px;\n padding: 0 5px;\n line-height: 16px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n}\n\n\n:root[data-desktop-enhance-off-tools-manager] [data-session-info-section=\"tools\"],\n:root[data-desktop-enhance-off-tools-manager] [data-desktop-enhance-tools-popover],\n:root[data-desktop-enhance-off-tools-manager] [data-desktop-enhance-defaults=\"tools\"] {\n display: none !important;\n}\n:root[data-desktop-enhance-off-skills-manager] [data-session-info-skills-summary],\n:root[data-desktop-enhance-off-skills-manager] [data-desktop-enhance-skills-popover],\n:root[data-desktop-enhance-off-skills-manager] [data-desktop-enhance-defaults=\"skills\"] {\n display: none !important;\n}\n[data-desktop-enhance-session-info] [data-session-info-skills-summary] {\n border-top: 0.5px dashed var(--dsw-alias-border-l2);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-row] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 6px 10px;\n gap: 8px;\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-left] {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n min-width: 0;\n flex-wrap: wrap;\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-title] {\n font: var(--dsw-font-xxs-strong-12, 600 12px/18px sans-serif);\n color: var(--dsw-alias-label-primary);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-count] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 11px;\n font-weight: 600;\n padding: 0 5px;\n line-height: 16px;\n border-radius: 999px;\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-count][data-has-disabled=\"true\"] {\n background: var(--dsw-alias-state-warn-tertiary);\n color: var(--dsw-alias-state-warn-label);\n}\n[data-desktop-enhance-session-info] [data-session-info-override-badge] {\n font-size: 10px;\n padding: 0 5px;\n line-height: 15px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-state-business-primary);\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 25%, transparent);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-manage] {\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 30%, transparent);\n border-radius: var(--dsw-radius-xs);\n padding: 2px 8px;\n font: var(--dsw-font-xxs-strong-12, 600 11px/16px sans-serif);\n cursor: pointer;\n flex: none;\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-manage]:hover {\n background: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-bg-layer-1);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-disabled],\n[data-desktop-enhance-session-info] [data-session-info-skills-disabled] {\n padding: 0 10px 7px;\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 4px;\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-muted],\n[data-desktop-enhance-tools-popover] [data-session-info-tools-muted],\n[data-desktop-enhance-skills-popover] [data-session-info-tools-muted] {\n font: var(--dsw-font-xxs-12);\n font-size: 11px;\n color: var(--dsw-alias-label-tertiary);\n}\n[data-desktop-enhance-session-info] [data-session-info-tools-tag],\n[data-desktop-enhance-session-info] [data-session-info-skills-tag] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 10.5px;\n padding: 1px 5px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n text-decoration: line-through;\n}\n:root:not([data-desktop-enhance-off-tools-manager]) [data-desktop-enhance-tools-popover],\n:root:not([data-desktop-enhance-off-skills-manager]) [data-desktop-enhance-skills-popover] {\n position: absolute;\n top: 12px;\n right: 292px;\n width: 520px;\n max-width: calc(100% - 308px);\n z-index: 20;\n background: var(--dsw-alias-bg-layer-2);\n border: 0.5px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-md);\n box-shadow: var(--dsw-alias-shadow-l2, 0 8px 24px color-mix(in srgb, var(--dsw-alias-label-primary) 12%, transparent));\n display: flex;\n flex-direction: column;\n overflow: hidden;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-primary);\n}\n[data-tools-popover-header] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 10px 14px;\n border-bottom: 0.5px solid var(--dsw-alias-border-l2);\n background: var(--dsw-alias-bg-layer-3);\n}\n[data-tools-popover-title-wrap] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n[data-tools-popover-title] {\n font: var(--dsw-font-xs-strong-13, 600 13px/18px sans-serif);\n color: var(--dsw-alias-label-primary);\n}\n[data-tools-popover-close] {\n background: transparent;\n border: none;\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n font: var(--dsw-font-xs-13);\n padding: 4px 6px;\n border-radius: var(--dsw-radius-xs);\n}\n[data-tools-popover-close]:hover {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-primary);\n}\n[data-tools-popover-body] {\n display: flex;\n flex-direction: column;\n padding: 10px 12px;\n gap: 8px;\n}\n[data-popover-override-banner] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 6px 10px;\n border-radius: var(--dsw-radius-sm);\n background: color-mix(in srgb, var(--dsw-alias-state-business-tertiary) 45%, transparent);\n border: 1px solid color-mix(in srgb, var(--dsw-alias-state-business-primary) 25%, transparent);\n font-size: 11.5px;\n color: var(--dsw-alias-label-primary);\n}\n[data-tools-popover-toolbar] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n[data-tools-popover-search] {\n flex: 1 1 auto;\n min-width: 0;\n background: var(--dsw-alias-bg-layer-1);\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-sm);\n padding: 5px 9px;\n font: var(--dsw-font-xxs-12);\n color: var(--dsw-alias-label-primary);\n}\n[data-tools-popover-actions] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex: none;\n}\n[data-tools-popover-tree] {\n display: flex;\n flex-direction: column;\n gap: 2px;\n max-height: 380px;\n overflow-y: auto;\n padding-right: 2px;\n}\n[data-tools-node-header] {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n padding: 5px 8px;\n border-radius: var(--dsw-radius-xs);\n cursor: pointer;\n user-select: none;\n}\n[data-tools-node-header]:hover,\n[data-tools-leaf]:hover {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n}\n[data-tools-node-title] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n min-width: 0;\n}\n[data-tools-leaf] {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 10px;\n padding: 5px 8px;\n border-radius: var(--dsw-radius-xs);\n}\n[data-tools-leaf-info] {\n flex: 1 1 auto;\n min-width: 0;\n}\n[data-tools-leaf-header],\n[data-skills-leaf-header] {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px;\n}\n[data-tools-leaf-name] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n word-break: break-all;\n}\n[data-tools-leaf][data-disabled=\"true\"] [data-tools-leaf-name] {\n color: var(--dsw-alias-label-tertiary);\n text-decoration: line-through;\n}\n[data-tools-source-badge],\n[data-skills-source-badge],\n[data-skills-user-only] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 10px;\n padding: 0 5px;\n line-height: 15px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n}\n[data-tools-source-badge=\"plugin\"],\n[data-skills-source-badge=\"project\"] {\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-skills-preview] {\n background: transparent;\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-secondary);\n cursor: pointer;\n font-size: 10px;\n padding: 0 5px;\n line-height: 15px;\n}\n[data-skills-preview]:hover {\n border-color: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-state-business-primary);\n}\n[data-tools-leaf-desc] {\n font-size: 11px;\n line-height: 16px;\n color: var(--dsw-alias-label-tertiary);\n margin-top: 2px;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n overflow: hidden;\n word-break: break-word;\n}\n[data-tools-controls] {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex: none;\n}\n[data-tools-pill] {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 10.5px;\n padding: 1px 6px;\n line-height: 16px;\n border-radius: 999px;\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-tools-pill][data-disabled=\"true\"] {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-tertiary);\n}\n[data-tools-btn] {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n border: 1px solid var(--dsw-alias-border-l2);\n border-radius: var(--dsw-radius-xs);\n color: var(--dsw-alias-label-primary);\n cursor: pointer;\n font: var(--dsw-font-xxs-12);\n font-size: 11px;\n padding: 2px 8px;\n}\n[data-tools-btn]:hover:not(:disabled) {\n border-color: var(--dsw-alias-state-business-primary);\n color: var(--dsw-alias-state-business-primary);\n}\n[data-tools-btn]:disabled {\n cursor: default;\n opacity: .5;\n}\n[data-tools-empty] {\n padding: 8px;\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n}\n\n\n[data-desktop-enhance-settings] .de-defaults-box {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding: 10px 12px;\n border-radius: var(--dsw-radius-sm);\n border: 1px solid var(--dsw-alias-border-l1);\n background: color-mix(in srgb, var(--dsw-alias-bg-layer-2) 60%, transparent);\n}\n[data-desktop-enhance-settings] .de-defaults-summary {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 12px;\n}\n[data-desktop-enhance-settings] .de-defaults-title-row {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n[data-desktop-enhance-settings] .de-defaults-tags {\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n gap: 4px;\n margin-top: 2px;\n}\n[data-desktop-enhance-settings] .de-defaults-status,\n[data-desktop-enhance-settings] .de-defaults-muted {\n color: var(--dsw-alias-label-tertiary);\n font: var(--dsw-font-xxs-12);\n font-size: 11px;\n}\n[data-desktop-enhance-settings] .de-defaults-tag {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 11px;\n padding: 1px 6px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n text-decoration: line-through;\n}\n[data-desktop-enhance-settings] .de-defaults-panel {\n display: flex;\n flex-direction: column;\n gap: 8px;\n padding-top: 8px;\n border-top: 1px solid var(--dsw-alias-border-l1);\n}\n[data-desktop-enhance-settings] .de-defaults-toolbar {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 8px;\n}\n[data-desktop-enhance-settings] .de-defaults-tree {\n display: flex;\n flex-direction: column;\n gap: 2px;\n max-height: 320px;\n overflow-y: auto;\n}\n[data-desktop-enhance-settings] .de-defaults-group-head,\n[data-desktop-enhance-settings] .de-defaults-leaf {\n display: flex;\n align-items: center;\n justify-content: space-between;\n gap: 10px;\n padding: 5px 8px;\n border-radius: var(--dsw-radius-xs);\n}\n[data-desktop-enhance-settings] .de-defaults-group-head {\n cursor: pointer;\n user-select: none;\n}\n[data-desktop-enhance-settings] .de-defaults-group-head:hover,\n[data-desktop-enhance-settings] .de-defaults-leaf:hover {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n}\n[data-desktop-enhance-settings] .de-defaults-group-title {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n font-weight: 600;\n color: var(--dsw-alias-label-primary);\n}\n[data-desktop-enhance-settings] .de-defaults-leaf-info {\n flex: 1 1 auto;\n min-width: 0;\n}\n[data-desktop-enhance-settings] .de-defaults-leaf-head {\n display: flex;\n align-items: center;\n flex-wrap: wrap;\n gap: 6px;\n}\n[data-desktop-enhance-settings] .de-defaults-leaf-name {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 12px;\n font-weight: 500;\n color: var(--dsw-alias-label-primary);\n}\n[data-desktop-enhance-settings] .de-defaults-leaf[data-disabled=\"true\"] .de-defaults-leaf-name {\n color: var(--dsw-alias-label-tertiary);\n text-decoration: line-through;\n}\n[data-desktop-enhance-settings] .de-defaults-leaf-desc {\n font-size: 11px;\n line-height: 16px;\n color: var(--dsw-alias-label-tertiary);\n margin-top: 2px;\n}\n[data-desktop-enhance-settings] .de-defaults-source-badge {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 10px;\n padding: 0 5px;\n line-height: 15px;\n border-radius: var(--dsw-radius-xs);\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-secondary);\n}\n[data-desktop-enhance-settings] .de-defaults-source-badge[data-tool-scope=\"plugin\"] {\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-desktop-enhance-settings] .de-defaults-controls {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n flex: none;\n}\n[data-desktop-enhance-settings] .de-defaults-pill {\n font-family: var(--dsw-font-family-mono, ui-monospace, SFMono-Regular, Menlo, monospace);\n font-size: 10.5px;\n padding: 1px 6px;\n line-height: 16px;\n border-radius: 999px;\n background: var(--dsw-alias-state-business-tertiary);\n color: var(--dsw-alias-label-primary-bluish);\n}\n[data-desktop-enhance-settings] .de-defaults-pill[data-disabled=\"true\"] {\n background: var(--dsw-alias-interactive-bg-hover-solid);\n color: var(--dsw-alias-label-tertiary);\n}\n\n\n\n";
4250
4963
  //#endregion
4251
4964
  //#region src/client/index.tsx
4252
4965
  const inject = [
@@ -4520,7 +5233,10 @@ window.__ModuleLoader__.load({
4520
5233
  installSessionInfo,
4521
5234
  DISABLED_TOOL_PREFIX,
4522
5235
  MAX_SESSION_OVERRIDES: 32,
5236
+ TOOL_SCOPE_ORDER,
4523
5237
  buildToolPrefixTree,
5238
+ buildToolScopeGroups,
5239
+ classifyToolOrigin,
4524
5240
  clearSessionOverride,
4525
5241
  collectNodeLeafNames,
4526
5242
  disabledToolReason,
@@ -4535,6 +5251,7 @@ window.__ModuleLoader__.load({
4535
5251
  splitToolName,
4536
5252
  toggleNodeInSet,
4537
5253
  toggleToolInSet,
5254
+ toggleToolScopeGroupInSet,
4538
5255
  updateSessionOverride,
4539
5256
  SKILL_SCOPE_ORDER,
4540
5257
  buildSkillScopeGroups,