paper-search-cli 0.1.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 (166) hide show
  1. package/.env.example +165 -0
  2. package/LICENSE +21 -0
  3. package/README-sc.md +642 -0
  4. package/README.md +642 -0
  5. package/dist/cli.d.ts +3 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +637 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/config/ConfigService.d.ts +26 -0
  10. package/dist/config/ConfigService.d.ts.map +1 -0
  11. package/dist/config/ConfigService.js +145 -0
  12. package/dist/config/ConfigService.js.map +1 -0
  13. package/dist/config/constants.d.ts +140 -0
  14. package/dist/config/constants.d.ts.map +1 -0
  15. package/dist/config/constants.js +93 -0
  16. package/dist/config/constants.js.map +1 -0
  17. package/dist/core/diagnostics.d.ts +43 -0
  18. package/dist/core/diagnostics.d.ts.map +1 -0
  19. package/dist/core/diagnostics.js +544 -0
  20. package/dist/core/diagnostics.js.map +1 -0
  21. package/dist/core/handleToolCall.d.ts +8 -0
  22. package/dist/core/handleToolCall.d.ts.map +1 -0
  23. package/dist/core/handleToolCall.js +440 -0
  24. package/dist/core/handleToolCall.js.map +1 -0
  25. package/dist/core/schemas.d.ts +454 -0
  26. package/dist/core/schemas.d.ts.map +1 -0
  27. package/dist/core/schemas.js +322 -0
  28. package/dist/core/schemas.js.map +1 -0
  29. package/dist/core/searchers.d.ts +45 -0
  30. package/dist/core/searchers.d.ts.map +1 -0
  31. package/dist/core/searchers.js +73 -0
  32. package/dist/core/searchers.js.map +1 -0
  33. package/dist/core/tools.d.ts +7 -0
  34. package/dist/core/tools.d.ts.map +1 -0
  35. package/dist/core/tools.js +640 -0
  36. package/dist/core/tools.js.map +1 -0
  37. package/dist/models/Paper.d.ts +64 -0
  38. package/dist/models/Paper.d.ts.map +1 -0
  39. package/dist/models/Paper.js +70 -0
  40. package/dist/models/Paper.js.map +1 -0
  41. package/dist/platforms/ArxivSearcher.d.ts +64 -0
  42. package/dist/platforms/ArxivSearcher.d.ts.map +1 -0
  43. package/dist/platforms/ArxivSearcher.js +531 -0
  44. package/dist/platforms/ArxivSearcher.js.map +1 -0
  45. package/dist/platforms/BioRxivSearcher.d.ts +47 -0
  46. package/dist/platforms/BioRxivSearcher.d.ts.map +1 -0
  47. package/dist/platforms/BioRxivSearcher.js +196 -0
  48. package/dist/platforms/BioRxivSearcher.js.map +1 -0
  49. package/dist/platforms/CORESearcher.d.ts +16 -0
  50. package/dist/platforms/CORESearcher.d.ts.map +1 -0
  51. package/dist/platforms/CORESearcher.js +148 -0
  52. package/dist/platforms/CORESearcher.js.map +1 -0
  53. package/dist/platforms/CrossrefSearcher.d.ts +34 -0
  54. package/dist/platforms/CrossrefSearcher.d.ts.map +1 -0
  55. package/dist/platforms/CrossrefSearcher.js +339 -0
  56. package/dist/platforms/CrossrefSearcher.js.map +1 -0
  57. package/dist/platforms/EuropePMCSearcher.d.ts +20 -0
  58. package/dist/platforms/EuropePMCSearcher.d.ts.map +1 -0
  59. package/dist/platforms/EuropePMCSearcher.js +173 -0
  60. package/dist/platforms/EuropePMCSearcher.js.map +1 -0
  61. package/dist/platforms/GoogleScholarSearcher.d.ts +77 -0
  62. package/dist/platforms/GoogleScholarSearcher.d.ts.map +1 -0
  63. package/dist/platforms/GoogleScholarSearcher.js +262 -0
  64. package/dist/platforms/GoogleScholarSearcher.js.map +1 -0
  65. package/dist/platforms/IACRSearcher.d.ts +51 -0
  66. package/dist/platforms/IACRSearcher.d.ts.map +1 -0
  67. package/dist/platforms/IACRSearcher.js +339 -0
  68. package/dist/platforms/IACRSearcher.js.map +1 -0
  69. package/dist/platforms/OpenAIRESearcher.d.ts +22 -0
  70. package/dist/platforms/OpenAIRESearcher.d.ts.map +1 -0
  71. package/dist/platforms/OpenAIRESearcher.js +223 -0
  72. package/dist/platforms/OpenAIRESearcher.js.map +1 -0
  73. package/dist/platforms/OpenAlexSearcher.d.ts +14 -0
  74. package/dist/platforms/OpenAlexSearcher.d.ts.map +1 -0
  75. package/dist/platforms/OpenAlexSearcher.js +114 -0
  76. package/dist/platforms/OpenAlexSearcher.js.map +1 -0
  77. package/dist/platforms/PMCSearcher.d.ts +20 -0
  78. package/dist/platforms/PMCSearcher.d.ts.map +1 -0
  79. package/dist/platforms/PMCSearcher.js +177 -0
  80. package/dist/platforms/PMCSearcher.js.map +1 -0
  81. package/dist/platforms/PaperSource.d.ts +143 -0
  82. package/dist/platforms/PaperSource.d.ts.map +1 -0
  83. package/dist/platforms/PaperSource.js +125 -0
  84. package/dist/platforms/PaperSource.js.map +1 -0
  85. package/dist/platforms/PubMedSearcher.d.ts +104 -0
  86. package/dist/platforms/PubMedSearcher.d.ts.map +1 -0
  87. package/dist/platforms/PubMedSearcher.js +422 -0
  88. package/dist/platforms/PubMedSearcher.js.map +1 -0
  89. package/dist/platforms/SciHubSearcher.d.ts +66 -0
  90. package/dist/platforms/SciHubSearcher.d.ts.map +1 -0
  91. package/dist/platforms/SciHubSearcher.js +398 -0
  92. package/dist/platforms/SciHubSearcher.js.map +1 -0
  93. package/dist/platforms/ScienceDirectSearcher.d.ts +42 -0
  94. package/dist/platforms/ScienceDirectSearcher.d.ts.map +1 -0
  95. package/dist/platforms/ScienceDirectSearcher.js +326 -0
  96. package/dist/platforms/ScienceDirectSearcher.js.map +1 -0
  97. package/dist/platforms/ScopusSearcher.d.ts +43 -0
  98. package/dist/platforms/ScopusSearcher.d.ts.map +1 -0
  99. package/dist/platforms/ScopusSearcher.js +364 -0
  100. package/dist/platforms/ScopusSearcher.js.map +1 -0
  101. package/dist/platforms/SemanticScholarSearcher.d.ts +96 -0
  102. package/dist/platforms/SemanticScholarSearcher.d.ts.map +1 -0
  103. package/dist/platforms/SemanticScholarSearcher.js +419 -0
  104. package/dist/platforms/SemanticScholarSearcher.js.map +1 -0
  105. package/dist/platforms/SpringerSearcher.d.ts +54 -0
  106. package/dist/platforms/SpringerSearcher.d.ts.map +1 -0
  107. package/dist/platforms/SpringerSearcher.js +407 -0
  108. package/dist/platforms/SpringerSearcher.js.map +1 -0
  109. package/dist/platforms/UnpaywallSearcher.d.ts +18 -0
  110. package/dist/platforms/UnpaywallSearcher.d.ts.map +1 -0
  111. package/dist/platforms/UnpaywallSearcher.js +115 -0
  112. package/dist/platforms/UnpaywallSearcher.js.map +1 -0
  113. package/dist/platforms/WebOfScienceSearcher.d.ts +111 -0
  114. package/dist/platforms/WebOfScienceSearcher.d.ts.map +1 -0
  115. package/dist/platforms/WebOfScienceSearcher.js +500 -0
  116. package/dist/platforms/WebOfScienceSearcher.js.map +1 -0
  117. package/dist/platforms/WileySearcher.d.ts +44 -0
  118. package/dist/platforms/WileySearcher.d.ts.map +1 -0
  119. package/dist/platforms/WileySearcher.js +148 -0
  120. package/dist/platforms/WileySearcher.js.map +1 -0
  121. package/dist/services/CitationService.d.ts +66 -0
  122. package/dist/services/CitationService.d.ts.map +1 -0
  123. package/dist/services/CitationService.js +237 -0
  124. package/dist/services/CitationService.js.map +1 -0
  125. package/dist/services/MultiSourceSearchService.d.ts +19 -0
  126. package/dist/services/MultiSourceSearchService.d.ts.map +1 -0
  127. package/dist/services/MultiSourceSearchService.js +96 -0
  128. package/dist/services/MultiSourceSearchService.js.map +1 -0
  129. package/dist/services/OpenAccessFallbackService.d.ts +20 -0
  130. package/dist/services/OpenAccessFallbackService.d.ts.map +1 -0
  131. package/dist/services/OpenAccessFallbackService.js +124 -0
  132. package/dist/services/OpenAccessFallbackService.js.map +1 -0
  133. package/dist/utils/ErrorHandler.d.ts +99 -0
  134. package/dist/utils/ErrorHandler.d.ts.map +1 -0
  135. package/dist/utils/ErrorHandler.js +266 -0
  136. package/dist/utils/ErrorHandler.js.map +1 -0
  137. package/dist/utils/Logger.d.ts +6 -0
  138. package/dist/utils/Logger.d.ts.map +1 -0
  139. package/dist/utils/Logger.js +26 -0
  140. package/dist/utils/Logger.js.map +1 -0
  141. package/dist/utils/PDFExtractor.d.ts +34 -0
  142. package/dist/utils/PDFExtractor.d.ts.map +1 -0
  143. package/dist/utils/PDFExtractor.js +130 -0
  144. package/dist/utils/PDFExtractor.js.map +1 -0
  145. package/dist/utils/PdfDownload.d.ts +7 -0
  146. package/dist/utils/PdfDownload.d.ts.map +1 -0
  147. package/dist/utils/PdfDownload.js +52 -0
  148. package/dist/utils/PdfDownload.js.map +1 -0
  149. package/dist/utils/QuotaManager.d.ts +32 -0
  150. package/dist/utils/QuotaManager.d.ts.map +1 -0
  151. package/dist/utils/QuotaManager.js +95 -0
  152. package/dist/utils/QuotaManager.js.map +1 -0
  153. package/dist/utils/RateLimiter.d.ts +50 -0
  154. package/dist/utils/RateLimiter.d.ts.map +1 -0
  155. package/dist/utils/RateLimiter.js +121 -0
  156. package/dist/utils/RateLimiter.js.map +1 -0
  157. package/dist/utils/RequestCache.d.ts +26 -0
  158. package/dist/utils/RequestCache.d.ts.map +1 -0
  159. package/dist/utils/RequestCache.js +66 -0
  160. package/dist/utils/RequestCache.js.map +1 -0
  161. package/dist/utils/SecurityUtils.d.ts +80 -0
  162. package/dist/utils/SecurityUtils.d.ts.map +1 -0
  163. package/dist/utils/SecurityUtils.js +357 -0
  164. package/dist/utils/SecurityUtils.js.map +1 -0
  165. package/package.json +111 -0
  166. package/skills/paper-search/SKILL.md +192 -0
