dsh-zotero 0.5.2 → 0.7.0

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 (73) hide show
  1. package/README.en.md +2 -1
  2. package/README.md +2 -1
  3. package/lib/ask.d.ts +2 -1
  4. package/lib/ask.d.ts.map +1 -1
  5. package/lib/attachments.d.ts +5 -15
  6. package/lib/attachments.d.ts.map +1 -1
  7. package/lib/attachments.js +7 -18
  8. package/lib/attachments.js.map +1 -1
  9. package/lib/client.js +555 -624
  10. package/lib/client.js.map +4 -4
  11. package/lib/evidence.d.ts.map +1 -1
  12. package/lib/evidence.js +15 -4
  13. package/lib/evidence.js.map +1 -1
  14. package/lib/export-items.d.ts +7 -0
  15. package/lib/export-items.d.ts.map +1 -1
  16. package/lib/export-items.js +8 -1
  17. package/lib/export-items.js.map +1 -1
  18. package/lib/json.d.ts +13 -0
  19. package/lib/json.d.ts.map +1 -1
  20. package/lib/json.js +17 -1
  21. package/lib/json.js.map +1 -1
  22. package/lib/local/browse-domain.d.ts.map +1 -1
  23. package/lib/local/browse-domain.js.map +1 -1
  24. package/lib/normalize.d.ts +0 -3
  25. package/lib/normalize.d.ts.map +1 -1
  26. package/lib/normalize.js +7 -18
  27. package/lib/normalize.js.map +1 -1
  28. package/lib/presentation-meta.d.ts +1 -1
  29. package/lib/presentation-meta.d.ts.map +1 -1
  30. package/lib/presentation-meta.js +11 -6
  31. package/lib/presentation-meta.js.map +1 -1
  32. package/lib/prompt.d.ts +12 -7
  33. package/lib/prompt.d.ts.map +1 -1
  34. package/lib/prompt.js +13 -9
  35. package/lib/prompt.js.map +1 -1
  36. package/lib/ref-grammar.d.ts +34 -0
  37. package/lib/ref-grammar.d.ts.map +1 -0
  38. package/lib/ref-grammar.js +37 -0
  39. package/lib/ref-grammar.js.map +1 -0
  40. package/lib/refs.d.ts.map +1 -1
  41. package/lib/refs.js +6 -6
  42. package/lib/refs.js.map +1 -1
  43. package/lib/service.d.ts.map +1 -1
  44. package/lib/service.js +21 -28
  45. package/lib/service.js.map +1 -1
  46. package/lib/tools/attachment.d.ts.map +1 -1
  47. package/lib/tools/attachment.js +4 -1
  48. package/lib/tools/attachment.js.map +1 -1
  49. package/lib/tools/browse.d.ts.map +1 -1
  50. package/lib/tools/browse.js +14 -15
  51. package/lib/tools/browse.js.map +1 -1
  52. package/lib/tools/export.d.ts.map +1 -1
  53. package/lib/tools/export.js +5 -4
  54. package/lib/tools/export.js.map +1 -1
  55. package/lib/tools/get.d.ts.map +1 -1
  56. package/lib/tools/get.js +2 -2
  57. package/lib/tools/get.js.map +1 -1
  58. package/lib/tools/retrieve.d.ts.map +1 -1
  59. package/lib/tools/retrieve.js +2 -2
  60. package/lib/tools/retrieve.js.map +1 -1
  61. package/lib/tools/search.d.ts.map +1 -1
  62. package/lib/tools/search.js.map +1 -1
  63. package/lib/tools/validate.d.ts +2 -0
  64. package/lib/tools/validate.d.ts.map +1 -1
  65. package/lib/tools/validate.js +6 -4
  66. package/lib/tools/validate.js.map +1 -1
  67. package/lib/typert.d.ts +8 -7
  68. package/lib/typert.d.ts.map +1 -1
  69. package/lib/typert.js +8 -7
  70. package/lib/typert.js.map +1 -1
  71. package/lib/types.d.ts +7 -5
  72. package/lib/types.d.ts.map +1 -1
  73. package/package.json +119 -110
package/README.en.md CHANGED
@@ -10,6 +10,7 @@
10
10
  <a href="https://www.npmjs.com/package/dsh-zotero"><img src="https://img.shields.io/npm/v/dsh-zotero" alt="npm version" style="max-width:100%;"></a>
11
11
  <a href="https://www.npmjs.com/package/dsh-zotero"><img src="https://img.shields.io/npm/dm/dsh-zotero" alt="npm downloads" style="max-width:100%;"></a>
12
12
  <a href="https://www.npmjs.com/package/dsh-zotero"><img src="https://img.shields.io/npm/l/dsh-zotero" alt="license" style="max-width:100%;"></a>
13
+ <a href="https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.3-alpha.1"><img src="https://img.shields.io/badge/dsh-%3E%3D0.1.3--alpha.1-blue" alt="minimum dsh version" style="max-width:100%;"></a>
13
14
  <a href="https://awesome-dsh-plugin.com"><img src="https://awesome-dsh-plugin.com/badge.svg" alt="Awesome DSH Plugin"></a>
