papersearch 0.4.0 → 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 (157) hide show
  1. package/README.en.md +292 -0
  2. package/README.md +203 -122
  3. package/carsi/README.md +9 -3
  4. package/carsi/paper_search_carsi/__init__.py +1 -4
  5. package/carsi/paper_search_carsi/adapters/__init__.py +1 -1
  6. package/carsi/paper_search_carsi/adapters/base.py +2 -0
  7. package/carsi/paper_search_carsi/adapters/frontiers/__init__.py +45 -0
  8. package/carsi/paper_search_carsi/adapters/mdpi/__init__.py +33 -1
  9. package/carsi/paper_search_carsi/adapters/platforms/figshare/__init__.py +185 -0
  10. package/carsi/paper_search_carsi/adapters/thieme/__init__.py +6 -5
  11. package/carsi/paper_search_carsi/browser/__init__.py +8 -1
  12. package/carsi/paper_search_carsi/browser/backend.py +23 -147
  13. package/carsi/paper_search_carsi/browser/challenge_interaction.py +137 -0
  14. package/carsi/paper_search_carsi/browser/challenges.py +57 -0
  15. package/carsi/paper_search_carsi/browser/engine.py +2 -2
  16. package/carsi/paper_search_carsi/browser/preview.py +44 -26
  17. package/carsi/paper_search_carsi/browser/profiles.py +161 -0
  18. package/carsi/paper_search_carsi/browser/watchdog.py +74 -17
  19. package/carsi/paper_search_carsi/config.py +4 -1
  20. package/carsi/paper_search_carsi/download_diagnostics.py +1 -1
  21. package/carsi/paper_search_carsi/engine/batch.py +140 -69
  22. package/carsi/paper_search_carsi/engine/batch_access.py +8 -3
  23. package/carsi/paper_search_carsi/engine/batch_capture.py +54 -9
  24. package/carsi/paper_search_carsi/engine/batch_common.py +27 -14
  25. package/carsi/paper_search_carsi/engine/batch_diagnostics.py +20 -15
  26. package/carsi/paper_search_carsi/engine/batch_login.py +85 -30
  27. package/carsi/paper_search_carsi/engine/batch_runs.py +2 -7
  28. package/carsi/paper_search_carsi/engine/batch_waits.py +97 -47
  29. package/carsi/paper_search_carsi/engine/bridge.py +17 -8
  30. package/carsi/paper_search_carsi/engine/supplements.py +28 -5
  31. package/carsi/paper_search_carsi/entitlements.py +12 -2
  32. package/carsi/paper_search_carsi/log.py +13 -7
  33. package/carsi/paper_search_carsi/orchestrator.py +7 -1
  34. package/carsi/paper_search_carsi/progress_bar.py +156 -12
  35. package/carsi/paper_search_carsi/server.py +8 -1
  36. package/carsi/paper_search_carsi/user_settings.py +55 -0
  37. package/carsi/pyproject.toml +1 -1
  38. package/dist/capabilities/citation-expansion/schemas.d.ts +2 -2
  39. package/dist/capabilities/metadata-search/MultiSourceSearchService.d.ts.map +1 -1
  40. package/dist/capabilities/metadata-search/MultiSourceSearchService.js +17 -4
  41. package/dist/capabilities/metadata-search/MultiSourceSearchService.js.map +1 -1
  42. package/dist/capabilities/metadata-search/handler.d.ts.map +1 -1
  43. package/dist/capabilities/metadata-search/handler.js +6 -0
  44. package/dist/capabilities/metadata-search/handler.js.map +1 -1
  45. package/dist/capabilities/metadata-search/schemas.d.ts +3 -3
  46. package/dist/capabilities/metadata-search/schemas.d.ts.map +1 -1
  47. package/dist/capabilities/metadata-search/schemas.js +1 -0
  48. package/dist/capabilities/metadata-search/schemas.js.map +1 -1
  49. package/dist/capabilities/metadata-search/tools.js +1 -1
  50. package/dist/capabilities/metadata-search/tools.js.map +1 -1
  51. package/dist/capabilities/pdf-discovery/DownloadTier.d.ts +11 -0
  52. package/dist/capabilities/pdf-discovery/DownloadTier.d.ts.map +1 -1
  53. package/dist/capabilities/pdf-discovery/OpenAccessFallbackService.d.ts.map +1 -1
  54. package/dist/capabilities/pdf-discovery/OpenAccessFallbackService.js +31 -1
  55. package/dist/capabilities/pdf-discovery/OpenAccessFallbackService.js.map +1 -1
  56. package/dist/capabilities/pdf-discovery/arxiv.d.ts +4 -0
  57. package/dist/capabilities/pdf-discovery/arxiv.d.ts.map +1 -0
  58. package/dist/capabilities/pdf-discovery/arxiv.js +42 -0
  59. package/dist/capabilities/pdf-discovery/arxiv.js.map +1 -0
  60. package/dist/capabilities/pdf-discovery/batch.d.ts +1 -1
  61. package/dist/capabilities/pdf-discovery/batch.d.ts.map +1 -1
  62. package/dist/capabilities/pdf-discovery/batch.js +87 -15
  63. package/dist/capabilities/pdf-discovery/batch.js.map +1 -1
  64. package/dist/capabilities/pdf-discovery/carsi/CarsiAttempt.d.ts.map +1 -1
  65. package/dist/capabilities/pdf-discovery/carsi/CarsiAttempt.js +2 -0
  66. package/dist/capabilities/pdf-discovery/carsi/CarsiAttempt.js.map +1 -1
  67. package/dist/capabilities/pdf-discovery/carsi/CarsiMcpClient.d.ts.map +1 -1
  68. package/dist/capabilities/pdf-discovery/carsi/CarsiMcpClient.js +3 -3
  69. package/dist/capabilities/pdf-discovery/carsi/CarsiMcpClient.js.map +1 -1
  70. package/dist/capabilities/pdf-discovery/carsi/CarsiReadiness.d.ts +2 -1
  71. package/dist/capabilities/pdf-discovery/carsi/CarsiReadiness.d.ts.map +1 -1
  72. package/dist/capabilities/pdf-discovery/carsi/CarsiReadiness.js +3 -1
  73. package/dist/capabilities/pdf-discovery/carsi/CarsiReadiness.js.map +1 -1
  74. package/dist/capabilities/pdf-discovery/carsi/CarsiResultNormalizer.d.ts +1 -1
  75. package/dist/capabilities/pdf-discovery/carsi/CarsiResultNormalizer.d.ts.map +1 -1
  76. package/dist/capabilities/pdf-discovery/carsi/CarsiResultNormalizer.js +4 -4
  77. package/dist/capabilities/pdf-discovery/carsi/CarsiResultNormalizer.js.map +1 -1
  78. package/dist/capabilities/pdf-discovery/carsi/types.d.ts +2 -0
  79. package/dist/capabilities/pdf-discovery/carsi/types.d.ts.map +1 -1
  80. package/dist/capabilities/pdf-discovery/handler.d.ts.map +1 -1
  81. package/dist/capabilities/pdf-discovery/handler.js +3 -2
  82. package/dist/capabilities/pdf-discovery/handler.js.map +1 -1
  83. package/dist/capabilities/pdf-discovery/oaHosts.d.ts +1 -1
  84. package/dist/capabilities/pdf-discovery/oaHosts.d.ts.map +1 -1
  85. package/dist/capabilities/pdf-discovery/oaHosts.js +4 -4
  86. package/dist/capabilities/pdf-discovery/outputLayout.d.ts +29 -0
  87. package/dist/capabilities/pdf-discovery/outputLayout.d.ts.map +1 -0
  88. package/dist/capabilities/pdf-discovery/outputLayout.js +144 -0
  89. package/dist/capabilities/pdf-discovery/outputLayout.js.map +1 -0
  90. package/dist/capabilities/pdf-discovery/tiers/directPdfUrl.d.ts.map +1 -1
  91. package/dist/capabilities/pdf-discovery/tiers/directPdfUrl.js +6 -0
  92. package/dist/capabilities/pdf-discovery/tiers/directPdfUrl.js.map +1 -1
  93. package/dist/capabilities/pdf-discovery/tiers/entitledAccess.d.ts +2 -1
  94. package/dist/capabilities/pdf-discovery/tiers/entitledAccess.d.ts.map +1 -1
  95. package/dist/capabilities/pdf-discovery/tiers/entitledAccess.js +8 -1
  96. package/dist/capabilities/pdf-discovery/tiers/entitledAccess.js.map +1 -1
  97. package/dist/capabilities/pdf-discovery/tiers/preprint.d.ts +5 -0
  98. package/dist/capabilities/pdf-discovery/tiers/preprint.d.ts.map +1 -0
  99. package/dist/capabilities/pdf-discovery/tiers/preprint.js +80 -0
  100. package/dist/capabilities/pdf-discovery/tiers/preprint.js.map +1 -0
  101. package/dist/capabilities/pdf-discovery/tiers/primary.js +2 -0
  102. package/dist/capabilities/pdf-discovery/tiers/primary.js.map +1 -1
  103. package/dist/capabilities/pdf-discovery/tiers/unpaywall.d.ts.map +1 -1
  104. package/dist/capabilities/pdf-discovery/tiers/unpaywall.js +12 -3
  105. package/dist/capabilities/pdf-discovery/tiers/unpaywall.js.map +1 -1
  106. package/dist/capabilities/pdf-discovery/types.d.ts +6 -0
  107. package/dist/capabilities/pdf-discovery/types.d.ts.map +1 -1
  108. package/dist/core/handleToolCall.d.ts.map +1 -1
  109. package/dist/core/handleToolCall.js +12 -0
  110. package/dist/core/handleToolCall.js.map +1 -1
  111. package/dist/core/schemas.d.ts +26 -1
  112. package/dist/core/schemas.d.ts.map +1 -1
  113. package/dist/core/schemas.js +13 -0
  114. package/dist/core/schemas.js.map +1 -1
  115. package/dist/core/searchers.d.ts +2 -0
  116. package/dist/core/searchers.d.ts.map +1 -1
  117. package/dist/core/searchers.js.map +1 -1
  118. package/dist/core/tools.d.ts.map +1 -1
  119. package/dist/core/tools.js +30 -0
  120. package/dist/core/tools.js.map +1 -1
  121. package/dist/infrastructure/arxiv.d.ts +5 -0
  122. package/dist/infrastructure/arxiv.d.ts.map +1 -0
  123. package/dist/infrastructure/arxiv.js +36 -0
  124. package/dist/infrastructure/arxiv.js.map +1 -0
  125. package/dist/infrastructure/pdf/PdfDownload.d.ts +2 -0
  126. package/dist/infrastructure/pdf/PdfDownload.d.ts.map +1 -1
  127. package/dist/infrastructure/pdf/PdfDownload.js +14 -0
  128. package/dist/infrastructure/pdf/PdfDownload.js.map +1 -1
  129. package/dist/infrastructure/pdf/PdfFirstPage.cjs +4 -1
  130. package/dist/infrastructure/pdf/PdfFirstPage.cjs.map +1 -1
  131. package/dist/infrastructure/pdf/PdfFirstPage.d.cts.map +1 -1
  132. package/dist/infrastructure/runlog/RunLedger.d.ts.map +1 -1
  133. package/dist/infrastructure/runlog/RunLedger.js +17 -1
  134. package/dist/infrastructure/runlog/RunLedger.js.map +1 -1
  135. package/dist/management/carsi/installer.d.ts +1 -1
  136. package/dist/platforms/ArxivSearcher.d.ts +62 -0
  137. package/dist/platforms/ArxivSearcher.d.ts.map +1 -0
  138. package/dist/platforms/ArxivSearcher.js +544 -0
  139. package/dist/platforms/ArxivSearcher.js.map +1 -0
  140. package/dist/platforms/SemanticScholarSearcher.d.ts.map +1 -1
  141. package/dist/platforms/SemanticScholarSearcher.js +4 -4
  142. package/dist/platforms/SemanticScholarSearcher.js.map +1 -1
  143. package/dist/registry/platformFactories.d.ts.map +1 -1
  144. package/dist/registry/platformFactories.js +2 -0
  145. package/dist/registry/platformFactories.js.map +1 -1
  146. package/dist/registry/platformMetadata.d.ts +1 -1
  147. package/dist/registry/platformMetadata.d.ts.map +1 -1
  148. package/dist/registry/platformMetadata.js +16 -0
  149. package/dist/registry/platformMetadata.js.map +1 -1
  150. package/package.json +2 -2
  151. package/skills/paper-search/SKILL.md +7 -4
  152. package/skills/paper-search/references/browser-download.md +10 -6
  153. package/skills/paper-search/references/capability-routing.md +4 -3
  154. package/skills/paper-search/references/cli-contract.md +10 -3
  155. package/skills/paper-search/references/publisher-support.md +6 -4
  156. package/skills/paper-search/references/troubleshooting.md +1 -1
  157. package/README.zh.md +0 -211
