paper-search-cli 0.1.2 → 0.2.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 (86) hide show
  1. package/.env.example +31 -3
  2. package/README-sc.md +151 -36
  3. package/README.md +150 -27
  4. package/dist/cli.js +21 -0
  5. package/dist/cli.js.map +1 -1
  6. package/dist/config/ConfigService.d.ts +1 -1
  7. package/dist/config/ConfigService.d.ts.map +1 -1
  8. package/dist/config/ConfigService.js +6 -1
  9. package/dist/config/ConfigService.js.map +1 -1
  10. package/dist/config/constants.d.ts +6 -0
  11. package/dist/config/constants.d.ts.map +1 -1
  12. package/dist/config/constants.js +4 -1
  13. package/dist/config/constants.js.map +1 -1
  14. package/dist/core/diagnostics.d.ts.map +1 -1
  15. package/dist/core/diagnostics.js +54 -12
  16. package/dist/core/diagnostics.js.map +1 -1
  17. package/dist/core/handleToolCall.d.ts.map +1 -1
  18. package/dist/core/handleToolCall.js +77 -7
  19. package/dist/core/handleToolCall.js.map +1 -1
  20. package/dist/core/platformMetadata.d.ts +28 -0
  21. package/dist/core/platformMetadata.d.ts.map +1 -0
  22. package/dist/core/platformMetadata.js +258 -0
  23. package/dist/core/platformMetadata.js.map +1 -0
  24. package/dist/core/schemas.d.ts +134 -74
  25. package/dist/core/schemas.d.ts.map +1 -1
  26. package/dist/core/schemas.js +42 -38
  27. package/dist/core/schemas.js.map +1 -1
  28. package/dist/core/searchers.d.ts +11 -0
  29. package/dist/core/searchers.d.ts.map +1 -1
  30. package/dist/core/searchers.js +17 -1
  31. package/dist/core/searchers.js.map +1 -1
  32. package/dist/core/tools.d.ts.map +1 -1
  33. package/dist/core/tools.js +82 -30
  34. package/dist/core/tools.js.map +1 -1
  35. package/dist/platforms/ACMSearcher.d.ts +16 -0
  36. package/dist/platforms/ACMSearcher.d.ts.map +1 -0
  37. package/dist/platforms/ACMSearcher.js +125 -0
  38. package/dist/platforms/ACMSearcher.js.map +1 -0
  39. package/dist/platforms/ArxivSearcher.d.ts.map +1 -1
  40. package/dist/platforms/ArxivSearcher.js +10 -2
  41. package/dist/platforms/ArxivSearcher.js.map +1 -1
  42. package/dist/platforms/DBLPSearcher.d.ts +16 -0
  43. package/dist/platforms/DBLPSearcher.d.ts.map +1 -0
  44. package/dist/platforms/DBLPSearcher.js +116 -0
  45. package/dist/platforms/DBLPSearcher.js.map +1 -0
  46. package/dist/platforms/IEEESearcher.d.ts +15 -0
  47. package/dist/platforms/IEEESearcher.d.ts.map +1 -0
  48. package/dist/platforms/IEEESearcher.js +123 -0
  49. package/dist/platforms/IEEESearcher.js.map +1 -0
  50. package/dist/platforms/OpenAIRESearcher.d.ts.map +1 -1
  51. package/dist/platforms/OpenAIRESearcher.js +9 -1
  52. package/dist/platforms/OpenAIRESearcher.js.map +1 -1
  53. package/dist/platforms/OpenReviewSearcher.d.ts +19 -0
  54. package/dist/platforms/OpenReviewSearcher.d.ts.map +1 -0
  55. package/dist/platforms/OpenReviewSearcher.js +141 -0
  56. package/dist/platforms/OpenReviewSearcher.js.map +1 -0
  57. package/dist/platforms/PaperSource.d.ts +6 -0
  58. package/dist/platforms/PaperSource.d.ts.map +1 -1
  59. package/dist/platforms/PaperSource.js.map +1 -1
  60. package/dist/platforms/PubMedSearcher.d.ts.map +1 -1
  61. package/dist/platforms/PubMedSearcher.js +8 -0
  62. package/dist/platforms/PubMedSearcher.js.map +1 -1
  63. package/dist/platforms/USENIXSearcher.d.ts +14 -0
  64. package/dist/platforms/USENIXSearcher.d.ts.map +1 -0
  65. package/dist/platforms/USENIXSearcher.js +75 -0
  66. package/dist/platforms/USENIXSearcher.js.map +1 -0
  67. package/dist/services/JournalMetricsService.d.ts +38 -0
  68. package/dist/services/JournalMetricsService.d.ts.map +1 -0
  69. package/dist/services/JournalMetricsService.js +142 -0
  70. package/dist/services/JournalMetricsService.js.map +1 -0
  71. package/dist/services/MultiSourceSearchService.d.ts.map +1 -1
  72. package/dist/services/MultiSourceSearchService.js +8 -34
  73. package/dist/services/MultiSourceSearchService.js.map +1 -1
  74. package/dist/services/OpenAccessFallbackService.d.ts +1 -0
  75. package/dist/services/OpenAccessFallbackService.d.ts.map +1 -1
  76. package/dist/services/OpenAccessFallbackService.js +2 -2
  77. package/dist/services/OpenAccessFallbackService.js.map +1 -1
  78. package/dist/utils/HttpClient.d.ts +6 -0
  79. package/dist/utils/HttpClient.d.ts.map +1 -0
  80. package/dist/utils/HttpClient.js +30 -0
  81. package/dist/utils/HttpClient.js.map +1 -0
  82. package/dist/utils/PdfDownload.d.ts.map +1 -1
  83. package/dist/utils/PdfDownload.js +106 -16
  84. package/dist/utils/PdfDownload.js.map +1 -1
  85. package/package.json +3 -1
  86. package/skills/paper-search/SKILL.md +38 -8
