dsh-zotero 0.4.0 → 0.4.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.
Files changed (96) hide show
  1. package/README.en.md +9 -0
  2. package/README.md +12 -3
  3. package/lib/ask.d.ts +0 -3
  4. package/lib/ask.d.ts.map +1 -1
  5. package/lib/ask.js +1 -1
  6. package/lib/ask.js.map +1 -1
  7. package/lib/client.js +113 -13
  8. package/lib/client.js.map +3 -3
  9. package/lib/command.d.ts +0 -3
  10. package/lib/command.d.ts.map +1 -1
  11. package/lib/command.js +1 -1
  12. package/lib/command.js.map +1 -1
  13. package/lib/concurrency.d.ts +12 -0
  14. package/lib/concurrency.d.ts.map +1 -0
  15. package/lib/concurrency.js +35 -0
  16. package/lib/concurrency.js.map +1 -0
  17. package/lib/config.d.ts +3 -0
  18. package/lib/config.d.ts.map +1 -1
  19. package/lib/config.js +2 -0
  20. package/lib/config.js.map +1 -1
  21. package/lib/contract.d.ts +0 -10
  22. package/lib/contract.d.ts.map +1 -1
  23. package/lib/contract.js +1 -1
  24. package/lib/contract.js.map +1 -1
  25. package/lib/http-client.d.ts.map +1 -1
  26. package/lib/http-client.js +14 -3
  27. package/lib/http-client.js.map +1 -1
  28. package/lib/index.d.ts +1 -1
  29. package/lib/index.js +1 -1
  30. package/lib/item-graph.d.ts +55 -0
  31. package/lib/item-graph.d.ts.map +1 -0
  32. package/lib/item-graph.js +47 -0
  33. package/lib/item-graph.js.map +1 -0
  34. package/lib/local/identity.d.ts +35 -0
  35. package/lib/local/identity.d.ts.map +1 -0
  36. package/lib/local/identity.js +27 -0
  37. package/lib/local/identity.js.map +1 -0
  38. package/lib/normalize.d.ts +13 -7
  39. package/lib/normalize.d.ts.map +1 -1
  40. package/lib/normalize.js +104 -24
  41. package/lib/normalize.js.map +1 -1
  42. package/lib/presentation-meta.d.ts +25 -20
  43. package/lib/presentation-meta.d.ts.map +1 -1
  44. package/lib/presentation-meta.js +27 -16
  45. package/lib/presentation-meta.js.map +1 -1
  46. package/lib/prompt.d.ts +1 -10
  47. package/lib/prompt.d.ts.map +1 -1
  48. package/lib/prompt.js +5 -5
  49. package/lib/prompt.js.map +1 -1
  50. package/lib/provider-local.d.ts +30 -10
  51. package/lib/provider-local.d.ts.map +1 -1
  52. package/lib/provider-local.js +559 -110
  53. package/lib/provider-local.js.map +1 -1
  54. package/lib/refs.d.ts +37 -9
  55. package/lib/refs.d.ts.map +1 -1
  56. package/lib/refs.js +78 -6
  57. package/lib/refs.js.map +1 -1
  58. package/lib/service.d.ts +3 -2
  59. package/lib/service.d.ts.map +1 -1
  60. package/lib/service.js +11 -1
  61. package/lib/service.js.map +1 -1
  62. package/lib/tools/attachment.d.ts +0 -68
  63. package/lib/tools/attachment.d.ts.map +1 -1
  64. package/lib/tools/attachment.js +4 -4
  65. package/lib/tools/attachment.js.map +1 -1
  66. package/lib/tools/browse.d.ts +115 -0
  67. package/lib/tools/browse.d.ts.map +1 -0
  68. package/lib/tools/browse.js +166 -0
  69. package/lib/tools/browse.js.map +1 -0
  70. package/lib/tools/changes.d.ts +185 -0
  71. package/lib/tools/changes.d.ts.map +1 -0
  72. package/lib/tools/changes.js +168 -0
  73. package/lib/tools/changes.js.map +1 -0
  74. package/lib/tools/children.d.ts +176 -0
  75. package/lib/tools/children.d.ts.map +1 -0
  76. package/lib/tools/children.js +166 -0
  77. package/lib/tools/children.js.map +1 -0
  78. package/lib/tools/export.d.ts +0 -136
  79. package/lib/tools/export.d.ts.map +1 -1
  80. package/lib/tools/export.js +4 -4
  81. package/lib/tools/export.js.map +1 -1
  82. package/lib/tools/get.d.ts +24 -1
  83. package/lib/tools/get.d.ts.map +1 -1
  84. package/lib/tools/get.js +21 -5
  85. package/lib/tools/get.js.map +1 -1
  86. package/lib/tools/retrieve.d.ts +1 -1
  87. package/lib/tools/retrieve.d.ts.map +1 -1
  88. package/lib/tools/retrieve.js +3 -3
  89. package/lib/tools/retrieve.js.map +1 -1
  90. package/lib/tools/search.d.ts +54 -3
  91. package/lib/tools/search.d.ts.map +1 -1
  92. package/lib/tools/search.js +75 -6
  93. package/lib/tools/search.js.map +1 -1
  94. package/lib/types.d.ts +85 -5
  95. package/lib/types.d.ts.map +1 -1
  96. package/package.json +76 -29
package/README.en.md CHANGED
@@ -65,6 +65,7 @@ The plugin provides a settings card under **Settings → Plugins** where you can
65
65
 
66
66
  - Zotero ≥ 7 with local API enabled: **Settings → Advanced → "Allow other applications on this computer to communicate with Zotero"**
67
67
  - Node.js ≥ 22.19 (or ≥ 24)
68
+ - dsh 0.1.0-rc.8 series host (all `@deepseek-ai/dsh-*` peer dependencies are `^0.1.0-rc.8`)
68
69
  - Local API at `http://127.0.0.1:23119/api`, unauthenticated, read-only
69
70
 
70
71
  ## Usage example
@@ -100,6 +101,14 @@ More examples in [Features](docs/features.md).
100
101
  - **Full-text evidence depends on Zotero's index**: unindexed PDFs yield no full-text passages
101
102
  - **Attachment depth depends on the harness**: `zotero_attachment` returns the file location; reading the PDF further needs a matching host capability
102
103
 
104
+ ## Permissions and external side effects
105
+
106
+ - **Network**: HTTP requests go only to `http://127.0.0.1:23119/api` (redirects are not followed); `resolveConfig` enforces a loopback address
107
+ - **Filesystem**: read-only — `zotero_attachment` verifies attachment paths with `existsSync`; no file writes
108
+ - **Persistence**: the only write comes from the settings card under Settings → Plugins, saved to the `zotero:` user layer of `$DSH_HOME/settings.yaml`
109
+ - **No shell / native / background tasks**: the plugin runs no shell commands, loads no native modules, and starts no daemon
110
+ - **Restart**: after installing or removing the plugin, restart dsh and start a new session; configuration changes hot-reload on save without a restart
111
+
103
112
  ## Documentation
104
113
 
105
114
  | Doc | Covers |
package/README.md CHANGED
@@ -65,6 +65,7 @@ dsh plugin --profile <name> add ./dsh-zotero-*.tgz
65
65
 
66
66
  - Zotero ≥ 7 桌面版,启用本地 API:**设置 → 高级 → "允许其他应用程序与 Zotero 通信"**
67
67
  - Node.js ≥ 22.19(或 ≥ 24)
68
+ - 宿主 dsh 0.1.0-rc.8 系列(`@deepseek-ai/dsh-*` peer 依赖均为 `^0.1.0-rc.8`)
68
69
  - 本地 API 地址 `http://127.0.0.1:23119/api`,无认证,只读
69
70
 
70
71
  ## 使用示例
@@ -100,6 +101,14 @@ Agent → zotero_export(refs: [1,2,3], format: "bibtex")
100
101
  - **全文证据依赖 Zotero 索引**:未索引的 PDF 无法提供全文段落
101
102
  - **附件深度取决于宿主**:`zotero_attachment` 返回文件位置,继续阅读 PDF 需要宿主具备对应能力
102
103
 