14
15
  </p>
15
16
  </div>
@@ -68,7 +69,7 @@ The plugin provides a settings card under **Settings → Plugins** where you can
68
69
 
69
70
  - Zotero ≥ 7 with local API enabled: **Settings → Advanced → "Allow other applications on this computer to communicate with Zotero"**
70
71
  - Node.js ≥ 22.19 (or ≥ 24)
71
- - dsh 0.1.2-alpha.1 series host (all `@deepseek-ai/dsh-*` peer dependencies are `^0.1.2-alpha.1`)
72
+ - dsh 0.1.3-alpha.1 host (all `@deepseek-ai/dsh-*` peer dependencies are `^0.1.3-alpha.1`; only the latest alpha is supported until upstream stabilizes, no backward compatibility)
72
73
  - Local API at `http://127.0.0.1:23119/api`, unauthenticated, read-only
73
74
 
74
75
  ## Usage example
package/README.md CHANGED
@@ -10,6 +10,7 @@
10
10
  <a href="https://www.npmjs.com/package/dsh-zotero"><img src="https://img.shields.io/npm/v/dsh-zotero" alt="npm version" style="max-width:100%;"></a>
11
11
  <a href="https://www.npmjs.com/package/dsh-zotero"><img src="https://img.shields.io/npm/dm/dsh-zotero" alt="npm downloads" style="max-width:100%;"></a>
12
12
  <a href="https://www.npmjs.com/package/dsh-zotero"><img src="https://img.shields.io/npm/l/dsh-zotero" alt="license" style="max-width:100%;"></a>
13
+ <a href="https://github.com/deepseek-ai/deepseek-harness/releases/tag/dsh-v0.1.3-alpha.1"><img src="https://img.shields.io/badge/dsh-%3E%3D0.1.3--alpha.1-blue" alt="最低 dsh 版本" style="max-width:100%;"></a>
13
14
  <a href="https://awesome-dsh-plugin.com"><img src="https://awesome-dsh-plugin.com/badge.svg" alt="Awesome DSH Plugin"></a>
14
15
  </p>
15
16
  </div>
@@ -68,7 +69,7 @@ dsh plugin --profile <name> add ./dsh-zotero-*.tgz
68
69
 
69
70
  - Zotero ≥ 7 桌面版,启用本地 API:**设置 → 高级 → "允许其他应用程序与 Zotero 通信"**
70
71
  - Node.js ≥ 22.19(或 ≥ 24)
71
- - 宿主 dsh 0.1.2-alpha.1 系列(`@deepseek-ai/dsh-*` peer 依赖均为 `^0.1.2-alpha.1`)
72
+ - 宿主 dsh 0.1.3-alpha.1(`@deepseek-ai/dsh-*` peer 依赖均为 `^0.1.3-alpha.1`;上游稳定前仅支持最新 alpha 版本,不向后兼容)
72
73
  - 本地 API 地址 `http://127.0.0.1:23119/api`,无认证,只读
73
74
 
74
75
  ## 使用示例
package/lib/ask.d.ts CHANGED
@@ -16,7 +16,7 @@
16
16
  import type { Context } from '@deepseek-ai/cordis';
17
17
  import { type ToolRunContext } from '@deepseek-ai/dsh-tools';
18
18
  /** The parts of a tool execution `withConnectivityAsk` needs. */
19
- export type ConnectivityAskExec = Pick<ToolRunContext, 'signal' | 'agent'>;
19
+ type ConnectivityAskExec = Pick<ToolRunContext, 'signal' | 'agent'>;
20
20
  /**
21
21
  * Run one Zotero request; on a connectivity failure, ask the user how to
22
22
  * proceed and retry at most once when they choose the recommended action.
@@ -31,4 +31,5 @@ export type ConnectivityAskExec = Pick<ToolRunContext, 'signal' | 'agent'>;
31
31
  * fails again.
32
32
  */
33
33
  export declare function withConnectivityAsk<T>(ctx: Context, exec: ConnectivityAskExec, run: () => Promise<T>): Promise<T>;
34
+ export {};
34
35
  //# sourceMappingURL=ask.d.ts.map
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;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"}
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,KAAK,mBAAmB,GAAG,IAAI,CAAC,cAAc,EAAE,QAAQ,GAAG,OAAO,CAAC,CAAA;AA2EnE;;;;;;;;;;;;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"}
@@ -2,10 +2,11 @@
2
2
  * Attachment records and deterministic attachment selection.
3
3
  *
4
4
  * Zotero's own best-attachment choice (`links.attachment` on item
5
- * responses) is preferred wherever it exists; `selectAttachment` is the
5
+ * responses) is preferred wherever it exists; `selectAttachments` is the
6
6
  * documented fallback that ranks child rows the same way Zotero's