@@ -0,0 +1,258 @@
1
+ export const PLATFORM_METADATA = [
2
+ {
3
+ id: 'crossref',
4
+ displayName: 'Crossref',
5
+ sourceKind: 'official-api',
6
+ defaultInAll: true,
7
+ supportedOptions: ['maxResults', 'year', 'author', 'sortBy', 'sortOrder']
8
+ },
9
+ {
10
+ id: 'openalex',
11
+ displayName: 'OpenAlex',
12
+ sourceKind: 'official-api',
13
+ defaultInAll: true,
14
+ supportedOptions: ['maxResults', 'year']
15
+ },
16
+ {
17
+ id: 'pubmed',
18
+ displayName: 'PubMed',
19
+ sourceKind: 'official-api',
20
+ defaultInAll: true,
21
+ optionalConfigKeys: [['PUBMED_API_KEY'], ['NCBI_EMAIL'], ['NCBI_TOOL']],
22
+ supportedOptions: ['maxResults', 'year', 'author', 'journal', 'sortBy']
23
+ },
24
+ {
25
+ id: 'pmc',
26
+ aliases: ['pubmed_central'],
27
+ displayName: 'PubMed Central',
28
+ sourceKind: 'official-api',
29
+ defaultInAll: true,
30
+ supportedOptions: ['maxResults', 'year']
31
+ },
32
+ {
33
+ id: 'europepmc',
34
+ aliases: ['europe_pmc'],
35
+ displayName: 'Europe PMC',
36
+ sourceKind: 'official-api',
37
+ defaultInAll: true,
38
+ supportedOptions: ['maxResults', 'year']
39
+ },
40
+ {
41
+ id: 'arxiv',
42
+ displayName: 'arXiv',
43
+ sourceKind: 'official-api',
44
+ defaultInAll: true,
45
+ supportedOptions: ['maxResults', 'year', 'author', 'category', 'sortBy', 'sortOrder']
46
+ },
47
+ {
48
+ id: 'biorxiv',
49
+ displayName: 'bioRxiv',
50
+ sourceKind: 'official-api',
51
+ defaultInAll: true,
52
+ supportedOptions: ['maxResults', 'days', 'category']
53
+ },
54
+ {
55
+ id: 'medrxiv',
56
+ displayName: 'medRxiv',
57
+ sourceKind: 'official-api',
58
+ defaultInAll: true,
59
+ supportedOptions: ['maxResults', 'days', 'category']
60
+ },
61
+ {
62
+ id: 'semantic',
63
+ displayName: 'Semantic Scholar',
64
+ sourceKind: 'official-api',
65
+ defaultInAll: true,
66
+ optionalConfigKeys: [['SEMANTIC_SCHOLAR_API_KEY']],
67
+ supportedOptions: ['maxResults', 'year', 'fieldsOfStudy', 'sortBy']
68
+ },
69
+ {
70
+ id: 'iacr',
71
+ displayName: 'IACR ePrint',
72
+ sourceKind: 'html',
73
+ defaultInAll: true,
74
+ supportedOptions: ['maxResults', 'fetchDetails']
75
+ },
76
+ {
77
+ id: 'core',
78
+ displayName: 'CORE',
79
+ sourceKind: 'official-api',
80
+ defaultInAll: true,
81
+ optionalConfigKeys: [['PAPER_SEARCH_CORE_API_KEY', 'CORE_API_KEY']],
82
+ supportedOptions: ['maxResults', 'year']
83
+ },
84
+ {
85
+ id: 'openaire',
86
+ displayName: 'OpenAIRE',
87
+ sourceKind: 'official-api',
88
+ defaultInAll: true,
89
+ optionalConfigKeys: [['PAPER_SEARCH_OPENAIRE_API_KEY', 'OPENAIRE_API_KEY']],
90
+ supportedOptions: ['maxResults', 'year']
91
+ },
92
+ {
93
+ id: 'googlescholar',
94
+ aliases: ['scholar', 'google_scholar'],
95
+ displayName: 'Google Scholar',
96
+ sourceKind: 'html',
97
+ defaultInAll: true,
98
+ supportedOptions: ['maxResults', 'year', 'author']
99
+ },
100
+ {
101
+ id: 'webofscience',
102
+ aliases: ['wos'],
103
+ displayName: 'Web of Science',
104
+ sourceKind: 'official-api',
105
+ defaultInAll: true,
106
+ configKeys: [['WOS_API_KEY']],
107
+ optionalConfigKeys: [['WOS_API_VERSION']],
108
+ supportedOptions: ['maxResults', 'year', 'author', 'journal', 'sortBy', 'sortOrder']
109
+ },
110
+ {
111
+ id: 'sciencedirect',
112
+ displayName: 'ScienceDirect',
113
+ sourceKind: 'official-api',
114
+ defaultInAll: true,
115
+ configKeys: [['ELSEVIER_API_KEY']],
116
+ supportedOptions: ['maxResults', 'year', 'author', 'journal', 'openAccess']
117
+ },
118
+ {
119
+ id: 'springer',
120
+ aliases: ['springerlink'],
121
+ displayName: 'Springer Nature',
122
+ sourceKind: 'official-api',
123
+ defaultInAll: true,
124
+ configKeys: [['SPRINGER_API_KEY']],
125
+ optionalConfigKeys: [['SPRINGER_OPENACCESS_API_KEY']],
126
+ supportedOptions: ['maxResults', 'year', 'author', 'journal', 'openAccess', 'subject', 'type']
127
+ },
128
+ {
129
+ id: 'scopus',
130
+ displayName: 'Scopus',
131
+ sourceKind: 'official-api',
132
+ defaultInAll: true,
133
+ configKeys: [['ELSEVIER_API_KEY']],
134
+ optionalConfigKeys: [['SCOPUS_SEARCH_API_KEY']],
135
+ supportedOptions: ['maxResults', 'year', 'author', 'journal', 'affiliation', 'subject', 'openAccess', 'documentType']
136
+ },
137
+ {
138
+ id: 'scihub',
139
+ displayName: 'Sci-Hub',
140
+ sourceKind: 'html',
141
+ defaultInAll: true,
142
+ supportedOptions: ['maxResults']
143
+ },
144
+ {
145
+ id: 'unpaywall',
146
+ displayName: 'Unpaywall',
147
+ sourceKind: 'official-api',
148
+ defaultInAll: true,
149
+ configKeys: [['PAPER_SEARCH_UNPAYWALL_EMAIL', 'UNPAYWALL_EMAIL']],
150
+ supportedOptions: ['maxResults']
151
+ },
152
+ {
153
+ id: 'dblp',
154
+ displayName: 'DBLP',
155
+ sourceKind: 'official-api',
156
+ defaultInAll: true,
157
+ directTool: true,
158
+ toolName: 'search_dblp',
159
+ supportedOptions: ['maxResults', 'year', 'author', 'journal', 'sortBy', 'sortOrder'],
160
+ description: 'Search DBLP computer-science bibliography using the official public search API'
161
+ },
162
+ {
163
+ id: 'ieee',
164
+ displayName: 'IEEE Xplore',
165
+ sourceKind: 'official-api',
166
+ defaultInAll: true,
167
+ directTool: true,
168
+ toolName: 'search_ieee',
169
+ configKeys: [['IEEE_API_KEY']],
170
+ supportedOptions: ['maxResults', 'year', 'author', 'journal', 'sortBy', 'sortOrder', 'articleTitle', 'startRecord'],
171
+ description: 'Search IEEE Xplore metadata using the official API. Requires IEEE_API_KEY.'
172
+ },
173
+ {
174
+ id: 'acm',
175
+ displayName: 'ACM Digital Library',
176
+ sourceKind: 'metadata-proxy',
177
+ defaultInAll: true,
178
+ directTool: true,
179
+ toolName: 'search_acm',
180
+ supportedOptions: ['maxResults', 'year', 'author', 'sortBy', 'sortOrder'],
181
+ description: 'Search ACM metadata through Crossref/OpenAlex-style metadata, constrained to ACM DOI records'
182
+ },
183
+ {
184
+ id: 'usenix',
185
+ displayName: 'USENIX',
186
+ sourceKind: 'metadata-proxy',
187
+ defaultInAll: true,
188
+ directTool: true,
189
+ toolName: 'search_usenix',
190
+ supportedOptions: ['maxResults', 'year', 'author', 'journal', 'sortBy', 'sortOrder'],
191
+ description: 'Search USENIX-related paper metadata through DBLP-backed discovery'
192
+ },
193
+ {
194
+ id: 'openreview',
195
+ displayName: 'OpenReview',
196
+ sourceKind: 'official-api',
197
+ defaultInAll: true,
198
+ directTool: true,
199
+ toolName: 'search_openreview',
200
+ supportedOptions: ['maxResults', 'year', 'author', 'journal', 'venue'],
201
+ description: 'Search public OpenReview notes using OpenReview APIs'
202
+ }
203
+ ];
204
+ export const SEARCH_PLATFORM_IDS = PLATFORM_METADATA.map(platform => platform.id);
205
+ export const SEARCH_PLATFORM_VALUES = PLATFORM_METADATA.flatMap(platform => [
206
+ platform.id,
207
+ ...(platform.aliases || [])
208
+ ]);
209
+ export const DEFAULT_ALL_SOURCES = PLATFORM_METADATA
210
+ .filter(platform => platform.defaultInAll)
211
+ .map(platform => platform.id);
212
+ const ALIAS_TO_CANONICAL = new Map();
213
+ const METADATA_BY_ID = new Map();
214
+ const GENERIC_TOOL_ALIASES = new Map([
215
+ ['search_springerlink', 'springerlink']
216
+ ]);
217
+ for (const platform of PLATFORM_METADATA) {
218
+ METADATA_BY_ID.set(platform.id, platform);
219
+ for (const alias of platform.aliases || []) {
220
+ ALIAS_TO_CANONICAL.set(alias, platform.id);
221
+ }
222
+ }
223
+ export function resolvePlatformId(platform) {
224
+ const normalized = platform.trim().toLowerCase();
225
+ return ALIAS_TO_CANONICAL.get(normalized) || normalized;
226
+ }
227
+ export function isPlatformAlias(platform) {
228
+ return ALIAS_TO_CANONICAL.has(platform.trim().toLowerCase());
229
+ }
230
+ export function isKnownSearchPlatform(platform) {
231
+ const canonical = resolvePlatformId(platform);
232
+ return METADATA_BY_ID.has(canonical);
233
+ }
234
+ export function getPlatformMetadata(platform) {
235
+ return METADATA_BY_ID.get(resolvePlatformId(platform));
236
+ }
237
+ export function getDefaultAllSources() {
238
+ return [...DEFAULT_ALL_SOURCES];
239
+ }
240
+ export function getAliasMap() {
241
+ return Object.fromEntries(ALIAS_TO_CANONICAL.entries());
242
+ }
243
+ export function getGenericSearchToolPlatform(toolName) {
244
+ const aliasPlatform = GENERIC_TOOL_ALIASES.get(toolName);
245
+ if (aliasPlatform)
246
+ return aliasPlatform;
247
+ const platform = PLATFORM_METADATA.find(item => item.directTool && item.toolName === toolName);
248
+ return platform?.id;
249
+ }
250
+ export function getGenericSearchToolNames() {
251
+ return [
252
+ ...PLATFORM_METADATA
253
+ .filter(item => item.directTool && item.toolName)
254
+ .map(item => item.toolName),
255
+ ...GENERIC_TOOL_ALIASES.keys()
256
+ ];
257
+ }
258
+ //# sourceMappingURL=platformMetadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platformMetadata.js","sourceRoot":"","sources":["../../src/core/platformMetadata.ts"],"names":[],"mappings":"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"}