104
+ ## 权限与外部副作用
105
+
106
+ - **网络**:只向 `http://127.0.0.1:23119/api` 发起 HTTP 请求(不跟随重定向),`resolveConfig` 强制 loopback 地址
107
+ - **文件**:只读,`zotero_attachment` 用 `existsSync` 校验 Zotero 返回的附件路径,不写文件系统
108
+ - **持久化**:唯一写入来自 Settings → Plugins 中的配置卡片,保存到 `$DSH_HOME/settings.yaml` 的 `zotero:` 用户层
109
+ - **无 Shell / native / 后台任务**:插件不执行 shell 命令、不加载 native 模块、不启动常驻进程
110
+ - **重启**:安装或卸载插件后需要重启 dsh 并新建会话;配置修改保存即热更新,无需重启
111
+
103
112
  ## 文档
104
113
 
105
114
  | 文档 | 内容 |
@@ -115,7 +124,7 @@ Agent → zotero_export(refs: [1,2,3], format: "bibtex")
115
124
  ## 开发
116
125
 
117
126
  ```sh
118
- npm install --no-workspaces # 本仓库在 deepseek-harness 工作区内,需要加 --no-workspaces
127
+ npm install # 本仓库与 ../deepseek-harness 并列;仅嵌套在 harness 内时需加 --no-workspaces
119
128
  npm test # 单元测试(vitest,mock Zotero 服务器)
120
129
  npm run typecheck # tsc --noEmit,覆盖 node、test、client 三个项目
121
130
  npm run build # tsc 编译 node 部分到 lib/,esbuild 编译浏览器部分到 lib/client.js
@@ -123,8 +132,8 @@ npm run dev # tsc --watch,host half 热更新
123
132
  npm run dev:client # esbuild --watch,浏览器部分热更新
124
133
  ```
125
134
 
126
- 构建产物分两部分:`lib/` 是 Node 侧代码,`lib/client.js` 是浏览器侧(settings 卡片 + Zotero tab)。本地开发推荐用 `dev-lib.cordis.yml` overlay 实现完整插件流程,详见 [开发指南](docs/development.md)。
135
+ `lib/` 放 Node 侧代码,`lib/client.js` 放浏览器侧代码(settings 卡片和 Zotero tab)。你用 `dev-lib.cordis.yml` overlay 跑完整插件流程,见[开发指南](docs/development.md)。本仓库与 `../deepseek-harness` 并列,属本地暂存布局。
127
136
 
128
137
  ## 许可证
129
138
 
130
- [MIT](./LICENSE) — 自由使用、修改和分发。
139
+ [MIT](./LICENSE):自由使用、修改和分发。
package/lib/ask.d.ts CHANGED
@@ -15,9 +15,6 @@
15
15
  */
16
16
  import type { Context } from '@deepseek-ai/cordis';
17
17
  import { type ToolRunContext } from '@deepseek-ai/dsh-tools';
18
- /** The connectivity failure codes that warrant asking the user how to proceed. */
19
- export declare const ASK_WORTHY_CODES: readonly ["ZOTERO_NOT_RUNNING", "ZOTERO_API_DISABLED", "ZOTERO_API_VERSION", "ZOTERO_TIMEOUT"];
20
- export type AskWorthyCode = (typeof ASK_WORTHY_CODES)[number];
21
18
  /** The parts of a tool execution `withConnectivityAsk` needs. */
22
19
  export type ConnectivityAskExec = Pick<ToolRunContext, 'signal' | 'agent'>;
23
20
  /**
package/lib/ask.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAe1E,kFAAkF;AAClF,eAAO,MAAM,gBAAgB,gGAKnB,CAAA;AAEV,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAA;AAE7D,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAA;AA2E1E;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,CAAC,CAAC,CA4BZ"}
1
+ {"version":3,"file":"ask.d.ts","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAgB,KAAK,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAyB1E,iEAAiE;AACjE,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAA;AA2E1E;;;;;;;;;;;;GAYG;AACH,wBAAsB,mBAAmB,CAAC,CAAC,EACzC,GAAG,EAAE,OAAO,EACZ,IAAI,EAAE,mBAAmB,EACzB,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACpB,OAAO,CAAC,CAAC,CAAC,CA4BZ"}
package/lib/ask.js CHANGED
@@ -17,7 +17,7 @@ import { HarnessError } from '@deepseek-ai/dsh-llm';
17
17
  import { TOOL_ABORTED } from '@deepseek-ai/dsh-tools';
18
18
  import { ZOTERO_API_DISABLED, ZOTERO_API_VERSION, ZOTERO_NOT_RUNNING, ZOTERO_TIMEOUT, ZoteroError, } from './errors.js';
19
19
  /** The connectivity failure codes that warrant asking the user how to proceed. */
