dsh-zotero 0.4.2 → 0.4.3

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 (53) hide show
  1. package/README.en.md +11 -8
  2. package/README.md +19 -16
  3. package/lib/attachments.d.ts +8 -0
  4. package/lib/attachments.d.ts.map +1 -1
  5. package/lib/attachments.js +11 -1
  6. package/lib/attachments.js.map +1 -1
  7. package/lib/client.js +10 -5
  8. package/lib/client.js.map +2 -2
  9. package/lib/constants.d.ts +7 -0
  10. package/lib/constants.d.ts.map +1 -1
  11. package/lib/constants.js +7 -0
  12. package/lib/constants.js.map +1 -1
  13. package/lib/normalize.d.ts +18 -5
  14. package/lib/normalize.d.ts.map +1 -1
  15. package/lib/normalize.js +84 -6
  16. package/lib/normalize.js.map +1 -1
  17. package/lib/presentation-meta.d.ts +5 -2
  18. package/lib/presentation-meta.d.ts.map +1 -1
  19. package/lib/presentation-meta.js +6 -3
  20. package/lib/presentation-meta.js.map +1 -1
  21. package/lib/prompt.js +2 -2
  22. package/lib/prompt.js.map +1 -1
  23. package/lib/provider-local.d.ts +119 -21
  24. package/lib/provider-local.d.ts.map +1 -1
  25. package/lib/provider-local.js +739 -184
  26. package/lib/provider-local.js.map +1 -1
  27. package/lib/refs.d.ts +2 -3
  28. package/lib/refs.d.ts.map +1 -1
  29. package/lib/refs.js +2 -3
  30. package/lib/refs.js.map +1 -1
  31. package/lib/service.d.ts +15 -1
  32. package/lib/service.d.ts.map +1 -1
  33. package/lib/service.js +33 -1
  34. package/lib/service.js.map +1 -1
  35. package/lib/tools/browse.d.ts +152 -2
  36. package/lib/tools/browse.d.ts.map +1 -1
  37. package/lib/tools/browse.js +201 -9
  38. package/lib/tools/browse.js.map +1 -1
  39. package/lib/tools/get.d.ts +9 -0
  40. package/lib/tools/get.d.ts.map +1 -1
  41. package/lib/tools/get.js +17 -1
  42. package/lib/tools/get.js.map +1 -1
  43. package/lib/tools/retrieve.d.ts +12 -0
  44. package/lib/tools/retrieve.d.ts.map +1 -1
  45. package/lib/tools/retrieve.js +37 -1
  46. package/lib/tools/retrieve.js.map +1 -1
  47. package/lib/tools/search.d.ts +96 -3
  48. package/lib/tools/search.d.ts.map +1 -1
  49. package/lib/tools/search.js +65 -24
  50. package/lib/tools/search.js.map +1 -1
  51. package/lib/types.d.ts +180 -11
  52. package/lib/types.d.ts.map +1 -1
  53. package/package.json +1 -1