@@ -0,0 +1,322 @@
1
+ import { z } from 'zod';
2
+ const SortBySchema = z.enum(['relevance', 'date', 'citations']);
3
+ const SortOrderSchema = z.enum(['asc', 'desc']);
4
+ export const SearchPapersSchema = z
5
+ .object({
6
+ query: z.string().min(1),
7
+ platform: z
8
+ .enum([
9
+ 'arxiv',
10
+ 'webofscience',
11
+ 'pubmed',
12
+ 'wos',
13
+ 'biorxiv',
14
+ 'medrxiv',
15
+ 'semantic',
16
+ 'iacr',
17
+ 'googlescholar',
18
+ 'scholar',
19
+ 'scihub',
20
+ 'sciencedirect',
21
+ 'springer',
22
+ 'scopus',
23
+ 'crossref',
24
+ 'openalex',
25
+ 'unpaywall',
26
+ 'pmc',
27
+ 'europepmc',
28
+ 'core',
29
+ 'openaire',
30
+ 'all'
31
+ ])
32
+ .optional()
33
+ .default('crossref'),
34
+ sources: z.string().optional(),
35
+ maxResults: z.number().int().min(1).max(100).optional().default(10),
36
+ year: z.string().optional(),
37
+ author: z.string().optional(),
38
+ journal: z.string().optional(),
39
+ category: z.string().optional(),
40
+ days: z.number().int().min(1).max(3650).optional(),
41
+ fetchDetails: z.boolean().optional(),
42
+ fieldsOfStudy: z.array(z.string()).optional(),
43
+ sortBy: SortBySchema.optional().default('relevance'),
44
+ sortOrder: SortOrderSchema.optional().default('desc')
45
+ })
46
+ .strip();
47
+ export const SearchArxivSchema = z
48
+ .object({
49
+ query: z.string().min(1),
50
+ maxResults: z.number().int().min(1).max(50).optional().default(10),
51
+ category: z.string().optional(),
52
+ author: z.string().optional(),
53
+ year: z.string().optional(),
54
+ sortBy: SortBySchema.optional(),
55
+ sortOrder: SortOrderSchema.optional()
56
+ })
57
+ .strip();
58
+ export const SearchWebOfScienceSchema = z
59
+ .object({
60
+ query: z.string().min(1),
61
+ maxResults: z.number().int().min(1).max(50).optional().default(10),
62
+ year: z.string().optional(),
63
+ author: z.string().optional(),
64
+ journal: z.string().optional(),
65
+ sortBy: z
66
+ .enum(['relevance', 'date', 'citations', 'title', 'author', 'journal'])
67
+ .optional(),
68
+ sortOrder: SortOrderSchema.optional()
69
+ })
70
+ .strip();
71
+ export const SearchPubMedSchema = z
72
+ .object({
73
+ query: z.string().min(1),
74
+ maxResults: z.number().int().min(1).max(100).optional().default(10),
75
+ year: z.string().optional(),
76
+ author: z.string().optional(),
77
+ journal: z.string().optional(),
78
+ publicationType: z.array(z.string()).optional(),
79
+ sortBy: z.enum(['relevance', 'date']).optional()
80
+ })
81
+ .strip();
82
+ export const SearchBioRxivSchema = z
83
+ .object({
84
+ query: z.string().min(1),
85
+ maxResults: z.number().int().min(1).max(100).optional().default(10),
86
+ days: z.number().int().min(1).max(3650).optional(),
87
+ category: z.string().optional()
88
+ })
89
+ .strip();
90
+ export const SearchMedRxivSchema = SearchBioRxivSchema;
91
+ export const SearchSemanticScholarSchema = z
92
+ .object({
93
+ query: z.string().min(1),
94
+ maxResults: z.number().int().min(1).max(100).optional().default(10),
95
+ year: z.string().optional(),
96
+ fieldsOfStudy: z.array(z.string()).optional()
97
+ })
98
+ .strip();
99
+ export const SearchSemanticSnippetsSchema = z
100
+ .object({
101
+ query: z.string().min(1),
102
+ limit: z.number().int().min(1).max(1000).optional().default(5),
103
+ year: z.string().optional(),
104
+ fieldsOfStudy: z.union([z.string(), z.array(z.string())]).optional(),
105
+ paperIds: z.union([z.string(), z.array(z.string())]).optional(),
106
+ authors: z.union([z.string(), z.array(z.string())]).optional(),
107
+ venue: z.union([z.string(), z.array(z.string())]).optional(),
108
+ minCitationCount: z.number().int().min(0).optional(),
109
+ publicationDateOrYear: z.string().optional(),
110
+ fields: z.union([z.string(), z.array(z.string())]).optional()
111
+ })
112
+ .strip();
113
+ export const SearchIACRSchema = z
114
+ .object({
115
+ query: z.string().min(1),
116
+ maxResults: z.number().int().min(1).max(50).optional().default(10),
117
+ fetchDetails: z.boolean().optional()
118
+ })
119
+ .strip();
120
+ export const DownloadPaperSchema = z
121
+ .object({
122
+ paperId: z.coerce.string().min(1),
123
+ platform: z.enum([
124
+ 'arxiv',
125
+ 'biorxiv',
126
+ 'medrxiv',
127
+ 'semantic',
128
+ 'iacr',
129
+ 'scihub',
130
+ 'springer',
131
+ 'wiley',
132
+ 'pmc',
133
+ 'europepmc',
134
+ 'core'
135
+ ]),
136
+ savePath: z.coerce.string().optional()
137
+ })
138
+ .strip();
139
+ export const SearchGoogleScholarSchema = z
140
+ .object({
141
+ query: z.string().min(1),
142
+ maxResults: z.number().int().min(1).max(20).optional().default(10),
143
+ yearLow: z.number().int().optional(),
144
+ yearHigh: z.number().int().optional(),
145
+ author: z.string().optional()
146
+ })
147
+ .strip();
148
+ export const GetPaperByDoiSchema = z
149
+ .object({
150
+ doi: z.coerce.string().min(1),
151
+ platform: z
152
+ .enum([
153
+ 'arxiv',
154
+ 'webofscience',
155
+ 'pubmed',
156
+ 'crossref',
157
+ 'openalex',
158
+ 'unpaywall',
159
+ 'pmc',
160
+ 'europepmc',
161
+ 'core',
162
+ 'all'
163
+ ])
164
+ .optional()
165
+ .default('all')
166
+ })
167
+ .strip();
168
+ export const SearchSciHubSchema = z
169
+ .object({
170
+ doiOrUrl: z.coerce.string().min(1),
171
+ downloadPdf: z.boolean().optional().default(false),
172
+ savePath: z.coerce.string().optional()
173
+ })
174
+ .strip();
175
+ export const CheckSciHubMirrorsSchema = z
176
+ .object({
177
+ forceCheck: z.boolean().optional().default(false)
178
+ })
179
+ .strip();
180
+ export const SearchScienceDirectSchema = z
181
+ .object({
182
+ query: z.string().min(1),
183
+ maxResults: z.number().int().min(1).max(100).optional().default(10),
184
+ year: z.string().optional(),
185
+ author: z.string().optional(),
186
+ journal: z.string().optional(),
187
+ openAccess: z.boolean().optional()
188
+ })
189
+ .strip();
190
+ export const SearchSpringerSchema = z
191
+ .object({
192
+ query: z.string().min(1),
193
+ maxResults: z.number().int().min(1).max(100).optional().default(10),
194
+ year: z.string().optional(),
195
+ author: z.string().optional(),
196
+ journal: z.string().optional(),
197
+ subject: z.string().optional(),
198
+ openAccess: z.boolean().optional(),
199
+ type: z.enum(['Journal', 'Book', 'Chapter']).optional()
200
+ })
201
+ .strip();
202
+ export const SearchWileySchema = z
203
+ .object({
204
+ query: z.string().min(1)
205
+ })
206
+ .strip();
207
+ export const SearchScopusSchema = z
208
+ .object({
209
+ query: z.string().min(1),
210
+ maxResults: z.number().int().min(1).max(25).optional().default(10),
211
+ year: z.string().optional(),
212
+ author: z.string().optional(),
213
+ journal: z.string().optional(),
214
+ affiliation: z.string().optional(),
215
+ subject: z.string().optional(),
216
+ openAccess: z.boolean().optional(),
217
+ documentType: z.enum(['ar', 'cp', 're', 'bk', 'ch']).optional()
218
+ })
219
+ .strip();
220
+ export const SearchCrossrefSchema = z
221
+ .object({
222
+ query: z.string().min(1),
223
+ maxResults: z.number().int().min(1).max(100).optional().default(10),
224
+ year: z.string().optional(),
225
+ author: z.string().optional(),
226
+ sortBy: SortBySchema.optional().default('relevance'),
227
+ sortOrder: SortOrderSchema.optional().default('desc')
228
+ })
229
+ .strip();
230
+ export const SearchOpenAlexSchema = z
231
+ .object({
232
+ query: z.string().min(1),
233
+ maxResults: z.number().int().min(1).max(100).optional().default(10),
234
+ year: z.string().optional()
235
+ })
236
+ .strip();
237
+ export const SearchUnpaywallSchema = z
238
+ .object({
239
+ query: z.string().min(1),
240
+ maxResults: z.number().int().min(1).max(1).optional().default(1)
241
+ })
242
+ .strip();
243
+ export const SearchPMCStyleSchema = z
244
+ .object({
245
+ query: z.string().min(1),
246
+ maxResults: z.number().int().min(1).max(100).optional().default(10),
247
+ year: z.string().optional()
248
+ })
249
+ .strip();
250
+ export const DownloadWithFallbackSchema = z
251
+ .object({
252
+ source: z.coerce.string().min(1),
253
+ paperId: z.coerce.string().min(1),
254
+ doi: z.coerce.string().optional().default(''),
255
+ title: z.coerce.string().optional().default(''),
256
+ savePath: z.coerce.string().optional(),
257
+ useSciHub: z.boolean().optional().default(false)
258
+ })
259
+ .strip();
260
+ export const GetPlatformStatusSchema = z
261
+ .object({
262
+ validate: z.boolean().optional().default(false)
263
+ })
264
+ .strip();
265
+ export function parseToolArgs(toolName, args) {
266
+ switch (toolName) {
267
+ case 'search_papers':
268
+ return SearchPapersSchema.parse(args);
269
+ case 'search_arxiv':
270
+ return SearchArxivSchema.parse(args);
271
+ case 'search_webofscience':
272
+ return SearchWebOfScienceSchema.parse(args);
273
+ case 'search_pubmed':
274
+ return SearchPubMedSchema.parse(args);
275
+ case 'search_biorxiv':
276
+ return SearchBioRxivSchema.parse(args);
277
+ case 'search_medrxiv':
278
+ return SearchMedRxivSchema.parse(args);
279
+ case 'search_semantic_scholar':
280
+ return SearchSemanticScholarSchema.parse(args);
281
+ case 'search_semantic_snippets':
282
+ return SearchSemanticSnippetsSchema.parse(args);
283
+ case 'search_iacr':
284
+ return SearchIACRSchema.parse(args);
285
+ case 'download_paper':
286
+ return DownloadPaperSchema.parse(args);
287
+ case 'search_google_scholar':
288
+ return SearchGoogleScholarSchema.parse(args);
289
+ case 'get_paper_by_doi':
290
+ return GetPaperByDoiSchema.parse(args);
291
+ case 'search_scihub':
292
+ return SearchSciHubSchema.parse(args);
293
+ case 'check_scihub_mirrors':
294
+ return CheckSciHubMirrorsSchema.parse(args);
295
+ case 'get_platform_status':
296
+ return GetPlatformStatusSchema.parse(args ?? {});
297
+ case 'search_sciencedirect':
298
+ return SearchScienceDirectSchema.parse(args);
299
+ case 'search_springer':
300
+ return SearchSpringerSchema.parse(args);
301
+ case 'search_wiley':
302
+ return SearchWileySchema.parse(args);
303
+ case 'search_scopus':
304
+ return SearchScopusSchema.parse(args);
305
+ case 'search_crossref':
306
+ return SearchCrossrefSchema.parse(args);
307
+ case 'search_openalex':
308
+ return SearchOpenAlexSchema.parse(args);
309
+ case 'search_unpaywall':
310
+ return SearchUnpaywallSchema.parse(args);
311
+ case 'search_pmc':
312
+ case 'search_europepmc':
313
+ case 'search_core':
314
+ case 'search_openaire':
315
+ return SearchPMCStyleSchema.parse(args);
316
+ case 'download_with_fallback':
317
+ return DownloadWithFallbackSchema.parse(args);
318
+ default:
319
+ return args;
320
+ }
321
+ }
322
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import { ArxivSearcher } from '../platforms/ArxivSearcher.js';
2
+ import { WebOfScienceSearcher } from '../platforms/WebOfScienceSearcher.js';
3
+ import { PubMedSearcher } from '../platforms/PubMedSearcher.js';
4
+ import { BioRxivSearcher, MedRxivSearcher } from '../platforms/BioRxivSearcher.js';
5
+ import { SemanticScholarSearcher } from '../platforms/SemanticScholarSearcher.js';
6
+ import { IACRSearcher } from '../platforms/IACRSearcher.js';
7
+ import { GoogleScholarSearcher } from '../platforms/GoogleScholarSearcher.js';
8
+ import { SciHubSearcher } from '../platforms/SciHubSearcher.js';
9
+ import { ScienceDirectSearcher } from '../platforms/ScienceDirectSearcher.js';
10
+ import { SpringerSearcher } from '../platforms/SpringerSearcher.js';
11
+ import { WileySearcher } from '../platforms/WileySearcher.js';
12
+ import { ScopusSearcher } from '../platforms/ScopusSearcher.js';
13
+ import { CrossrefSearcher } from '../platforms/CrossrefSearcher.js';
14
+ import { OpenAlexSearcher } from '../platforms/OpenAlexSearcher.js';
15
+ import { UnpaywallSearcher } from '../platforms/UnpaywallSearcher.js';
16
+ import { PMCSearcher } from '../platforms/PMCSearcher.js';
17
+ import { EuropePMCSearcher } from '../platforms/EuropePMCSearcher.js';
18
+ import { CORESearcher } from '../platforms/CORESearcher.js';
19
+ import { OpenAIRESearcher } from '../platforms/OpenAIRESearcher.js';
20
+ export interface Searchers {
21
+ arxiv: ArxivSearcher;
22
+ webofscience: WebOfScienceSearcher;
23
+ pubmed: PubMedSearcher;
24
+ wos: WebOfScienceSearcher;
25
+ biorxiv: BioRxivSearcher;
26
+ medrxiv: MedRxivSearcher;
27
+ semantic: SemanticScholarSearcher;
28
+ iacr: IACRSearcher;
29
+ googlescholar: GoogleScholarSearcher;
30
+ scholar: GoogleScholarSearcher;
31
+ scihub: SciHubSearcher;
32
+ sciencedirect: ScienceDirectSearcher;
33
+ springer: SpringerSearcher;
34
+ wiley: WileySearcher;
35
+ scopus: ScopusSearcher;
36
+ crossref: CrossrefSearcher;
37
+ openalex: OpenAlexSearcher;
38
+ unpaywall: UnpaywallSearcher;
39
+ pmc: PMCSearcher;
40
+ europepmc: EuropePMCSearcher;
41
+ core: CORESearcher;
42
+ openaire: OpenAIRESearcher;
43
+ }
44
+ export declare function initializeSearchers(): Searchers;
45
+ //# sourceMappingURL=searchers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchers.d.ts","sourceRoot":"","sources":["../../src/core/searchers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAClF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AAGpE,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,aAAa,CAAC;IACrB,YAAY,EAAE,oBAAoB,CAAC;IACnC,MAAM,EAAE,cAAc,CAAC;IACvB,GAAG,EAAE,oBAAoB,CAAC;IAC1B,OAAO,EAAE,eAAe,CAAC;IACzB,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,IAAI,EAAE,YAAY,CAAC;IACnB,aAAa,EAAE,qBAAqB,CAAC;IACrC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,MAAM,EAAE,cAAc,CAAC;IACvB,aAAa,EAAE,qBAAqB,CAAC;IACrC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,KAAK,EAAE,aAAa,CAAC;IACrB,MAAM,EAAE,cAAc,CAAC;IACvB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,SAAS,EAAE,iBAAiB,CAAC;IAC7B,GAAG,EAAE,WAAW,CAAC;IACjB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,IAAI,EAAE,YAAY,CAAC;IACnB,QAAQ,EAAE,gBAAgB,CAAC;CAC5B;AAID,wBAAgB,mBAAmB,IAAI,SAAS,CAwD/C"}
@@ -0,0 +1,73 @@
1
+ import { ArxivSearcher } from '../platforms/ArxivSearcher.js';
2
+ import { WebOfScienceSearcher } from '../platforms/WebOfScienceSearcher.js';
3
+ import { PubMedSearcher } from '../platforms/PubMedSearcher.js';
4
+ import { BioRxivSearcher, MedRxivSearcher } from '../platforms/BioRxivSearcher.js';
5
+ import { SemanticScholarSearcher } from '../platforms/SemanticScholarSearcher.js';
6
+ import { IACRSearcher } from '../platforms/IACRSearcher.js';
7
+ import { GoogleScholarSearcher } from '../platforms/GoogleScholarSearcher.js';
8
+ import { SciHubSearcher } from '../platforms/SciHubSearcher.js';
9
+ import { ScienceDirectSearcher } from '../platforms/ScienceDirectSearcher.js';
10
+ import { SpringerSearcher } from '../platforms/SpringerSearcher.js';
11
+ import { WileySearcher } from '../platforms/WileySearcher.js';
12
+ import { ScopusSearcher } from '../platforms/ScopusSearcher.js';
13
+ import { CrossrefSearcher } from '../platforms/CrossrefSearcher.js';
14
+ import { OpenAlexSearcher } from '../platforms/OpenAlexSearcher.js';
15
+ import { UnpaywallSearcher } from '../platforms/UnpaywallSearcher.js';
16
+ import { PMCSearcher } from '../platforms/PMCSearcher.js';
17
+ import { EuropePMCSearcher } from '../platforms/EuropePMCSearcher.js';
18
+ import { CORESearcher } from '../platforms/CORESearcher.js';
19
+ import { OpenAIRESearcher } from '../platforms/OpenAIRESearcher.js';
20
+ import { logDebug } from '../utils/Logger.js';
21
+ let searchers = null;
22
+ export function initializeSearchers() {
23
+ if (searchers)
24
+ return searchers;
25
+ logDebug('Initializing searchers...');
26
+ const arxivSearcher = new ArxivSearcher();
27
+ const wosSearcher = new WebOfScienceSearcher(process.env.WOS_API_KEY, process.env.WOS_API_VERSION);
28
+ const pubmedSearcher = new PubMedSearcher(process.env.PUBMED_API_KEY);
29
+ const biorxivSearcher = new BioRxivSearcher('biorxiv');
30
+ const medrxivSearcher = new MedRxivSearcher();
31
+ const semanticSearcher = new SemanticScholarSearcher(process.env.SEMANTIC_SCHOLAR_API_KEY);
32
+ const iacrSearcher = new IACRSearcher();
33
+ const googleScholarSearcher = new GoogleScholarSearcher();
34
+ const sciHubSearcher = new SciHubSearcher();
35
+ const scienceDirectSearcher = new ScienceDirectSearcher(process.env.ELSEVIER_API_KEY);
36
+ const springerSearcher = new SpringerSearcher(process.env.SPRINGER_API_KEY, process.env.SPRINGER_OPENACCESS_API_KEY);
37
+ const wileySearcher = new WileySearcher(process.env.WILEY_TDM_TOKEN);
38
+ const scopusSearcher = new ScopusSearcher(process.env.ELSEVIER_API_KEY);
39
+ const crossrefSearcher = new CrossrefSearcher(process.env.CROSSREF_MAILTO);
40
+ const openAlexSearcher = new OpenAlexSearcher();
41
+ const unpaywallSearcher = new UnpaywallSearcher();
42
+ const pmcSearcher = new PMCSearcher();
43
+ const europePmcSearcher = new EuropePMCSearcher();
44
+ const coreSearcher = new CORESearcher();
45
+ const openAireSearcher = new OpenAIRESearcher();
46
+ searchers = {
47
+ arxiv: arxivSearcher,
48
+ webofscience: wosSearcher,
49
+ pubmed: pubmedSearcher,
50
+ wos: wosSearcher,
51
+ biorxiv: biorxivSearcher,
52
+ medrxiv: medrxivSearcher,
53
+ semantic: semanticSearcher,
54
+ iacr: iacrSearcher,
55
+ googlescholar: googleScholarSearcher,
56
+ scholar: googleScholarSearcher,
57
+ scihub: sciHubSearcher,
58
+ sciencedirect: scienceDirectSearcher,
59
+ springer: springerSearcher,
60
+ wiley: wileySearcher,
61
+ scopus: scopusSearcher,
62
+ crossref: crossrefSearcher,
63
+ openalex: openAlexSearcher,
64
+ unpaywall: unpaywallSearcher,
65
+ pmc: pmcSearcher,
66
+ europepmc: europePmcSearcher,
67
+ core: coreSearcher,
68
+ openaire: openAireSearcher
69
+ };
70
+ logDebug('Searchers initialized successfully');
71
+ return searchers;
72
+ }
73
+ //# sourceMappingURL=searchers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchers.js","sourceRoot":"","sources":["../../src/core/searchers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export interface CliTool {
2
+ name: string;
3
+ description: string;
4
+ inputSchema: Record<string, unknown>;
5
+ }
6
+ export declare const TOOLS: CliTool[];
7
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED,eAAO,MAAM,KAAK,EAAE,OAAO,EAuoB1B,CAAC"}