@@ -13,9 +13,9 @@ export function normalizeCacheClearResult(result) {
13
13
  throw new CarsiToolResultError("cache_clear_failed");
14
14
  }
15
15
  }
16
- export function normalizeDownloadResult(result, identifier, outputDir) {
16
+ export function normalizeDownloadResult(result, identifier, outputDir, diagnosticsDir) {
17
17
  const payload = parseSingleTextJson(result, "invalid_download_result");
18
- const trace = backendTrace(payload.artifacts, outputDir);
18
+ const trace = backendTrace(payload.artifacts, outputDir, diagnosticsDir);
19
19
  const supplements = backendSupplements(payload.supplements, outputDir);
20
20
  if (payload.success === true) {
21
21
  if (typeof payload.file !== "string" || payload.file.trim().length === 0) {
@@ -111,7 +111,7 @@ function insideOutputDir(file, outputDir) {
111
111
  * files and a stopped login's host name. Anything else, and any file outside
112
112
  * ``outputDir``, is dropped.
113
113
  */
114
- function backendTrace(value, outputDir) {
114
+ function backendTrace(value, outputDir, diagnosticsDir) {
115
115
  if (!value || typeof value !== "object" || Array.isArray(value))
116
116
  return undefined;
117
117
  const artifacts = value;
@@ -132,7 +132,7 @@ function backendTrace(value, outputDir) {
132
132
  if (stoppedHost)
133
133
  trace.stoppedHost = stoppedHost;
134
134
  for (const key of ["record", "diagnostic"]) {
135
- const file = insideOutputDir(artifacts[key], outputDir);
135
+ const file = insideOutputDir(artifacts[key], diagnosticsDir) || insideOutputDir(artifacts[key], outputDir);
136
136
  if (file)
137
137
  trace[key] = file;
138
138
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CarsiResultNormalizer.js","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/carsi/CarsiResultNormalizer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CarsiResultNormalizer.js","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/carsi/CarsiResultNormalizer.ts"],"names":[],"mappings":"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"}
@@ -28,6 +28,8 @@ export interface CarsiBatchUpdate {
28
28
  export interface CarsiDownloadRequest {
29
29
  identifier: string;
30
30
  outputDir: string;
31
+ /** Optional separate directory for records and screenshots. */
32
+ diagnosticsDir?: string;
31
33
  signal?: AbortSignal;
32
34
  onProgress?: (progress: CarsiProgress) => void;
33
35
  /** Sent only to backends whose download schema declares the batch fields. */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/carsi/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/carsi/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,MAAM,MAAM,mBAAmB,GAAG,WAAW,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE1E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,gFAAgF;AAChF,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,+DAA+D;IAC/D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,aAAa,KAAK,IAAI,CAAC;IAC/C,6EAA6E;IAC7E,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,yFAAyF;IACzF,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC9B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,kFAAkF;AAClF,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,gFAAgF;AAChF,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,kBAAkB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,MAAM,sBAAsB,GAC9B;IACE,IAAI,EAAE,SAAS,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;CACjC,GACD;IACE,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,sFAAsF;IACtF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,WAAW,CAAC,EAAE,eAAe,EAAE,CAAC;CACjC,GACD;IACE,IAAI,EAAE,qBAAqB,CAAC;IAC5B,SAAS,EAAE,cAAc,CAAC;CAC3B,CAAC;AAEN,kGAAkG;AAClG,MAAM,WAAW,YAAY;IAC3B,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IACrD,gBAAgB,CACd,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,sBAAsB,CAAC,CAAC;IACnC;;;OAGG;IACH,mBAAmB,CAAC,CAClB,MAAM,EAAE,gBAAgB,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE;QACX,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,EAAE,OAAO,CAAC;QACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACrC,QAAQ,CAAC,EAAE,OAAO,CAAC;KACpB,CAAC;CACH"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/capabilities/pdf-discovery/handler.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAEL,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AAqCpB,wBAAsB,mBAAmB,CACvC,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,EACD,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE,YAAY;;;;;GAoB5B;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAChD,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE,YAAY;;;;;GAkB5B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,oBAAoB,EAC1B,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE,YAAY;;;;;GAM5B"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/capabilities/pdf-discovery/handler.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,OAAO,EAEL,oBAAoB,EACrB,MAAM,gCAAgC,CAAC;AACxC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAOrD,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,YAAY,CAAC;AAqCpB,wBAAsB,mBAAmB,CACvC,IAAI,EAAE;IACJ,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,EACD,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE,YAAY;;;;;GAoB5B;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,CAAC,CAAC,EAChD,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE,YAAY;;;;;GAkB5B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,oBAAoB,EAC1B,SAAS,EAAE,SAAS,EACpB,YAAY,CAAC,EAAE,YAAY;;;;;GAM5B"}
@@ -1,3 +1,4 @@
1
+ import { dirname } from "node:path";
1
2
  import { resolvePlatformId } from "../../registry/platformMetadata.js";
2
3
  import { createDefaultDownloadTiers, downloadWithFallback, } from "./OpenAccessFallbackService.js";
3
4
  import { RunLedger } from "../../infrastructure/runlog/RunLedger.js";
@@ -51,13 +52,13 @@ export async function handleDownloadWithFallback(args, searchers, carsiBackend)
51
52
  const tiers = createDefaultDownloadTiers(carsiBackend);
52
53
  const result = await recordedDownload(args, async (options) => {
53
54
  if (options.content === "supplements")
54
- return downloadSupplementsOnly(options, carsiBackend);
55
+ return downloadSupplementsOnly(options, carsiBackend, searchers);
55
56
  const outcome = options.batch
56
57
  ? await downloadBatchItem(searchers, { ...options, batch: options.batch }, tiers, carsiBackend)
57
58
  : await downloadWithFallback(searchers, options, tiers);
58
59
  if (options.content === "both" && outcome.status === "ok" && !outcome.supplements) {
59
60
  // The main text came from an open stage: supplementary files only.
60
- const extra = await downloadSupplementsOnly(options, carsiBackend);
61
+ const extra = await downloadSupplementsOnly({ ...options, ...(outcome.publishedDoi ? { doi: outcome.publishedDoi } : {}) }, carsiBackend, searchers, outcome.path && !outcome.version ? dirname(outcome.path) : undefined);
61
62
  if (extra.supplements)
62
63
  return { ...outcome, supplements: extra.supplements };
63
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/capabilities/pdf-discovery/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/capabilities/pdf-discovery/handler.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
- export type OaHostPolicy = "http" | "browser" | "excluded";
1
+ export type OaHostPolicy = "http" | "browser" | "excluded" | "preprint";
2
2
  export declare function oaHostPolicy(url: string): OaHostPolicy;
3
3
  //# sourceMappingURL=oaHosts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"oaHosts.d.ts","sourceRoot":"","sources":["../../../src/capabilities/pdf-discovery/oaHosts.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAE3D,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAUtD"}
1
+ {"version":3,"file":"oaHosts.d.ts","sourceRoot":"","sources":["../../../src/capabilities/pdf-discovery/oaHosts.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAExE,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,YAAY,CAUtD"}
@@ -4,7 +4,7 @@
4
4
  * "browser": the host refuses plain HTTP PDF downloads behind bot protection
5
5
  * (Cloudflare, Akamai, proof-of-work pages; checked 2026-10). Its copies are
6
6
  * left to the browser stage (entitled access), which reads them like a reader.
7
- * "excluded": not used as a source at all (arXiv, maintainer decision).
7
+ * "preprint": defer arXiv until all published-version routes finish.
8
8
  */
9
9
  const BROWSER_ONLY_HOSTS = [
10
10
  "wiley.com",
@@ -20,7 +20,7 @@ const BROWSER_ONLY_HOSTS = [
20
20
  "ncbi.nlm.nih.gov",
21
21
  "europepmc.org",
22
22
  ];
23
- const EXCLUDED_HOSTS = ["arxiv.org"];
23
+ const PREPRINT_HOSTS = ["arxiv.org"];
24
24
  export function oaHostPolicy(url) {
25
25
  let host = "";
26
26
  try {
@@ -30,8 +30,8 @@ export function oaHostPolicy(url) {
30
30
  return "excluded";
31
31
  }
32
32
  const within = (domain) => host === domain || host.endsWith(`.${domain}`);
33
- if (EXCLUDED_HOSTS.some(within))
34
- return "excluded";
33
+ if (PREPRINT_HOSTS.some(within))
34
+ return "preprint";
35
35
  return BROWSER_ONLY_HOSTS.some(within) ? "browser" : "http";
36
36
  }
37
37
  //# sourceMappingURL=oaHosts.js.map
@@ -0,0 +1,29 @@
1
+ import type { Searchers } from '../../core/searchers.js';
2
+ import type { Paper } from '../../models/Paper.js';
3
+ export type OutputMetadata = Partial<Pick<Paper, 'title' | 'journal' | 'year' | 'publishedDate'>>;
4
+ export interface OutputLayout {
5
+ paperDir: string;
6
+ diagnosticsDir: string;
7
+ name: string;
8
+ metadata: OutputMetadata & {
9
+ identity: string;
10
+ };
11
+ }
12
+ export declare function safeComponent(value: string, limit: number): string;
13
+ export declare function lookupOutputMetadata(searchers: Searchers, source: string, id: string): Promise<OutputMetadata>;
14
+ export declare function createOutputLayout(root: string, identity: string, metadata: OutputMetadata, preprint?: boolean): OutputLayout;
15
+ /** Never overwrite an existing download, including a different revision of the same paper. */
16
+ export declare function placeFile(source: string, target: string, ownedDir: string): string;
17
+ /** Rewrite only known local record paths, never arbitrary page strings or URLs. */
18
+ export declare function updateRecordPaths(paths: unknown[], replacements: Map<string, string>): void;
19
+ /** Finalize only files reported by this request, preserving unrelated files. */
20
+ export declare function organizeFiles<T extends {
21
+ path?: string;
22
+ format?: string;
23
+ review?: {
24
+ path: string;
25
+ };
26
+ supplements?: import('./types.js').SupplementFile[];
27
+ trace?: Record<string, unknown>;
28
+ }>(result: T, layout: OutputLayout, ownedDir: string): T;
29
+ //# sourceMappingURL=outputLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputLayout.d.ts","sourceRoot":"","sources":["../../../src/capabilities/pdf-discovery/outputLayout.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAGnD,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC;AAClG,MAAM,WAAW,YAAY;IAAG,QAAQ,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,cAAc,GAAG;QAAE,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE;AAIzI,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED,wBAAsB,oBAAoB,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CASpH;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,UAAQ,GAAG,YAAY,CAa3H;AAED,8FAA8F;AAC9F,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAkBlF;AAED,mFAAmF;AACnF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAc3F;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,CAAC,SAAS;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAAC,WAAW,CAAC,EAAE,OAAO,YAAY,EAAE,cAAc,EAAE,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EACzL,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,GAChD,CAAC,CAmDH"}
@@ -0,0 +1,144 @@
1
+ /** File layout only: no publisher rules, browser operations or download routes. */
2
+ import { createHash } from 'node:crypto';
3
+ import { copyFileSync, constants, existsSync, mkdirSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync } from 'node:fs';
4
+ import { basename, dirname, extname, join, relative, resolve } from 'node:path';
5
+ import { withTimeout } from '../../infrastructure/security/SecurityUtils.js';
6
+ const hash = (value) => createHash('sha256').update(value).digest('hex').slice(0, 10);
7
+ export function safeComponent(value, limit) {
8
+ let text = value.normalize('NFC').replace(/<[^>]*>/g, '').replace(/[<>:"/\\|?*\x00-\x1f\x7f]/g, '_').replace(/\s+/g, ' ').trim().replace(/[. ]+$/g, '');
9
+ if (/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(?:\.|$)/i.test(text))
10
+ text = '_' + text;
11
+ // Limit UTF-8 bytes too: Windows and Unix count path components differently.
12
+ while (text.length > limit || Buffer.byteLength(text) > limit * 2)
13
+ text = Array.from(text).slice(0, -1).join('');
14
+ return text.replace(/[. ]+$/g, '') || 'unknown';
15
+ }
16
+ export async function lookupOutputMetadata(searchers, source, id) {
17
+ const searcher = searchers[source];
18
+ if (!searcher?.getPaperByDoi)
19
+ return {};
20
+ try {
21
+ return await withTimeout(searcher.getPaperByDoi(id), 4_000, 'Output metadata lookup timed out') || {};
22
+ }
23
+ catch {
24
+ // Naming metadata is optional; never block an otherwise valid download.
25
+ return {};
26
+ }
27
+ }
28
+ export function createOutputLayout(root, identity, metadata, preprint = false) {
29
+ const base = resolve(root);
30
+ const key = hash(identity.trim().toLowerCase());
31
+ const year = metadata.year || metadata.publishedDate?.getUTCFullYear();
32
+ const journal = preprint ? 'arXiv' : metadata.journal || '未知期刊';
33
+ // Repeated directory/file names must still fit traditional Windows paths.
34
+ const budget = Math.min(88, Math.floor((238 - base.length - '/papers//.pdf'.length - 11) / 2));
35
+ if (budget < 32)
36
+ throw new Error('Download root is too long; choose a shorter savePath.');
37
+ const prefix = `${safeComponent(journal, Math.min(28, Math.floor(budget / 3)))}_${year && Number.isInteger(year) ? year : '未知年份'}_`;
38
+ const title = safeComponent(metadata.title || identity, Math.max(8, budget - prefix.length));
39
+ const name = `${prefix}${title}`;
40
+ // Stable identity suffix prevents different papers with identical titles colliding.
41
+ return { name, paperDir: join(base, 'papers', `${name}_${key}`), diagnosticsDir: join(base, 'diagnostics', key), metadata: { ...metadata, identity, ...(preprint ? { journal: 'arXiv' } : {}) } };
42
+ }
43
+ /** Never overwrite an existing download, including a different revision of the same paper. */
44
+ export function placeFile(source, target, ownedDir) {
45
+ if (resolve(source) === resolve(target))
46
+ return source;
47
+ mkdirSync(dirname(target), { recursive: true });
48
+ let destination = target;
49
+ if (existsSync(destination)) {
50
+ const data = readFileSync(source);
51
+ if (statSync(destination).size !== data.length || !readFileSync(destination).equals(data)) {
52
+ destination = join(dirname(target), `${basename(target, extname(target))}_${hash(data)}${extname(target)}`);
53
+ }
54
+ }
55
+ try {
56
+ copyFileSync(source, destination, constants.COPYFILE_EXCL);
57
+ }
58
+ catch (error) {
59
+ if (error.code !== 'EEXIST' || !readFileSync(destination).equals(readFileSync(source)))
60
+ throw error;
61
+ }
62
+ const local = relative(resolve(ownedDir), resolve(source));
63
+ if (local && !local.startsWith('..') && !resolve(source).startsWith(resolve(destination) + '/'))
64
+ unlinkSync(source);
65
+ return destination;
66
+ }
67
+ /** Rewrite only known local record paths, never arbitrary page strings or URLs. */
68
+ export function updateRecordPaths(paths, replacements) {
69
+ const update = (value) => {
70
+ if (Array.isArray(value))
71
+ return value.map(update);
72
+ if (!value || typeof value !== 'object')
73
+ return value;
74
+ return Object.fromEntries(Object.entries(value).map(([key, val]) => [key,
75
+ ['pdf_path', 'file', 'path'].includes(key) && typeof val === 'string' ? replacements.get(val) || val : update(val)]));
76
+ };
77
+ for (const path of paths) {
78
+ if (typeof path !== 'string' || !existsSync(path))
79
+ continue;
80
+ const data = update(JSON.parse(readFileSync(path, 'utf8')));
81
+ const temporary = `${path}.tmp`;
82
+ writeFileSync(temporary, JSON.stringify(data, null, 2));
83
+ renameSync(temporary, path);
84
+ }
85
+ }
86
+ /** Finalize only files reported by this request, preserving unrelated files. */
87
+ export function organizeFiles(result, layout, ownedDir) {
88
+ const replacements = new Map();
89
+ if ([result.path, result.review?.path, ...(result.supplements || []).map(f => f.file)].some(path => path && existsSync(path))) {
90
+ mkdirSync(layout.diagnosticsDir, { recursive: true });
91
+ writeFileSync(join(layout.diagnosticsDir, 'metadata.json'), JSON.stringify({ ...layout.metadata, paperDirectory: layout.paperDir }, null, 2));
92
+ }
93
+ if (result.path && existsSync(result.path)) {
94
+ const target = join(layout.paperDir, `${layout.name}${result.format === 'jats-xml' ? '.xml' : '.pdf'}`);
95
+ const placed = placeFile(result.path, target, ownedDir);
96
+ replacements.set(result.path, placed);
97
+ result.path = placed;
98
+ }
99
+ if (result.review && existsSync(result.review.path)) {
100
+ const placed = placeFile(result.review.path, join(layout.diagnosticsDir, 'review', basename(result.review.path)), ownedDir);
101
+ replacements.set(result.review.path, placed);
102
+ result.review.path = placed;
103
+ }
104
+ const manifests = new Set();
105
+ for (const file of result.supplements || []) {
106
+ if (!file.file || !existsSync(file.file))
107
+ continue;
108
+ manifests.add(join(dirname(file.file), 'manifest.json'));
109
+ const targetDir = join(layout.paperDir, 'supplements');
110
+ const extension = /^\.[a-z0-9]{1,10}$/i.test(extname(file.file)) ? extname(file.file) : '';
111
+ const budget = Math.max(12, Math.min(100, 238 - targetDir.length - 1 - extension.length));
112
+ const filename = safeComponent(basename(file.file, extension), budget) + extension;
113
+ const placed = placeFile(file.file, join(targetDir, filename), ownedDir);
114
+ replacements.set(file.file, placed);
115
+ file.file = placed;
116
+ }
117
+ const records = [result.trace?.record, result.trace?.diagnostic];
118
+ // New backend keeps its manifest beside the record, old backends beside files.
119
+ for (const record of records)
120
+ if (typeof record === 'string')
121
+ manifests.add(join(dirname(record), 'manifest.json'));
122
+ updateRecordPaths([...records, ...manifests], replacements);
123
+ if (typeof result.trace?.file === 'string')
124
+ result.trace.file = replacements.get(result.trace.file) || result.trace.file;
125
+ // Old backend compatibility: move its per-call packet out of the paper directory.
126
+ const legacy = join(ownedDir, '.browser_runs');
127
+ if (existsSync(legacy)) {
128
+ mkdirSync(layout.diagnosticsDir, { recursive: true });
129
+ const dest = join(layout.diagnosticsDir, `legacy-${Date.now()}`);
130
+ renameSync(legacy, dest);
131
+ for (const key of ['record', 'diagnostic']) {
132
+ const path = result.trace?.[key];
133
+ if (typeof path === 'string' && !relative(legacy, path).startsWith('..'))
134
+ result.trace[key] = join(dest, relative(legacy, path));
135
+ }
136
+ }
137
+ for (const manifest of manifests) {
138
+ if (existsSync(manifest) && !relative(ownedDir, manifest).startsWith('..')) {
139
+ placeFile(manifest, join(layout.diagnosticsDir, 'supplements-manifest.json'), ownedDir);
140
+ }
141
+ }
142
+ return result;
143
+ }
144
+ //# sourceMappingURL=outputLayout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outputLayout.js","sourceRoot":"","sources":["../../../src/capabilities/pdf-discovery/outputLayout.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"directPdfUrl.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/tiers/directPdfUrl.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAA2C,MAAM,oBAAoB,CAAC;AAIhG,wBAAgB,sBAAsB,IAAI,YAAY,CAMrD;AA2BD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAG7E"}
1
+ {"version":3,"file":"directPdfUrl.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/tiers/directPdfUrl.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAA2C,MAAM,oBAAoB,CAAC;AAIhG,wBAAgB,sBAAsB,IAAI,YAAY,CAMrD;AAgCD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO,CAG7E"}
@@ -1,3 +1,4 @@
1
+ import { normalizeArxivId } from '../../../infrastructure/arxiv.js';
1
2
  import { downloadPdfFromUrl, safeFilename } from '../../../infrastructure/pdf/PdfDownload.js';
2
3
  import { getCapabilityProfileSources, resolvePlatformId } from '../../../registry/platformMetadata.js';
3
4
  const OPEN_ACCESS_SOURCE_IDS = new Set(getCapabilityProfileSources('pdf_open_access'));
@@ -19,6 +20,11 @@ async function tryDirectMetadataUrl(context) {
19
20
  if (!paper?.pdfUrl) {
20
21
  return { status: 'skipped', message: 'No pdf_url found in source metadata.' };
21
22
  }
23
+ const preprintId = normalizeArxivId(paper.pdfUrl);
24
+ if (preprintId) {
25
+ (context.preprintIds ||= []).push(preprintId);
26
+ return { status: 'skipped', message: 'arXiv PDF deferred until published-version routes finish.' };
27
+ }
22
28
  if (!hasOpenAccessProvenance(context.source, paper)) {
23
29
  return {
24
30
  status: 'skipped',
@@ -1 +1 @@
1
- {"version":3,"file":"directPdfUrl.js","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/tiers/directPdfUrl.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAIvG,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEvF,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,gBAAgB;QACvB,GAAG,EAAE,oBAAoB;KAC1B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,OAA4B;IAC9D,MAAM,QAAQ,GAAI,OAAO,CAAC,SAAiB,CAAC,OAAO,CAAC,MAAM,CAA4B,CAAC;IACvF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,4BAA4B,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;IACvF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACnB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;QAChF,CAAC;QACD,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,gGAAgG;aAC1G,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1H,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACvE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,KAAY;IAClE,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxF,OAAO,sBAAsB,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,CAAC"}
1
+ {"version":3,"file":"directPdfUrl.js","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/tiers/directPdfUrl.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAEpE,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC9F,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,uCAAuC,CAAC;AAIvG,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAC,2BAA2B,CAAC,iBAAiB,CAAC,CAAC,CAAC;AAEvF,MAAM,UAAU,sBAAsB;IACpC,OAAO;QACL,EAAE,EAAE,gBAAgB;QACpB,KAAK,EAAE,gBAAgB;QACvB,GAAG,EAAE,oBAAoB;KAC1B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,oBAAoB,CAAC,OAA4B;IAC9D,MAAM,QAAQ,GAAI,OAAO,CAAC,SAAiB,CAAC,OAAO,CAAC,MAAM,CAA4B,CAAC;IACvF,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,4BAA4B,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;IACvF,CAAC;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;YACnB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,sCAAsC,EAAE,CAAC;QAChF,CAAC;QACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YACf,CAAC,OAAO,CAAC,WAAW,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9C,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,2DAA2D,EAAE,CAAC;QACrG,CAAC;QACD,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC;YACpD,OAAO;gBACL,MAAM,EAAE,SAAS;gBACjB,OAAO,EAAE,gGAAgG;aAC1G,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,kBAAkB,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,EAAE,GAAG,OAAO,CAAC,MAAM,IAAI,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1H,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC/C,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IACvE,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,MAAc,EAAE,KAAY;IAClE,IAAI,KAAK,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,YAAY,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACxF,OAAO,sBAAsB,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/D,CAAC"}
@@ -9,5 +9,6 @@ export declare function createEntitledAccessTier(backend?: CarsiBackend): Downlo
9
9
  export declare function fetchSupplementsOnly(backend: CarsiBackend | undefined, request: {
10
10
  identifier: string;
11
11
  outputDir: string;
12
- }): Promise<SupplementFile[] | undefined>;
12
+ diagnosticsDir?: string;
13
+ }, onTrace?: (trace: Record<string, unknown>) => void): Promise<SupplementFile[] | undefined>;
13
14
  //# sourceMappingURL=entitledAccess.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entitledAccess.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/tiers/entitledAccess.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgBlD,wBAAgB,wBAAwB,CACtC,OAAO,CAAC,EAAE,YAAY,GACrB,YAAY,CAMd;AA0FD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GACjD,OAAO,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,CAevC"}
1
+ {"version":3,"file":"entitledAccess.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/tiers/entitledAccess.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,YAAY,EAGb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEL,KAAK,YAAY,EAClB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAgBlD,wBAAgB,wBAAwB,CACtC,OAAO,CAAC,EAAE,YAAY,GACrB,YAAY,CAMd;AA2FD;;;GAGG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,YAAY,GAAG,SAAS,EACjC,OAAO,EAAE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,EAC3E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,GACjD,OAAO,CAAC,cAAc,EAAE,GAAG,SAAS,CAAC,CAoBvC"}
@@ -38,6 +38,7 @@ async function tryEntitledAccess(context, backend) {
38
38
  const outcome = await backend.downloadLegalDoi({
39
39
  identifier: context.doi || context.paperId,
40
40
  outputDir: context.savePath,
41
+ ...(context.diagnosticsDir ? { diagnosticsDir: context.diagnosticsDir } : {}),
41
42
  ...(context.batch ? { batch: context.batch } : {}),
42
43
  ...(context.withSupplements ? { supplements: "with" } : {}),
43
44
  ...(context.shortUserWait ? { userWait: "short" } : {}),
@@ -101,13 +102,19 @@ async function tryEntitledAccess(context, backend) {
101
102
  * Supplementary files only, for an article whose main text came from another
102
103
  * stage. Undefined when no backend can do it.
103
104
  */
104
- export async function fetchSupplementsOnly(backend, request) {
105
+ export async function fetchSupplementsOnly(backend, request, onTrace) {
105
106
  if (!backend)
106
107
  return undefined;
107
108
  try {
108
109
  const outcome = await backend.downloadLegalDoi({ ...request, supplements: "only" });
109
110
  if (outcome.kind === "backend_unavailable")
110
111
  return undefined;
112
+ if (outcome.trace)
113
+ onTrace?.({ ...outcome.trace });
114
+ if (outcome.kind === "attempt_error" && !outcome.supplements) {
115
+ const { code } = carsiAttemptDetails(outcome.code);
116
+ return [{ label: "", status: code === "batch_stopped" || code === "user_skipped" ? "skipped" : "failed", reason: code }];
117
+ }
111
118
  return outcome.supplements ?? [];
112
119
  }
113
120
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"entitledAccess.js","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/tiers/entitledAccess.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"entitledAccess.js","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/tiers/entitledAccess.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { type PdfIdentityStatus } from '../../../infrastructure/pdf/PdfIdentity.js';
2
+ import type { DownloadTier } from '../DownloadTier.js';
3
+ export declare function assessArxivIdentity(text: string, id: string, title?: string): PdfIdentityStatus;
4
+ export declare function createPreprintTier(): DownloadTier;
5
+ //# sourceMappingURL=preprint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preprint.d.ts","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/tiers/preprint.ts"],"names":[],"mappings":"AAGA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAEvG,OAAO,KAAK,EAAE,YAAY,EAA2C,MAAM,oBAAoB,CAAC;AAEhG,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAQ/F;AAED,wBAAgB,kBAAkB,IAAI,YAAY,CAEjD"}
@@ -0,0 +1,80 @@
1
+ import { withTimeout } from '../../../infrastructure/security/SecurityUtils.js';
2
+ import { normalizeArxivId, publishedDoi } from '../../../infrastructure/arxiv.js';
3
+ import { extractPages } from '../../../infrastructure/pdf/PdfFirstPage.cjs';
4
+ import { assessPdfIdentity } from '../../../infrastructure/pdf/PdfIdentity.js';
5
+ import { identityRejection } from '../identity.js';
6
+ export function assessArxivIdentity(text, id, title) {
7
+ const marks = [...text.matchAll(/(?:^|\n)\s*arXiv:\s*((?:\d{4}\.\d{4,5}|[a-z-]+(?:\.[a-z]{2})?\/\d{7})(?:v\d+)?)(?=\s|$)/gi)]
8
+ .map(match => match[1].toLowerCase());
9
+ const exact = /v\d+$/.test(id);
10
+ if (marks.length)
11
+ return marks.some(mark => exact ? mark === id.toLowerCase() : mark.replace(/v\d+$/, '') === id.toLowerCase())
12
+ ? 'verified' : 'mismatch';
13
+ if (exact)
14
+ return 'unverified';
15
+ return assessPdfIdentity(text, `10.48550/arXiv.${id.replace(/v\d+$/, '')}`, title);
16
+ }
17
+ export function createPreprintTier() {
18
+ return { id: 'preprint', stage: 'preprint', run: tryPreprint };
19
+ }
20
+ async function tryPreprint(context) {
21
+ if (context.arxivConflict)
22
+ return { status: 'error', code: 'arxiv_doi_conflict', message: 'arXiv publication DOI differs from the requested DOI.' };
23
+ const searcher = context.searchers.arxiv;
24
+ if (!searcher)
25
+ return { status: 'skipped', message: 'arXiv searcher unavailable.' };
26
+ try {
27
+ let id = context.arxivId;
28
+ let paper = context.arxivPaper;
29
+ const doi = publishedDoi(context.doi);
30
+ if (doi && (!paper || publishedDoi(paper.doi) !== doi)) {
31
+ // A metadata PDF URL is only a candidate, never proof of association.
32
+ id = undefined;
33
+ for (const candidate of [...new Set([context.arxivId, ...(context.preprintIds || [])])].filter(Boolean).slice(0, 3)) {
34
+ const linked = await withTimeout(searcher.getPaperByDoi(candidate), 12_000, 'arXiv metadata lookup timed out');
35
+ if (linked && publishedDoi(linked.doi) === doi) {
36
+ id = normalizeArxivId(candidate);
37
+ paper = linked;
38
+ break;
39
+ }
40
+ }
41
+ if (!id) {
42
+ paper = await withTimeout(searcher.getPaperByDoi(context.doi), 12_000, 'arXiv DOI lookup timed out') || undefined;
43
+ if (!paper && context.searchers.crossref) {
44
+ // arXiv indexes mixed-case DOIs literally. Crossref's registered
45
+ // spelling can recover a DOI supplied in lower case; association
46
+ // still requires exact, case-insensitive DOI equality.
47
+ const registered = await withTimeout(context.searchers.crossref.getPaperByDoi(doi), 10_000, 'Publication DOI lookup timed out');
48
+ if (registered && publishedDoi(registered.doi) === doi && registered.doi !== context.doi) {
49
+ paper = await withTimeout(searcher.getPaperByDoi(registered.doi), 12_000, 'arXiv DOI lookup timed out') || undefined;
50
+ }
51
+ }
52
+ if (paper && publishedDoi(paper.doi) === doi)
53
+ id = normalizeArxivId(paper.paperId);
54
+ }
55
+ }
56
+ else if (!id && paper) {
57
+ id = normalizeArxivId(paper.paperId);
58
+ }
59
+ if (!id)
60
+ return { status: 'skipped', message: 'No DOI-linked arXiv preprint found.' };
61
+ context.arxivPaper = paper;
62
+ const path = await searcher.downloadPdf(id, { savePath: context.savePath });
63
+ const text = await extractPages(path, 1);
64
+ const identity = text === null ? 'unreadable' : assessArxivIdentity(text, id, paper?.title || context.title);
65
+ const rejected = identityRejection(identity, path);
66
+ if (rejected)
67
+ return rejected;
68
+ return {
69
+ status: 'ok', path, verified: true, version: 'preprint', arxivId: id,
70
+ ...(publishedDoi(context.doi) ? { publishedDoi: context.doi } : {}),
71
+ code: 'preprint_fallback',
72
+ message: `Downloaded arXiv preprint ${id}; this is not the published version.${context.arxivLookupError ? " Publication metadata was unavailable; publication status is unknown." : ""}`,
73
+ trace: { identity, version: 'preprint', arxivId: id, ...(context.arxivLookupError ? { metadataError: context.arxivLookupError } : {}) }
74
+ };
75
+ }
76
+ catch (error) {
77
+ return { status: 'error', message: error instanceof Error ? error.message : String(error) };
78
+ }
79
+ }
80
+ //# sourceMappingURL=preprint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preprint.js","sourceRoot":"","sources":["../../../../src/capabilities/pdf-discovery/tiers/preprint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,8CAA8C,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAA0B,MAAM,4CAA4C,CAAC;AACvG,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAGnD,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,EAAU,EAAE,KAAc;IAC1E,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,2FAA2F,CAAC,CAAC;SAC1H,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC;YAC7H,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5B,IAAI,KAAK;QAAE,OAAO,YAAY,CAAC;IAC/B,OAAO,iBAAiB,CAAC,IAAI,EAAE,kBAAkB,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;AACrF,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,OAA4B;IACrD,IAAI,OAAO,CAAC,aAAa;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,OAAO,EAAE,uDAAuD,EAAE,CAAC;IACpJ,MAAM,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC;IACpF,IAAI,CAAC;QACH,IAAI,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC;QACzB,IAAI,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC;QAC/B,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACtC,IAAI,GAAG,IAAI,CAAC,CAAC,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YACvD,sEAAsE;YACtE,EAAE,GAAG,SAAS,CAAC;YACf,KAAK,MAAM,SAAS,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;gBACpH,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,SAAU,CAAC,EAAE,MAAM,EAAE,iCAAiC,CAAC,CAAC;gBAChH,IAAI,MAAM,IAAI,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC;oBAC/C,EAAE,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;oBAAC,KAAK,GAAG,MAAM,CAAC;oBAAC,MAAM;gBAC1D,CAAC;YACH,CAAC;YACD,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,GAAI,CAAC,EAAE,MAAM,EAAE,4BAA4B,CAAC,IAAI,SAAS,CAAC;gBACnH,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;oBACzC,iEAAiE;oBACjE,iEAAiE;oBACjE,uDAAuD;oBACvD,MAAM,UAAU,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,kCAAkC,CAAC,CAAC;oBAChI,IAAI,UAAU,IAAI,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,GAAG,IAAI,UAAU,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,EAAE,CAAC;wBACzF,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,4BAA4B,CAAC,IAAI,SAAS,CAAC;oBACvH,CAAC;gBACH,CAAC;gBACD,IAAI,KAAK,IAAI,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG;oBAAE,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACrF,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,EAAE,IAAI,KAAK,EAAE,CAAC;YACxB,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,EAAE;YAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,qCAAqC,EAAE,CAAC;QACtF,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7G,MAAM,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnD,IAAI,QAAQ;YAAE,OAAO,QAAQ,CAAC;QAC9B,OAAO;YACL,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE;YACpE,GAAG,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,IAAI,EAAE,mBAAmB;YACzB,OAAO,EAAE,6BAA6B,EAAE,uCAAuC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,uEAAuE,CAAC,CAAC,CAAC,EAAE,EAAE;YACxL,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;SACxI,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;IAC9F,CAAC;AACH,CAAC"}
@@ -6,6 +6,8 @@ export function createPrimaryTier() {
6
6
  };
7
7
  }
8
8
  async function tryPrimaryDownload(context) {
9
+ if (context.source === 'arxiv')
10
+ return { status: 'skipped', message: 'arXiv is deferred until published-version routes finish.' };
9
11
  const primary = context.searchers[context.source];
10
12
  if (!primary?.getCapabilities().download) {
11
13
  return { status: 'skipped', message: `No primary downloader for ${context.source}` };