package/README.en.md CHANGED
@@ -26,13 +26,16 @@ dsh-zotero is a [Zotero](https://www.zotero.org) plugin designed for agent resea
26
26
 
27
27
  ## Tools
28
28
 
29
- | Tool | Purpose |
30
- | ------------------- | ------------------------------------------------------------------------------- |
31
- | `zotero_search` | Search by title/creator/year; `everything` mode also searches indexed full text |
32
- | `zotero_get` | Read one item's metadata, optionally with notes, annotations, and attachments |
33
- | `zotero_retrieve` | Return the most relevant evidence passages for a query |
34
- | `zotero_attachment` | Resolve a ref to a verified on-disk path or linked URL |
35
- | `zotero_export` | Generate citations, bibliographies, BibTeX/BibLaTeX/RIS/CSL JSON |
29
+ | Tool | Purpose |
30
+ | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
31
+ | `zotero_search` | Search by title/creator/year (library/collection/savedSearch/publications scopes); `everything` mode also searches indexed full text |
32
+ | `zotero_browse` | Discover library structure: libraries, the collection tree, saved searches, tag facets, item types and their fields |
33
+ | `zotero_get` | Read one item's metadata, optionally with notes, annotations, and attachments; `fields:"all"` keeps every field |
34
+ | `zotero_children` | Explore one item's child-object graph: direct notes, attachments, and the annotations that live under each PDF |
35
+ | `zotero_retrieve` | Return the most relevant evidence passages for a query; multi-attachment retrieval supported |
36
+ | `zotero_changes` | Incremental awareness via local transaction versions: what changed, what was deleted |
37
+ | `zotero_attachment` | Resolve a ref to a verified on-disk path or linked URL |
38
+ | `zotero_export` | Generate citations, bibliographies, BibTeX/BibLaTeX/RIS/CSL JSON |
36
39
 
37
40
  [Full tool reference →](docs/tools.md)
38
41
 
@@ -115,7 +118,7 @@ More examples in [Features](docs/features.md).
115
118
  | ------------------------------------------ | ------------------------------------------------------ |
116
119
  | [Getting Started](docs/getting-started.md) | Installation, prerequisites, first verification |
117
120
  | [Features](docs/features.md) | Sources panel, chat integration, evidence, exports |
118
- | [Tool Reference](docs/tools.md) | Parameters, return values, error codes for all 5 tools |
121
+ | [Tool Reference](docs/tools.md) | Parameters, return values, error codes for all 8 tools |
119
122
  | [Configuration](docs/configuration.md) | 20 config fields, defaults, hot-reload |
120
123
  | [Architecture](docs/architecture.md) | Data flow, layer responsibilities, design boundaries |
121
124
  | [Development](docs/development.md) | Build, test, local development |
package/README.md CHANGED
@@ -26,13 +26,16 @@ dsh-zotero 是面向 Agent 研究工作流的 [Zotero](https://www.zotero.org)
26
26
 
27
27
  ## 工具
28
28
 
29
- | 工具 | 用途 |
30
- | ------------------- | ------------------------------------------------------- |
31
- | `zotero_search` | 按标题/作者/年份搜索,`everything` 模式连全文索引一起搜 |
32
- | `zotero_get` | 读取单条文献的元数据,可选返回笔记、批注、附件清单 |
33
- | `zotero_retrieve` | 按查询词返回最相关的证据段落(批注/笔记/摘要/全文) |
34
- | `zotero_attachment` | 将文献 ref 解析为已验证的磁盘路径或链接 URL |
35
- | `zotero_export` | 生成引用、参考文献表、BibTeX/BibLaTeX/RIS/CSL JSON |
29
+ | 工具 | 用途 |
30
+ | ------------------- | ------------------------------------------------------------------------------------------------------------- |
31
+ | `zotero_search` | 按标题/作者/年份搜索(library/collection/savedSearch/publications 作用域),`everything` 模式连全文索引一起搜 |
32
+ | `zotero_browse` | 发现库结构:库、合集树(层级导航)、保存的检索、标签 facet、条目类型及其字段 |
33
+ | `zotero_get` | 读取单条文献的元数据,可选返回笔记、批注、附件清单;`fields:"all"` 保留全部元数据 |
34
+ | `zotero_children` | 探索单条文献的子对象图:直连笔记、附件,以及挂在 PDF 下的批注 |
35
+ | `zotero_retrieve` | 按查询词返回最相关的证据段落(批注/笔记/摘要/全文),支持多附件检索 |
36
+ | `zotero_changes` | 基于本地事务版本的增量感知:哪些条目/合集/全文索引变了、什么被删除 |
37
+ | `zotero_attachment` | 将文献 ref 解析为已验证的磁盘路径或链接 URL |
38
+ | `zotero_export` | 生成引用、参考文献表、BibTeX/BibLaTeX/RIS/CSL JSON |
36
39
 
37
40
  [完整工具参考 →](docs/tools.md)
38
41
 
@@ -111,15 +114,15 @@ Agent → zotero_export(refs: [1,2,3], format: "bibtex")
111
114
 
112
115
  ## 文档
113
116
 
114
- | 文档 | 内容 |
115
- | ----------------------------------- | ---------------------------------- |
116
- | [快速上手](docs/getting-started.md) | 安装、前置条件、首次验证 |
117
- | [功能概览](docs/features.md) | 来源面板、对话集成、证据提取、导出 |
118
- | [工具参考](docs/tools.md) | 5 个工具的参数、返回值、错误码 |
119
- | [配置](docs/configuration.md) | 20 个配置字段、默认值、热更新 |
120
- | [架构](docs/architecture.md) | 数据流、各层职责、设计边界 |
121
- | [开发指南](docs/development.md) | 构建、测试、本地开发 |
122
- | [问题排查](docs/troubleshooting.md) | 11 个常见问题的症状和处理 |
117
+ | 文档 | 内容 |
118
+ | ----------------------------------- | ----------------------------------- |
119
+ | [快速上手](docs/getting-started.md) | 安装、前置条件、首次验证 |
120
+ | [功能概览](docs/features.md) | 来源面板、对话集成、证据提取、导出 |
121
+ | [工具参考](docs/tools.md) | 全部 8 个工具的参数、返回值、错误码 |
122
+ | [配置](docs/configuration.md) | 20 个配置字段、默认值、热更新 |
123
+ | [架构](docs/architecture.md) | 数据流、各层职责、设计边界 |
124
+ | [开发指南](docs/development.md) | 构建、测试、本地开发 |
125
+ | [问题排查](docs/troubleshooting.md) | 11 个常见问题的症状和处理 |
123
126
 
124
127
  ## 开发
125
128
 
@@ -47,4 +47,12 @@ export declare function normalizeAttachmentRecord(json: unknown): ZoteroAttachme
47
47
  * @throws {ZoteroError} `ZOTERO_UNEXPECTED` on an attachment row without a valid key.
48
48
  */
49
49
  export declare function selectAttachment(rows: readonly unknown[], kind: string): ZoteroAttachmentCandidate | undefined;
50
+ /**
51
+ * Select every attachment of the requested kind from raw child rows, ordered
52
+ * by the same deterministic ranking {@link selectAttachment} uses — so the
53
+ * first entry always equals the single-selection answer, and a work with
54
+ * several PDFs (publisher copy, manuscript, supplement) can enter evidence
55
+ * ranking as several first-class sources.
56
+ */
57
+ export declare function selectAttachments(rows: readonly unknown[], kind: string): readonly ZoteroAttachmentCandidate[];
50
58
  //# sourceMappingURL=attachments.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGjF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,GACZ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAKlD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,yBAAyB,CAmBlF;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,IAAI,EAAE,MAAM,GACX,yBAAyB,GAAG,SAAS,CAoBvC"}
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH;;;GAGG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAA;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,2DAA2D;IAC3D,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CACtB;AAED,uEAAuE;AACvE,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAGjF;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,OAAO,GACZ;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,SAAS,CAKlD;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,OAAO,GAAG,yBAAyB,CAmBlF;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,IAAI,EAAE,MAAM,GACX,yBAAyB,GAAG,SAAS,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,IAAI,EAAE,MAAM,GACX,SAAS,yBAAyB,EAAE,CAoBtC"}
@@ -60,6 +60,16 @@ export function normalizeAttachmentRecord(json) {
60
60
  * @throws {ZoteroError} `ZOTERO_UNEXPECTED` on an attachment row without a valid key.
61
61
  */
62
62
  export function selectAttachment(rows, kind) {
63
+ return selectAttachments(rows, kind)[0];
64
+ }
65
+ /**
66
+ * Select every attachment of the requested kind from raw child rows, ordered
67
+ * by the same deterministic ranking {@link selectAttachment} uses — so the
68
+ * first entry always equals the single-selection answer, and a work with
69
+ * several PDFs (publisher copy, manuscript, supplement) can enter evidence
70
+ * ranking as several first-class sources.
71
+ */
72
+ export function selectAttachments(rows, kind) {
63
73
  const wantedContentType = kind === 'pdf' ? 'application/pdf' : kind;
64
74
  const scored = [];
65
75
  for (const row of rows) {
@@ -82,6 +92,6 @@ export function selectAttachment(rows, kind) {
82
92
  return byDate;
83
93
  return a.candidate.key.localeCompare(b.candidate.key);
84
94
  });
85
- return scored[0]?.candidate;
95
+ return scored.map((entry) => entry.candidate);
86
96
  }
87
97
  //# sourceMappingURL=attachments.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"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"}
package/lib/client.js CHANGED
@@ -1014,6 +1014,7 @@ function scopeOf(value) {
1014
1014
  }
1015
1015
  function resolvedToSourceScope(scope) {
1016
1016
  if (scope.kind === "library") return { kind: "library", library: scope.library };
1017
+ if (scope.kind === "publications") return { kind: "publications", library: scope.library };
1017
1018
  if (scope.kind === "collection") return { kind: "collection", ref: scope.ref, name: scope.name };
1018
1019
  return { kind: "savedSearch", ref: scope.ref, name: scope.name };
1019
1020
  }
@@ -1606,10 +1607,10 @@ var import_dsh_client_ui_primitives3 = require("@deepseek-ai/dsh-client-ui-primi
1606
1607
 
1607
1608
  // src/client/build-info.ts
1608
1609
  function buildVersion() {
1609
- return true ? "0.4.2" : "unknown";
1610
+ return true ? "0.4.3" : "unknown";
1610
1611
  }
1611
1612
  function buildCommit() {
1612
- return true ? "84a41d9" : "unknown";
1613
+ return true ? "9a8519d" : "unknown";
1613
1614
  }
1614
1615
  function buildInfoOf() {
1615
1616
  return `${buildVersion()} \xB7 ${buildCommit()}`;
@@ -1633,7 +1634,7 @@ if (typeof document !== "undefined" && !document.querySelector('style[data-plugi
1633
1634
  tag.textContent = style;
1634
1635
  document.head.appendChild(tag);
1635
1636
  }
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" };
1637
+ var workspace_default = { "evidenceEntry": "_o1AEW_evidenceEntry", "passages": "_o1AEW_passages", "passage": "_o1AEW_passage", "listItemMeta": "_o1AEW_listItemMeta", "note": "_o1AEW_note", "detailTabCount": "_o1AEW_detailTabCount", "availability": "_o1AEW_availability", "inspector": "_o1AEW_inspector", "evidencePage": "_o1AEW_evidencePage", "passageHead": "_o1AEW_passageHead", "emptyIcon": "_o1AEW_emptyIcon", "diagnosis": "_o1AEW_diagnosis", "starterRow": "_o1AEW_starterRow", "detailToggle": "_o1AEW_detailToggle", "listbox": "_o1AEW_listbox", "workspace": "_o1AEW_workspace", "line": "_o1AEW_line", "empty": "_o1AEW_empty", "inspectorTitleWrap": "_o1AEW_inspectorTitleWrap", "backAction": "_o1AEW_backAction", "sourceTag": "_o1AEW_sourceTag", "emptyText": "_o1AEW_emptyText", "actionRow": "_o1AEW_actionRow", "badges": "_o1AEW_badges", "filterClear": "_o1AEW_filterClear", "listItemTitle": "_o1AEW_listItemTitle", "filterArrowRight": "_o1AEW_filterArrowRight", "cardStack": "_o1AEW_cardStack", "listItem": "_o1AEW_listItem", "inspectorTitle": "_o1AEW_inspectorTitle", "inspectorTabs": "_o1AEW_inspectorTabs", "badge": "_o1AEW_badge", "inspectorBody": "_o1AEW_inspectorBody", "action": "_o1AEW_action", "sidebar": "_o1AEW_sidebar", "lensTabActive": "_o1AEW_lensTabActive", "filterBar": "_o1AEW_filterBar", "summaryLine": "_o1AEW_summaryLine", "sectionLabel": "_o1AEW_sectionLabel", "toolbar": "_o1AEW_toolbar", "exportStack": "_o1AEW_exportStack", "inspectorHead": "_o1AEW_inspectorHead", "panel": "_o1AEW_panel", "spacer": "_o1AEW_spacer", "statusText": "_o1AEW_statusText", "filterArrow": "_o1AEW_filterArrow", "inspectorMeta": "_o1AEW_inspectorMeta", "detailTabActive": "_o1AEW_detailTabActive", "detailTab": "_o1AEW_detailTab", "listItemSelected": "_o1AEW_listItemSelected", "exportsPage": "_o1AEW_exportsPage", "refresh": "_o1AEW_refresh", "emptyNote": "_o1AEW_emptyNote", "menuButton": "_o1AEW_menuButton", "filterArrowLeft": "_o1AEW_filterArrowLeft", "warning": "_o1AEW_warning", "lensTab": "_o1AEW_lensTab", "emptyWrap": "_o1AEW_emptyWrap", "lensBar": "_o1AEW_lensBar", "view": "_o1AEW_view", "lensTabCount": "_o1AEW_lensTabCount", "section": "_o1AEW_section" };
1637
1638
 
1638
1639
  // src/client/components/workspace/WorkspaceToolbar.tsx
1639
1640
  var import_jsx_runtime4 = require("react/jsx-runtime");
@@ -1965,7 +1966,7 @@ if (typeof document !== "undefined" && !document.querySelector('style[data-plugi
1965
1966
  tag.textContent = style2;
1966
1967
  document.head.appendChild(tag);
1967
1968
  }
1968
- var open_default = { "linkWrap": "_02bwZG_linkWrap", "button": "_02bwZG_button", "note": "_02bwZG_note", "srOnly": "_02bwZG_srOnly", "blocked": "_02bwZG_blocked", "link": "_02bwZG_link" };
1969
+ var open_default = { "note": "_02bwZG_note", "button": "_02bwZG_button", "link": "_02bwZG_link", "blocked": "_02bwZG_blocked", "linkWrap": "_02bwZG_linkWrap", "srOnly": "_02bwZG_srOnly" };
1969
1970
 
1970
1971
  // src/client/components/open/BlockedOpenAction.tsx
1971
1972
  var import_jsx_runtime7 = require("react/jsx-runtime");
@@ -2015,6 +2016,8 @@ function scopeLabelOf(scope, t) {
2015
2016
  switch (scope.kind) {
2016
2017
  case "library":
2017
2018
  return t("overviewScopeLibrary");
2019
+ case "publications":
2020
+ return t("overviewScopePublications");
2018
2021
  case "collection":
2019
2022
  return scope.name ?? scope.ref ?? t("overviewScopeCollection");
2020
2023
  case "savedSearch":
@@ -2134,7 +2137,7 @@ if (typeof document !== "undefined" && !document.querySelector('style[data-plugi
2134
2137
  tag.textContent = style3;
2135
2138
  document.head.appendChild(tag);
2136
2139
  }
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" };
2140
+ var SourcesList_default = { "cardTitle": "o5qj9a_cardTitle", "exportSectionCount": "o5qj9a_exportSectionCount", "exportSectionActions": "o5qj9a_exportSectionActions", "exportCodeHead": "o5qj9a_exportCodeHead", "exportCodeLabel": "o5qj9a_exportCodeLabel", "exportToggle": "o5qj9a_exportToggle", "exportBody": "o5qj9a_exportBody", "exportPre": "o5qj9a_exportPre", "unresolvedItemsText": "o5qj9a_unresolvedItemsText", "exportHead": "o5qj9a_exportHead", "lineAction": "o5qj9a_lineAction", "passage": "o5qj9a_passage", "exportKeysText": "o5qj9a_exportKeysText", "exportSectionTitle": "o5qj9a_exportSectionTitle", "card": "o5qj9a_card", "passageHead": "o5qj9a_passageHead", "exportRow": "o5qj9a_exportRow", "line": "o5qj9a_line", "exportFacts": "o5qj9a_exportFacts", "passages": "o5qj9a_passages", "documentKey": "o5qj9a_documentKey", "exportTitle": "o5qj9a_exportTitle", "availability": "o5qj9a_availability", "note": "o5qj9a_note", "chevronOpen": "o5qj9a_chevronOpen", "chevron": "o5qj9a_chevron", "exportKeys": "o5qj9a_exportKeys", "unresolvedItems": "o5qj9a_unresolvedItems", "exportSectionHead": "o5qj9a_exportSectionHead", "exportSection": "o5qj9a_exportSection", "sourceTag": "o5qj9a_sourceTag", "documentTitle": "o5qj9a_documentTitle", "exportCode": "o5qj9a_exportCode", "lineActions": "o5qj9a_lineActions", "link": "o5qj9a_link", "cardHead": "o5qj9a_cardHead" };
2138
2141
 
2139
2142
  // src/client/components/CopyButton.tsx
2140
2143
  var import_jsx_runtime10 = require("react/jsx-runtime");
@@ -17614,6 +17617,7 @@ var en = {
17614
17617
  modeMetadata: "Metadata",
17615
17618
  modeEverything: "Metadata and full text",
17616
17619
  overviewScopeLibrary: "Library",
17620
+ overviewScopePublications: "My Publications",
17617
17621
  overviewScopeCollection: "Collection",
17618
17622
  overviewScopeSavedSearch: "Saved search",
17619
17623
  searchDetailOpen: "Search details",
@@ -17795,6 +17799,7 @@ var zh = {
17795
17799
  modeMetadata: "\u5143\u6570\u636E",
17796
17800
  modeEverything: "\u5143\u6570\u636E\u4E0E\u5168\u6587",
17797
17801
  overviewScopeLibrary: "\u6587\u732E\u5E93",
17802
+ overviewScopePublications: "\u6211\u7684\u51FA\u7248\u7269",
17798
17803
  overviewScopeCollection: "\u5408\u96C6",
17799
17804
  overviewScopeSavedSearch: "\u4FDD\u5B58\u7684\u68C0\u7D22",
17800
17805
  searchDetailOpen: "\u67E5\u770B\u68C0\u7D22\u6761\u4EF6",