7
7
  * `getBestAttachment` does — PDF over other kinds, imported files first,
8
- * then earliest addition date, then key order.
8
+ * then earliest addition date, then key order. Single selection is the
9
+ * ranking's first entry.
9
10
  * @module dsh-zotero/attachments
10
11
  */
11
12
  /**
@@ -36,21 +37,10 @@ export declare function bestAttachmentFromLinks(json: unknown): {
36
37
  * @throws {ZoteroError} `ZOTERO_UNEXPECTED` when the object has no valid Zotero key.
37
38
  */
38
39
  export declare function normalizeAttachmentRecord(json: unknown): ZoteroAttachmentCandidate;
39
- /**
40
- * Select one attachment of the requested kind from raw child rows, ranked
41
- * deterministically: imported files first, then earliest `dateAdded`, then
42
- * key order. Rows without an attachment content type are skipped; a
43
- * malformed attachment row fails loud like every other broken invariant.
44
- * @param rows - raw child item JSON objects (notes and annotations are skipped).
45
- * @param kind - `pdf` selects `application/pdf`; anything else is matched as a literal content type.
46
- * @returns the winning record, or undefined when no row matches the kind.
47
- * @throws {ZoteroError} `ZOTERO_UNEXPECTED` on an attachment row without a valid key.
48
- */
49
- export declare function selectAttachment(rows: readonly unknown[], kind: string): ZoteroAttachmentCandidate | undefined;
50
40
  /**
51
41
  * 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
42
+ * by the same deterministic ranking Zotero's `getBestAttachment` uses — so
43
+ * the first entry always equals the single-selection answer, and a work with
54
44
  * several PDFs (publisher copy, manuscript, supplement) can enter evidence
55
45
  * ranking as several first-class sources.
56
46
  */
@@ -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,CAEvC;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,IAAI,EAAE,MAAM,GACX,SAAS,yBAAyB,EAAE,CAoBtC"}
1
+ {"version":3,"file":"attachments.d.ts","sourceRoot":"","sources":["../src/attachments.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAMH;;;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;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,SAAS,OAAO,EAAE,EACxB,IAAI,EAAE,MAAM,GACX,SAAS,yBAAyB,EAAE,CAoBtC"}
@@ -2,19 +2,21 @@
2
2
  * Attachment records and deterministic attachment selection.
3
3
  *
4
4
  * Zotero's own best-attachment choice (`links.attachment` on item
5
- * responses) is preferred wherever it exists; `selectAttachment` is the
5
+ * responses) is preferred wherever it exists; `selectAttachments` is the
6
6
  * documented fallback that ranks child rows the same way Zotero's
7
7
  * `getBestAttachment` does — PDF over other kinds, imported files first,
8
- * then earliest addition date, then key order.
8
+ * then earliest addition date, then key order. Single selection is the
9
+ * ranking's first entry.
9
10
  * @module dsh-zotero/attachments
10
11
  */
11
12
  import { ZOTERO_UNEXPECTED, ZoteroError } from './errors.js';
12
13
  import { asRecord, asString, isObjectKey } from './json.js';
14
+ import { ATTACHMENT_HREF_PATTERN } from './ref-grammar.js';
13
15
  /** Extract a Zotero object key from an API `links.attachment.href`. */
14
16
  export function extractAttachmentKey(href) {
15
17
  if (href === undefined)
16
18
  return undefined;
17
- return /\/items\/([A-Z0-9]{8})(?:[/?#]|$)/.exec(href)?.[1];
19
+ return ATTACHMENT_HREF_PATTERN.exec(href)?.[1];
18
20
  }
19
21
  /**
20
22
  * Read Zotero's own best-attachment link from an item response.
@@ -49,23 +51,10 @@ export function normalizeAttachmentRecord(json) {
49
51
  ...(url !== undefined ? { url } : {}),
50
52
  };
51
53
  }
52
- /**
53
- * Select one attachment of the requested kind from raw child rows, ranked
54
- * deterministically: imported files first, then earliest `dateAdded`, then
55
- * key order. Rows without an attachment content type are skipped; a
56
- * malformed attachment row fails loud like every other broken invariant.
57
- * @param rows - raw child item JSON objects (notes and annotations are skipped).
58
- * @param kind - `pdf` selects `application/pdf`; anything else is matched as a literal content type.
59
- * @returns the winning record, or undefined when no row matches the kind.
60
- * @throws {ZoteroError} `ZOTERO_UNEXPECTED` on an attachment row without a valid key.
61
- */
62
- export function selectAttachment(rows, kind) {
63
- return selectAttachments(rows, kind)[0];
64
- }
65
54
  /**
66
55
  * 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
56
+ * by the same deterministic ranking Zotero's `getBestAttachment` uses — so
57
+ * the first entry always equals the single-selection answer, and a work with
69
58
  * several PDFs (publisher copy, manuscript, supplement) can enter evidence
70
59
  * ranking as several first-class sources.
71
60
  */
@@ -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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"}