20
- export const ASK_WORTHY_CODES = [
20
+ const ASK_WORTHY_CODES = [
21
21
  ZOTERO_NOT_RUNNING,
22
22
  ZOTERO_API_DISABLED,
23
23
  ZOTERO_API_VERSION,
package/lib/ask.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ask.js","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../src/ask.ts"],"names":[],"mappings":"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"}
package/lib/client.js CHANGED
@@ -405,6 +405,7 @@ var FIELD_SPECS = [
405
405
  { key: "maxResponseBytes", kind: "number", group: "groupOutput" },
406
406
  { key: "maxExportChars", kind: "number", group: "groupOutput" },
407
407
  { key: "maxExportRefs", kind: "number", group: "groupOutput" },
408
+ { key: "maxBrowseResults", kind: "number", group: "groupOutput" },
408
409
  { key: "defaultStyle", kind: "text", group: "groupDefaults" },
409
410
  { key: "defaultLocale", kind: "text", group: "groupDefaults" }
410
411
  ];
@@ -818,10 +819,38 @@ function decodeSearchRows(value) {
818
819
  }
819
820
  return rows;
820
821
  }
822
+ function decodeSupportedLibrary(value) {
823
+ if (!isRecord(value)) return null;
824
+ const type = stringField(value, "type");
825
+ const id = numberField2(value, "id");
826
+ if (type !== "user" && type !== "group" || id === void 0 || !Number.isInteger(id))
827
+ return null;
828
+ if (type === "user" && id !== 0) return null;
829
+ if (type === "group" && id <= 0) return null;
830
+ return { type, id };
831
+ }
832
+ function decodeResolvedScope(value) {
833
+ if (!isRecord(value)) return null;
834
+ const kind = stringField(value, "kind");
835
+ if (kind === "library") {
836
+ const lib = decodeSupportedLibrary(value["library"]);
837
+ if (lib === null) return null;
838
+ return { kind: "library", library: lib };
839
+ }
840
+ if (kind === "collection" || kind === "savedSearch") {
841
+ const ref = stringField(value, "ref");
842
+ const name2 = stringField(value, "name");
843
+ if (ref === void 0 || name2 === void 0) return null;
844
+ return { kind, ref, name: name2 };
845
+ }
846
+ return null;
847
+ }
821
848
  function searchMetaOf(meta3) {
822
849
  return {
823
850
  rows: decodeSearchRows(meta3["items"]),
824
- omitted: numberField2(meta3, "omitted") ?? null
851
+ omitted: numberField2(meta3, "omitted") ?? null,
852
+ scope: decodeResolvedScope(meta3["scope"]),
853
+ library: decodeSupportedLibrary(meta3["library"])
825
854
  };
826
855
  }
827
856
  function getMetaOf(meta3) {
@@ -943,14 +972,28 @@ function searchIdentityOf(args) {
943
972
  const mode = args["mode"] === "everything" ? "everything" : "metadata";
944
973
  const itemTypes = normalizedListOf(args["itemTypes"]);
945
974
  const tags = normalizedListOf(args["tags"]);
975
+ const tagMatch = args["tagMatch"] === "any" ? "any" : "all";
976
+ const excludeTags = normalizedListOf(args["excludeTags"]);
977
+ const includeTrashed = args["includeTrashed"] === true;
946
978
  const sort = typeof args["sort"] === "string" ? args["sort"] : "";
947
979
  const direction = typeof args["direction"] === "string" ? args["direction"] : "";
980
+ const library = (() => {
981
+ const l = args["library"];
982
+ if (isRecord(l) && (l["type"] === "user" || l["type"] === "group") && typeof l["id"] === "number") {
983
+ return { type: l["type"], id: l["id"] };
984
+ }
985
+ return { type: "user", id: 0 };
986
+ })();
948
987
  return JSON.stringify({
949
988
  query,
950
989
  mode,
990
+ library,
951
991
  scope: scopeOf(args["scope"]),
952
992
  itemTypes,
953
993
  tags,
994
+ tagMatch,
995
+ excludeTags,
996
+ includeTrashed,
954
997
  sort,
955
998
  direction
956
999
  });
@@ -967,7 +1010,45 @@ function scopeOf(value) {
967
1010
  return refOrName.startsWith("zotero://") ? { kind, ref: refOrName } : { kind, name: refOrName };
968
1011
  }
969
1012
  }
970
- return { kind: "library" };
1013
+ return { kind: "library", library: { type: "user", id: 0 } };
1014
+ }
1015
+ function resolvedToSourceScope(scope) {
1016
+ if (scope.kind === "library") return { kind: "library", library: scope.library };
1017
+ if (scope.kind === "collection") return { kind: "collection", ref: scope.ref, name: scope.name };
1018
+ return { kind: "savedSearch", ref: scope.ref, name: scope.name };
1019
+ }
1020
+ function searchIdentityOfResolved(args, resolvedScope, resolvedLibrary) {
1021
+ if (args === null) return null;
1022
+ const query = typeof args["query"] === "string" ? args["query"] : "";
1023
+ const mode = args["mode"] === "everything" ? "everything" : "metadata";
1024
+ const itemTypes = normalizedListOf(args["itemTypes"]);
1025
+ const tags = normalizedListOf(args["tags"]);
1026
+ const tagMatch = args["tagMatch"] === "any" ? "any" : "all";
1027
+ const excludeTags = normalizedListOf(args["excludeTags"]);
1028
+ const includeTrashed = args["includeTrashed"] === true;
1029
+ const sort = typeof args["sort"] === "string" ? args["sort"] : "";
1030
+ const direction = typeof args["direction"] === "string" ? args["direction"] : "";
1031
+ const library = resolvedLibrary ?? (() => {
1032
+ const l = args["library"];
1033
+ if (isRecord(l) && (l["type"] === "user" || l["type"] === "group") && typeof l["id"] === "number") {
1034
+ return { type: l["type"], id: l["id"] };
1035
+ }
1036
+ return { type: "user", id: 0 };
1037
+ })();
1038
+ const scope = resolvedScope !== null ? resolvedToSourceScope(resolvedScope) : scopeOf(args["scope"]);
1039
+ return JSON.stringify({
1040
+ query,
1041
+ mode,
1042
+ library,
1043
+ scope,
1044
+ itemTypes,
1045
+ tags,
1046
+ tagMatch,
1047
+ excludeTags,
1048
+ includeTrashed,
1049
+ sort,
1050
+ direction
1051
+ });
971
1052
  }
972
1053
  function offsetOf(args) {
973
1054
  if (args === null) return 0;
@@ -1125,16 +1206,27 @@ function buildSourceWorkspace(blocks, options = {}) {
1125
1206
  if (state !== "ok") break;
1126
1207
  const view = meta3 === null ? null : searchMetaOf(meta3);
1127
1208
  if (view === null || view.rows === null) break;
1128
- const identity = searchIdentityOf(args);
1209
+ const resolvedScope = view.scope;
1210
+ const resolvedLibrary = view.library;
1211
+ const identity = resolvedScope !== null && resolvedLibrary !== null ? searchIdentityOfResolved(args, resolvedScope, resolvedLibrary) : searchIdentityOf(args);
1129
1212
  if (lastEpisode === null || identity === null || lastEpisode.identity !== identity) {
1213
+ const scopeForEpisode = resolvedScope !== null ? resolvedToSourceScope(resolvedScope) : scopeOf(args?.["scope"]);
1214
+ const libraryForEpisode = resolvedLibrary ?? (() => {
1215
+ const libArg = args?.["library"];
1216
+ return isRecord(libArg) && (libArg["type"] === "user" || libArg["type"] === "group") && typeof libArg["id"] === "number" ? libArg : void 0;
1217
+ })();
1130
1218
  lastEpisode = {
1131
1219
  identity,
1132
1220
  callId: block.callId,
1133
1221
  ...typeof args?.["query"] === "string" && args["query"] !== "" ? { query: args["query"] } : {},
1134
1222
  mode: args?.["mode"] === "everything" ? "everything" : "metadata",
1135
- scope: scopeOf(args?.["scope"]),
1223
+ scope: scopeForEpisode,
1224
+ ...libraryForEpisode ? { library: libraryForEpisode } : {},
1136
1225
  itemTypes: normalizedListOf(args?.["itemTypes"]),
1137
1226
  tags: normalizedListOf(args?.["tags"]),
1227
+ tagMatch: args?.["tagMatch"] === "any" ? "any" : "all",
1228
+ excludeTags: normalizedListOf(args?.["excludeTags"]),
1229
+ includeTrashed: args?.["includeTrashed"] === true,
1138
1230
  offset: offsetOf(args),
1139
1231
  returned: 0,
1140
1232
  omitted: 0,
@@ -1254,8 +1346,12 @@ function buildSourceWorkspace(blocks, options = {}) {
1254
1346
  ...episode.query === void 0 ? {} : { query: episode.query },
1255
1347
  mode: episode.mode,
1256
1348
  scope: episode.scope,
1349
+ ...episode.library ? { library: episode.library } : {},
1257
1350
  itemTypes: episode.itemTypes,
1258
- tags: episode.tags
1351
+ tags: episode.tags,
1352
+ ...episode.tagMatch ? { tagMatch: episode.tagMatch } : {},
1353
+ excludeTags: episode.excludeTags,
1354
+ includeTrashed: episode.includeTrashed
1259
1355
  };
1260
1356
  for (const key of episode.keys) {
1261
1357
  byKey.get(key).searches.push(provenance);
@@ -1510,10 +1606,10 @@ var import_dsh_client_ui_primitives3 = require("@deepseek-ai/dsh-client-ui-primi
1510
1606
 
1511
1607
  // src/client/build-info.ts
1512
1608
  function buildVersion() {
1513
- return true ? "0.4.0" : "unknown";
1609
+ return true ? "0.4.2" : "unknown";
1514
1610
  }
1515
1611
  function buildCommit() {
1516
- return true ? "7740200" : "unknown";
1612
+ return true ? "84a41d9" : "unknown";
1517
1613
  }
1518
1614
  function buildInfoOf() {
1519
1615
  return `${buildVersion()} \xB7 ${buildCommit()}`;
@@ -1530,14 +1626,14 @@ function connectionDiagnosisOf(connection, t) {
1530
1626
  }
1531
1627
 
1532
1628
  // src/client/components/workspace/workspace.module.css
1533
- var style = `.Tz8rAq_view{background:var(--dsw-alias-bg-layer-1);height:100%;color:var(--dsw-alias-label-primary);flex-direction:column;display:flex;container-type:inline-size}.Tz8rAq_lensBar,.Tz8rAq_workspace,.Tz8rAq_exportsPage,.Tz8rAq_evidencePage{box-sizing:border-box;width:100%;max-width:1440px;margin-inline:auto}.Tz8rAq_toolbar{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);flex-wrap:wrap;flex:none;align-items:center;gap:4px 8px;min-height:36px;padding:5px 12px;display:flex}.Tz8rAq_statusText{color:var(--dsw-alias-label-secondary);flex:none;font-size:13px;font-weight:500;line-height:20px}.Tz8rAq_diagnosis{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-state-error-primary);flex:auto;font-size:12px;line-height:18px;overflow:hidden}.Tz8rAq_spacer{flex:auto}.Tz8rAq_menuButton{min-width:28px;height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0 6px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}.Tz8rAq_menuButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.Tz8rAq_menuButton:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.Tz8rAq_refresh{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;flex:none;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}.Tz8rAq_refresh:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.Tz8rAq_refresh:disabled{opacity:.5;cursor:default}.Tz8rAq_refresh:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.Tz8rAq_lensBar{flex:none;align-items:stretch;gap:12px;padding:4px 12px 0;display:flex}.Tz8rAq_lensTab{color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color .12s var(--ds-ease-in-out);background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-1px;padding:6px 2px;font-family:inherit;font-size:13px;line-height:20px;display:inline-flex}.Tz8rAq_lensTab:hover{color:var(--dsw-alias-label-primary)}.Tz8rAq_lensTab:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.Tz8rAq_lensTabActive{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-label-primary)}.Tz8rAq_lensTabCount{color:var(--dsw-alias-label-caption);font-size:12px;line-height:16px}.Tz8rAq_workspace{flex:auto;grid-template-columns:clamp(280px,30cqi,400px) minmax(0,1fr);min-height:0;display:grid}.Tz8rAq_sidebar{min-height:0;padding:8px 12px calc(var(--dsh-composer-height,152px) + 16px);border-right:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:8px;display:flex;overflow:hidden}.Tz8rAq_filterBar{scrollbar-width:none;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-wrap:nowrap;flex:none;align-items:center;gap:4px;display:flex;position:relative;overflow-x:auto}.Tz8rAq_filterBar>*{flex:none}.Tz8rAq_filterBar::-webkit-scrollbar{display:none}.Tz8rAq_filterArrow{z-index:2;border:1px solid var(--dsw-alias-border-l2-darkmode-thin);background:var(--dsw-specific-input-major);width:20px;height:20px;color:var(--dsw-alias-label-secondary);box-shadow:var(--dsw-shadow-lv2);cursor:pointer;border-radius:999px;place-items:center;padding:0;display:grid;position:absolute;top:50%;transform:translateY(-50%)}.Tz8rAq_filterArrow:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}.Tz8rAq_filterArrowLeft{left:2px}.Tz8rAq_filterArrowRight{right:2px}.Tz8rAq_evidenceEntry{height:24px;color:var(--dsw-alias-state-business-primary);cursor:pointer;background:0 0;border:none;border-radius:6px;align-self:flex-start;align-items:center;margin-left:8px;padding:0;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}.Tz8rAq_evidenceEntry:hover{text-decoration:underline}.Tz8rAq_evidenceEntry:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.Tz8rAq_evidencePage{min-height:0;padding:8px 16px calc(var(--dsh-composer-height,152px) + 16px);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;flex:auto;gap:8px;display:flex;overflow-y:auto}.Tz8rAq_emptyNote{color:var(--dsw-alias-label-caption);margin:0;font-size:12px;line-height:18px}.Tz8rAq_emptyWrap{flex-direction:column;align-items:flex-start;gap:6px;display:flex}.Tz8rAq_filterClear{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}.Tz8rAq_filterClear:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.Tz8rAq_filterClear:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.Tz8rAq_listbox{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;flex:auto;gap:2px;min-height:0;display:flex;overflow-y:auto}.Tz8rAq_listItem{cursor:pointer;border-left:2px solid #0000;border-radius:6px;flex-direction:column;gap:1px;padding:6px 8px 6px 10px;display:flex}.Tz8rAq_listItem:hover{background:var(--dsw-alias-interactive-bg-hover)}.Tz8rAq_listItem:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.Tz8rAq_listItemSelected{background:var(--dsw-alias-interactive-bg-hover);border-left-color:var(--dsw-alias-state-business-primary)}.Tz8rAq_listItemTitle{min-width:0;color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500;line-height:20px}.Tz8rAq_listItemMeta{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px;overflow:hidden}.Tz8rAq_badges{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}.Tz8rAq_badge{letter-spacing:.035em;height:18px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-radius:4px;align-items:center;padding:0 6px;font-size:10px;font-weight:650;line-height:12px;display:inline-flex}.Tz8rAq_inspector{min-height:0;padding:8px 16px calc(var(--dsh-composer-height,152px) + 16px);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;gap:8px;display:flex;overflow-y:auto}.Tz8rAq_backAction{display:none}.Tz8rAq_inspectorHead,.Tz8rAq_inspectorTitleWrap{flex-direction:column;gap:2px;display:flex}.Tz8rAq_inspectorTitle{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:22px}.Tz8rAq_inspectorMeta{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}.Tz8rAq_inspectorTabs{border-bottom:1px solid var(--dsw-alias-border-l2);flex:none;align-items:stretch;gap:12px;display:flex}.Tz8rAq_detailTab{color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color .12s var(--ds-ease-in-out);background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:5px;margin-bottom:-1px;padding:4px 1px;font-family:inherit;font-size:12px;line-height:18px;display:inline-flex}.Tz8rAq_detailTab:hover{color:var(--dsw-alias-label-primary)}.Tz8rAq_detailTab:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}.Tz8rAq_detailTabActive{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-label-primary)}.Tz8rAq_detailTabCount{color:var(--dsw-alias-label-caption);font-size:11px;line-height:14px}.Tz8rAq_inspectorBody{flex-direction:column;gap:8px;min-height:0;display:flex}.Tz8rAq_panel{flex-direction:column;gap:6px;max-width:900px;display:flex}.Tz8rAq_section{flex-direction:column;gap:2px;display:flex}.Tz8rAq_sectionLabel{color:var(--dsw-alias-label-caption);margin:0;font-size:12px;line-height:18px}.Tz8rAq_line{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.Tz8rAq_note{color:var(--dsw-alias-label-caption);margin:0;font-size:12px;line-height:18px}.Tz8rAq_warning{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}.Tz8rAq_summaryLine{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}.Tz8rAq_actionRow{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.Tz8rAq_action{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}.Tz8rAq_action:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.Tz8rAq_action:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.Tz8rAq_passages{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.Tz8rAq_passage{flex-direction:column;gap:2px;display:flex}.Tz8rAq_passageHead{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.Tz8rAq_sourceTag{letter-spacing:.035em;height:18px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-radius:4px;align-items:center;padding:0 6px;font-size:10px;font-weight:650;line-height:12px;display:inline-flex}.Tz8rAq_availability{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.Tz8rAq_cardStack{flex-direction:column;gap:8px;display:flex}.Tz8rAq_exportStack{flex-direction:column;display:flex}.Tz8rAq_exportStack>*+*{border-top:1px solid var(--dsw-alias-border-l2)}.Tz8rAq_detailToggle{height:22px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;align-self:flex-start;align-items:center;padding:0 2px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}.Tz8rAq_detailToggle:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}.Tz8rAq_detailToggle:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.Tz8rAq_exportsPage{min-height:0;padding:8px 16px calc(var(--dsh-composer-height,152px) + 16px);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;flex:auto;gap:8px;display:flex;overflow-y:auto}.Tz8rAq_empty{min-height:0;padding:72px 16px calc(var(--dsh-composer-height,152px) + 32px);flex-direction:column;flex:auto;align-items:center;gap:8px;display:flex}.Tz8rAq_emptyIcon{color:var(--dsw-alias-label-caption)}.Tz8rAq_emptyText{color:var(--dsw-alias-label-tertiary);margin:0;font-size:13px;line-height:20px}.Tz8rAq_starterRow{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-top:4px;display:flex}@container (width<=760px){.Tz8rAq_workspace{grid-template-columns:minmax(0,1fr)}.Tz8rAq_workspace[data-pane=list] .Tz8rAq_inspector,.Tz8rAq_workspace[data-pane=detail] .Tz8rAq_sidebar{display:none}.Tz8rAq_backAction{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:6px;align-self:flex-start;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}.Tz8rAq_backAction:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.Tz8rAq_backAction:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}}@container (width<=620px){.Tz8rAq_lensBar{padding:4px 8px 0}.Tz8rAq_sidebar{padding:8px 8px calc(var(--dsh-composer-height,152px) + 16px)}.Tz8rAq_inspector,.Tz8rAq_exportsPage{padding-left:12px;padding-right:12px}}@container (width<=460px){.Tz8rAq_toolbar{padding:4px 8px}}@media (prefers-reduced-motion:reduce){.Tz8rAq_refresh,.Tz8rAq_action,.Tz8rAq_menuButton,.Tz8rAq_filterClear,.Tz8rAq_backAction,.Tz8rAq_lensTab,.Tz8rAq_detailTab{transition:none}}`;
1629
+ var style = `._o1AEW_view{background:var(--dsw-alias-bg-layer-1);height:100%;color:var(--dsw-alias-label-primary);flex-direction:column;display:flex;container-type:inline-size}._o1AEW_lensBar,._o1AEW_workspace,._o1AEW_exportsPage,._o1AEW_evidencePage{box-sizing:border-box;width:100%;max-width:1440px;margin-inline:auto}._o1AEW_toolbar{border-bottom:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);flex-wrap:wrap;flex:none;align-items:center;gap:4px 8px;min-height:36px;padding:5px 12px;display:flex}._o1AEW_statusText{color:var(--dsw-alias-label-secondary);flex:none;font-size:13px;font-weight:500;line-height:20px}._o1AEW_diagnosis{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-state-error-primary);flex:auto;font-size:12px;line-height:18px;overflow:hidden}._o1AEW_spacer{flex:auto}._o1AEW_menuButton{min-width:28px;height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;flex:none;justify-content:center;align-items:center;padding:0 6px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}._o1AEW_menuButton:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._o1AEW_menuButton:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}._o1AEW_refresh{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;flex:none;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}._o1AEW_refresh:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._o1AEW_refresh:disabled{opacity:.5;cursor:default}._o1AEW_refresh:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}._o1AEW_lensBar{flex:none;align-items:stretch;gap:12px;padding:4px 12px 0;display:flex}._o1AEW_lensTab{color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color .12s var(--ds-ease-in-out);background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;margin-bottom:-1px;padding:6px 2px;font-family:inherit;font-size:13px;line-height:20px;display:inline-flex}._o1AEW_lensTab:hover{color:var(--dsw-alias-label-primary)}._o1AEW_lensTab:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}._o1AEW_lensTabActive{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-label-primary)}._o1AEW_lensTabCount{color:var(--dsw-alias-label-caption);font-size:12px;line-height:16px}._o1AEW_workspace{flex:auto;grid-template-columns:clamp(280px,30cqi,400px) minmax(0,1fr);min-height:0;display:grid}._o1AEW_sidebar{min-height:0;padding:8px 12px calc(var(--dsh-composer-height,152px) + 16px);border-right:1px solid var(--dsw-alias-border-l2);flex-direction:column;gap:8px;display:flex;overflow:hidden}._o1AEW_filterBar{scrollbar-width:none;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-wrap:nowrap;flex:none;align-items:center;gap:4px;display:flex;position:relative;overflow-x:auto}._o1AEW_filterBar>*{flex:none}._o1AEW_filterBar::-webkit-scrollbar{display:none}._o1AEW_filterArrow{z-index:2;border:1px solid var(--dsw-alias-border-l2-darkmode-thin);background:var(--dsw-specific-input-major);width:20px;height:20px;color:var(--dsw-alias-label-secondary);box-shadow:var(--dsw-shadow-lv2);cursor:pointer;border-radius:999px;place-items:center;padding:0;display:grid;position:absolute;top:50%;transform:translateY(-50%)}._o1AEW_filterArrow:hover{background:var(--dsw-alias-interactive-bg-hover-solid)}._o1AEW_filterArrowLeft{left:2px}._o1AEW_filterArrowRight{right:2px}._o1AEW_evidenceEntry{height:24px;color:var(--dsw-alias-state-business-primary);cursor:pointer;background:0 0;border:none;border-radius:6px;align-self:flex-start;align-items:center;margin-left:8px;padding:0;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}._o1AEW_evidenceEntry:hover{text-decoration:underline}._o1AEW_evidenceEntry:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}._o1AEW_evidencePage{min-height:0;padding:8px 16px calc(var(--dsh-composer-height,152px) + 16px);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;flex:auto;gap:8px;display:flex;overflow-y:auto}._o1AEW_emptyNote{color:var(--dsw-alias-label-caption);margin:0;font-size:12px;line-height:18px}._o1AEW_emptyWrap{flex-direction:column;align-items:flex-start;gap:6px;display:flex}._o1AEW_filterClear{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}._o1AEW_filterClear:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._o1AEW_filterClear:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}._o1AEW_listbox{--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;flex:auto;gap:2px;min-height:0;display:flex;overflow-y:auto}._o1AEW_listItem{cursor:pointer;border-left:2px solid #0000;border-radius:6px;flex-direction:column;gap:1px;padding:6px 8px 6px 10px;display:flex}._o1AEW_listItem:hover{background:var(--dsw-alias-interactive-bg-hover)}._o1AEW_listItem:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}._o1AEW_listItemSelected{background:var(--dsw-alias-interactive-bg-hover);border-left-color:var(--dsw-alias-state-business-primary)}._o1AEW_listItemTitle{min-width:0;color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500;line-height:20px}._o1AEW_listItemMeta{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px;overflow:hidden}._o1AEW_badges{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}._o1AEW_badge{letter-spacing:.035em;height:18px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-radius:4px;align-items:center;padding:0 6px;font-size:10px;font-weight:650;line-height:12px;display:inline-flex}._o1AEW_inspector{min-height:0;padding:8px 16px calc(var(--dsh-composer-height,152px) + 16px);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;gap:8px;display:flex;overflow-y:auto}._o1AEW_backAction{display:none}._o1AEW_inspectorHead,._o1AEW_inspectorTitleWrap{flex-direction:column;gap:2px;display:flex}._o1AEW_inspectorTitle{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:22px}._o1AEW_inspectorMeta{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}._o1AEW_inspectorTabs{border-bottom:1px solid var(--dsw-alias-border-l2);flex:none;align-items:stretch;gap:12px;display:flex}._o1AEW_detailTab{color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color .12s var(--ds-ease-in-out);background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:5px;margin-bottom:-1px;padding:4px 1px;font-family:inherit;font-size:12px;line-height:18px;display:inline-flex}._o1AEW_detailTab:hover{color:var(--dsw-alias-label-primary)}._o1AEW_detailTab:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:-1px}._o1AEW_detailTabActive{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-label-primary)}._o1AEW_detailTabCount{color:var(--dsw-alias-label-caption);font-size:11px;line-height:14px}._o1AEW_inspectorBody{flex-direction:column;gap:8px;min-height:0;display:flex}._o1AEW_panel{flex-direction:column;gap:6px;max-width:900px;display:flex}._o1AEW_section{flex-direction:column;gap:2px;display:flex}._o1AEW_sectionLabel{color:var(--dsw-alias-label-caption);margin:0;font-size:12px;line-height:18px}._o1AEW_line{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}._o1AEW_note{color:var(--dsw-alias-label-caption);margin:0;font-size:12px;line-height:18px}._o1AEW_warning{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px;line-height:18px}._o1AEW_summaryLine{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:18px}._o1AEW_actionRow{flex-wrap:wrap;align-items:center;gap:4px;display:flex}._o1AEW_action{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}._o1AEW_action:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._o1AEW_action:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}._o1AEW_passages{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}._o1AEW_passage{flex-direction:column;gap:2px;display:flex}._o1AEW_passageHead{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}._o1AEW_sourceTag{letter-spacing:.035em;height:18px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-radius:4px;align-items:center;padding:0 6px;font-size:10px;font-weight:650;line-height:12px;display:inline-flex}._o1AEW_availability{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}._o1AEW_cardStack{flex-direction:column;gap:8px;display:flex}._o1AEW_exportStack{flex-direction:column;display:flex}._o1AEW_exportStack>*+*{border-top:1px solid var(--dsw-alias-border-l2)}._o1AEW_detailToggle{height:22px;color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;align-self:flex-start;align-items:center;padding:0 2px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}._o1AEW_detailToggle:hover{color:var(--dsw-alias-label-primary);text-decoration:underline}._o1AEW_detailToggle:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}._o1AEW_exportsPage{min-height:0;padding:8px 16px calc(var(--dsh-composer-height,152px) + 16px);--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);flex-direction:column;flex:auto;gap:8px;display:flex;overflow-y:auto}._o1AEW_empty{min-height:0;padding:72px 16px calc(var(--dsh-composer-height,152px) + 32px);flex-direction:column;flex:auto;align-items:center;gap:8px;display:flex}._o1AEW_emptyIcon{color:var(--dsw-alias-label-caption)}._o1AEW_emptyText{color:var(--dsw-alias-label-tertiary);margin:0;font-size:13px;line-height:20px}._o1AEW_starterRow{flex-wrap:wrap;justify-content:center;align-items:center;gap:8px;margin-top:4px;display:flex}@container (width<=760px){._o1AEW_workspace{grid-template-columns:minmax(0,1fr)}._o1AEW_workspace[data-pane=list] ._o1AEW_inspector,._o1AEW_workspace[data-pane=detail] ._o1AEW_sidebar{display:none}._o1AEW_backAction{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background:0 0;border-radius:6px;align-self:flex-start;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}._o1AEW_backAction:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._o1AEW_backAction:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}}@container (width<=620px){._o1AEW_lensBar{padding:4px 8px 0}._o1AEW_sidebar{padding:8px 8px calc(var(--dsh-composer-height,152px) + 16px)}._o1AEW_inspector,._o1AEW_exportsPage{padding-left:12px;padding-right:12px}}@container (width<=460px){._o1AEW_toolbar{padding:4px 8px}}@media (prefers-reduced-motion:reduce){._o1AEW_refresh,._o1AEW_action,._o1AEW_menuButton,._o1AEW_filterClear,._o1AEW_backAction,._o1AEW_lensTab,._o1AEW_detailTab{transition:none}}`;
1534
1630
  if (typeof document !== "undefined" && !document.querySelector('style[data-plugin-css="dsh-zotero/workspace.module.css"]')) {
1535
1631
  const tag = document.createElement("style");
1536
1632
  tag.setAttribute("data-plugin-css", "dsh-zotero/workspace.module.css");
1537
1633
  tag.textContent = style;
1538
1634
  document.head.appendChild(tag);
1539
1635
  }
1540
- var workspace_default = { "detailToggle": "Tz8rAq_detailToggle", "filterArrowRight": "Tz8rAq_filterArrowRight", "passageHead": "Tz8rAq_passageHead", "evidenceEntry": "Tz8rAq_evidenceEntry", "inspector": "Tz8rAq_inspector", "action": "Tz8rAq_action", "badge": "Tz8rAq_badge", "inspectorTabs": "Tz8rAq_inspectorTabs", "cardStack": "Tz8rAq_cardStack", "exportStack": "Tz8rAq_exportStack", "filterBar": "Tz8rAq_filterBar", "filterArrowLeft": "Tz8rAq_filterArrowLeft", "listbox": "Tz8rAq_listbox", "empty": "Tz8rAq_empty", "spacer": "Tz8rAq_spacer", "lensTab": "Tz8rAq_lensTab", "detailTabCount": "Tz8rAq_detailTabCount", "emptyIcon": "Tz8rAq_emptyIcon", "actionRow": "Tz8rAq_actionRow", "emptyWrap": "Tz8rAq_emptyWrap", "emptyText": "Tz8rAq_emptyText", "statusText": "Tz8rAq_statusText", "sectionLabel": "Tz8rAq_sectionLabel", "diagnosis": "Tz8rAq_diagnosis", "detailTabActive": "Tz8rAq_detailTabActive", "listItemSelected": "Tz8rAq_listItemSelected", "inspectorTitle": "Tz8rAq_inspectorTitle", "inspectorBody": "Tz8rAq_inspectorBody", "refresh": "Tz8rAq_refresh", "panel": "Tz8rAq_panel", "menuButton": "Tz8rAq_menuButton", "listItem": "Tz8rAq_listItem", "listItemTitle": "Tz8rAq_listItemTitle", "workspace": "Tz8rAq_workspace", "sidebar": "Tz8rAq_sidebar", "badges": "Tz8rAq_badges", "backAction": "Tz8rAq_backAction", "note": "Tz8rAq_note", "section": "Tz8rAq_section", "view": "Tz8rAq_view", "sourceTag": "Tz8rAq_sourceTag", "lensTabCount": "Tz8rAq_lensTabCount", "inspectorTitleWrap": "Tz8rAq_inspectorTitleWrap", "inspectorMeta": "Tz8rAq_inspectorMeta", "availability": "Tz8rAq_availability", "listItemMeta": "Tz8rAq_listItemMeta", "passage": "Tz8rAq_passage", "starterRow": "Tz8rAq_starterRow", "lensTabActive": "Tz8rAq_lensTabActive", "filterArrow": "Tz8rAq_filterArrow", "summaryLine": "Tz8rAq_summaryLine", "filterClear": "Tz8rAq_filterClear", "toolbar": "Tz8rAq_toolbar", "evidencePage": "Tz8rAq_evidencePage", "inspectorHead": "Tz8rAq_inspectorHead", "passages": "Tz8rAq_passages", "exportsPage": "Tz8rAq_exportsPage", "emptyNote": "Tz8rAq_emptyNote", "detailTab": "Tz8rAq_detailTab", "warning": "Tz8rAq_warning", "line": "Tz8rAq_line", "lensBar": "Tz8rAq_lensBar" };
1636
+ var workspace_default = { "note": "_o1AEW_note", "listItem": "_o1AEW_listItem", "summaryLine": "_o1AEW_summaryLine", "emptyText": "_o1AEW_emptyText", "listItemTitle": "_o1AEW_listItemTitle", "empty": "_o1AEW_empty", "lensTabActive": "_o1AEW_lensTabActive", "listbox": "_o1AEW_listbox", "lensTabCount": "_o1AEW_lensTabCount", "lensBar": "_o1AEW_lensBar", "actionRow": "_o1AEW_actionRow", "inspector": "_o1AEW_inspector", "exportsPage": "_o1AEW_exportsPage", "statusText": "_o1AEW_statusText", "filterArrowLeft": "_o1AEW_filterArrowLeft", "diagnosis": "_o1AEW_diagnosis", "badges": "_o1AEW_badges", "panel": "_o1AEW_panel", "detailToggle": "_o1AEW_detailToggle", "inspectorTitleWrap": "_o1AEW_inspectorTitleWrap", "inspectorBody": "_o1AEW_inspectorBody", "sectionLabel": "_o1AEW_sectionLabel", "starterRow": "_o1AEW_starterRow", "detailTabCount": "_o1AEW_detailTabCount", "action": "_o1AEW_action", "passages": "_o1AEW_passages", "filterClear": "_o1AEW_filterClear", "filterArrowRight": "_o1AEW_filterArrowRight", "availability": "_o1AEW_availability", "passage": "_o1AEW_passage", "sidebar": "_o1AEW_sidebar", "listItemSelected": "_o1AEW_listItemSelected", "refresh": "_o1AEW_refresh", "inspectorMeta": "_o1AEW_inspectorMeta", "sourceTag": "_o1AEW_sourceTag", "exportStack": "_o1AEW_exportStack", "badge": "_o1AEW_badge", "filterBar": "_o1AEW_filterBar", "spacer": "_o1AEW_spacer", "section": "_o1AEW_section", "warning": "_o1AEW_warning", "inspectorTabs": "_o1AEW_inspectorTabs", "listItemMeta": "_o1AEW_listItemMeta", "passageHead": "_o1AEW_passageHead", "toolbar": "_o1AEW_toolbar", "emptyNote": "_o1AEW_emptyNote", "workspace": "_o1AEW_workspace", "backAction": "_o1AEW_backAction", "detailTab": "_o1AEW_detailTab", "cardStack": "_o1AEW_cardStack", "menuButton": "_o1AEW_menuButton", "view": "_o1AEW_view", "filterArrow": "_o1AEW_filterArrow", "evidenceEntry": "_o1AEW_evidenceEntry", "emptyWrap": "_o1AEW_emptyWrap", "evidencePage": "_o1AEW_evidencePage", "lensTab": "_o1AEW_lensTab", "inspectorHead": "_o1AEW_inspectorHead", "inspectorTitle": "_o1AEW_inspectorTitle", "detailTabActive": "_o1AEW_detailTabActive", "line": "_o1AEW_line", "emptyIcon": "_o1AEW_emptyIcon" };
1541
1637
 
1542
1638
  // src/client/components/workspace/WorkspaceToolbar.tsx
1543
1639
  var import_jsx_runtime4 = require("react/jsx-runtime");
@@ -1862,14 +1958,14 @@ var import_react4 = require("react");
1862
1958
  var import_dsh_client_ui_primitives5 = require("@deepseek-ai/dsh-client-ui-primitives");
1863
1959
 
1864
1960
  // src/client/components/open/open.module.css
1865
- var style2 = `.jGTtSG_linkWrap{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}.jGTtSG_link{color:var(--dsw-alias-state-business-primary);font-size:12px;line-height:16px;text-decoration:none}.jGTtSG_link:hover{text-decoration:underline}.jGTtSG_link:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.jGTtSG_note{color:var(--dsw-alias-label-caption);font-size:12px;line-height:18px}.jGTtSG_button{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;text-decoration:none;display:inline-flex}.jGTtSG_button:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.jGTtSG_button:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.jGTtSG_blocked{opacity:.5;cursor:default}.jGTtSG_blocked:hover{color:var(--dsw-alias-label-secondary);background:0 0}.jGTtSG_srOnly{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){.jGTtSG_button{transition:none}}`;
1961
+ var style2 = `._02bwZG_linkWrap{flex-wrap:wrap;align-items:center;gap:4px;display:inline-flex}._02bwZG_link{color:var(--dsw-alias-state-business-primary);font-size:12px;line-height:16px;text-decoration:none}._02bwZG_link:hover{text-decoration:underline}._02bwZG_link:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}._02bwZG_note{color:var(--dsw-alias-label-caption);font-size:12px;line-height:18px}._02bwZG_button{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;text-decoration:none;display:inline-flex}._02bwZG_button:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}._02bwZG_button:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}._02bwZG_blocked{opacity:.5;cursor:default}._02bwZG_blocked:hover{color:var(--dsw-alias-label-secondary);background:0 0}._02bwZG_srOnly{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:reduce){._02bwZG_button{transition:none}}`;
1866
1962
  if (typeof document !== "undefined" && !document.querySelector('style[data-plugin-css="dsh-zotero/open.module.css"]')) {
1867
1963
  const tag = document.createElement("style");
1868
1964
  tag.setAttribute("data-plugin-css", "dsh-zotero/open.module.css");
1869
1965
  tag.textContent = style2;
1870
1966
  document.head.appendChild(tag);
1871
1967
  }
1872
- var open_default = { "note": "jGTtSG_note", "srOnly": "jGTtSG_srOnly", "link": "jGTtSG_link", "blocked": "jGTtSG_blocked", "linkWrap": "jGTtSG_linkWrap", "button": "jGTtSG_button" };
1968
+ var open_default = { "linkWrap": "_02bwZG_linkWrap", "button": "_02bwZG_button", "note": "_02bwZG_note", "srOnly": "_02bwZG_srOnly", "blocked": "_02bwZG_blocked", "link": "_02bwZG_link" };
1873
1969
 
1874
1970
  // src/client/components/open/BlockedOpenAction.tsx
1875
1971
  var import_jsx_runtime7 = require("react/jsx-runtime");
@@ -2031,14 +2127,14 @@ var import_react6 = require("react");
2031
2127
  var import_dsh_client_ui_primitives7 = require("@deepseek-ai/dsh-client-ui-primitives");
2032
2128
 
2033
2129
  // src/client/components/SourcesList.module.css
2034
- var style3 = `.-IqP-a_note{color:var(--dsw-alias-label-caption);margin:0;font-size:12px;line-height:18px}.-IqP-a_line{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.-IqP-a_lineActions{flex:none;align-items:center;gap:4px;margin-left:auto;display:inline-flex}.-IqP-a_lineAction{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}.-IqP-a_lineAction:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.-IqP-a_lineAction:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.-IqP-a_chevron{color:var(--dsw-alias-label-caption);transition:transform .12s var(--ds-ease-in-out);flex:none}.-IqP-a_chevronOpen{transform:rotate(180deg)}.-IqP-a_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:8px;flex-direction:column;gap:6px;max-width:900px;padding:10px 12px;display:flex}.-IqP-a_cardHead{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.-IqP-a_cardTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500;line-height:20px}.-IqP-a_link{color:var(--dsw-alias-state-business-primary);font-size:12px;line-height:16px;text-decoration:none}.-IqP-a_link:hover{text-decoration:underline}.-IqP-a_link:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.-IqP-a_passages{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.-IqP-a_passage{flex-direction:column;gap:2px;display:flex}.-IqP-a_passageHead{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.-IqP-a_sourceTag{letter-spacing:.035em;height:18px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-radius:4px;align-items:center;padding:0 6px;font-size:10px;font-weight:650;line-height:12px;display:inline-flex}.-IqP-a_availability{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.-IqP-a_exportRow{flex-direction:column;gap:4px;padding:6px 0;display:flex}.-IqP-a_exportSection{flex-direction:column;gap:2px;display:flex}.-IqP-a_exportSectionHead{flex-wrap:wrap;align-items:center;gap:4px 8px;padding:6px 0 4px;display:flex}.-IqP-a_exportSectionTitle{color:var(--dsw-alias-label-primary);flex:none;font-size:13px;font-weight:500;line-height:20px}.-IqP-a_exportSectionCount{color:var(--dsw-alias-label-caption);flex:none;font-size:12px;line-height:18px}.-IqP-a_exportSectionActions{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.-IqP-a_documentKey{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--ds-font-family-code);color:var(--dsw-alias-label-primary);flex:auto;font-size:13px;font-weight:500;line-height:20px;overflow:hidden}.-IqP-a_documentTitle{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-caption);margin:0;padding-left:2px;font-size:12px;line-height:18px;overflow:hidden}.-IqP-a_exportHead{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.-IqP-a_exportToggle{text-align:left;cursor:pointer;background:0 0;border:none;flex:auto;align-items:center;gap:8px;min-width:0;padding:2px 0;font-family:inherit;display:inline-flex}.-IqP-a_exportToggle:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:2px;border-radius:4px}.-IqP-a_exportTitle{color:var(--dsw-alias-label-primary);flex:none;font-size:13px;font-weight:500;line-height:20px}.-IqP-a_exportFacts{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-caption);flex:auto;font-size:12px;line-height:18px;overflow:hidden}.-IqP-a_exportBody{flex-direction:column;gap:6px;max-width:960px;padding:4px 0 10px;display:flex}.-IqP-a_exportCode{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:8px;overflow:hidden}.-IqP-a_exportCodeHead{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;min-height:32px;padding:0 10px;display:flex}.-IqP-a_exportCodeLabel{min-width:0;color:var(--dsw-alias-label-secondary);flex:auto;font-size:12px;line-height:16px}.-IqP-a_exportKeys{flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0;display:flex}.-IqP-a_exportKeysText{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:480px;font-family:var(--ds-font-family-code);color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px;overflow:hidden}.-IqP-a_exportPre{max-height:280px;font-family:var(--ds-font-family-code);color:var(--dsw-alias-label-secondary);white-space:pre;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);margin:0;padding:10px 12px;font-size:12px;line-height:18px;overflow:auto}.-IqP-a_unresolvedItems{flex-wrap:wrap;align-items:center;gap:4px 8px;padding:4px 0 6px;display:flex}.-IqP-a_unresolvedItemsText{color:var(--dsw-alias-label-caption);font-size:12px;line-height:18px}@media (prefers-reduced-motion:reduce){.-IqP-a_chevron,.-IqP-a_lineAction{transition:none}}`;
2130
+ var style3 = `.o5qj9a_note{color:var(--dsw-alias-label-caption);margin:0;font-size:12px;line-height:18px}.o5qj9a_line{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;margin:0;font-size:12px;line-height:18px}.o5qj9a_lineActions{flex:none;align-items:center;gap:4px;margin-left:auto;display:inline-flex}.o5qj9a_lineAction{height:24px;color:var(--dsw-alias-label-secondary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;transition:background .12s var(--ds-ease-in-out), color .12s var(--ds-ease-in-out);background:0 0;border-radius:6px;align-items:center;padding:0 8px;font-family:inherit;font-size:12px;line-height:16px;display:inline-flex}.o5qj9a_lineAction:hover{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-primary)}.o5qj9a_lineAction:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.o5qj9a_chevron{color:var(--dsw-alias-label-caption);transition:transform .12s var(--ds-ease-in-out);flex:none}.o5qj9a_chevronOpen{transform:rotate(180deg)}.o5qj9a_card{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-1);border-radius:8px;flex-direction:column;gap:6px;max-width:900px;padding:10px 12px;display:flex}.o5qj9a_cardHead{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.o5qj9a_cardTitle{color:var(--dsw-alias-label-primary);font-size:13px;font-weight:500;line-height:20px}.o5qj9a_link{color:var(--dsw-alias-state-business-primary);font-size:12px;line-height:16px;text-decoration:none}.o5qj9a_link:hover{text-decoration:underline}.o5qj9a_link:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:1px}.o5qj9a_passages{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.o5qj9a_passage{flex-direction:column;gap:2px;display:flex}.o5qj9a_passageHead{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.o5qj9a_sourceTag{letter-spacing:.035em;height:18px;color:var(--dsw-alias-label-tertiary);background:var(--dsw-alias-bg-layer-2);border-radius:4px;align-items:center;padding:0 6px;font-size:10px;font-weight:650;line-height:12px;display:inline-flex}.o5qj9a_availability{flex-direction:column;gap:2px;margin:0;padding:0;list-style:none;display:flex}.o5qj9a_exportRow{flex-direction:column;gap:4px;padding:6px 0;display:flex}.o5qj9a_exportSection{flex-direction:column;gap:2px;display:flex}.o5qj9a_exportSectionHead{flex-wrap:wrap;align-items:center;gap:4px 8px;padding:6px 0 4px;display:flex}.o5qj9a_exportSectionTitle{color:var(--dsw-alias-label-primary);flex:none;font-size:13px;font-weight:500;line-height:20px}.o5qj9a_exportSectionCount{color:var(--dsw-alias-label-caption);flex:none;font-size:12px;line-height:18px}.o5qj9a_exportSectionActions{align-items:center;gap:4px;margin-left:auto;display:inline-flex}.o5qj9a_documentKey{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-family:var(--ds-font-family-code);color:var(--dsw-alias-label-primary);flex:auto;font-size:13px;font-weight:500;line-height:20px;overflow:hidden}.o5qj9a_documentTitle{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-caption);margin:0;padding-left:2px;font-size:12px;line-height:18px;overflow:hidden}.o5qj9a_exportHead{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.o5qj9a_exportToggle{text-align:left;cursor:pointer;background:0 0;border:none;flex:auto;align-items:center;gap:8px;min-width:0;padding:2px 0;font-family:inherit;display:inline-flex}.o5qj9a_exportToggle:focus-visible{outline:1px solid var(--dsw-alias-state-business-primary);outline-offset:2px;border-radius:4px}.o5qj9a_exportTitle{color:var(--dsw-alias-label-primary);flex:none;font-size:13px;font-weight:500;line-height:20px}.o5qj9a_exportFacts{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-caption);flex:auto;font-size:12px;line-height:18px;overflow:hidden}.o5qj9a_exportBody{flex-direction:column;gap:6px;max-width:960px;padding:4px 0 10px;display:flex}.o5qj9a_exportCode{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:8px;overflow:hidden}.o5qj9a_exportCodeHead{border-bottom:1px solid var(--dsw-alias-border-l2);align-items:center;min-height:32px;padding:0 10px;display:flex}.o5qj9a_exportCodeLabel{min-width:0;color:var(--dsw-alias-label-secondary);flex:auto;font-size:12px;line-height:16px}.o5qj9a_exportKeys{flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0;display:flex}.o5qj9a_exportKeysText{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:480px;font-family:var(--ds-font-family-code);color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px;overflow:hidden}.o5qj9a_exportPre{max-height:280px;font-family:var(--ds-font-family-code);color:var(--dsw-alias-label-secondary);white-space:pre;--dsh-scrollbar-thumb:var(--dsw-alias-scrollbar-bg-l2);--dsh-scrollbar-thumb-hover:var(--dsw-alias-scrollbar-hover-l2);margin:0;padding:10px 12px;font-size:12px;line-height:18px;overflow:auto}.o5qj9a_unresolvedItems{flex-wrap:wrap;align-items:center;gap:4px 8px;padding:4px 0 6px;display:flex}.o5qj9a_unresolvedItemsText{color:var(--dsw-alias-label-caption);font-size:12px;line-height:18px}@media (prefers-reduced-motion:reduce){.o5qj9a_chevron,.o5qj9a_lineAction{transition:none}}`;
2035
2131
  if (typeof document !== "undefined" && !document.querySelector('style[data-plugin-css="dsh-zotero/SourcesList.module.css"]')) {
2036
2132
  const tag = document.createElement("style");
2037
2133
  tag.setAttribute("data-plugin-css", "dsh-zotero/SourcesList.module.css");
2038
2134
  tag.textContent = style3;
2039
2135
  document.head.appendChild(tag);
2040
2136
  }
2041
- var SourcesList_default = { "exportSection": "-IqP-a_exportSection", "cardTitle": "-IqP-a_cardTitle", "exportCode": "-IqP-a_exportCode", "link": "-IqP-a_link", "chevron": "-IqP-a_chevron", "card": "-IqP-a_card", "passages": "-IqP-a_passages", "exportSectionActions": "-IqP-a_exportSectionActions", "exportKeys": "-IqP-a_exportKeys", "passageHead": "-IqP-a_passageHead", "note": "-IqP-a_note", "lineAction": "-IqP-a_lineAction", "documentTitle": "-IqP-a_documentTitle", "passage": "-IqP-a_passage", "exportPre": "-IqP-a_exportPre", "unresolvedItems": "-IqP-a_unresolvedItems", "unresolvedItemsText": "-IqP-a_unresolvedItemsText", "lineActions": "-IqP-a_lineActions", "exportSectionTitle": "-IqP-a_exportSectionTitle", "exportSectionCount": "-IqP-a_exportSectionCount", "exportKeysText": "-IqP-a_exportKeysText", "availability": "-IqP-a_availability", "exportCodeHead": "-IqP-a_exportCodeHead", "exportRow": "-IqP-a_exportRow", "exportSectionHead": "-IqP-a_exportSectionHead", "exportTitle": "-IqP-a_exportTitle", "chevronOpen": "-IqP-a_chevronOpen", "documentKey": "-IqP-a_documentKey", "exportFacts": "-IqP-a_exportFacts", "exportToggle": "-IqP-a_exportToggle", "cardHead": "-IqP-a_cardHead", "exportHead": "-IqP-a_exportHead", "line": "-IqP-a_line", "sourceTag": "-IqP-a_sourceTag", "exportBody": "-IqP-a_exportBody", "exportCodeLabel": "-IqP-a_exportCodeLabel" };
2137
+ var SourcesList_default = { "lineAction": "o5qj9a_lineAction", "passageHead": "o5qj9a_passageHead", "passage": "o5qj9a_passage", "exportSectionCount": "o5qj9a_exportSectionCount", "exportCodeLabel": "o5qj9a_exportCodeLabel", "line": "o5qj9a_line", "card": "o5qj9a_card", "exportPre": "o5qj9a_exportPre", "exportBody": "o5qj9a_exportBody", "exportHead": "o5qj9a_exportHead", "exportTitle": "o5qj9a_exportTitle", "exportFacts": "o5qj9a_exportFacts", "documentTitle": "o5qj9a_documentTitle", "exportKeys": "o5qj9a_exportKeys", "exportSection": "o5qj9a_exportSection", "exportKeysText": "o5qj9a_exportKeysText", "availability": "o5qj9a_availability", "lineActions": "o5qj9a_lineActions", "exportSectionTitle": "o5qj9a_exportSectionTitle", "link": "o5qj9a_link", "unresolvedItems": "o5qj9a_unresolvedItems", "exportCodeHead": "o5qj9a_exportCodeHead", "chevron": "o5qj9a_chevron", "documentKey": "o5qj9a_documentKey", "exportToggle": "o5qj9a_exportToggle", "cardHead": "o5qj9a_cardHead", "passages": "o5qj9a_passages", "exportSectionHead": "o5qj9a_exportSectionHead", "cardTitle": "o5qj9a_cardTitle", "unresolvedItemsText": "o5qj9a_unresolvedItemsText", "exportCode": "o5qj9a_exportCode", "exportRow": "o5qj9a_exportRow", "chevronOpen": "o5qj9a_chevronOpen", "note": "o5qj9a_note", "exportSectionActions": "o5qj9a_exportSectionActions", "sourceTag": "o5qj9a_sourceTag" };
2042
2138
 
2043
2139
  // src/client/components/CopyButton.tsx
2044
2140
  var import_jsx_runtime10 = require("react/jsx-runtime");
@@ -17482,6 +17578,8 @@ var en = {
17482
17578
  maxExportCharsHint: "Provider hard limit for zotero_export output.",
17483
17579
  maxExportRefs: "Export ref cap",
17484
17580
  maxExportRefsHint: "Refs one zotero_export call accepts at most.",
17581
+ maxBrowseResults: "Browse result cap",
17582
+ maxBrowseResultsHint: "Items one zotero_browse call returns at most.",
17485
17583
  defaultStyle: "Default citation style",
17486
17584
  defaultStyleHint: "CSL style id for citation and bibliography formats (e.g. apa).",
17487
17585
  defaultLocale: "Default locale",
@@ -17661,6 +17759,8 @@ var zh = {
17661
17759
  maxExportCharsHint: "zotero_export \u8F93\u51FA\u7684\u63D0\u4F9B\u65B9\u786C\u4E0A\u9650\u3002",
17662
17760
  maxExportRefs: "\u5BFC\u51FA\u6761\u76EE\u4E0A\u9650",
17663
17761
  maxExportRefsHint: "zotero_export \u5355\u6B21\u8C03\u7528\u6700\u591A\u63A5\u53D7\u7684 refs \u6570\u3002",
17762
+ maxBrowseResults: "\u6D4F\u89C8\u7ED3\u679C\u4E0A\u9650",
17763
+ maxBrowseResultsHint: "zotero_browse \u5355\u6B21\u8C03\u7528\u6700\u591A\u8FD4\u56DE\u7684\u6761\u76EE\u6570\u3002",
17664
17764
  defaultStyle: "\u9ED8\u8BA4\u5F15\u6587\u6837\u5F0F",
17665
17765
  defaultStyleHint: "citation/bibliography \u683C\u5F0F\u7684 CSL \u6837\u5F0F id\uFF08\u5982 apa\uFF09\u3002",
17666
17766
  defaultLocale: "\u9ED8\u8BA4\u533A\u57DF\u8BBE\u7F6E",