🎩 You're Invited:Meet the Socket team at Black Hat in Las Vegas, August 3-6.RSVP
Sign In

paper-search-cli

Package Overview
Dependencies
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

paper-search-cli - npm Package Compare versions

Comparing version
0.2.0
to
0.3.0
+4
dist/config/ResultCaps.d.ts
export declare const DEFAULT_CORE_MAX_RESULTS_CAP = 100;
export declare const HARD_CORE_MAX_RESULTS_CAP = 500;
export declare function getCoreMaxResultsCap(): number;
//# sourceMappingURL=ResultCaps.d.ts.map
{"version":3,"file":"ResultCaps.d.ts","sourceRoot":"","sources":["../../src/config/ResultCaps.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAChD,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,wBAAgB,oBAAoB,IAAI,MAAM,CAK7C"}
export const DEFAULT_CORE_MAX_RESULTS_CAP = 100;
export const HARD_CORE_MAX_RESULTS_CAP = 500;
export function getCoreMaxResultsCap() {
const raw = process.env.CORE_MAX_RESULTS_CAP || '';
const parsed = Number(raw);
if (!Number.isFinite(parsed) || parsed <= 0)
return DEFAULT_CORE_MAX_RESULTS_CAP;
return Math.max(1, Math.min(Math.floor(parsed), HARD_CORE_MAX_RESULTS_CAP));
}
//# sourceMappingURL=ResultCaps.js.map
{"version":3,"file":"ResultCaps.js","sourceRoot":"","sources":["../../src/config/ResultCaps.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAChD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AAE7C,MAAM,UAAU,oBAAoB;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,4BAA4B,CAAC;IACjF,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,yBAAyB,CAAC,CAAC,CAAC;AAC9E,CAAC"}
export type CapabilityStatus = 'available' | 'degraded' | 'unavailable';
export interface CapabilityEntry {
id: 'metadata_search' | 'body_snippet_search' | 'journal_metrics' | 'pdf_discovery' | 'entitled_access';
status: CapabilityStatus;
reason: string;
configured: string[];
missing: string[];
sourceGroups?: Record<string, string[]>;
requiredKeys?: string[];
optionalKeys?: string[];
}
export interface CapabilityProfile {
ok: boolean;
entries: CapabilityEntry[];
summary: Record<string, CapabilityStatus>;
}
export declare function buildCapabilityProfile(): CapabilityProfile;
//# sourceMappingURL=capabilityProfile.d.ts.map
{"version":3,"file":"capabilityProfile.d.ts","sourceRoot":"","sources":["../../src/core/capabilityProfile.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,UAAU,GAAG,aAAa,CAAC;AAExE,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,iBAAiB,GAAG,qBAAqB,GAAG,iBAAiB,GAAG,eAAe,GAAG,iBAAiB,CAAC;IACxG,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;CAC3C;AAmDD,wBAAgB,sBAAsB,IAAI,iBAAiB,CAc1D"}
import { CONFIG_KEYS, listConfigEntries } from '../config/ConfigService.js';
const METADATA_FREE_SOURCES = [
'crossref',
'openalex',
'pubmed',
'pmc',
'europepmc',
'arxiv',
'biorxiv',
'medrxiv',
'semantic',
'iacr',
'core',
'openaire',
'googlescholar',
'dblp',
'acm',
'usenix',
'openreview'
];
const METADATA_ENTITLED_SOURCES = ['webofscience', 'sciencedirect', 'springer', 'scopus', 'ieee'];
const OPEN_ACCESS_SOURCES = [
'arxiv',
'biorxiv',
'medrxiv',
'pmc',
'europepmc',
'core',
'openaire',
'unpaywall',
'openalex_oa_metadata',
'semantic_open_access_pdf',
'springer_open_access',
'sciencedirect_open_access',
'scopus_open_access_metadata',
'iacr'
];
const ENTITLED_ACCESS_SOURCES = ['webofscience', 'sciencedirect', 'scopus', 'springer', 'ieee', 'wiley_tdm'];
const SCIHUB_SOURCES = ['scihub'];
const ENTITLED_KEY_BY_SOURCE = {
webofscience: ['WOS_API_KEY'],
sciencedirect: ['ELSEVIER_API_KEY'],
scopus: ['ELSEVIER_API_KEY'],
springer: ['SPRINGER_API_KEY'],
ieee: ['IEEE_API_KEY'],
wiley_tdm: ['WILEY_TDM_TOKEN']
};
export function buildCapabilityProfile() {
const configuredKeys = configuredConfigKeys();
const entries = [
metadataSearchEntry(configuredKeys),
bodySnippetSearchEntry(configuredKeys),
journalMetricsEntry(configuredKeys),
pdfDiscoveryEntry(configuredKeys),
entitledAccessEntry(configuredKeys)
];
return {
ok: entries.some(entry => entry.status === 'available' || entry.status === 'degraded'),
entries,
summary: Object.fromEntries(entries.map(entry => [entry.id, entry.status]))
};
}
function metadataSearchEntry(configuredKeys) {
const configuredEntitled = METADATA_ENTITLED_SOURCES.filter(source => keysConfigured(configuredKeys, ENTITLED_KEY_BY_SOURCE[source] || []));
const missingEntitled = METADATA_ENTITLED_SOURCES.filter(source => !configuredEntitled.includes(source));
return {
id: 'metadata_search',
status: 'available',
reason: `Free metadata sources are available (${METADATA_FREE_SOURCES.join(', ')}). Sci-Hub is excluded from metadata_search; entitled metadata sources are ${configuredEntitled.length ? `configured for ${configuredEntitled.join(', ')}` : 'not configured'}.`,
configured: [...METADATA_FREE_SOURCES, ...configuredEntitled],
missing: missingEntitled,
sourceGroups: {
free_sources: METADATA_FREE_SOURCES,
entitled_sources: configuredEntitled,
missing_entitled_sources: missingEntitled
},
optionalKeys: unique(Object.values(ENTITLED_KEY_BY_SOURCE).flat())
};
}
function bodySnippetSearchEntry(configuredKeys) {
const hasKey = configuredKeys.has('SEMANTIC_SCHOLAR_API_KEY');
return {
id: 'body_snippet_search',
status: hasKey ? 'available' : 'unavailable',
reason: hasKey
? 'SEMANTIC_SCHOLAR_API_KEY is configured, so Semantic Scholar Open Access body snippet search can run.'
: 'SEMANTIC_SCHOLAR_API_KEY is missing; metadata search still works, but body snippet search cannot run.',
configured: hasKey ? ['semantic_snippet_index'] : [],
missing: hasKey ? [] : ['SEMANTIC_SCHOLAR_API_KEY'],
requiredKeys: ['SEMANTIC_SCHOLAR_API_KEY']
};
}
function journalMetricsEntry(configuredKeys) {
const hasKey = configuredKeys.has('EASYSCHOLAR_KEY');
return {
id: 'journal_metrics',
status: hasKey ? 'available' : 'unavailable',
reason: hasKey
? 'EASYSCHOLAR_KEY is configured, so EasyScholar journal metrics can run.'
: 'EASYSCHOLAR_KEY is missing; journal metrics are unavailable until the EasyScholar SecretKey is configured.',
configured: hasKey ? ['easyscholar'] : [],
missing: hasKey ? [] : ['EASYSCHOLAR_KEY'],
requiredKeys: ['EASYSCHOLAR_KEY']
};
}
function pdfDiscoveryEntry(configuredKeys) {
const configuredEntitled = ENTITLED_ACCESS_SOURCES.filter(source => keysConfigured(configuredKeys, ENTITLED_KEY_BY_SOURCE[source] || []));
const missingEntitled = ENTITLED_ACCESS_SOURCES.filter(source => !configuredEntitled.includes(source));
return {
id: 'pdf_discovery',
status: configuredEntitled.length > 0 ? 'available' : 'degraded',
reason: configuredEntitled.length > 0
? `Open-access PDF discovery, entitled access sources (${configuredEntitled.join(', ')}), and Sci-Hub final fallback are available.`
: 'Open-access PDF discovery and Sci-Hub final fallback are available; entitled access sources are not configured.',
configured: [...OPEN_ACCESS_SOURCES, ...configuredEntitled, ...SCIHUB_SOURCES],
missing: missingEntitled,
sourceGroups: {
open_access_sources: OPEN_ACCESS_SOURCES,
entitled_access_sources: configuredEntitled,
missing_entitled_access_sources: missingEntitled,
scihub_sources: SCIHUB_SOURCES
},
optionalKeys: unique(Object.values(ENTITLED_KEY_BY_SOURCE).flat())
};
}
function entitledAccessEntry(configuredKeys) {
const configured = ENTITLED_ACCESS_SOURCES.filter(source => keysConfigured(configuredKeys, ENTITLED_KEY_BY_SOURCE[source] || []));
const missing = ENTITLED_ACCESS_SOURCES.filter(source => !configured.includes(source));
return {
id: 'entitled_access',
status: configured.length > 0 ? 'available' : 'unavailable',
reason: configured.length > 0
? `User-specific access is configured for ${configured.join(', ')}.`
: 'No publisher, database, TDM, or institutional access keys are configured.',
configured,
missing,
sourceGroups: {
configured_sources: configured,
missing_sources: missing
},
requiredKeys: unique(Object.values(ENTITLED_KEY_BY_SOURCE).flat())
};
}
function configuredConfigKeys() {
return new Set(listConfigEntries(false).filter(entry => entry.configured).map(entry => entry.key));
}
function keysConfigured(configuredKeys, keys) {
return keys.length > 0 && keys.some(key => configuredKeys.has(key));
}
function unique(values) {
return [...new Set(values.filter(key => CONFIG_KEYS.includes(key)))];
}
//# sourceMappingURL=capabilityProfile.js.map
{"version":3,"file":"capabilityProfile.js","sourceRoot":"","sources":["../../src/core/capabilityProfile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAqB5E,MAAM,qBAAqB,GAAG;IAC5B,UAAU;IACV,UAAU;IACV,QAAQ;IACR,KAAK;IACL,WAAW;IACX,OAAO;IACP,SAAS;IACT,SAAS;IACT,UAAU;IACV,MAAM;IACN,MAAM;IACN,UAAU;IACV,eAAe;IACf,MAAM;IACN,KAAK;IACL,QAAQ;IACR,YAAY;CACb,CAAC;AAEF,MAAM,yBAAyB,GAAG,CAAC,cAAc,EAAE,eAAe,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAClG,MAAM,mBAAmB,GAAG;IAC1B,OAAO;IACP,SAAS;IACT,SAAS;IACT,KAAK;IACL,WAAW;IACX,MAAM;IACN,UAAU;IACV,WAAW;IACX,sBAAsB;IACtB,0BAA0B;IAC1B,sBAAsB;IACtB,2BAA2B;IAC3B,6BAA6B;IAC7B,MAAM;CACP,CAAC;AACF,MAAM,uBAAuB,GAAG,CAAC,cAAc,EAAE,eAAe,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;AAC7G,MAAM,cAAc,GAAG,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,sBAAsB,GAA6B;IACvD,YAAY,EAAE,CAAC,aAAa,CAAC;IAC7B,aAAa,EAAE,CAAC,kBAAkB,CAAC;IACnC,MAAM,EAAE,CAAC,kBAAkB,CAAC;IAC5B,QAAQ,EAAE,CAAC,kBAAkB,CAAC;IAC9B,IAAI,EAAE,CAAC,cAAc,CAAC;IACtB,SAAS,EAAE,CAAC,iBAAiB,CAAC;CAC/B,CAAC;AAEF,MAAM,UAAU,sBAAsB;IACpC,MAAM,cAAc,GAAG,oBAAoB,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAsB;QACjC,mBAAmB,CAAC,cAAc,CAAC;QACnC,sBAAsB,CAAC,cAAc,CAAC;QACtC,mBAAmB,CAAC,cAAc,CAAC;QACnC,iBAAiB,CAAC,cAAc,CAAC;QACjC,mBAAmB,CAAC,cAAc,CAAC;KACpC,CAAC;IACF,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,WAAW,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,CAAC;QACtF,OAAO;QACP,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAiC;KAC5G,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,cAA2B;IACtD,MAAM,kBAAkB,GAAG,yBAAyB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,EAAE,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5I,MAAM,eAAe,GAAG,yBAAyB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACzG,OAAO;QACL,EAAE,EAAE,iBAAiB;QACrB,MAAM,EAAE,WAAW;QACnB,MAAM,EAAE,wCAAwC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,8EAA8E,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG;QACjQ,UAAU,EAAE,CAAC,GAAG,qBAAqB,EAAE,GAAG,kBAAkB,CAAC;QAC7D,OAAO,EAAE,eAAe;QACxB,YAAY,EAAE;YACZ,YAAY,EAAE,qBAAqB;YACnC,gBAAgB,EAAE,kBAAkB;YACpC,wBAAwB,EAAE,eAAe;SAC1C;QACD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,sBAAsB,CAAC,cAA2B;IACzD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IAC9D,OAAO;QACL,EAAE,EAAE,qBAAqB;QACzB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;QAC5C,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC,sGAAsG;YACxG,CAAC,CAAC,uGAAuG;QAC3G,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,CAAC,EAAE;QACpD,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,0BAA0B,CAAC;QACnD,YAAY,EAAE,CAAC,0BAA0B,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,cAA2B;IACtD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IACrD,OAAO;QACL,EAAE,EAAE,iBAAiB;QACrB,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;QAC5C,MAAM,EAAE,MAAM;YACZ,CAAC,CAAC,wEAAwE;YAC1E,CAAC,CAAC,4GAA4G;QAChH,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE;QACzC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC1C,YAAY,EAAE,CAAC,iBAAiB,CAAC;KAClC,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB,CAAC,cAA2B;IACpD,MAAM,kBAAkB,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,EAAE,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAC1I,MAAM,eAAe,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACvG,OAAO;QACL,EAAE,EAAE,eAAe;QACnB,MAAM,EAAE,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU;QAChE,MAAM,EAAE,kBAAkB,CAAC,MAAM,GAAG,CAAC;YACnC,CAAC,CAAC,uDAAuD,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C;YACpI,CAAC,CAAC,iHAAiH;QACrH,UAAU,EAAE,CAAC,GAAG,mBAAmB,EAAE,GAAG,kBAAkB,EAAE,GAAG,cAAc,CAAC;QAC9E,OAAO,EAAE,eAAe;QACxB,YAAY,EAAE;YACZ,mBAAmB,EAAE,mBAAmB;YACxC,uBAAuB,EAAE,kBAAkB;YAC3C,+BAA+B,EAAE,eAAe;YAChD,cAAc,EAAE,cAAc;SAC/B;QACD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,cAA2B;IACtD,MAAM,UAAU,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,cAAc,CAAC,cAAc,EAAE,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAClI,MAAM,OAAO,GAAG,uBAAuB,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IACvF,OAAO;QACL,EAAE,EAAE,iBAAiB;QACrB,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa;QAC3D,MAAM,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC;YAC3B,CAAC,CAAC,0CAA0C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACpE,CAAC,CAAC,2EAA2E;QAC/E,UAAU;QACV,OAAO;QACP,YAAY,EAAE;YACZ,kBAAkB,EAAE,UAAU;YAC9B,eAAe,EAAE,OAAO;SACzB;QACD,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC,IAAI,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB;IAC3B,OAAO,IAAI,GAAG,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;AACrG,CAAC;AAED,SAAS,cAAc,CAAC,cAA2B,EAAE,IAAc;IACjE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,MAAM,CAAC,MAAgB;IAC9B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAE,WAAiC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC"}
import type { CapabilityProfile } from './capabilityProfile.js';
import type { SkillStatusResult } from '../skills/SkillInstaller.js';
export type SmokeSeverity = 'critical' | 'degraded' | 'warning' | 'skipped';
export type SmokeCaseStatus = 'passed' | 'failed' | 'skipped';
export interface SmokeCase {
name: string;
ok: boolean;
severity: SmokeSeverity;
status: SmokeCaseStatus;
message: string;
remediation?: string;
configured?: boolean;
enabled?: boolean;
skipped?: boolean;
tool?: string;
data?: unknown;
}
export interface LiveSmokeResult {
ok: boolean;
mode: 'live';
cases: SmokeCase[];
failedCases: SmokeCase[];
degradedCases: SmokeCase[];
severityCounts: Record<SmokeSeverity, number>;
capabilityProfile: CapabilityProfile;
skillStatus?: SkillStatusResult;
nextSteps: string[];
exitCode: number;
}
export interface LiveSmokeRunner {
callTool(tool: string, args: Record<string, unknown>): Promise<{
ok: boolean;
message?: string;
data?: unknown;
}>;
capabilityProfile: CapabilityProfile;
skillStatus?: SkillStatusResult;
hasConfig(key: string): boolean;
}
export declare function runLiveSmoke(runner: LiveSmokeRunner): Promise<LiveSmokeResult>;
export declare function summarizeLiveSmoke(cases: SmokeCase[], capabilityProfile: CapabilityProfile, skillStatus?: SkillStatusResult): LiveSmokeResult;
//# sourceMappingURL=liveSmoke.d.ts.map
{"version":3,"file":"liveSmoke.d.ts","sourceRoot":"","sources":["../../src/core/liveSmoke.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,CAAC;AAC5E,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAE9D,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,WAAW,EAAE,SAAS,EAAE,CAAC;IACzB,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC9C,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAClH,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,WAAW,CAAC,EAAE,iBAAiB,CAAC;IAChC,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAkBD,wBAAsB,YAAY,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,eAAe,CAAC,CAoEpF;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,SAAS,EAAE,EAClB,iBAAiB,EAAE,iBAAiB,EACpC,WAAW,CAAC,EAAE,iBAAiB,GAC9B,eAAe,CAkCjB"}
export async function runLiveSmoke(runner) {
const checks = buildLiveSmokeChecks(runner.hasConfig);
const cases = [];
for (const check of checks) {
if (check.skipWhen) {
const severity = check.configured || check.enabled ? check.severity : 'skipped';
cases.push({
name: check.name,
ok: true,
severity,
status: 'skipped',
skipped: true,
configured: check.configured,
enabled: check.enabled,
tool: check.tool,
message: check.skipMessage || 'Skipped.',
remediation: severity === 'skipped' ? undefined : check.remediation,
data: check.data
});
continue;
}
if (!check.tool) {
cases.push({
name: check.name,
ok: true,
severity: check.severity,
status: 'passed',
configured: check.configured,
enabled: check.enabled,
message: check.passMessage,
data: check.data
});
continue;
}
try {
const result = await runner.callTool(check.tool, check.args || {});
const passed = result.ok && (check.validate ? check.validate(result) : true);
cases.push({
name: check.name,
ok: passed,
severity: check.severity,
status: passed ? 'passed' : 'failed',
configured: check.configured,
enabled: check.enabled,
tool: check.tool,
message: passed ? check.passMessage : `${check.failMessage}: ${result.message || 'no result message'}`,
remediation: passed ? undefined : check.remediation,
data: result.data
});
}
catch (error) {
cases.push({
name: check.name,
ok: false,
severity: check.severity,
status: 'failed',
configured: check.configured,
enabled: check.enabled,
tool: check.tool,
message: `${check.failMessage}: ${error?.message || String(error)}`,
remediation: check.remediation
});
}
}
return summarizeLiveSmoke(cases, runner.capabilityProfile, runner.skillStatus);
}
export function summarizeLiveSmoke(cases, capabilityProfile, skillStatus) {
const severityCounts = {
critical: 0,
degraded: 0,
warning: 0,
skipped: 0
};
for (const item of cases) {
if (!item.ok || item.status === 'skipped') {
severityCounts[item.severity] += 1;
}
}
const failedCases = cases.filter(item => !item.ok && item.severity === 'critical');
const degradedCases = cases.filter(item => !item.ok && item.severity === 'degraded');
const nextSteps = [
'Review degraded cases and run the listed remediation commands if a configured capability should work.',
'Run "paper-search doctor --pretty" to inspect masked configuration and capability profile.',
'Run "paper-search config list --pretty" to confirm key sources without exposing raw secrets.'
];
return {
ok: failedCases.length === 0,
mode: 'live',
cases,
failedCases,
degradedCases,
severityCounts,
capabilityProfile,
skillStatus,
nextSteps,
exitCode: failedCases.length > 0 ? 1 : 0
};
}
function buildLiveSmokeChecks(hasConfig) {
const hasSemantic = hasConfig('SEMANTIC_SCHOLAR_API_KEY');
const hasEasyScholar = hasConfig('EASYSCHOLAR_KEY');
const hasWos = hasConfig('WOS_API_KEY');
const hasElsevier = hasConfig('ELSEVIER_API_KEY');
const hasSpringer = hasConfig('SPRINGER_API_KEY');
const hasIeee = hasConfig('IEEE_API_KEY');
const hasWiley = hasConfig('WILEY_TDM_TOKEN');
return [
{
name: 'free metadata search (Crossref)',
tool: 'search_crossref',
args: { query: 'machine learning', maxResults: 1 },
severity: 'critical',
passMessage: 'Free metadata search returned a live response.',
failMessage: 'Free metadata search failed',
remediation: 'Check network/proxy settings, then rerun `paper-search search "machine learning" --platform crossref --max-results 1 --pretty`.'
},
{
name: 'Sci-Hub availability fallback',
tool: 'check_scihub_mirrors',
args: { forceCheck: true },
severity: 'degraded',
enabled: true,
passMessage: 'Sci-Hub fallback is enabled and at least one mirror is reachable.',
failMessage: 'Sci-Hub fallback is enabled, but no mirror passed the lightweight availability check',
remediation: 'Check local network access to Sci-Hub mirrors, proxy settings, or rerun later. Live smoke does not download PDFs.',
validate: result => Array.isArray(result.data) && result.data.some((item) => item?.status === 'Working')
},
{
name: 'Semantic Scholar snippet capability',
tool: 'search_semantic_snippets',
args: { query: 'machine learning', limit: 1 },
severity: 'degraded',
configured: hasSemantic,
skipWhen: !hasSemantic,
skipMessage: 'SEMANTIC_SCHOLAR_API_KEY is not configured; body snippet live check skipped.',
passMessage: 'SEMANTIC_SCHOLAR_API_KEY is configured and snippet search responded.',
failMessage: 'SEMANTIC_SCHOLAR_API_KEY is configured, but snippet search could not be verified',
remediation: 'Run `paper-search config get SEMANTIC_SCHOLAR_API_KEY --pretty`, confirm the key is valid and has quota, then rerun `paper-search run search_semantic_snippets --arg query="machine learning" --arg limit=1 --pretty`.'
},
{
name: 'EasyScholar journal metrics',
tool: 'query_journal_metrics',
args: { journals: ['Nature'] },
severity: 'degraded',
configured: hasEasyScholar,
skipWhen: !hasEasyScholar,
skipMessage: 'EASYSCHOLAR_KEY is not configured; journal metrics live check skipped.',
passMessage: 'EASYSCHOLAR_KEY is configured and journal metrics responded.',
failMessage: 'EASYSCHOLAR_KEY is configured, but journal metrics could not be verified',
remediation: 'Run `paper-search config get EASYSCHOLAR_KEY --pretty`, confirm the EasyScholar SecretKey is valid, then rerun `paper-search journal-metrics "Nature" --pretty`.'
},
{
name: 'Web of Science metadata',
tool: 'search_webofscience',
args: { query: 'machine learning', maxResults: 1 },
severity: 'degraded',
configured: hasWos,
skipWhen: !hasWos,
skipMessage: 'WOS_API_KEY is not configured; Web of Science live check skipped.',
passMessage: 'WOS_API_KEY is configured and Web of Science metadata responded.',
failMessage: 'WOS_API_KEY is configured, but Web of Science metadata could not be verified',
remediation: 'Run `paper-search config get WOS_API_KEY --pretty`, confirm Clarivate API entitlement/version, then rerun `paper-search run search_webofscience --arg query="machine learning" --arg maxResults=1 --pretty`.'
},
{
name: 'ScienceDirect metadata',
tool: 'search_sciencedirect',
args: { query: 'machine learning', maxResults: 1 },
severity: 'degraded',
configured: hasElsevier,
skipWhen: !hasElsevier,
skipMessage: 'ELSEVIER_API_KEY is not configured; ScienceDirect live check skipped.',
passMessage: 'ELSEVIER_API_KEY is configured and ScienceDirect metadata responded.',
failMessage: 'ELSEVIER_API_KEY is configured, but ScienceDirect metadata could not be verified',
remediation: 'Run `paper-search config get ELSEVIER_API_KEY --pretty`, confirm Elsevier product entitlement, then rerun `paper-search run search_sciencedirect --arg query="machine learning" --arg maxResults=1 --pretty`.'
},
{
name: 'Scopus metadata',
tool: 'search_scopus',
args: { query: 'machine learning', maxResults: 1 },
severity: 'degraded',
configured: hasElsevier,
skipWhen: !hasElsevier,
skipMessage: 'ELSEVIER_API_KEY is not configured; Scopus live check skipped.',
passMessage: 'ELSEVIER_API_KEY is configured and Scopus metadata responded.',
failMessage: 'ELSEVIER_API_KEY is configured, but Scopus metadata could not be verified',
remediation: 'Confirm the Elsevier key has Scopus entitlement; ScienceDirect access does not automatically imply Scopus access.'
},
{
name: 'Springer metadata',
tool: 'search_springer',
args: { query: 'machine learning', maxResults: 1 },
severity: 'degraded',
configured: hasSpringer,
skipWhen: !hasSpringer,
skipMessage: 'SPRINGER_API_KEY is not configured; Springer live check skipped.',
passMessage: 'SPRINGER_API_KEY is configured and Springer metadata responded.',
failMessage: 'SPRINGER_API_KEY is configured, but Springer metadata could not be verified',
remediation: 'Run `paper-search config get SPRINGER_API_KEY --pretty`, confirm Springer API entitlement, then rerun `paper-search run search_springer --arg query="machine learning" --arg maxResults=1 --pretty`.'
},
{
name: 'IEEE metadata',
tool: 'search_ieee',
args: { query: 'machine learning', maxResults: 1 },
severity: 'degraded',
configured: hasIeee,
skipWhen: !hasIeee,
skipMessage: 'IEEE_API_KEY is not configured; IEEE live check skipped.',
passMessage: 'IEEE_API_KEY is configured and IEEE metadata responded.',
failMessage: 'IEEE_API_KEY is configured, but IEEE metadata could not be verified',
remediation: 'Run `paper-search config get IEEE_API_KEY --pretty`, confirm IEEE Xplore API entitlement, then rerun `paper-search run search_ieee --arg query="machine learning" --arg maxResults=1 --pretty`.'
},
{
name: 'Wiley TDM token',
severity: 'warning',
configured: hasWiley,
skipWhen: true,
skipMessage: hasWiley
? 'WILEY_TDM_TOKEN is configured, but live smoke avoids Wiley DOI/full-text download checks.'
: 'WILEY_TDM_TOKEN is not configured; Wiley live check skipped.',
passMessage: 'Wiley TDM live smoke skipped.',
failMessage: 'Wiley TDM live smoke skipped',
remediation: 'Use `paper-search download <doi> --platform wiley --pretty` only when you intentionally want to test Wiley DOI download access.'
}
];
}
//# sourceMappingURL=liveSmoke.js.map
{"version":3,"file":"liveSmoke.js","sourceRoot":"","sources":["../../src/core/liveSmoke.ts"],"names":[],"mappings":"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"}
import type { CapabilityProfile } from './capabilityProfile.js';
import type { SkillDiffResult } from '../skills/SkillInstaller.js';
interface DoctorReportInput {
config: {
path: string;
configured: number;
missing: string[];
entries: Array<{
key: string;
configured: boolean;
source: string;
value: string;
}>;
};
capabilityProfile: CapabilityProfile;
platformStatus: any;
}
export declare function renderDoctorTextReport(report: DoctorReportInput): string;
export declare function renderSkillDiffTextReport(report: SkillDiffResult): string;
export {};
//# sourceMappingURL=textReports.d.ts.map
{"version":3,"file":"textReports.d.ts","sourceRoot":"","sources":["../../src/core/textReports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAEnE,UAAU,iBAAiB;IACzB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,KAAK,CAAC;YAAE,GAAG,EAAE,MAAM,CAAC;YAAC,UAAU,EAAE,OAAO,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;KACrF,CAAC;IACF,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,cAAc,EAAE,GAAG,CAAC;CACrB;AAED,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CA6CxE;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,eAAe,GAAG,MAAM,CAsCzE"}
export function renderDoctorTextReport(report) {
const lines = [
'Paper Search Doctor',
'',
`Config: ${report.config.path}`,
`Configured keys: ${report.config.configured}`,
`Missing keys: ${report.config.missing.length}`,
''
];
const configuredEntries = report.config.entries.filter(entry => entry.configured);
if (configuredEntries.length > 0) {
lines.push('Configured:');
for (const entry of configuredEntries) {
lines.push(`- ${entry.key}: ${entry.value} (${entry.source})`);
}
lines.push('');
}
lines.push('Capability Profile:');
for (const entry of report.capabilityProfile.entries) {
lines.push(`- ${entry.id}: ${entry.status}`);
lines.push(` Reason: ${entry.reason}`);
if (entry.missing.length > 0) {
lines.push(` Missing: ${entry.missing.join(', ')}`);
}
}
lines.push('');
const platformData = report.platformStatus?.data;
if (Array.isArray(platformData)) {
const counts = countBy(platformData, item => String(item.apiKeyStatus || 'unknown'));
lines.push('Platform API key status:');
for (const [status, count] of Object.entries(counts).sort()) {
lines.push(`- ${status}: ${count}`);
}
lines.push('');
}
lines.push('Next commands:');
lines.push('- paper-search smoke --mock --pretty');
lines.push('- paper-search smoke --live --pretty');
lines.push('- paper-search skills status --pretty');
return lines.join('\n');
}
export function renderSkillDiffTextReport(report) {
const lines = [
'Paper Search Skill Diff',
'',
`Skill: ${report.skill}`,
`Root: ${report.root}`,
`Targets: ${report.selected.join(', ') || '(none)'}`,
''
];
for (const target of report.targets) {
lines.push(`${target.target} (${target.label})`);
lines.push(`Path: ${target.path}`);
lines.push(`Status: ${target.status}`);
lines.push(`Managed files: ${target.files}; installed files: ${target.installedFiles}`);
if (target.error) {
lines.push(`Error: ${target.error}`);
}
if (target.missingFiles.length > 0) {
lines.push(`Missing managed files: ${target.missingFiles.join(', ')}`);
}
if (target.staleFiles.length > 0) {
lines.push(`Stale managed files: ${target.staleFiles.join(', ')}`);
}
if (target.extraFiles.length > 0) {
lines.push(`Extra Skill Files (${target.extraFiles.length}, names only): ${target.extraFiles.join(', ')}`);
}
const diffs = target.managedFiles.filter(file => file.status === 'stale' && file.diff);
for (const diff of diffs) {
lines.push('');
lines.push(String(diff.diff));
}
lines.push('');
}
return lines.join('\n').trimEnd();
}
function countBy(items, getKey) {
const counts = {};
for (const item of items) {
const key = getKey(item);
counts[key] = (counts[key] || 0) + 1;
}
return counts;
}
//# sourceMappingURL=textReports.js.map
{"version":3,"file":"textReports.js","sourceRoot":"","sources":["../../src/core/textReports.ts"],"names":[],"mappings":"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"}
export declare const SKILL_NAME = "paper-search";
export interface SkillTarget {
id: string;
label: string;
relativeRoot: string;
}
export interface SkillTargetStatus {
target: string;
label: string;
path: string;
status: 'missing' | 'up_to_date' | 'stale' | 'extra_files' | 'error';
files: number;
installedFiles: number;
bundledHash: string;
installedHash: string;
hashMatch: boolean;
managedHashMatch: boolean;
extraFiles: string[];
missingFiles: string[];
staleFiles: string[];
error?: string;
}
export interface SkillStatusResult {
ok: boolean;
root: string;
skill: string;
selected: string[];
bundledFiles: number;
bundledHash: string;
targets: SkillTargetStatus[];
statusCounts: Record<string, number>;
}
export interface SkillInstallResult {
ok: boolean;
root: string;
skill: string;
selected: string[];
installed: Array<{
target: string;
label: string;
path: string;
files: number;
}>;
failed: Array<{
target: string;
label: string;
path: string;
error: string;
}>;
installedCount: number;
failedCount: number;
status: SkillStatusResult;
}
export interface SkillManagedFileDiff {
file: string;
status: 'missing' | 'stale' | 'up_to_date';
bundledHash: string;
installedHash: string;
diff?: string;
}
export interface SkillTargetDiff {
target: string;
label: string;
path: string;
status: SkillTargetStatus['status'];
files: number;
installedFiles: number;
bundledHash: string;
installedHash: string;
hashMatch: boolean;
managedHashMatch: boolean;
managedFiles: SkillManagedFileDiff[];
extraFiles: string[];
missingFiles: string[];
staleFiles: string[];
error?: string;
}
export interface SkillDiffResult {
ok: boolean;
root: string;
skill: string;
selected: string[];
bundledFiles: number;
bundledHash: string;
targets: SkillTargetDiff[];
statusCounts: Record<string, number>;
}
export declare const SKILL_TARGETS: SkillTarget[];
export declare function defaultSkillTargetIds(root?: string): string[];
export declare function parseSkillTargets(raw: string, root?: string): string[];
export declare function describeSkillTargets(targetIds: string[], root?: string): Array<{
target: string;
label: string;
path: string;
}>;
export declare function statusSkillTargets(targetIds: string[], options?: {
skillsRoot?: string;
sourceRoot?: string;
}): SkillStatusResult;
export declare function installSkillTargets(targetIds: string[], options?: {
skillsRoot?: string;
sourceRoot?: string;
}): SkillInstallResult;
export declare function diffSkillTargets(targetIds: string[], options?: {
skillsRoot?: string;
sourceRoot?: string;
}): SkillDiffResult;
//# sourceMappingURL=SkillInstaller.d.ts.map
{"version":3,"file":"SkillInstaller.d.ts","sourceRoot":"","sources":["../../src/skills/SkillInstaller.ts"],"names":[],"mappings":"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"}
import { createHash } from 'crypto';
import { existsSync, mkdirSync, readdirSync, readFileSync, realpathSync, statSync, writeFileSync } from 'fs';
import { homedir } from 'os';
import { dirname, join, relative, resolve, sep } from 'path';
export const SKILL_NAME = 'paper-search';
export const SKILL_TARGETS = [
{ id: 'agents', label: 'Agents shared skills', relativeRoot: '.agents/skills' },
{ id: 'codex', label: 'Codex', relativeRoot: '.codex/skills' },
{ id: 'claude', label: 'Claude Code', relativeRoot: '.claude/skills' },
{ id: 'cursor', label: 'Cursor', relativeRoot: '.cursor/skills' },
{ id: 'gemini', label: 'Gemini CLI', relativeRoot: '.gemini/skills' },
{ id: 'antigravity', label: 'Antigravity', relativeRoot: '.gemini/antigravity/skills' }
];
const TARGET_BY_ID = new Map(SKILL_TARGETS.map(target => [target.id, target]));
const TARGET_ALIASES = new Map([
['agent', 'agents'],
['shared', 'agents'],
['agent-skills', 'agents'],
['claude-code', 'claude']
]);
export function defaultSkillTargetIds(root = homedir()) {
const agentsRoot = join(resolve(root), '.agents', 'skills');
return existsSync(agentsRoot) ? ['agents'] : ['codex', 'claude', 'cursor'];
}
export function parseSkillTargets(raw, root = homedir()) {
const text = raw.trim();
if (!text)
return defaultSkillTargetIds(root);
const tokens = text
.replace(/[;+]/g, ',')
.split(',')
.flatMap(part => part.trim().split(/\s+/))
.map(part => part.trim().toLowerCase())
.filter(Boolean);
const selected = [];
const invalid = [];
for (const token of tokens) {
if (['skip', 'none', 'no', 'n', '跳过', '无', '否'].includes(token))
return [];
if (['all', '全部'].includes(token))
return SKILL_TARGETS.map(target => target.id);
const targetId = TARGET_ALIASES.get(token) || token;
if (!TARGET_BY_ID.has(targetId)) {
invalid.push(token);
continue;
}
if (!selected.includes(targetId))
selected.push(targetId);
}
if (invalid.length > 0) {
throw new Error(`Unknown skill target(s): ${invalid.join(', ')}. Valid targets: ${SKILL_TARGETS.map(target => target.id).join(', ')}`);
}
return selected;
}
export function describeSkillTargets(targetIds, root = homedir()) {
const base = resolve(root);
return targetIds.map(targetId => {
const target = getSkillTarget(targetId);
return {
target: target.id,
label: target.label,
path: skillDestination(target, base)
};
});
}
export function statusSkillTargets(targetIds, options = {}) {
const root = resolve(options.skillsRoot || homedir());
const files = loadSkillFiles(options.sourceRoot);
const sourceByPath = new Map(files.map(([relPath, content]) => [relPath, content]));
const bundledHash = skillDigest(files);
const targets = [];
for (const targetId of targetIds) {
const target = getSkillTarget(targetId);
const dest = skillDestination(target, root);
const item = {
target: target.id,
label: target.label,
path: dest,
status: 'missing',
files: files.length,
installedFiles: 0,
bundledHash,
installedHash: '',
hashMatch: false,
managedHashMatch: false,
extraFiles: [],
missingFiles: [...sourceByPath.keys()].sort(),
staleFiles: []
};
try {
if (!existsSync(dest)) {
targets.push(item);
continue;
}
if (!statSync(dest).isDirectory()) {
item.status = 'error';
item.error = 'Installed skill path exists but is not a directory.';
targets.push(item);
continue;
}
const installedFiles = iterFilesystemFiles(dest);
const installedByPath = new Map(installedFiles.map(([relPath, content]) => [relPath, content]));
const missingFiles = [...sourceByPath.keys()].filter(relPath => !installedByPath.has(relPath)).sort();
const staleFiles = [...sourceByPath.entries()]
.filter(([relPath, content]) => installedByPath.has(relPath) && !installedByPath.get(relPath)?.equals(content))
.map(([relPath]) => relPath)
.sort();
const extraFiles = [...installedByPath.keys()].filter(relPath => !sourceByPath.has(relPath)).sort();
const managedHashMatch = missingFiles.length === 0 && staleFiles.length === 0;
const hashMatch = managedHashMatch && extraFiles.length === 0;
item.installedFiles = installedFiles.length;
item.installedHash = installedFiles.length > 0 ? skillDigest(installedFiles) : '';
item.missingFiles = missingFiles;
item.staleFiles = staleFiles;
item.extraFiles = extraFiles;
item.managedHashMatch = managedHashMatch;
item.hashMatch = hashMatch;
item.status = missingFiles.length || staleFiles.length ? 'stale' : extraFiles.length ? 'extra_files' : 'up_to_date';
}
catch (error) {
item.status = 'error';
item.error = error?.message || String(error);
}
targets.push(item);
}
const statusCounts = {};
for (const target of targets) {
statusCounts[target.status] = (statusCounts[target.status] || 0) + 1;
}
return {
ok: targets.every(target => target.status !== 'error'),
root,
skill: SKILL_NAME,
selected: targetIds,
bundledFiles: files.length,
bundledHash,
targets,
statusCounts
};
}
export function installSkillTargets(targetIds, options = {}) {
const root = resolve(options.skillsRoot || homedir());
const files = loadSkillFiles(options.sourceRoot);
const installed = [];
const failed = [];
for (const targetId of targetIds) {
const target = getSkillTarget(targetId);
const dest = skillDestination(target, root);
try {
for (const [relPath, content] of files) {
const filePath = join(dest, relPath);
mkdirSync(dirname(filePath), { recursive: true });
writeFileSync(filePath, content);
}
installed.push({ target: target.id, label: target.label, path: dest, files: files.length });
}
catch (error) {
failed.push({ target: target.id, label: target.label, path: dest, error: error?.message || String(error) });
}
}
const status = statusSkillTargets(targetIds, options);
return {
ok: failed.length === 0 && status.ok,
root,
skill: SKILL_NAME,
selected: targetIds,
installed,
failed,
installedCount: installed.length,
failedCount: failed.length,
status
};
}
export function diffSkillTargets(targetIds, options = {}) {
const root = resolve(options.skillsRoot || homedir());
const files = loadSkillFiles(options.sourceRoot);
const sourceByPath = new Map(files.map(([relPath, content]) => [relPath, content]));
const bundledHash = skillDigest(files);
const targets = [];
for (const targetId of targetIds) {
const target = getSkillTarget(targetId);
const dest = skillDestination(target, root);
const item = {
target: target.id,
label: target.label,
path: dest,
status: 'missing',
files: files.length,
installedFiles: 0,
bundledHash,
installedHash: '',
hashMatch: false,
managedHashMatch: false,
managedFiles: [...sourceByPath.entries()].map(([relPath, content]) => ({
file: relPath,
status: 'missing',
bundledHash: bufferDigest(content),
installedHash: ''
})),
extraFiles: [],
missingFiles: [...sourceByPath.keys()].sort(),
staleFiles: []
};
try {
if (!existsSync(dest)) {
targets.push(item);
continue;
}
if (!statSync(dest).isDirectory()) {
item.status = 'error';
item.error = 'Installed skill path exists but is not a directory.';
targets.push(item);
continue;
}
const installedFiles = iterFilesystemFiles(dest);
const installedByPath = new Map(installedFiles.map(([relPath, content]) => [relPath, content]));
const managedFiles = [...sourceByPath.entries()].map(([relPath, bundled]) => {
const installed = installedByPath.get(relPath);
if (!installed) {
return {
file: relPath,
status: 'missing',
bundledHash: bufferDigest(bundled),
installedHash: ''
};
}
if (!installed.equals(bundled)) {
return {
file: relPath,
status: 'stale',
bundledHash: bufferDigest(bundled),
installedHash: bufferDigest(installed),
diff: unifiedManagedDiff(relPath, installed, bundled)
};
}
return {
file: relPath,
status: 'up_to_date',
bundledHash: bufferDigest(bundled),
installedHash: bufferDigest(installed)
};
});
const missingFiles = managedFiles.filter(file => file.status === 'missing').map(file => file.file).sort();
const staleFiles = managedFiles.filter(file => file.status === 'stale').map(file => file.file).sort();
const extraFiles = [...installedByPath.keys()].filter(relPath => !sourceByPath.has(relPath)).sort();
const managedHashMatch = missingFiles.length === 0 && staleFiles.length === 0;
const hashMatch = managedHashMatch && extraFiles.length === 0;
item.installedFiles = installedFiles.length;
item.installedHash = installedFiles.length > 0 ? skillDigest(installedFiles) : '';
item.managedFiles = managedFiles.sort((a, b) => a.file.localeCompare(b.file));
item.missingFiles = missingFiles;
item.staleFiles = staleFiles;
item.extraFiles = extraFiles;
item.managedHashMatch = managedHashMatch;
item.hashMatch = hashMatch;
item.status = missingFiles.length || staleFiles.length ? 'stale' : extraFiles.length ? 'extra_files' : 'up_to_date';
}
catch (error) {
item.status = 'error';
item.error = error?.message || String(error);
}
targets.push(item);
}
const statusCounts = {};
for (const target of targets) {
statusCounts[target.status] = (statusCounts[target.status] || 0) + 1;
}
return {
ok: targets.every(target => target.status !== 'error'),
root,
skill: SKILL_NAME,
selected: targetIds,
bundledFiles: files.length,
bundledHash,
targets,
statusCounts
};
}
function getSkillTarget(targetId) {
const target = TARGET_BY_ID.get(targetId);
if (!target) {
throw new Error(`Unknown skill target: ${targetId}. Valid targets: ${SKILL_TARGETS.map(item => item.id).join(', ')}`);
}
return target;
}
function skillDestination(target, root) {
return join(root, target.relativeRoot, SKILL_NAME);
}
function loadSkillFiles(sourceRoot) {
const root = sourceRoot ? resolve(sourceRoot) : bundledSkillRoot();
if (!existsSync(root) || !statSync(root).isDirectory()) {
throw new Error(`Skill source directory not found: ${root}`);
}
const files = iterFilesystemFiles(root);
if (files.length === 0) {
throw new Error(`Skill source directory is empty: ${root}`);
}
return files;
}
function bundledSkillRoot() {
const explicit = process.env.PAPER_SEARCH_SKILL_SOURCE_ROOT;
const candidates = [
explicit ? resolve(explicit) : '',
resolve(process.cwd(), 'skills', SKILL_NAME),
...entrypointSkillCandidates()
].filter(Boolean);
const found = candidates.find(candidate => existsSync(candidate) && statSync(candidate).isDirectory());
if (!found)
return candidates[0] || resolve(process.cwd(), 'skills', SKILL_NAME);
return found;
}
function entrypointSkillCandidates() {
const entry = process.argv[1];
if (!entry)
return [];
const entryPath = existsSync(entry) ? realpathSync(entry) : resolve(entry);
const entryDir = dirname(entryPath);
return [
resolve(entryDir, '..', 'skills', SKILL_NAME),
resolve(entryDir, 'skills', SKILL_NAME)
];
}
function iterFilesystemFiles(root) {
const files = [];
function visit(dir) {
for (const name of readdirSync(dir)) {
const path = join(dir, name);
const stats = statSync(path);
if (stats.isDirectory()) {
visit(path);
}
else if (stats.isFile()) {
files.push([relative(root, path).split(sep).join('/'), readFileSync(path)]);
}
}
}
visit(root);
return files.sort(([a], [b]) => a.localeCompare(b));
}
function skillDigest(files) {
const hash = createHash('sha256');
for (const [relPath, content] of [...files].sort(([a], [b]) => a.localeCompare(b))) {
hash.update(relPath);
hash.update('\0');
hash.update(content);
hash.update('\0');
}
return hash.digest('hex');
}
function bufferDigest(content) {
return createHash('sha256').update(content).digest('hex');
}
function unifiedManagedDiff(relPath, installed, bundled) {
if (hasBinaryByte(installed) || hasBinaryByte(bundled)) {
return [
`--- installed/${relPath}`,
`+++ bundled/${relPath}`,
'@@',
'-[binary content differs]',
'+[binary content differs]'
].join('\n');
}
const installedLines = splitLines(installed.toString('utf8'));
const bundledLines = splitLines(bundled.toString('utf8'));
const lines = [
`--- installed/${relPath}`,
`+++ bundled/${relPath}`,
'@@'
];
for (const line of installedLines) {
lines.push(`-${line}`);
}
for (const line of bundledLines) {
lines.push(`+${line}`);
}
return lines.join('\n');
}
function hasBinaryByte(content) {
return content.includes(0);
}
function splitLines(text) {
if (!text)
return [''];
const lines = text.split(/\r?\n/);
if (lines[lines.length - 1] === '')
lines.pop();
return lines;
}
//# sourceMappingURL=SkillInstaller.js.map
{"version":3,"file":"SkillInstaller.js","sourceRoot":"","sources":["../../src/skills/SkillInstaller.ts"],"names":[],"mappings":"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"}
# Paper Search CLI
简体中文 | [English](README.md)
Paper Search CLI 是一个面向 AI agent 的 Skill + CLI 包,基于独立的 Node.js 命令行工具构建,用于学术文献工作。它为 AI agent、终端用户和脚本提供一个可复现的命令层,并通过 agent 友好的 JSON 输出覆盖文献元数据检索、期刊指标检索、PDF 获取/下载和论文正文片段检索。
![Node.js](https://img.shields.io/badge/node.js->=18.0.0-green.svg)
![TypeScript](https://img.shields.io/badge/typescript-^5.5.3-blue.svg)
![License](https://img.shields.io/badge/license-MIT-blue.svg)
![Platforms](https://img.shields.io/badge/platforms-25-brightgreen.svg)
![Version](https://img.shields.io/badge/version-0.3.0-blue.svg)
[![LinuxDo](https://img.shields.io/badge/LinuxDo-community-1f6feb)](https://linux.do)
[快速开始](#快速开始) | [架构说明](#架构说明) | [配置](#配置) | [Agent Skill](#agent-skill) | [支持平台](#支持平台) | [命令](#命令) | [排障](#排障)
## 核心功能
| 功能 | 主要命令 | 返回内容 |
| --- | --- | --- |
| 文献元数据检索 | `paper-search search`, `paper-search run search_*` | 题名、作者、年份、期刊、DOI、PMID/PMCID、arXiv ID、URL、摘要和来源元数据 |
| 期刊指标检索 | `paper-search journal-metrics`, `paper-search run query_journal_metrics` | 影响因子、5 年 IF、JCR/SSCI 分区、中科院分区、JCI、ESI、预警和等级字段 |
| PDF 获取和下载 | `paper-search download`, `paper-search run download_with_fallback` | 通过原生来源、开放获取、已配置权限来源和启用时的 Sci-Hub fallback 获取 PDF |
| 正文片段检索 | `paper-search run search_semantic_snippets` | Semantic Scholar Open Access 正文片段,用于查方法、参数和写法线索 |
## 架构说明
`paper-search` 不是 MCP Server,而是普通 CLI。AI 工具可以通过随包发布的 Skill 调用它,终端用户和脚本也可以直接调用同一个 `paper-search` 命令。
| 层 | 负责什么 |
| --- | --- |
| CLI 本体 | 执行文献检索、期刊指标检索、PDF 获取/下载、正文片段检索和稳定 JSON 输出 |
| Bundled Skill | 随包发布 `skills/paper-search`,提供 agent 路由规则和 focused references;不保存密钥、cookie 或账号信息 |
| Friendly Management Layer | 围绕四个主要能力 `metadata_search`、`journal_metrics`、`pdf_discovery`、`body_snippet_search` 提供 `doctor`、`smoke`、`skills`、`config`、`tools`。`doctor` 健康报告包含脱敏配置、Capability Profile、平台/来源状态、缺失项和降级项;`smoke` 检查命令入口连通性和 live 可用性;`skills` 负责同步随包发布的 Skill |
四个主要能力由 CLI 本体执行,由管理层报告和检查。Capability Profile 也会报告 `entitled_access`,让用户看到出版商 API key、数据库 key、TDM token 或机构权限是否已配置。某一个能力缺少配置或降级,不会导致其他独立能力不可用。
## 快速开始
要求 Node.js >= 18.0.0 和 npm。
```bash
npm install -g paper-search-cli
paper-search setup
paper-search doctor --pretty
```
尝试四个主要功能:
```bash
paper-search search "machine learning clinical prediction" --platform crossref --max-results 3 --pretty
paper-search journal-metrics "Nature" "BMJ" --pretty
paper-search download 10.48550/arxiv.1201.0490 --platform arxiv --save-path ./downloads
paper-search run search_semantic_snippets --arg query="propensity score matching" --arg maxResults=3 --pretty
```
常用检查:
```bash
paper-search tools --pretty
paper-search doctor --format text
paper-search smoke --mock --pretty
paper-search skills status --pretty
```
## 支持平台
平台组表适合快速选来源;下面的能力矩阵用于更清楚地判断每个平台实际能做什么。
### 平台组
| 平台组 | 平台 | 主要用途 |
| --- | --- | --- |
| 综合学术元数据 | Crossref, OpenAlex, Semantic Scholar, Google Scholar | 广覆盖发现、DOI 元数据、引用线索、文献初筛 |
| 期刊指标 | EasyScholar | 影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警 |
| 生物医学和生命科学 | PubMed, PubMed Central, Europe PMC | 生物医学元数据、PMID/PMCID 核验、开放全文 |
| 预印本和会议稿 | arXiv, bioRxiv, medRxiv, OpenReview, IACR ePrint | 预印本、AI/ML 投稿、密码学 ePrint |
| 计算机和工程 | DBLP, ACM metadata, IEEE Xplore, USENIX | CS 目录、工程元数据、会议论文 |
| 开放获取和仓储 | CORE, OpenAIRE, Unpaywall | 仓储发现和开放获取 PDF fallback |
| 引文库和出版商 | Web of Science, Scopus, ScienceDirect, Springer Nature/SpringerLink, Wiley | 机构权限元数据、出版商记录、entitled access |
| DOI 定向 fallback | Sci-Hub | 启用时作为 DOI 定向 PDF fallback |
### 能力矩阵
#### 综合学术元数据
| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 |
| --- | --- | --- | --- | --- | --- | --- |
| Crossref | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 | ❌ 不需要 | 默认广覆盖元数据来源 |
| OpenAlex | ✅ 支持 | 🟡 条件支持 | ❌ 不支持 | ✅ 支持 | ❌ 不需要 | 免费元数据;记录含 OA 链接时可帮助 PDF fallback |
| Semantic Scholar | ✅ 支持 | 🟡 条件支持 | ✅ 正文片段 | ✅ 支持 | 🟡 可选;正文片段需要 `SEMANTIC_SCHOLAR_API_KEY` | 适合 AI/CS 和正文片段线索 |
| Google Scholar | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 | ❌ 不需要 | 基于页面解析的广覆盖发现 |
#### 期刊指标
| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 |
| --- | --- | --- | --- | --- | --- | --- |
| EasyScholar | 🟡 仅期刊指标 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | ✅ 必需 `EASYSCHOLAR_KEY` | 影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警和等级字段 |
#### 生物医学和生命科学
| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 |
| --- | --- | --- | --- | --- | --- | --- |
| PubMed | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | 🟡 可选 `PUBMED_API_KEY`, `NCBI_EMAIL`, `NCBI_TOOL` | NCBI E-utilities 生物医学元数据 |
| PubMed Central | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不需要 | 生物医学开放全文和 PMC PDF |
| Europe PMC | ✅ 支持 | 🟡 条件支持 | 🟡 条件支持 | ❌ 不支持 | ❌ 不需要 | 生物医学元数据和开放全文链接 |
#### 预印本和会议稿
| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 |
| --- | --- | --- | --- | --- | --- | --- |
| arXiv | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不需要 | 物理、计算机、数学等预印本 |
| bioRxiv | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不需要 | 生物学预印本 |
| medRxiv | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不需要 | 医学预印本 |
| OpenReview | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不需要 | 公开 OpenReview notes、评审和投稿记录 |
| IACR ePrint | ✅ 支持 | ✅ 支持 | ✅ 支持 | ❌ 不支持 | ❌ 不需要 | 密码学 ePrint 论文 |
#### 计算机和工程
| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 |
| --- | --- | --- | --- | --- | --- | --- |
| DBLP | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不需要 | 官方 DBLP 计算机文献目录 |
| ACM metadata | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 | ❌ 不需要 | 通过 Crossref 的 ACM DOI 前缀元数据检索;不抓取 ACM 页面 |
| USENIX | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不需要 | 基于 DBLP 的 USENIX 元数据;不抓取 USENIX 搜索页 |
| IEEE Xplore | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 | ✅ 必需 `IEEE_API_KEY` | 官方 IEEE Xplore Metadata API |
#### 开放获取和仓储
| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 |
| --- | --- | --- | --- | --- | --- | --- |
| CORE | ✅ 支持 | 🟡 条件支持 | 🟡 条件支持 | ❌ 不支持 | 🟡 可选 `CORE_API_KEY` | 仓储记录可能暴露 PDF 或全文链接 |
| OpenAIRE | ✅ 支持 | 🟡 条件支持 | ❌ 不支持 | ❌ 不支持 | 🟡 可选 `OPENAIRE_API_KEY` | 公开检索通常不需要 key |
| Unpaywall | 🟡 仅 DOI 查询 | 🟡 条件支持 | ❌ 不支持 | ❌ 不支持 | ✅ 必需 `UNPAYWALL_EMAIL` 或 `PAPER_SEARCH_UNPAYWALL_EMAIL` | DOI 开放获取 PDF 定位;需要邮箱,不是 API key |
#### 引文库和出版商
| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 |
| --- | --- | --- | --- | --- | --- | --- |
| Web of Science | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ✅ 支持 | ✅ 必需 `WOS_API_KEY` | 引文数据库元数据、日期排序、年份范围 |
| ScienceDirect | ✅ 支持 | 🟡 条件支持 | ❌ 不支持 | ✅ 支持 | ✅ 必需 `ELSEVIER_API_KEY` | Elsevier 元数据;ScienceDirect 和 Scopus 产品权限需要分别开通 |
| Springer Nature / SpringerLink | ✅ 支持 | 🟡 条件支持 | ❌ 不支持 | ❌ 不支持 | ✅ 必需 `SPRINGER_API_KEY`;🟡 可选 `SPRINGER_OPENACCESS_API_KEY` | `springerlink` 是现有 Springer 集成的别名 |
| Wiley | ❌ 不支持关键词搜索 | ✅ DOI 下载 | ✅ 支持 | ❌ 不支持 | ✅ 必需 `WILEY_TDM_TOKEN` | TDM API;先通过其他元数据来源找到 DOI 再下载 |
| Scopus | ✅ 支持 | 🟡 条件元数据 | ❌ 不支持 | ✅ 支持 | ✅ 必需 `ELSEVIER_API_KEY` | 摘要和引文数据库;ScienceDirect 和 Scopus 产品权限需要分别开通 |
#### DOI 定向 fallback
| 平台 | 元数据检索 | PDF 路径 | 正文/全文 | 被引统计 | 配置 | 说明 |
| --- | --- | --- | --- | --- | --- | --- |
| Sci-Hub | ❌ 不支持 | ✅ 支持 | ❌ 不支持 | ❌ 不支持 | ❌ 不需要 | DOI/URL 定向查询;启用时作为 PDF 最后 fallback |
说明:
- 元数据检索指发现和初筛论文,不等于 PDF 下载或正文证据。
- `pdf_discovery` 会区分开放获取来源、已配置权限来源,以及单独标识的 Sci-Hub 最后 fallback。
- EasyScholar 是期刊指标来源,不是论文检索来源。
- Sci-Hub 不属于 `metadata_search`,只作为 DOI/URL 定向 PDF fallback。
- `🟡 条件支持` 表示只有记录暴露 DOI、开放获取链接、PDF URL,或用户配置了相应权限时才可用。
- API key 只在使用对应 key-backed 来源或工作流时才需要。
## 配置
多数免费元数据来源无需配置。为了稳定支持 agent 工作流,建议先运行 setup,把凭证写入用户级配置:
```bash
paper-search setup
paper-search config list --pretty
paper-search doctor --pretty
```
默认配置路径:
```text
~/.config/paper-search-cli/config.json
```
配置文件权限会写成 `0600`。`config list`、`doctor` 和相关命令都会脱敏密钥。
### API Key 分级
| 等级 | 配置项 | 用途 | 什么时候配置 |
| --- | --- | --- | --- |
| 多数用户推荐 | `SEMANTIC_SCHOLAR_API_KEY` | 正文片段检索,以及更稳定的 Semantic Scholar 请求 | 需要查方法细节或高频使用 Semantic Scholar 时配置 |
| 多数用户推荐 | `UNPAYWALL_EMAIL` 或 `PAPER_SEARCH_UNPAYWALL_EMAIL` | DOI 开放获取 PDF 解析 | setup 时配置;需要的是邮箱,不是 API key |
| 多数用户推荐 | `CROSSREF_MAILTO` | Crossref polite pool | 长任务或高频元数据检索时配置 |
| 多数用户推荐 | `CORE_API_KEY` | CORE 仓储检索 | 依赖 CORE 或遇到匿名限流时配置 |
| 期刊指标 | `EASYSCHOLAR_KEY` | EasyScholar 影响因子、JCR/SSCI、中科院分区、JCI、ESI、预警 | 需要期刊指标时配置;建议用 `paper-search setup EASYSCHOLAR_KEY` 隐藏输入 |
| 生物医学高频 | `PUBMED_API_KEY`, `NCBI_EMAIL`, `NCBI_TOOL` | NCBI E-utilities 稳定性和更高限额 | 高频使用 PubMed 时配置 |
| 机构或出版商权限 | `WOS_API_KEY`, `IEEE_API_KEY`, `ELSEVIER_API_KEY`, `SPRINGER_API_KEY`, `SPRINGER_OPENACCESS_API_KEY`, `WILEY_TDM_TOKEN` | Web of Science、IEEE、Scopus、ScienceDirect、Springer、Wiley 元数据或权限访问 | 只有具备对应 API 或机构权限时配置 |
| 通常可选 | `OPENAIRE_API_KEY` | OpenAIRE 账号或配额场景 | 公开检索通常不需要 |
常用申请入口:
| 服务 | 链接 |
| --- | --- |
| EasyScholar | [EasyScholar Open API](https://www.easyscholar.cc/console/user/open) |
| Semantic Scholar | [Semantic Scholar API](https://www.semanticscholar.org/product/api) |
| Unpaywall | [Unpaywall API](https://unpaywall.org/products/api) |
| CORE | [CORE API](https://core.ac.uk/services/api) |
| PubMed | [NCBI API Keys](https://ncbiinsights.ncbi.nlm.nih.gov/2017/11/02/new-api-keys-for-the-e-utilities/) |
| Web of Science | [Clarivate Developer Portal](https://developer.clarivate.com/apis) |
| IEEE Xplore | [IEEE Xplore Metadata API](https://developer.ieee.org/docs/read/Searching_the_IEEE_Xplore_Metadata_API) |
| Elsevier | [Elsevier Developer Portal](https://dev.elsevier.com/apikey/manage) |
| Springer Nature | [Springer Nature Developers](https://dev.springernature.com/) |
| Wiley TDM | [Wiley Text and Data Mining](https://onlinelibrary.wiley.com/library-info/resources/text-and-datamining) |
| OpenAIRE | [OpenAIRE APIs](https://develop.openaire.eu/) |
## Agent Skill
npm 包会随包发布 agent Skill,位置是 `skills/paper-search/SKILL.md`。终端用户可以只用 CLI;AI agent 工作流应安装或同步 Skill,让 agent 正确路由四个主要功能。
```bash
paper-search setup --install-skills agents
paper-search skills status --pretty
paper-search skills diff --targets agents --format text
paper-search skills update --targets agents --pretty
```
支持的 target 包括 `agents`、`codex`、`claude`、`cursor`、`gemini`、`antigravity` 和 `all`。Skill 更新会覆盖 package-managed Skill 文件,同时保留 installed Skill 目录里的 extra files。
Skill 只告诉 agent 如何调用 `paper-search` CLI。API key 仍然应通过 `paper-search setup`、`paper-search config`、`.env` 或 shell 环境变量配置。
## 命令
| 命令 | 用途 |
| --- | --- |
| `paper-search search` | 集成式元数据检索 |
| `paper-search journal-metrics` | EasyScholar 期刊指标检索 |
| `paper-search download` | 对已核验 paper ID 或 DOI 下载 PDF |
| `paper-search run` | 用 `--arg` 或 `--json-args` 精确调用工具 |
| `paper-search tools` | 运行时工具名和 schema |
| `paper-search doctor` | 脱敏配置、Capability Profile 和平台状态 |
| `paper-search smoke` | mock 或 live 自检 |
| `paper-search skills` | Bundled Skill 状态、diff 和同步 |
| `paper-search config` | 用户级配置管理 |
完整命令和工具 schema:运行 `paper-search tools --pretty`,或查看 [`skills/paper-search/references/cli-contract.md`](skills/paper-search/references/cli-contract.md)。
## 输出
命令默认返回 JSON。需要格式化 JSON 时使用 `--pretty`;需要可读报告时再使用 `--format text`。
```bash
paper-search search "machine learning" --platform crossref --max-results 1 --pretty
paper-search doctor --format text
```
## 排障
| 问题 | 首先检查 |
| --- | --- |
| 找不到命令 | 用 `npm install -g paper-search-cli` 重新全局安装 |
| 能力缺失 | 运行 `paper-search doctor --pretty`,再用 `paper-search setup` 配置缺失 key |
| 平台限流 | 降低 `--max-results`,配置对应 key,或切换来源 |
| Skill 似乎过期 | 运行 `paper-search skills status --pretty`,再运行 `paper-search skills update --targets agents --pretty` |
| 需要完整 CLI 细节 | 运行 `paper-search tools --pretty` |
## 使用边界
部分来源可能受平台条款、机构订阅或本地法律约束。只有在具备相应访问权和授权时才使用受限集成。
## 项目来源
本项目感谢 [LinuxDo](https://linux.do) 社区。CLI + Skill 路线和 paper-search 工作流改进来自社区交流与开源分享。
本项目也参考了 [openags/paper-search-mcp](https://github.com/openags/paper-search-mcp) 的思路,并将工作流调整为独立 CLI。
## License
MIT
# Capability Routing Reference
Use this reference when mapping a user literature request to one of the four main `paper-search` workflow capabilities.
## Functional Map
| User Intent | Capability | Preferred Entrypoint | Boundary |
|---|---|---|---|
| Search papers, find related work, verify DOI/PMID, screen literature | `metadata_search` | `paper-search search` integrated entrypoint / `paper-search run search_*` precise tool entrypoint | Returns and verifies paper metadata only; Sci-Hub is not a search source |
| Query impact factor, JCR/SSCI/CAS quartiles, JCI, ESI, warnings, journal rank | `journal_metrics` | `paper-search journal-metrics` / `paper-search run query_journal_metrics` | Journal-level lookup, not paper search; requires `EASYSCHOLAR_KEY` |
| Get or download a verified paper PDF | `pdf_discovery` | `paper-search download` / `paper-search run download_with_fallback` | Verify identity before download; Sci-Hub is the default enabled final fallback |
| Find Methods text, parameters, software, models, or statistical wording in body snippets | `body_snippet_search` | `paper-search run search_semantic_snippets` | Searches Semantic Scholar OA snippet index; requires `SEMANTIC_SCHOLAR_API_KEY`; not full-text parsing |
## Workflow Boundaries
Open-ended literature tasks use the Two-Stage Paper Workflow:
1. Run `metadata_search`: build and verify a paper list with title, authors, year, journal/source, DOI, PMID/PMCID, URL, abstract clues, and relevance.
2. Run `pdf_discovery` only after the user confirms selected papers or the task explicitly requires PDFs. Record failed downloads without blocking other items.
Direct Paper Requests may skip broad discovery when the user provides a DOI, PMID, PMCID, arXiv ID, or already verified paper list. The target identity still needs verification before download.
Do not fabricate PMID, DOI, title, author, journal, or year from model memory. Important citations should include the supported claim, title, authors, journal/source, year, DOI or PMID when available, and a stable URL.
## Metadata Search
Use `metadata_search` for finding papers, expanding keywords, literature screening, and verifying DOI/PMID/PMCID/arXiv ID.
`paper-search search` is the integrated metadata entrypoint:
- use `--platform NAME` for one source
- use `--sources a,b,c` for explicit multi-source search
- use `--platform all` or `--sources all` only when broad recall matters more than precision
It does not call `journal_metrics`, `pdf_discovery`, or `body_snippet_search`.
```bash
paper-search search "machine learning" --platform crossref --max-results 5 --pretty
paper-search search "osteoarthritis occupational exposure" --platform pubmed --max-results 10 --pretty
paper-search search "transformer attention mechanism" --sources arxiv,semantic,crossref --max-results 5 --pretty
paper-search search "causal inference target trial emulation" --sources all --max-results 5 --pretty
```
Precise tool entrypoints:
```bash
paper-search run search_pubmed --arg query="osteoarthritis occupational exposure" --arg maxResults=10 --pretty
paper-search run search_openalex --arg query="causal inference target trial emulation" --arg maxResults=5 --pretty
paper-search run get_paper_by_doi --arg doi="10.xxxx/xxxxx" --pretty
```
Do not treat `search_scihub` as a search source. It is DOI/URL-targeted lookup, not `metadata_search`.
## Journal Metrics
Use `journal_metrics` for journal-level metrics: impact factor, JCR/SSCI quartiles, CAS quartiles, JCI, ESI, warnings, and rank.
```bash
paper-search journal-metrics "Nature" "BMJ" --pretty
paper-search journal-metrics --file journals.txt --include-raw --pretty
paper-search run query_journal_metrics --json-args '{"journals":["Nature"],"includeRaw":true}' --pretty
```
`journal_metrics` requires `EASYSCHOLAR_KEY`. If missing, tell the user to configure it locally:
```bash
paper-search setup EASYSCHOLAR_KEY
```
For batch journal lookups, prefer one `journal-metrics` call with multiple journal names or `--file`; do not run parallel EasyScholar requests.
## PDF Discovery
Use `pdf_discovery` to get an already verified paper PDF. For open-ended literature tasks, do not begin with batch downloads.
```bash
paper-search download 2301.12345 --platform arxiv --save-path ./downloads --pretty
paper-search run download_paper --arg paperId="10.xxxx/xxxxx" --arg platform=springer --arg savePath="./downloads" --pretty
paper-search run download_with_fallback --json-args '{"source":"crossref","paperId":"10.xxxx/xxxxx","doi":"10.xxxx/xxxxx","title":"Paper title","savePath":"./downloads"}' --pretty
```
`download_with_fallback` order:
1. source-native download
2. metadata PDF URL
3. repository discovery through PMC, Europe PMC, CORE, OpenAIRE
4. Unpaywall DOI resolution
5. Sci-Hub as the final fallback
Sci-Hub Fallback is enabled by default. To suppress that final stage for one request:
```bash
paper-search run download_with_fallback --json-args '{"source":"crossref","paperId":"10.xxxx/xxxxx","doi":"10.xxxx/xxxxx","title":"Paper title","savePath":"./downloads","useSciHub":false}' --pretty
```
PDF source groups:
- `open_access_sources`: arXiv, bioRxiv, medRxiv, PMC, Europe PMC, CORE, OpenAIRE, Unpaywall, OpenAlex OA metadata, Semantic Scholar openAccessPdf, publisher open-access modes, IACR
- `entitled_access_sources`: Web of Science, ScienceDirect, Scopus, Springer, IEEE, Wiley TDM, or other sources requiring user keys, subscriptions, TDM tokens, or institutional entitlements
- `scihub_sources`: Sci-Hub, separately identified as the default enabled final fallback; not OA and not entitled access
## Body Snippet Search
Use `body_snippet_search` to find Methods wording, parameters, software names, model descriptions, statistical analysis text, or similar body-snippet clues.
```bash
paper-search run search_semantic_snippets --arg query="comparative risk assessment methods uncertainty propagation" --arg limit=5 --arg fieldsOfStudy=Medicine --pretty
```
`search_semantic_snippets` requires `SEMANTIC_SCHOLAR_API_KEY` and uses `limit`, not `maxResults`.
Only results with `snippetKind="body"` can be used as body-snippet evidence. Results from `title` or `abstract` are clues only. Before quoting or relying on a snippet, verify title, authors, year, journal/source, DOI or PMID.
## Platform Selection
| Task | First Choice | Supplements |
|---|---|---|
| Biomedical, clinical, pharmaceutical, public health | `pubmed` | `pmc`, `europepmc`, `semantic`, `crossref` |
| Methods/body snippet clues | `search_semantic_snippets` | Use `pubmed`/`semantic` first for titles and synonyms |
| Computer science, AI, math, physics | `arxiv` | `semantic`, `crossref`, `openalex` |
| CS bibliographies and conference metadata | `dblp` | `acm`, `usenix`, `openreview`, `ieee` requires key |
| Cross-disciplinary coverage | `crossref` | `openalex`, `semantic` |
| Open-access full-text discovery | `pmc`, `europepmc`, `core`, `openaire`, `unpaywall` | `download_with_fallback` |
| Journal IF/quartiles/rank | `journal-metrics` | `query_journal_metrics` |
| Cryptography | `iacr` | `arxiv` |
| Citation-count sorting | `semantic`, `crossref`, `openalex` | `webofscience`, `scopus` require keys |
| Publisher or paid databases | `webofscience`, `ieee`, `scopus`, `sciencedirect`, `springer`/`springerlink`, `wiley` | Use only when key is configured |
## Query Construction
- Translate Chinese research questions into English keywords by default.
- Use 3-8 core concept terms rather than long sentences.
- For medical topics, include MeSH or standard terminology when useful.
- For method details, include software names, parameter names, model names, or section words such as `methods`, `statistical analysis`, `adjusted for`, `bootstrap`, `sensitivity analysis`.
# Paper Search CLI Contract
This contract records the stable CLI surface that the `paper-search` Routing Skill may rely on. The Routing Skill should stay short and should not describe commands, flags, or defaults that are absent from this contract and the current CLI.
## Entrypoints
- `paper-search` is the primary executable.
- `paper-search --version`, `paper-search -v`, and `paper-search version` print the installed version.
- `paper-search --help` and `paper-search help` print usage.
- `paper-search tools --pretty` lists direct `run` tool names and schemas.
- Private API keys, emails, and tokens must be configured through `paper-search setup`, `paper-search config`, `.env`, or shell environment variables. They must not be written into Skill files.
## Top-Level Commands
- `paper-search search <query> [--platform NAME] [--sources CSV] [--max-results N] [--year YEAR] [--pretty]`
- `paper-search run <tool-name> --arg key=value --json-args '{"key":"value"}' [--pretty]`
- `paper-search download <paper-id> --platform NAME [--save-path PATH] [--pretty]`
- `paper-search journal-metrics <journal...> [--file PATH] [--include-raw] [--pretty]`
- `paper-search metrics ...` is an alias for `journal-metrics`.
- `paper-search status [--validate] [--pretty]`
- `paper-search doctor [--validate] [--format text] [--pretty]`
- `paper-search smoke --mock [--pretty]`
- `paper-search smoke --live [--pretty]`
- `paper-search skills status [--targets CSV] [--pretty]`
- `paper-search skills diff [--targets CSV] [--format text] [--pretty]`
- `paper-search skills update [--targets CSV] [--pretty]`
- `paper-search setup [--all] [--keys CSV] [--install-skills CSV] [--skip-skills]`
- `paper-search tools [--pretty]`
- `paper-search diagnostics [--pretty]`
- `paper-search requirements [--pretty]` is an alias for `diagnostics`.
- `paper-search config init [--pretty]`
- `paper-search config path [--pretty]`
- `paper-search config keys [--pretty]`
- `paper-search config list [--all] [--pretty]`
- `paper-search config doctor [--pretty]` is a compatibility config summary; use top-level `doctor` for the full health report.
- `paper-search config get KEY [--raw] [--pretty]`
- `paper-search config set KEY VALUE [--pretty]`
- `paper-search config unset KEY [--pretty]`
- `paper-search config delete KEY [--pretty]` and `paper-search config remove KEY [--pretty]` are aliases for `unset`.
- `paper-search config import-env [file] [--pretty]`
## Direct Run Tools
These names can be used with `paper-search run <tool-name>`:
- `search_papers`
- `search_arxiv`
- `search_webofscience`
- `search_pubmed`
- `search_biorxiv`
- `search_medrxiv`
- `search_semantic_scholar`
- `search_semantic_snippets`
- `search_iacr`
- `download_paper`
- `search_google_scholar`
- `get_paper_by_doi`
- `search_scihub`
- `check_scihub_mirrors`
- `get_platform_status`
- `query_journal_metrics`
- `search_sciencedirect`
- `search_springer`
- `search_wiley`
- `search_scopus`
- `search_crossref`
- `search_openalex`
- `search_unpaywall`
- `search_pmc`
- `search_europepmc`
- `search_core`
- `search_openaire`
- `download_with_fallback`
- `search_dblp`
- `search_ieee`
- `search_acm`
- `search_usenix`
- `search_openreview`
- `search_springerlink`
## Output Expectations
- JSON is the default machine-readable output for agent and script callers.
- `--pretty` pretty-prints JSON.
- `--format text` is supported by top-level `doctor` and `skills diff` for explicitly requested human-readable reports.
- `--include-text` keeps raw tool response text in JSON for commands where the CLI supports it.
- The Routing Skill should parse JSON when making decisions and use text format only when the user needs a readable report.
## Search Command Contract
- `paper-search search` is the integrated metadata search entrypoint.
- Use `--platform NAME` for one source and `--sources a,b,c` for explicit multi-source search.
- Use `--platform all` or `--sources all` only when broad recall matters more than precision.
- `search_papers` is the direct tool behind the integrated `search` command.
- `search_semantic_snippets` uses `limit`, not `maxResults`, and is for body/title/abstract snippets rather than complete full text.
- `search_unpaywall` resolves DOI-based OA metadata and returns at most one result.
- `search_scihub` is DOI/URL-targeted lookup and is not a metadata search source.
- `CORE_MAX_RESULTS_CAP` controls the configurable CORE-only result cap. Default is `100`; hard maximum is `500`. Other platforms keep their own current limits.
## Download Command Contract
`download_paper` tries source-native download first when available. Unsupported or failed native downloads route into the same fallback funnel used by `download_with_fallback`.
`download_with_fallback` order is source-native download, metadata PDF URL, repository discovery through PMC/Europe PMC/CORE/OpenAIRE, Unpaywall DOI resolution, then Sci-Hub as the final fallback.
Sci-Hub Fallback is enabled by default. To suppress that final stage for a request, pass:
```json
{"useSciHub": false}
```
The Routing Skill must not describe future-only download commands or strategy flags until they appear in `paper-search --help` or `paper-search tools`.
## Configuration And Secret Boundaries
Configuration sources, in priority order:
1. Shell environment variables
2. Current directory `.env`
3. User config file under `~/.config/paper-search-cli/config.json`
4. Free-source built-in defaults
Useful configuration commands:
```bash
paper-search setup
paper-search config set SEMANTIC_SCHOLAR_API_KEY your_key
paper-search setup EASYSCHOLAR_KEY
paper-search config list --pretty
paper-search doctor --pretty
```
Do not ask users to paste secrets into chat. Do not write secrets into Skill, README, tests, or logs. `doctor` and `config` output should mask configured secret values.
# Management Layer Reference
Use this reference when checking whether `paper-search` is installed, configured, healthy, and synchronized with the installed agent Skill. These commands help the agent decide readiness; they do not perform literature tasks.
## Management Commands
```bash
paper-search doctor --pretty
paper-search doctor --format text
paper-search smoke --mock --pretty
paper-search smoke --live --pretty
paper-search skills status --pretty
paper-search skills diff --targets agents --format text
paper-search skills update --targets agents --pretty
paper-search tools --pretty
paper-search config list --pretty
```
| Command | Purpose | Use When |
|---|---|---|
| `paper-search doctor --pretty` | Complete health report: masked config, Capability Profile, platform status, and missing items | First use, uncertain environment, or user asks what capabilities are available |
| `paper-search doctor --format text` | Human-readable health report | You need to summarize health for the user |
| `paper-search smoke --mock --pretty` | Offline check of CLI wiring, Capability Profile logic, and Skill sync status logic | After code/install changes, or when network is unavailable |
| `paper-search smoke --live --pretty` | Small real checks of free metadata, configured key-backed capabilities, and Sci-Hub mirror availability | User asks for local live verification or provider/network issues are suspected |
| `paper-search skills status --pretty` | Shows whether Installed Skill files match the Bundled Skill | Install/update checks or debugging why an agent reads old Skill text |
| `paper-search skills diff --targets agents --format text` | Previews managed-file diffs between Bundled Skill and Installed Skill | Before updating Skill files |
| `paper-search skills update --targets agents --pretty` | Syncs package-managed Skill files into the user Skill directory while preserving Extra Skill Files | After the user confirms Skill update |
| `paper-search tools --pretty` | Lists `paper-search run` tool names and argument schemas | Unsure about exact tool name or arguments |
| `paper-search config list --pretty` | Shows masked configuration status | Need to confirm whether key/email/caps are configured |
## Doctor
`paper-search doctor` is the main health report. It combines masked configuration, Capability Profile, and platform status.
Capability Profile entries are independent workflow capabilities:
- `metadata_search`: metadata search through configured/free literature sources. Sci-Hub must not be included in metadata search.
- `body_snippet_search`: Semantic Scholar Open Access snippet search. It requires `SEMANTIC_SCHOLAR_API_KEY`.
- `journal_metrics`: EasyScholar journal metrics. It requires `EASYSCHOLAR_KEY`.
- `pdf_discovery`: PDF discovery and download through source-native download, metadata PDF URLs, open-access sources, entitled-access sources when configured, and the default enabled Sci-Hub Fallback.
- `entitled_access`: user-specific access rights such as publisher API keys, database keys, TDM tokens, or institutional entitlements.
Use JSON output for agent decisions. Use `--format text` only when the user needs a readable report.
## Smoke
`paper-search smoke --mock` is offline and should pass without provider keys.
`paper-search smoke --live` performs small real checks:
- free metadata check always runs
- Sci-Hub mirror availability is checked by default without downloading PDFs
- configured key-backed capabilities get lightweight checks
- unconfigured key-backed capabilities are marked `skipped`
Live smoke severity:
- `critical` failures make the command fail.
- `degraded` means a configured or default-enabled capability did not work as expected and must include remediation, but it is not the same as whole-tool failure.
- `warning` and `skipped` are informational.
When reporting live smoke results, include any `message` and `remediation` for degraded cases.
## Skill Sync
The npm package ships a Bundled Skill under `skills/paper-search`. Installing or updating user-visible Skill files is explicit.
Supported targets:
- `agents`
- `codex`
- `claude`
- `cursor`
- `gemini`
- `antigravity`
Routine sync after package updates:
```bash
paper-search skills status --targets agents --pretty
paper-search skills diff --targets agents --format text
paper-search skills update --targets agents --pretty
```
`skills update` overwrites package-managed files and preserves Extra Skill Files. `skills diff` may show diffs only for Managed Skill Files; extra files are listed by name only.
## Package Update And Capability Setup
`skills update` only syncs Bundled Skill files into the selected Installed Skill directory. It does not update the npm package, GitHub checkout, compiled CLI files, or provider configuration.
`paper-search setup` only configures keys, email, and install destinations for the currently installed CLI. It does not update the package body.
Ordinary user update path:
```bash
npm install -g paper-search-cli@latest
paper-search skills update --targets agents --pretty
paper-search doctor --pretty
paper-search setup
paper-search smoke --mock --pretty
```
Use `doctor` before or after `setup` to inspect the Capability Profile. Missing, unavailable, or degraded capability entries should tell the agent which key, email, source, or environment item the user needs to configure.
Maintainer or local-dev update path:
```bash
git pull
npm install
npm run build
npm install -g .
paper-search skills update --targets agents --pretty
paper-search doctor --pretty
paper-search setup
paper-search smoke --mock --pretty
```
Use the local-dev path when validating this repository checkout before publishing or before installing a local build globally.
## Configuration Checks
Configuration sources, in priority order:
1. Shell environment variables
2. Current directory `.env`
3. User config file under `~/.config/paper-search-cli/config.json`
4. Free-source built-in defaults
Useful commands:
```bash
paper-search setup
paper-search config list --pretty
paper-search config get SEMANTIC_SCHOLAR_API_KEY --pretty
paper-search config get EASYSCHOLAR_KEY --pretty
paper-search doctor --pretty
```
Do not ask users to paste secrets into chat. Do not write secrets into Skill, README, tests, or logs. `doctor` and `config` output should mask configured secret values.
+180
-21

@@ -11,4 +11,8 @@ #!/usr/bin/env node

import { diagnoseError, diagnoseToolResult, diagnosticContextFromCli, getRequirementStatus } from './core/diagnostics.js';
import { buildCapabilityProfile } from './core/capabilityProfile.js';
import { CONFIG_KEYS, getConfigPath, importEnvFile, initUserConfig, listConfigEntries, loadUserConfigIntoEnv, maskValue, readUserConfig, assertConfigKey, setUserConfigValue, unsetUserConfigValue } from './config/ConfigService.js';
import { setupGlobalProxy } from './utils/HttpClient.js';
import { defaultSkillTargetIds, describeSkillTargets, diffSkillTargets, installSkillTargets, parseSkillTargets, statusSkillTargets } from './skills/SkillInstaller.js';
import { renderDoctorTextReport, renderSkillDiffTextReport } from './core/textReports.js';
import { runLiveSmoke } from './core/liveSmoke.js';
dotenv.config();

@@ -41,6 +45,9 @@ loadUserConfigIntoEnv();

paper-search status [--validate]
paper-search doctor [--validate]
paper-search smoke --mock|--live
paper-search skills <status|update|diff> [--targets agents,codex]
paper-search tools
paper-search diagnostics
paper-search config <init|set|get|unset|list|doctor|path|import-env|keys>
paper-search setup [--all]
paper-search setup [--all] [--install-skills agents,codex] [--skip-skills]
paper-search download <paper-id> --platform arxiv [--save-path ./downloads]

@@ -61,3 +68,6 @@

paper-search run search_pubmed --arg query="osteoarthritis occupational exposure" --arg maxResults=3
paper-search status --pretty
paper-search doctor --pretty
paper-search doctor --format text
paper-search skills status --pretty
paper-search skills diff --format text
`;

@@ -179,2 +189,13 @@ }

}
function prepareOutput(result) {
if (!result || typeof result !== 'object' || Array.isArray(result)) {
return { payload: result };
}
const exitCode = result.exitCode;
if (typeof exitCode !== 'number') {
return { payload: result };
}
const { exitCode: _exitCode, ...payload } = result;
return { payload, exitCode };
}
function extractText(response) {

@@ -290,2 +311,8 @@ const content = response?.content;

}
if (command === 'smoke') {
return handleSmokeCommand(flags);
}
if (command === 'skills') {
return handleSkillsCommand(positionals, flags);
}
if (command === 'config') {

@@ -297,3 +324,6 @@ return handleConfigCommand(positionals, flags);

}
if (command === 'status' || command === 'doctor') {
if (command === 'doctor') {
return handleDoctorCommand(flags);
}
if (command === 'status') {
return callTool('get_platform_status', { validate: flags.validate === true }, flags);

@@ -351,5 +381,2 @@ }

const subcommand = positionals[0] || 'list';
if (subcommand === 'setup') {
return handleSetupCommand(positionals.slice(1), flags);
}
if (subcommand === 'path') {

@@ -377,2 +404,3 @@ return { ok: true, path: getConfigPath() };

path: getConfigPath(),
message: 'Use `paper-search doctor --pretty` for capability and health checks.',
configured: entries.filter(entry => entry.configured).length,

@@ -450,3 +478,3 @@ missing: entries.filter(entry => !entry.configured).map(entry => entry.key),

{
key: 'PAPER_SEARCH_CORE_API_KEY',
key: 'CORE_API_KEY',
label: 'CORE API key, optional but recommended for stable CORE access',

@@ -492,2 +520,5 @@ secret: true

let defaultEmail = '';
const skillsRoot = typeof flags.skillsRoot === 'string' ? flags.skillsRoot : undefined;
const skipSkills = flags.skipSkills === true;
const explicitSkillTargets = typeof flags.installSkills === 'string' ? parseSkillTargets(flags.installSkills, skillsRoot) : undefined;
process.stderr.write(`Paper Search CLI setup\n`);

@@ -524,2 +555,36 @@ process.stderr.write(`Config file: ${path}\n`);

}
let selectedSkillTargets = [];
if (!skipSkills) {
if (explicitSkillTargets) {
selectedSkillTargets = explicitSkillTargets;
}
else {
selectedSkillTargets = await promptSkillTargets(session, skillsRoot);
}
}
const skillDestinations = describeSkillTargets(selectedSkillTargets, skillsRoot);
const skillResult = selectedSkillTargets.length > 0
? installSkillTargets(selectedSkillTargets, { skillsRoot })
: undefined;
const capabilityProfile = buildCapabilityProfile();
const nextSteps = [
'Run "paper-search doctor --pretty" to review capability and platform health.',
'Run "paper-search smoke --mock --pretty" for an offline self-check.',
'Run "paper-search search \\"machine learning\\" --platform crossref --max-results 1 --pretty" for a no-key search check.'
];
return {
ok: skillResult ? skillResult.ok : true,
path,
updated,
kept,
skipped,
autoGenerated,
capabilityProfile,
skills: {
skipped: skipSkills || selectedSkillTargets.length === 0,
destinations: skillDestinations,
result: skillResult
},
nextSteps
};
}

@@ -529,16 +594,106 @@ finally {

}
const nextSteps = [
'Run "paper-search config doctor --pretty" to review masked configuration status.',
'Run "paper-search search \\"machine learning\\" --platform crossref --max-results 1 --pretty" for a no-key smoke test.'
}
async function handleDoctorCommand(flags) {
const platformStatus = await callTool('get_platform_status', { validate: flags.validate === true }, {});
const configEntries = listConfigEntries(true);
const capabilityProfile = buildCapabilityProfile();
const report = {
ok: true,
config: {
path: getConfigPath(),
configured: configEntries.filter(entry => entry.configured).length,
missing: configEntries.filter(entry => !entry.configured).map(entry => entry.key),
entries: configEntries
},
capabilityProfile,
platformStatus
};
if (flags.format === 'text') {
return renderDoctorTextReport(report);
}
return report;
}
async function handleSmokeCommand(flags) {
const mode = typeof flags.mode === 'string' ? flags.mode : flags.live === true ? 'live' : 'mock';
if (flags.live === true || mode === 'live') {
const capabilityProfile = buildCapabilityProfile();
const skillsRoot = typeof flags.skillsRoot === 'string' ? flags.skillsRoot : undefined;
const skillStatus = statusSkillTargets(defaultSkillTargetIds(skillsRoot), { skillsRoot });
return runLiveSmoke({
capabilityProfile,
skillStatus,
hasConfig: key => Boolean(process.env[key] || readUserConfig()[key]),
callTool: (tool, args) => callTool(tool, args, {})
});
}
const capabilityProfile = buildCapabilityProfile();
const skillStatus = statusSkillTargets(defaultSkillTargetIds(typeof flags.skillsRoot === 'string' ? flags.skillsRoot : undefined), {
skillsRoot: typeof flags.skillsRoot === 'string' ? flags.skillsRoot : undefined
});
const cases = [
{
name: 'metadata_search excludes Sci-Hub',
ok: !capabilityProfile.entries.find(entry => entry.id === 'metadata_search')?.configured.includes('scihub')
},
{
name: 'pdf_discovery has source groups',
ok: Boolean(capabilityProfile.entries.find(entry => entry.id === 'pdf_discovery')?.sourceGroups?.open_access_sources) &&
Boolean(capabilityProfile.entries.find(entry => entry.id === 'pdf_discovery')?.sourceGroups?.entitled_access_sources) &&
Boolean(capabilityProfile.entries.find(entry => entry.id === 'pdf_discovery')?.sourceGroups?.scihub_sources)
},
{
name: 'journal_metrics uses EASYSCHOLAR_KEY',
ok: capabilityProfile.entries.find(entry => entry.id === 'journal_metrics')?.requiredKeys?.join(',') === 'EASYSCHOLAR_KEY'
},
{
name: 'skill status runs offline',
ok: skillStatus.ok
}
];
const failed = cases.filter(item => !item.ok);
return {
ok: true,
path,
updated,
kept,
skipped,
autoGenerated,
nextSteps
ok: failed.length === 0,
mode: 'mock',
cases,
failedCases: failed,
capabilityProfile,
skillStatus
};
}
function handleSkillsCommand(positionals, flags) {
const subcommand = positionals[0] || 'status';
const skillsRoot = typeof flags.skillsRoot === 'string' ? flags.skillsRoot : undefined;
const sourceRoot = typeof flags.sourceRoot === 'string' ? flags.sourceRoot : undefined;
const targetIds = flags.all === true
? parseSkillTargets('all', skillsRoot)
: parseSkillTargets(typeof flags.targets === 'string' ? flags.targets : '', skillsRoot);
if (subcommand === 'status') {
return statusSkillTargets(targetIds, { skillsRoot, sourceRoot });
}
if (subcommand === 'update') {
return installSkillTargets(targetIds, { skillsRoot, sourceRoot });
}
if (subcommand === 'diff') {
const result = diffSkillTargets(targetIds, { skillsRoot, sourceRoot });
if (flags.format === 'text') {
return renderSkillDiffTextReport(result);
}
return result;
}
throw new CliError(`Unknown skills command: ${subcommand}`, 'UNKNOWN_SKILLS_COMMAND');
}
async function promptSkillTargets(session, skillsRoot) {
const defaults = defaultSkillTargetIds(skillsRoot);
const destinations = describeSkillTargets(defaults, skillsRoot);
process.stderr.write('\n[Optional] Install paper-search Skill\n');
process.stderr.write('Purpose: teach local AI agents to use paper-search CLI for literature tasks.\n');
process.stderr.write('Detected destinations:\n');
for (const item of destinations) {
process.stderr.write(` ${item.target.padEnd(12)} ${item.path}\n`);
}
const answer = await session.line(`Install targets [agents/codex/claude/cursor/gemini/antigravity/all/skip] (${defaults.join(',')}): `);
if (!answer.trim())
return defaults;
return parseSkillTargets(answer, skillsRoot);
}
function randomCommonEmail() {

@@ -645,7 +800,11 @@ return `paper.search.${randomBytes(6).toString('hex')}@gmail.com`;

const result = await run(parsed);
if (typeof result === 'string') {
process.stdout.write(`${result}\n`);
const output = prepareOutput(result);
if (typeof output.exitCode === 'number') {
process.exitCode = output.exitCode;
}
if (typeof output.payload === 'string') {
process.stdout.write(`${output.payload}\n`);
}
else {
process.stdout.write(`${formatOutput(result, parsed.flags)}\n`);
process.stdout.write(`${formatOutput(output.payload, parsed.flags)}\n`);
}

@@ -688,3 +847,3 @@ }

'Free metadata search still works, but body-snippet search and higher provider limits need optional keys.',
'Run "paper-search setup" to add keys, or "paper-search config doctor --pretty" to inspect config.',
'Run "paper-search setup" to add keys, or "paper-search doctor --pretty" to inspect config and capabilities.',
''

@@ -691,0 +850,0 @@ ].join('\n'));

+1
-1

@@ -1,1 +0,1 @@

{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,eAAe,IAAI,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,cAAc,EACd,iBAAiB,EACjB,qBAAqB,EACrB,SAAS,EACT,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACrB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,sBAAsB,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEnD,MAAM,CAAC,MAAM,EAAE,CAAC;AAChB,qBAAqB,EAAE,CAAC;AACxB,gBAAgB,EAAE,CAAC;AAUnB,MAAM,QAAS,SAAQ,KAAK;IAGf;IACA;IAHX,YACE,OAAe,EACN,OAAO,WAAW,EAClB,WAAW,CAAC;QAErB,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,SAAI,GAAJ,IAAI,CAAc;QAClB,aAAQ,GAAR,QAAQ,CAAI;QAGrB,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC;AAE/G,SAAS,cAAc;IACrB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAyB,CAAC;IAClH,OAAO,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;AAChC,CAAC;AAED,SAAS,KAAK;IACZ,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCR,CAAC;AACF,CAAC;AAED,SAAS,QAAQ,CAAC,IAAc;IAC9B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;IACrE,CAAC;IACD,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,CAAC;IAC3E,CAAC;IAED,MAAM,CAAC,OAAO,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;IACzC,MAAM,KAAK,GAA8B,EAAE,CAAC;IAC5C,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACvC,MAAM;QACR,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC9E,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;YAC/B,IAAI,KAAK,GAAc,IAAI,CAAC;YAE5B,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;gBACjB,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;YAC3C,CAAC;iBAAM,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBACvD,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBACpB,CAAC,IAAI,CAAC,CAAC;YACT,CAAC;YAED,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;gBAC3B,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACvF,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACrB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;gBAClB,SAAS;YACX,CAAC;YACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBACnB,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;gBACrB,SAAS;YACX,CAAC;YACD,MAAM,IAAI,QAAQ,CAAC,2BAA2B,KAAK,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC7E,CAAC;QAED,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AACzC,CAAC;AAED,SAAS,UAAU,CAAC,GAAW;IAC7B,OAAO,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAS,WAAW,CAAC,KAAuB;IAC1C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,KAAK,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACpC,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACrG,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,aAAa,CAAC,KAA4B;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,QAAQ,CAAC,iDAAiD,EAAE,mBAAmB,CAAC,CAAC;IAC7F,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,QAAQ,CAAC,0CAA0C,EAAE,mBAAmB,CAAC,CAAC;IACtF,CAAC;IACD,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED,SAAS,aAAa,CAAC,KAA4B;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,IAAI,GAA4B,EAAE,CAAC;IAEzC,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;YACjB,MAAM,IAAI,QAAQ,CAAC,kCAAkC,KAAK,EAAE,EAAE,aAAa,CAAC,CAAC;QAC/E,CAAC;QACD,MAAM,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC;QAC1C,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAC1F,IAAI,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,KAAgC;IACnD,MAAM,IAAI,GAA4B,EAAE,CAAC;IAEzC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACjD,IAAI,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,KAAK,IAAI,GAAG,KAAK,UAAU;YAAE,SAAS;QAC3E,IAAI,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,OAAgB,EAAE,KAAgC;IACtE,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,aAAa,CAAC,MAAe;IACpC,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,QAAQ,GAAI,MAAc,CAAC,QAAQ,CAAC;IAC1C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;IAC7B,CAAC;IAED,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,OAAO,EAAE,GAAG,MAAiC,CAAC;IAC9E,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,WAAW,CAAC,QAAa;IAChC,MAAM,OAAO,GAAG,QAAQ,EAAE,OAAO,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QAAE,OAAO,EAAE,CAAC;IACvC,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;SAC5C,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;SAC3C,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACvC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,QAAQ,GAAG,KAAK,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAErB,IAAI,QAAQ,EAAE,CAAC;YACb,IAAI,OAAO,EAAE,CAAC;gBACZ,OAAO,GAAG,KAAK,CAAC;YAClB,CAAC;iBAAM,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACzB,OAAO,GAAG,IAAI,CAAC;YACjB,CAAC;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;gBACxB,QAAQ,GAAG,KAAK,CAAC;YACnB,CAAC;YACD,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,GAAG,EAAE,CAAC;YACjB,QAAQ,GAAG,IAAI,CAAC;YAChB,SAAS;QACX,CAAC;QACD,IAAI,IAAI,KAAK,IAAI;YAAE,KAAK,IAAI,CAAC,CAAC;QAC9B,IAAI,IAAI,KAAK,KAAK;YAAE,KAAK,IAAI,CAAC,CAAC;QAE/B,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,IAA6B,EAAE,KAAgC;IACnG,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,MAAM,QAAQ,GAAQ,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAEnC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAA4B;QACvC,EAAE,EAAE,CAAC,QAAQ,EAAE,OAAO;QACtB,IAAI;QACJ,OAAO,EAAE,SAAS,CAAC,IAAI,CAAC;QACxB,IAAI,EAAE,qBAAqB,CAAC,IAAI,CAAC;KAClC,CAAC;IAEF,MAAM,UAAU,GAAG,kBAAkB,CAAC;QACpC,IAAI;QACJ,IAAI;QACJ,QAAQ,EAAE,OAAO,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACvE,OAAO,EAAE,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACpE,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC;KACvC,CAAC,CAAC;IACH,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,YAAY;IACnB,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,IAAI,CAAC,YAAY,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACnC,MAAM,IAAI,QAAQ,CAAC,iBAAiB,IAAI,2CAA2C,EAAE,cAAc,CAAC,CAAC;IACvG,CAAC;AACH,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,MAAiB;IAClC,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAE/C,IAAI,KAAK,CAAC,IAAI,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACrC,OAAO,KAAK,EAAE,CAAC;IACjB,CAAC;IAED,IAAI,KAAK,CAAC,OAAO,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,cAAc,EAAE,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO;YACL,EAAE,EAAE,IAAI;YACR,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACxB,IAAI,EAAE,IAAI,CAAC,IAAI;gBACf,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;aAC9B,CAAC,CAAC;SACJ,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,aAAa,IAAI,OAAO,KAAK,cAAc,EAAE,CAAC;QAC5D,OAAO;YACL,EAAE,EAAE,IAAI;YACR,YAAY,EAAE,oBAAoB,EAAE;SACrC,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;QACxB,OAAO,kBAAkB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IACvF,CAAC;IAED,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3F,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,QAAQ,CAAC,sBAAsB,EAAE,eAAe,CAAC,CAAC;QAC9D,CAAC;QACD,MAAM,IAAI,GAAG;YACX,GAAG,WAAW,CAAC,KAAK,CAAC;YACrB,KAAK;SACN,CAAC;QACF,OAAO,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACnF,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,kBAAkB,CAAC,CAAC;QAClF,OAAO,QAAQ,CACb,gBAAgB,EAChB;YACE,GAAG,WAAW,CAAC,KAAK,CAAC;YACrB,OAAO;SACR,EACD,KAAK,CACN,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,iBAAiB,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC3D,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QACrG,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QACrE,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,QAAQ,CAAC,gCAAgC,EAAE,iBAAiB,CAAC,CAAC;QAC1E,CAAC;QACD,OAAO,QAAQ,CACb,uBAAuB,EACvB;YACE,GAAG,WAAW,CAAC,KAAK,CAAC;YACrB,QAAQ;YACR,IAAI;SACL,EACD,KAAK,CACN,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,KAAK,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC5B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,QAAQ,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC;QACnE,cAAc,CAAC,IAAI,CAAC,CAAC;QAErB,MAAM,IAAI,GAAG;YACX,GAAG,aAAa,CAAC,KAAK,CAAC,QAAQ,CAAC;YAChC,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC;YAC3B,GAAG,WAAW,CAAC,KAAK,CAAC;SACtB,CAAC;QACF,OAAO,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,oBAAoB,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAqB,EAAE,KAAgC;IAClF,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;IAE5C,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,CAAC;IAC7C,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IACzC,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC;QACpD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IACjC,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,aAAa,EAAE;YACrB,OAAO,EAAE,iBAAiB,CAAC,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC;SAC/C,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxC,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,aAAa,EAAE;YACrB,OAAO,EAAE,sEAAsE;YAC/E,UAAU,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM;YAC5D,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;YAC3E,OAAO;SACR,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACzE,eAAe,CAAC,GAAG,CAAC,CAAC;QACrB,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;QAC9D,OAAO;YACL,EAAE,EAAE,IAAI;YACR,GAAG;YACH,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC;YAC1B,KAAK,EAAE,KAAK,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC;YACzD,MAAM,EAAE,KAAK,EAAE,MAAM,IAAI,SAAS;SACnC,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,qBAAqB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAClE,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACvC,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,aAAa,EAAE;YACrB,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC;SAC3C,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QACjF,MAAM,GAAG,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAC,CAAC;QACzE,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC1B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,UAAU,KAAK,YAAY,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QACzF,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QACtC,OAAO;YACL,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;SAC9B,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,2BAA2B,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAC;AACxF,CAAC;AAQD,MAAM,sBAAsB,GAAG,IAAI,GAAG,CAAY;IAChD,8BAA8B;IAC9B,iBAAiB;IACjB,iBAAiB;CAClB,CAAC,CAAC;AAEH,MAAM,qBAAqB,GAAkB;IAC3C;QACE,GAAG,EAAE,0BAA0B;QAC/B,KAAK,EAAE,iEAAiE;QACxE,MAAM,EAAE,IAAI;KACb;IACD;QACE,GAAG,EAAE,8BAA8B;QACnC,KAAK,EAAE,yDAAyD;QAChE,MAAM,EAAE,KAAK;KACd;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,2DAA2D;QAClE,MAAM,EAAE,KAAK;KACd;IACD;QACE,GAAG,EAAE,cAAc;QACnB,KAAK,EAAE,+DAA+D;QACtE,MAAM,EAAE,IAAI;KACb;IACD;QACE,GAAG,EAAE,iBAAiB;QACtB,KAAK,EAAE,kEAAkE;QACzE,MAAM,EAAE,IAAI;KACb;CACF,CAAC;AAEF,SAAS,eAAe,CAAC,KAAgC,EAAE,WAAqB;IAC9E,MAAM,QAAQ,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;IAC9E,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,QAAQ;aACZ,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;aACtB,MAAM,CAAC,OAAO,CAAC;aACf,GAAG,CAAC,GAAG,CAAC,EAAE;YACT,eAAe,CAAC,GAAG,CAAC,CAAC;YACrB,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACvB,OAAO,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IAED,OAAO,qBAAqB,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW;IACpC,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IACrC,OAAO,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,WAAqB,EAAE,KAAgC;IACvF,MAAM,EAAE,IAAI,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,IAAI,aAAa,EAAE,CAAC;IACpC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,IAAI,GAAa,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,IAAI,YAAY,GAAG,EAAE,CAAC;IACtB,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,KAAK,IAAI,CAAC;IAC7C,MAAM,oBAAoB,GAAG,OAAO,KAAK,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,iBAAiB,CAAC,KAAK,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEtI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACjD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC;IAC/C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;IAC3F,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;IAErH,IAAI,CAAC;QACH,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACtC,MAAM,OAAO,GAAG,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,KAAK,WAAW,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC;YACzG,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,GAAG,KAAK,OAAO,GAAG,CAAC;YAC/D,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;YACpG,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAE5B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,IAAI,KAAK,EAAE,UAAU,EAAE,CAAC;oBACtB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,CAAC;qBAAM,IAAI,sBAAsB,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;oBAClD,YAAY,KAAK,iBAAiB,EAAE,CAAC;oBACrC,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;oBAC7C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBACzB,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjC,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3B,CAAC;gBACD,SAAS;YACX,CAAC;YAED,kBAAkB,CAAC,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;QAED,IAAI,oBAAoB,GAAa,EAAE,CAAC;QACxC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,IAAI,oBAAoB,EAAE,CAAC;gBACzB,oBAAoB,GAAG,oBAAoB,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,oBAAoB,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;YACvE,CAAC;QACH,CAAC;QAED,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,oBAAoB,EAAE,UAAU,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,oBAAoB,CAAC,MAAM,GAAG,CAAC;YACjD,CAAC,CAAC,mBAAmB,CAAC,oBAAoB,EAAE,EAAE,UAAU,EAAE,CAAC;YAC3D,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,iBAAiB,GAAG,sBAAsB,EAAE,CAAC;QAEnD,MAAM,SAAS,GAAG;YAChB,8EAA8E;YAC9E,qEAAqE;YACrE,0HAA0H;SAC3H,CAAC;QAEF,OAAO;YACL,EAAE,EAAE,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI;YACvC,IAAI;YACJ,OAAO;YACP,IAAI;YACJ,OAAO;YACP,aAAa;YACb,iBAAiB;YACjB,MAAM,EAAE;gBACN,OAAO,EAAE,UAAU,IAAI,oBAAoB,CAAC,MAAM,KAAK,CAAC;gBACxD,YAAY,EAAE,iBAAiB;gBAC/B,MAAM,EAAE,WAAW;aACpB;YACD,SAAS;SACV,CAAC;IACJ,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAAgC;IACjE,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,qBAAqB,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,KAAK,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IACxG,MAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,iBAAiB,GAAG,sBAAsB,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG;QACb,EAAE,EAAE,IAAI;QACR,MAAM,EAAE;YACN,IAAI,EAAE,aAAa,EAAE;YACrB,UAAU,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM;YAClE,OAAO,EAAE,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC;YACjF,OAAO,EAAE,aAAa;SACvB;QACD,iBAAiB;QACjB,cAAc;KACf,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;QAC5B,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,KAAgC;IAChE,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACjG,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC3C,MAAM,iBAAiB,GAAG,sBAAsB,EAAE,CAAC;QACnD,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QACvF,MAAM,WAAW,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAC1F,OAAO,YAAY,CAAC;YAClB,iBAAiB;YACjB,WAAW;YACX,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC;YACpE,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAA+D;SACjH,CAAC,CAAC;IACL,CAAC;IAED,MAAM,iBAAiB,GAAG,sBAAsB,EAAE,CAAC;IACnD,MAAM,WAAW,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE;QACjI,UAAU,EAAE,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KAChF,CAAC,CAAC;IACH,MAAM,KAAK,GAAG;QACZ;YACE,IAAI,EAAE,kCAAkC;YACxC,EAAE,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,iBAAiB,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;SAC5G;QACD;YACE,IAAI,EAAE,iCAAiC;YACvC,EAAE,EAAE,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,eAAe,CAAC,EAAE,YAAY,EAAE,mBAAmB,CAAC;gBACnH,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,eAAe,CAAC,EAAE,YAAY,EAAE,uBAAuB,CAAC;gBACrH,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,eAAe,CAAC,EAAE,YAAY,EAAE,cAAc,CAAC;SAC/G;QACD;YACE,IAAI,EAAE,sCAAsC;YAC5C,EAAE,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,iBAAiB;SAC3H;QACD;YACE,IAAI,EAAE,2BAA2B;YACjC,EAAE,EAAE,WAAW,CAAC,EAAE;SACnB;KACF,CAAC;IACF,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC9C,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,MAAM,KAAK,CAAC;QACvB,IAAI,EAAE,MAAM;QACZ,KAAK;QACL,WAAW,EAAE,MAAM;QACnB,iBAAiB;QACjB,WAAW;KACZ,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAAC,WAAqB,EAAE,KAAgC;IAClF,MAAM,UAAU,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC;IAC9C,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,UAAU,GAAG,OAAO,KAAK,CAAC,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IACvF,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,KAAK,IAAI;QAClC,CAAC,CAAC,iBAAiB,CAAC,KAAK,EAAE,UAAU,CAAC;QACtC,CAAC,CAAC,iBAAiB,CAAC,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;IAE1F,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,kBAAkB,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,mBAAmB,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,gBAAgB,CAAC,SAAS,EAAE,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,CAAC;QACvE,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YAC5B,OAAO,yBAAyB,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,IAAI,QAAQ,CAAC,2BAA2B,UAAU,EAAE,EAAE,wBAAwB,CAAC,CAAC;AACxF,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAC,OAAsB,EAAE,UAAmB;IAC3E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,oBAAoB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;IACvG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACjD,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,6EAA6E,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACxI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACpC,OAAO,iBAAiB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AAC/C,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,gBAAgB,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC;AACpE,CAAC;AAED,MAAM,aAAa;IACT,EAAE,CAA6C;IACtC,eAAe,CAAY;IAE5C;QACE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,GAAG,YAAY,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAgB;QACzB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;YAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,IAAI,CAAC,EAAE,KAAK,sBAAsB,CAAC;YACjC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,QAAgB;QAC3B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,OAAO,CAAC,KAAK,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YACpG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;QACpC,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,OAAO,cAAc,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,SAAS,CAAC;IACtB,CAAC;CACF;AAED,SAAS,cAAc,CAAC,QAAgB;IACtC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAE3B,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM;gBAAE,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACrC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CAAC,IAAY,EAAE,GAAQ,EAAE,EAAE;YAC5C,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC,IAAI,KAAK,GAAG,EAAE,CAAC;gBAClC,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,MAAM,CAAC,IAAI,QAAQ,CAAC,aAAa,EAAE,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;gBACxD,OAAO;YACT,CAAC;YAED,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;gBACpD,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;gBACf,OAAO;YACT,CAAC;YAED,IAAI,GAAG,EAAE,IAAI,KAAK,WAAW,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACxD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrB,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAChC,CAAC;gBACD,OAAO;YACT,CAAC;YAED,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;gBACrC,KAAK,IAAI,IAAI,CAAC;gBACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5B,CAAC;QACH,CAAC,CAAC;QAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC/B,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,KAAK,CAAC,MAAM,EAAE,CAAC;QACf,KAAK,CAAC,EAAE,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,qBAAqB,CAC5B,WAAqB,EACrB,KAAgC;IAEhC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,CAAC;IAEzF,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,OAAO;YACL,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC;YAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;SAChC,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;IAC5C,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,IAAI,QAAQ,CAAC,gEAAgE,EAAE,sBAAsB,CAAC,CAAC;IAC/G,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,IAAI,CAAC;QACH,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACxC,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QACrC,CAAC;QACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;YACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;QAC9C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,aAAa,CAC9B,KAAK,EACL,wBAAwB,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,KAAgC,CAAC,CACtG,CAAC;QACF,MAAM,YAAY,GAAG;YACnB,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,OAAO;YAC5B,IAAI,EAAE,KAAK,EAAE,IAAI,IAAI,OAAO;YAC5B,OAAO,EAAE,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC;SACzC,CAAC;QACF,MAAM,OAAO,GAA4B;YACvC,EAAE,EAAE,KAAK;YACT,KAAK,EAAE,YAAY;SACpB,CAAC;QACF,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;QAClC,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC;QAClD,IAAI,UAAU,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;YAC5D,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjE,OAAO,CAAC,QAAQ,GAAG,KAAK,EAAE,QAAQ,IAAI,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAiB;IAC5C,IAAI,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,GAAG;QAAE,OAAO;IAC7D,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO;IACvE,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO;IAEhD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB;QACE,qDAAqD;QACrD,0GAA0G;QAC1G,6GAA6G;QAC7G,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,CAAC;AAED,IAAI,EAAE,CAAC"}

@@ -1,2 +0,2 @@

export declare const CONFIG_KEYS: readonly ["SEMANTIC_SCHOLAR_API_KEY", "PAPER_SEARCH_UNPAYWALL_EMAIL", "UNPAYWALL_EMAIL", "PAPER_SEARCH_CORE_API_KEY", "CORE_API_KEY", "WOS_API_KEY", "WOS_API_VERSION", "PUBMED_API_KEY", "NCBI_EMAIL", "NCBI_TOOL", "ELSEVIER_API_KEY", "IEEE_API_KEY", "EASYSCHOLAR_KEY", "PAPER_SEARCH_EASYSCHOLAR_KEY", "SPRINGER_API_KEY", "SPRINGER_OPENACCESS_API_KEY", "WILEY_TDM_TOKEN", "CROSSREF_MAILTO", "PAPER_SEARCH_OPENAIRE_API_KEY", "OPENAIRE_API_KEY", "LOG_LEVEL", "DEFAULT_DOWNLOAD_PATH", "MAX_FILE_SIZE_MB", "RATE_LIMIT_REQUESTS_PER_MINUTE", "RATE_LIMIT_BURST", "HTTP_PROXY", "HTTPS_PROXY"];
export declare const CONFIG_KEYS: readonly ["SEMANTIC_SCHOLAR_API_KEY", "PAPER_SEARCH_UNPAYWALL_EMAIL", "UNPAYWALL_EMAIL", "CORE_API_KEY", "CORE_MAX_RESULTS_CAP", "WOS_API_KEY", "WOS_API_VERSION", "PUBMED_API_KEY", "NCBI_EMAIL", "NCBI_TOOL", "ELSEVIER_API_KEY", "IEEE_API_KEY", "EASYSCHOLAR_KEY", "SPRINGER_API_KEY", "SPRINGER_OPENACCESS_API_KEY", "WILEY_TDM_TOKEN", "CROSSREF_MAILTO", "OPENAIRE_API_KEY", "LOG_LEVEL", "DEFAULT_DOWNLOAD_PATH", "MAX_FILE_SIZE_MB", "RATE_LIMIT_REQUESTS_PER_MINUTE", "RATE_LIMIT_BURST", "HTTP_PROXY", "HTTPS_PROXY"];
export type ConfigKey = (typeof CONFIG_KEYS)[number];

@@ -3,0 +3,0 @@ export interface ConfigEntry {

@@ -1,1 +0,1 @@

{"version":3,"file":"ConfigService.d.ts","sourceRoot":"","sources":["../../src/config/ConfigService.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,wkBA4Bd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBvD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAMtE;AAED,wBAAgB,cAAc,CAAC,KAAK,UAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAQhF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMrF;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAcpF;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAYhD;AAED,wBAAgB,iBAAiB,CAAC,cAAc,UAAQ,GAAG,WAAW,EAAE,CAiBvE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,SAAS,CAIrE"}
{"version":3,"file":"ConfigService.d.ts","sourceRoot":"","sources":["../../src/config/ConfigService.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,WAAW,kgBA0Bd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,OAAO,CAAC;IACpB,MAAM,EAAE,aAAa,GAAG,aAAa,GAAG,SAAS,CAAC;IAClD,KAAK,EAAE,MAAM,CAAC;CACf;AAKD,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBvD;AAED,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAMtE;AAED,wBAAgB,cAAc,CAAC,KAAK,UAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAQhF;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMrF;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMxE;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAcpF;AAED,wBAAgB,qBAAqB,IAAI,MAAM,EAAE,CAYhD;AAED,wBAAgB,iBAAiB,CAAC,cAAc,UAAQ,GAAG,WAAW,EAAE,CAiBvE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAS5D;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,IAAI,SAAS,CAIrE"}

@@ -9,4 +9,4 @@ import * as dotenv from 'dotenv';

'UNPAYWALL_EMAIL',
'PAPER_SEARCH_CORE_API_KEY',
'CORE_API_KEY',
'CORE_MAX_RESULTS_CAP',
'WOS_API_KEY',

@@ -20,3 +20,2 @@ 'WOS_API_VERSION',

'EASYSCHOLAR_KEY',
'PAPER_SEARCH_EASYSCHOLAR_KEY',
'SPRINGER_API_KEY',

@@ -26,3 +25,2 @@ 'SPRINGER_OPENACCESS_API_KEY',

'CROSSREF_MAILTO',
'PAPER_SEARCH_OPENAIRE_API_KEY',
'OPENAIRE_API_KEY',

@@ -29,0 +27,0 @@ 'LOG_LEVEL',

@@ -1,1 +0,1 @@

{"version":3,"file":"ConfigService.js","sourceRoot":"","sources":["../../src/config/ConfigService.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"ConfigService.js","sourceRoot":"","sources":["../../src/config/ConfigService.ts"],"names":[],"mappings":"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"}

@@ -15,3 +15,3 @@ import { getGenericSearchToolPlatform, resolvePlatformId } from './platformMetadata.js';

actions: [
'Run `paper-search config doctor --pretty` and confirm `SEMANTIC_SCHOLAR_API_KEY` is configured.',
'Run `paper-search doctor --pretty` and confirm `SEMANTIC_SCHOLAR_API_KEY` is configured.',
'Retry with fewer filters or broader method terms.',

@@ -35,3 +35,3 @@ 'Use `search_semantic_scholar`, PubMed, or Crossref to find candidate titles before snippet search.'

actions: [
'Run `paper-search config doctor --pretty` and confirm `WOS_API_KEY` is configured.',
'Run `paper-search doctor --pretty` and confirm `WOS_API_KEY` is configured.',
'Try `paper-search search "machine learning" --platform webofscience --max-results 1 --pretty` as a minimal test.',

@@ -56,3 +56,3 @@ 'Remove advanced filters first; then re-add year, author, journal, or sorting one at a time.',

actions: [
'Run `paper-search config doctor --pretty` and confirm `ELSEVIER_API_KEY` is configured.',
'Run `paper-search doctor --pretty` and confirm `ELSEVIER_API_KEY` is configured.',
'Try `paper-search search "machine learning" --platform scopus --max-results 1 --pretty` as a minimal test.',

@@ -76,3 +76,3 @@ 'If 401/403 persists, check the Elsevier developer dashboard for Scopus Search API entitlement.',

actions: [
'Run `paper-search config doctor --pretty` and confirm `ELSEVIER_API_KEY` is configured.',
'Run `paper-search doctor --pretty` and confirm `ELSEVIER_API_KEY` is configured.',
'If Scopus works but ScienceDirect returns 401, request ScienceDirect Search API access in the Elsevier developer dashboard.',

@@ -95,3 +95,3 @@ 'Use Crossref, OpenAlex, Semantic Scholar, PubMed, or Europe PMC as metadata fallbacks while entitlement is unavailable.'

actions: [
'Run `paper-search config doctor --pretty` and confirm `IEEE_API_KEY` is configured.',
'Run `paper-search doctor --pretty` and confirm `IEEE_API_KEY` is configured.',
'Try `paper-search search "machine learning" --platform ieee --max-results 1 --pretty` as a minimal test.',

@@ -116,3 +116,3 @@ 'Check the IEEE Developer Portal for Metadata API entitlement.',

actions: [
'Run `paper-search config doctor --pretty` and confirm `SPRINGER_API_KEY` is configured.',
'Run `paper-search doctor --pretty` and confirm `SPRINGER_API_KEY` is configured.',
'Try `paper-search search "machine learning" --platform springer --max-results 1 --pretty` as a minimal test.',

@@ -136,3 +136,3 @@ 'Generate or verify the key in the Springer Nature developer portal.',

actions: [
'Run `paper-search config doctor --pretty` and confirm `WILEY_TDM_TOKEN` is configured.',
'Run `paper-search doctor --pretty` and confirm `WILEY_TDM_TOKEN` is configured.',
'Verify the DOI belongs to Wiley before using `download_paper --platform wiley`.',

@@ -183,3 +183,3 @@ 'Check Wiley TDM token permissions if 401/403 persists.'

keyGroups: [],
optionalKeyGroups: [['PAPER_SEARCH_CORE_API_KEY', 'CORE_API_KEY']],
optionalKeyGroups: [['CORE_API_KEY']],
commonFailures: [

@@ -191,3 +191,3 @@ 'Unauthenticated requests may be rate-limited',

actions: [
'Configure `PAPER_SEARCH_CORE_API_KEY` or `CORE_API_KEY` for higher limits.',
'Configure `CORE_API_KEY` for higher limits.',
'If results are empty, retry through Europe PMC, PMC, OpenAIRE, or OpenAlex.',

@@ -203,3 +203,3 @@ 'Use DOI/title fallbacks for PDF discovery.'

keyGroups: [],
optionalKeyGroups: [['PAPER_SEARCH_OPENAIRE_API_KEY', 'OPENAIRE_API_KEY']],
optionalKeyGroups: [['OPENAIRE_API_KEY']],
commonFailures: [

@@ -211,3 +211,3 @@ 'OpenAIRE can return sparse metadata for broad or ambiguous terms',

actions: [
'Configure `PAPER_SEARCH_OPENAIRE_API_KEY` or `OPENAIRE_API_KEY` if your OpenAIRE account requires it.',
'Configure `OPENAIRE_API_KEY` if your OpenAIRE account requires it.',
'Use OpenAlex, Crossref, Europe PMC, or CORE as companion sources.',

@@ -238,3 +238,3 @@ 'Use returned DOI or URL with `download_with_fallback` for retrieval.'

tools: ['query_journal_metrics'],
keyGroups: [['EASYSCHOLAR_KEY', 'PAPER_SEARCH_EASYSCHOLAR_KEY']],
keyGroups: [['EASYSCHOLAR_KEY']],
commonFailures: [

@@ -318,3 +318,3 @@ 'EasyScholar SecretKey is missing or invalid',

actions: [
'Run `paper-search config doctor --pretty`.',
'Run `paper-search doctor --pretty`.',
...missingKeyActions(requirement),

@@ -359,3 +359,3 @@ 'After setting credentials, rerun the same minimal command.'

actions: [
'Run `paper-search config doctor --pretty` and verify the relevant key is configured.',
'Run `paper-search doctor --pretty` and verify the relevant key is configured.',
...platformActions(platform),

@@ -421,3 +421,3 @@ 'Regenerate the key in the provider developer portal if the minimal command still returns 401.'

'Wait and retry with a smaller `--max-results`.',
'Run `paper-search config doctor --pretty` to check optional rate-limit keys.',
'Run `paper-search doctor --pretty` to check optional rate-limit keys.',
...platformActions(platform)

@@ -524,3 +524,3 @@ ],

'Remove optional filters such as year, author, journal, subject, document type, and openAccess.',
'Run `paper-search config doctor --pretty`.',
'Run `paper-search doctor --pretty`.',
...missingKeyActions(requirement),

@@ -527,0 +527,0 @@ ...platformActions(platform),

@@ -1,1 +0,1 @@

{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/core/diagnostics.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/core/diagnostics.ts"],"names":[],"mappings":"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"}

@@ -81,3 +81,3 @@ export const PLATFORM_METADATA = [

defaultInAll: true,
optionalConfigKeys: [['PAPER_SEARCH_CORE_API_KEY', 'CORE_API_KEY']],
optionalConfigKeys: [['CORE_API_KEY']],
supportedOptions: ['maxResults', 'year']

@@ -90,3 +90,3 @@ },

defaultInAll: true,
optionalConfigKeys: [['PAPER_SEARCH_OPENAIRE_API_KEY', 'OPENAIRE_API_KEY']],
optionalConfigKeys: [['OPENAIRE_API_KEY']],
supportedOptions: ['maxResults', 'year']

@@ -93,0 +93,0 @@ },

@@ -1,1 +0,1 @@

{"version":3,"file":"platformMetadata.js","sourceRoot":"","sources":["../../src/core/platformMetadata.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"platformMetadata.js","sourceRoot":"","sources":["../../src/core/platformMetadata.ts"],"names":[],"mappings":"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"}
import { z } from 'zod';
export declare const SearchPapersSchema: z.ZodObject<{
export declare const SearchPapersSchema: z.ZodEffects<z.ZodObject<{
query: z.ZodString;

@@ -44,2 +44,30 @@ platform: z.ZodDefault<z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodString, string, string>, z.ZodLiteral<"all">]>>>;

sources?: string | undefined;
}>, {
maxResults: number;
sortBy: "relevance" | "date" | "citations";
sortOrder: "asc" | "desc";
query: string;
platform: string;
journal?: string | undefined;
year?: string | undefined;
author?: string | undefined;
category?: string | undefined;
days?: number | undefined;
fetchDetails?: boolean | undefined;
fieldsOfStudy?: string[] | undefined;
sources?: string | undefined;
}, {
query: string;
journal?: string | undefined;
year?: string | undefined;
maxResults?: number | undefined;
author?: string | undefined;
category?: string | undefined;
sortBy?: "relevance" | "date" | "citations" | undefined;
sortOrder?: "asc" | "desc" | undefined;
days?: number | undefined;
fetchDetails?: boolean | undefined;
fieldsOfStudy?: string[] | undefined;
platform?: string | undefined;
sources?: string | undefined;
}>;

@@ -424,2 +452,23 @@ export declare const SearchArxivSchema: z.ZodObject<{

}>;
export declare const SearchCoreSchema: z.ZodEffects<z.ZodObject<{
query: z.ZodString;
maxResults: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
year: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
maxResults: number;
query: string;
year?: string | undefined;
}, {
query: string;
year?: string | undefined;
maxResults?: number | undefined;
}>, {
maxResults: number;
query: string;
year?: string | undefined;
}, {
query: string;
year?: string | undefined;
maxResults?: number | undefined;
}>;
export declare const GenericPlatformSearchSchema: z.ZodObject<{

@@ -426,0 +475,0 @@ query: z.ZodString;

@@ -1,1 +0,1 @@

{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAYxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBrB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EAUpB,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;EAY3B,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAUrB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAOtB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAAsB,CAAC;AAEvD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAO9B,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa/B,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAMnB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAQtB,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EAQ5B,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;EAmBtB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAMrB,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;EAI3B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;EAS5B,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWvB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;;EAIpB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYrB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EASvB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAMvB,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;EAKxB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAMvB,CAAC;AAEX,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa9B,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;EAI1B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;EAUlC,CAAC;AAEL,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,eAAe,GACf,cAAc,GACd,qBAAqB,GACrB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,yBAAyB,GACzB,0BAA0B,GAC1B,aAAa,GACb,gBAAgB,GAChB,uBAAuB,GACvB,kBAAkB,GAClB,eAAe,GACf,sBAAsB,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,iBAAiB,GACjB,cAAc,GACd,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,YAAY,GACZ,kBAAkB,GAClB,aAAa,GACb,iBAAiB,GACjB,wBAAwB,GACxB,uBAAuB,CAAC;AAE5B,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,CA8DpE"}
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmC3B,CAAC;AAEL,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;EAUpB,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;EAY3B,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;EAUrB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAOtB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;EAAsB,CAAC;AAEvD,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;EAO9B,CAAC;AAEX,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa/B,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAMnB,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;;;;EAQtB,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;EAQ5B,CAAC;AAEX,eAAO,MAAM,mBAAmB;;;;;;;;;EAmBtB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;EAMrB,CAAC;AAEX,eAAO,MAAM,wBAAwB;;;;;;EAI3B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;EAS5B,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWvB,CAAC;AAEX,eAAO,MAAM,iBAAiB;;;;;;EAIpB,CAAC;AAEX,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYrB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EASvB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAMvB,CAAC;AAEX,eAAO,MAAM,qBAAqB;;;;;;;;;EAKxB,CAAC;AAEX,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAMvB,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;EASzB,CAAC;AAEL,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa9B,CAAC;AAEX,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;EAS7B,CAAC;AAEX,eAAO,MAAM,uBAAuB;;;;;;EAI1B,CAAC;AAEX,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;EAUlC,CAAC;AAEL,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,eAAe,GACf,cAAc,GACd,qBAAqB,GACrB,eAAe,GACf,gBAAgB,GAChB,gBAAgB,GAChB,yBAAyB,GACzB,0BAA0B,GAC1B,aAAa,GACb,gBAAgB,GAChB,uBAAuB,GACvB,kBAAkB,GAClB,eAAe,GACf,sBAAsB,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,iBAAiB,GACjB,cAAc,GACd,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,YAAY,GACZ,kBAAkB,GAClB,aAAa,GACb,iBAAiB,GACjB,wBAAwB,GACxB,uBAAuB,CAAC;AAE5B,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,GAAG,GAAG,CA+DpE"}
import { z } from 'zod';
import { getGenericSearchToolPlatform, isKnownSearchPlatform } from './platformMetadata.js';
import { HARD_CORE_MAX_RESULTS_CAP, getCoreMaxResultsCap } from '../config/ResultCaps.js';
const SortBySchema = z.enum(['relevance', 'date', 'citations']);

@@ -19,3 +20,3 @@ const SortOrderSchema = z.enum(['asc', 'desc']);

sources: z.string().optional(),
maxResults: z.number().int().min(1).max(100).optional().default(10),
maxResults: z.number().int().min(1).max(HARD_CORE_MAX_RESULTS_CAP).optional().default(10),
year: z.string().optional(),

@@ -31,3 +32,19 @@ author: z.string().optional(),

})
.strip();
.strip()
.superRefine((value, ctx) => {
if (!value.sources && value.platform === 'core') {
assertCoreMaxResults(value.maxResults, ctx);
return;
}
if (value.maxResults > 100) {
ctx.addIssue({
code: z.ZodIssueCode.too_big,
maximum: 100,
type: 'number',
inclusive: true,
message: 'Number must be less than or equal to 100',
path: ['maxResults']
});
}
});
export const SearchArxivSchema = z

@@ -226,2 +243,12 @@ .object({

.strip();
export const SearchCoreSchema = z
.object({
query: z.string().min(1),
maxResults: z.number().int().min(1).optional().default(10),
year: z.string().optional()
})
.strip()
.superRefine((value, ctx) => {
assertCoreMaxResults(value.maxResults, ctx);
});
export const GenericPlatformSearchSchema = z

@@ -320,5 +347,6 @@ .object({

case 'search_europepmc':
case 'search_core':
case 'search_openaire':
return SearchPMCStyleSchema.parse(args);
case 'search_core':
return SearchCoreSchema.parse(args);
case 'download_with_fallback':

@@ -330,2 +358,15 @@ return DownloadWithFallbackSchema.parse(args);

}
function assertCoreMaxResults(maxResults, ctx) {
const cap = getCoreMaxResultsCap();
if (maxResults > cap) {
ctx.addIssue({
code: z.ZodIssueCode.too_big,
maximum: cap,
type: 'number',
inclusive: true,
message: `CORE maxResults must be less than or equal to ${cap}. Configure CORE_MAX_RESULTS_CAP up to ${HARD_CORE_MAX_RESULTS_CAP} to raise this limit.`,
path: ['maxResults']
});
}
}
//# sourceMappingURL=schemas.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/core/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,4BAA4B,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE1F,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;AAChE,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC;AAChD,MAAM,oBAAoB,GAAG,CAAC;KAC3B,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,KAAK,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;IAChE,OAAO,EAAE,6BAA6B;CACvC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,QAAQ,EAAE,CAAC;SACR,KAAK,CAAC,CAAC,oBAAoB,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/C,QAAQ,EAAE;SACV,OAAO,CAAC,UAAU,CAAC;IACtB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACzF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAClD,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACpC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC7C,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACpD,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CACtD,CAAC;KACD,KAAK,EAAE;KACP,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAChD,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5C,OAAO;IACT,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,GAAG,GAAG,EAAE,CAAC;QAC3B,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO;YAC5B,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,0CAA0C;YACnD,IAAI,EAAE,CAAC,YAAY,CAAC;SACrB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClE,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE;IAC/B,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,MAAM,EAAE,CAAC;SACN,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;SACtE,QAAQ,EAAE;IACb,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE;CACtC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;IAC/C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE;CACjD,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;IAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,mBAAmB,CAAC;AAEvD,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KACzC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC9C,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpE,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/D,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC9D,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC5D,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACpD,qBAAqB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5C,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,OAAO,IAAI,qBAAqB,CAAC,KAAK,CAAC,EAAE;QACpG,OAAO,EAAE,+BAA+B;KACzC,CAAC;IACF,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACrC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7B,QAAQ,EAAE,CAAC;SACR,IAAI,CAAC;QACJ,OAAO;QACP,cAAc;QACd,QAAQ;QACR,UAAU;QACV,UAAU;QACV,WAAW;QACX,KAAK;QACL,WAAW;QACX,MAAM;QACN,KAAK;KACN,CAAC;SACD,QAAQ,EAAE;SACV,OAAO,CAAC,KAAK,CAAC;CAClB,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IAClD,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC;KACtC,MAAM,CAAC;IACN,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAClD,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE;CACxD,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACzB,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAClE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE;CAChE,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACpD,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CACtD,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC;KACnC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;CACjE,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC;KAClC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC5B,CAAC;KACD,KAAK,EAAE;KACP,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B,oBAAoB,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KACzC,MAAM,CAAC;IACN,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACnE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/C,MAAM,EAAE,YAAY,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC;IACpD,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC;CACtD,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC;KACxC,MAAM,CAAC;IACN,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,GAAG,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7C,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC/C,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CAChD,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC;KACrC,MAAM,CAAC;IACN,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAChD,CAAC;KACD,KAAK,EAAE,CAAC;AAEX,MAAM,CAAC,MAAM,yBAAyB,GAAG,CAAC;KACvC,MAAM,CAAC;IACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC/D,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;CAClD,CAAC;KACD,KAAK,EAAE;KACP,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;IACvE,OAAO,EAAE,oCAAoC;CAC9C,CAAC,CAAC;AAiCL,MAAM,UAAU,aAAa,CAAC,QAAkB,EAAE,IAAa;IAC7D,IAAI,4BAA4B,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;QACnD,OAAO,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,eAAe;YAClB,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,cAAc;YACjB,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,qBAAqB;YACxB,OAAO,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,KAAK,eAAe;YAClB,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,gBAAgB;YACnB,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,KAAK,gBAAgB;YACnB,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,KAAK,yBAAyB;YAC5B,OAAO,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjD,KAAK,0BAA0B;YAC7B,OAAO,4BAA4B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,KAAK,aAAa;YAChB,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,gBAAgB;YACnB,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,KAAK,uBAAuB;YAC1B,OAAO,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,KAAK,kBAAkB;YACrB,OAAO,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzC,KAAK,eAAe;YAClB,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,sBAAsB;YACzB,OAAO,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9C,KAAK,qBAAqB;YACxB,OAAO,uBAAuB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACnD,KAAK,uBAAuB;YAC1B,OAAO,yBAAyB,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACrD,KAAK,sBAAsB;YACzB,OAAO,yBAAyB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/C,KAAK,iBAAiB;YACpB,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,cAAc;YACjB,OAAO,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,KAAK,eAAe;YAClB,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACxC,KAAK,iBAAiB;YACpB,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,iBAAiB;YACpB,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,kBAAkB;YACrB,OAAO,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,YAAY,CAAC;QAClB,KAAK,kBAAkB,CAAC;QACxB,KAAK,iBAAiB;YACpB,OAAO,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,KAAK,aAAa;YAChB,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,KAAK,wBAAwB;YAC3B,OAAO,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,UAAkB,EAAE,GAAoB;IACpE,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IACnC,IAAI,UAAU,GAAG,GAAG,EAAE,CAAC;QACrB,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,OAAO;YAC5B,OAAO,EAAE,GAAG;YACZ,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI;YACf,OAAO,EAAE,iDAAiD,GAAG,0CAA0C,yBAAyB,uBAAuB;YACvJ,IAAI,EAAE,CAAC,YAAY,CAAC;SACrB,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}

@@ -1,1 +0,1 @@

{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAksBD,eAAO,MAAM,KAAK,EAAE,OAAO,EAAoD,CAAC"}
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAusBD,eAAO,MAAM,KAAK,EAAE,OAAO,EAAoD,CAAC"}

@@ -604,3 +604,8 @@ import { PLATFORM_METADATA, SEARCH_PLATFORM_VALUES } from './platformMetadata.js';

query: { type: 'string', description: 'Search query string' },
maxResults: { type: 'number', minimum: 1, maximum: 100, description: 'Maximum number of results to return' },
maxResults: {
type: 'number',
minimum: 1,
maximum: 500,
description: 'Maximum number of results to return. Default cap is 100; set CORE_MAX_RESULTS_CAP up to 500 to raise it.'
},
year: { type: 'string', description: 'Publication year filter' }

@@ -607,0 +612,0 @@ },

@@ -1,1 +0,1 @@

{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/core/tools.ts"],"names":[],"mappings":"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"}

@@ -1,1 +0,1 @@

{"version":3,"file":"CORESearcher.d.ts","sourceRoot":"","sources":["../../src/platforms/CORESearcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAgB,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAyBrG,qBAAa,YAAa,SAAQ,WAAW;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,MAAM,CAAC,EAAE,MAAM;IAe3B,eAAe,IAAI,oBAAoB;IAWjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IAepE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5E,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;YAWlE,UAAU;YAUV,gBAAgB;IAgC9B,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;CAMjB"}
{"version":3,"file":"CORESearcher.d.ts","sourceRoot":"","sources":["../../src/platforms/CORESearcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAgB,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AA0BrG,qBAAa,YAAa,SAAQ,WAAW;IAC3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;gBAE3B,MAAM,CAAC,EAAE,MAAM;IAe3B,eAAe,IAAI,oBAAoB;IAWjC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,KAAK,EAAE,CAAC;IA2CpE,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;IAS5E,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,MAAM,CAAC;YAWlE,UAAU;YAUV,gBAAgB;IAgC9B,OAAO,CAAC,SAAS;IA4BjB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,QAAQ;CAMjB"}

@@ -7,6 +7,7 @@ import axios from 'axios';

import { PDFExtractor } from '../utils/PDFExtractor.js';
import { getCoreMaxResultsCap } from '../config/ResultCaps.js';
export class CORESearcher extends PaperSource {
client;
constructor(apiKey) {
const configuredKey = apiKey || process.env.PAPER_SEARCH_CORE_API_KEY || process.env.CORE_API_KEY || '';
const configuredKey = apiKey || process.env.CORE_API_KEY || '';
super('core', 'https://api.core.ac.uk/v3', configuredKey);

@@ -36,10 +37,39 @@ this.client = axios.create({

try {
const response = await this.requestWithRetry('/search/works', {
q: query,
limit: Math.min(options.maxResults || 10, 100),
offset: 0,
...(options.year ? { year: options.year } : {})
});
const results = Array.isArray(response?.results) ? response.results : [];
return results.map((item) => this.parseWork(item)).filter(Boolean);
const maxResults = Math.min(Math.max(1, options.maxResults || 10), getCoreMaxResultsCap());
const pageSize = Math.min(maxResults, 100);
const papers = [];
const seen = new Set();
const maxPages = Math.min(20, maxResults);
for (let page = 0, offset = 0; papers.length < maxResults && page < maxPages; page += 1) {
const requestedLimit = Math.min(pageSize, maxResults - papers.length);
const response = await this.requestWithRetry('/search/works', {
q: query,
limit: requestedLimit,
offset,
...(options.year ? { year: options.year } : {})
});
const results = Array.isArray(response?.results) ? response.results : [];
if (results.length === 0)
break;
let added = 0;
for (const item of results) {
const paper = this.parseWork(item);
if (!paper || seen.has(paper.paperId))
continue;
seen.add(paper.paperId);
papers.push(paper);
added += 1;
if (papers.length >= maxResults)
break;
}
if (added === 0)
break;
offset += requestedLimit;
const totalHits = Number(response?.totalHits || response?.count || 0);
if (totalHits > 0 && offset >= totalHits)
break;
if (!totalHits && results.length < requestedLimit)
break;
}
return papers;
}

@@ -46,0 +76,0 @@ catch (error) {

@@ -1,1 +0,1 @@

{"version":3,"file":"CORESearcher.js","sourceRoot":"","sources":["../../src/platforms/CORESearcher.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"CORESearcher.js","sourceRoot":"","sources":["../../src/platforms/CORESearcher.ts"],"names":[],"mappings":"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"}

@@ -9,3 +9,3 @@ import axios from 'axios';

constructor(apiKey) {
const configuredKey = apiKey || process.env.PAPER_SEARCH_OPENAIRE_API_KEY || process.env.OPENAIRE_API_KEY || '';
const configuredKey = apiKey || process.env.OPENAIRE_API_KEY || '';
super('openaire', 'https://api.openaire.eu', configuredKey);

@@ -12,0 +12,0 @@ this.client = axios.create({

@@ -1,1 +0,1 @@

{"version":3,"file":"OpenAIRESearcher.js","sourceRoot":"","sources":["../../src/platforms/OpenAIRESearcher.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"OpenAIRESearcher.js","sourceRoot":"","sources":["../../src/platforms/OpenAIRESearcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAwB,MAAM,OAAO,CAAC;AAC7C,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAS,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAwD,MAAM,kBAAkB,CAAC;AACrG,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAE9D,MAAM,OAAO,gBAAiB,SAAQ,WAAW;IAC9B,MAAM,CAAgB;IAEvC,YAAY,MAAe;QACzB,MAAM,aAAa,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC;QACnE,KAAK,CAAC,UAAU,EAAE,yBAAyB,EAAE,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO;YACzB,OAAO,EAAE;gBACP,MAAM,EAAE,0CAA0C;gBAClD,YAAY,EAAE,UAAU;gBACxB,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,UAAU,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvE;YACD,YAAY,EAAE,MAAM;YACpB,cAAc,EAAE,MAAM,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;SAChF,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,OAAO;YACL,MAAM,EAAE,IAAI;YACZ,QAAQ,EAAE,KAAK;YACf,QAAQ,EAAE,KAAK;YACf,SAAS,EAAE,KAAK;YAChB,cAAc,EAAE,KAAK;YACrB,gBAAgB,EAAE,CAAC,YAAY,EAAE,MAAM,CAAC;SACzC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa,EAAE,UAAyB,EAAE;QACrD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;YACjF,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACnC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAC/D,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBAC3D,MAAM,IAAI,KAAK,CAAC,yDAAyD,OAAO,OAAO,CAAC,CAAC;YAC3F,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,OAAO,EAAE;gBACtD,aAAa,EAAE,KAAK;gBACpB,eAAe,EAAE,IAAI;gBACrB,OAAO,EAAE,GAAG;gBACZ,OAAO,EAAE,GAAG;gBACZ,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACxD,MAAM,MAAM,GAAY,EAAE,CAAC;YAE3B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,CAAC,KAAK;oBAAE,SAAS;gBACrB,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAClE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC;oBAAE,MAAM;YACzD,CAAC;YAED,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,QAAgB,EAAE,WAA4B,EAAE;QAChE,MAAM,IAAI,KAAK,CAAC,kGAAkG,CAAC,CAAC;IACtH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB,EAAE,WAA4B,EAAE;QAC9D,MAAM,IAAI,KAAK,CAAC,4EAA4E,CAAC,CAAC;IAChG,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,KAAa,EAAE,UAAkB;QACvD,MAAM,QAAQ,GAAG;YACf,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;YAClC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE;YAClC,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,aAAa,EAAE;SACtC,CAAC;QAEF,IAAI,SAAkB,CAAC;QACvB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,CAAC;gBAChD,IAAI,CAAC;oBACH,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,0BAA0B,EAAE;wBACjE,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE;wBACjE,OAAO,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,SAAS,EAAE;qBAC7C,CAAC,CAAC;oBACH,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;wBAC7D,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC;wBACvF,SAAS;oBACX,CAAC;oBACD,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;wBAC3B,MAAM,IAAI,KAAK,CAAC,qCAAqC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC1E,CAAC;oBACD,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;gBACrC,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,SAAS,GAAG,KAAK,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;QACD,MAAM,SAAS,YAAY,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IACtF,CAAC;IAEO,WAAW,CAAC,IAAS;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1F,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QAExB,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACzE,MAAM,QAAQ,GACZ,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,CAAC,CAAC;YAC5E,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,iCAAiC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjE,EAAE,CAAC;QACL,MAAM,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrH,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,eAAe,EAAE,YAAY,EAAE,KAAK,CAAC,CAAC,IAAI,YAAY,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAE9H,OAAO,YAAY,CAAC,MAAM,CAAC;YACzB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;YAC5B,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;YACpE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC;YACtG,GAAG;YACH,aAAa;YACb,MAAM;YACN,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,mBAAmB,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrD,MAAM,EAAE,UAAU;YAClB,IAAI,EAAE,aAAa,EAAE,WAAW,EAAE;YAClC,KAAK,EAAE;gBACL,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnE,UAAU,EAAE,UAAU;aACvB;SACF,CAAC,CAAC;IACL,CAAC;IAEO,YAAY,CAAC,KAAU,EAAE,OAAe;QAC9C,MAAM,GAAG,GAAU,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,CAAC,IAAS,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAC9C,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC9B,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;gBACnD,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,CAAC;QACZ,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,cAAc,CAAC,KAAU;QAC/B,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,IAAS,EAAE,EAAE;YACzB,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,OAAO;oBAAE,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC/B,OAAO;YACT,CAAC;YACD,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAC9C,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,IAAI,QAAQ,KAAK,GAAG;oBAAE,SAAS;gBAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;oBAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;;oBACnD,IAAI,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,CAAC;QACZ,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEO,KAAK,CAAC,MAAgB,EAAE,KAAe;QAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACzG,CAAC;IAEO,YAAY,CAAC,KAAU,EAAE,IAAc;QAC7C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;QAC3D,MAAM,GAAG,GAAa,EAAE,CAAC;QAEzB,MAAM,IAAI,GAAG,CAAC,IAAS,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE;YACnC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;gBAAE,OAAO;YAC9C,MAAM,aAAa,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC9B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACjC,IAAI,IAAI;oBAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;YACD,KAAK,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1D,IAAI,QAAQ,KAAK,GAAG;oBAAE,SAAS;gBAC/B,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;oBAAE,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;;oBAC3E,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YAClC,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,KAAK,CAAC,CAAC;QACZ,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3B,CAAC;IAEO,gBAAgB,CAAC,KAAU,EAAE,IAAc;QACjD,OAAO,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAEO,QAAQ,CAAC,KAAU;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QACnD,IAAI,OAAO,KAAK,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,qBAAqB,CAAC,MAAgB;QAC5C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACrF,CAAC;IAEO,UAAU,CAAC,KAAa;QAC9B,OAAO,KAAK,CAAC,KAAK,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,CAAC;IAEO,IAAI,CAAC,KAAa;QACxB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC;YAAE,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}

@@ -5,3 +5,3 @@ import axios from 'axios';

function easyScholarKey() {
const key = process.env.EASYSCHOLAR_KEY || process.env.PAPER_SEARCH_EASYSCHOLAR_KEY || '';
const key = process.env.EASYSCHOLAR_KEY || '';
if (!key.trim()) {

@@ -8,0 +8,0 @@ throw new Error('EasyScholar API key not configured. Set EASYSCHOLAR_KEY with `paper-search setup EASYSCHOLAR_KEY`.');

@@ -1,1 +0,1 @@

{"version":3,"file":"JournalMetricsService.js","sourceRoot":"","sources":["../../src/services/JournalMetricsService.ts"],"names":[],"mappings":"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"}
{"version":3,"file":"JournalMetricsService.js","sourceRoot":"","sources":["../../src/services/JournalMetricsService.ts"],"names":[],"mappings":"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"}
{
"name": "paper-search-cli",
"version": "0.2.0",
"version": "0.3.0",
"description": "Agent-friendly CLI for searching and downloading academic papers from multiple sources.",

@@ -24,3 +24,3 @@ "main": "dist/cli.js",

"README.md",
"README-sc.md",
"README.zh.md",
"skills/",

@@ -27,0 +27,0 @@ "LICENSE",

+145
-651
# Paper Search CLI
[中文](README-sc.md)
[简体中文](README.zh.md) | English
Paper Search CLI is a standalone Node.js command line tool for searching, validating, and downloading academic papers from multiple scholarly sources, plus querying journal metrics through EasyScholar. It is designed for direct terminal use, automation scripts, and agent workflows that need a stable command surface with predictable JSON output.
Paper Search CLI is an agent-facing Skill + CLI package built on a standalone Node.js command line tool for academic literature work. It gives AI agents, terminal users, and scripts one reproducible command layer with agent-friendly JSON output for literature metadata search, journal metrics lookup, PDF discovery/download, and paper body snippet search.
It keeps the broad platform coverage, unified paper model, and detailed capability descriptions of the earlier Paper Search implementation, but runs as a normal CLI process. There is no long-running background service to configure, start, or keep alive.
![Node.js](https://img.shields.io/badge/node.js->=18.0.0-green.svg)

@@ -13,35 +11,30 @@ ![TypeScript](https://img.shields.io/badge/typescript-^5.5.3-blue.svg)

![Platforms](https://img.shields.io/badge/platforms-25-brightgreen.svg)
![Version](https://img.shields.io/badge/version-0.2.0-blue.svg)
![Version](https://img.shields.io/badge/version-0.3.0-blue.svg)
[![LinuxDo](https://img.shields.io/badge/LinuxDo-community-1f6feb)](https://linux.do)
Thanks to the sincere, friendly, collaborative, and professional [LinuxDo](https://linux.do) community. The CLI + Skill direction and the paper-search workflow refinements in this project were shaped by LinuxDo discussions and open-source sharing.
[Quick Start](#quick-start) | [Architecture](#architecture) | [Configuration](#configuration) | [Agent Skill](#agent-skill) | [Supported Platforms](#supported-platforms) | [Commands](#commands) | [Troubleshooting](#troubleshooting)
[Quick Start](#quick-start) · [Configuration](#configuration) · [Agent Skill](#agent-skill) · [Supported Platforms](#supported-platforms) · [Commands](#commands) · [Tool Reference](#tool-reference) · [Troubleshooting](#troubleshooting)
## Core Workflows
## Design Goals
| Workflow | Primary commands | What it returns |
| --- | --- | --- |
| Literature metadata search | `paper-search search`, `paper-search run search_*` | Paper title, authors, year, journal, DOI, PMID/PMCID, arXiv ID, URL, abstract, and source metadata |
| Journal metrics lookup | `paper-search journal-metrics`, `paper-search run query_journal_metrics` | Impact factor, 5-year IF, JCR/SSCI quartile, CAS zone, JCI, ESI, warning flags, and rank fields |
| PDF discovery and download | `paper-search download`, `paper-search run download_with_fallback` | Verified PDF download paths through native sources, open access, configured entitlement, and Sci-Hub fallback when enabled |
| Body snippet search | `paper-search run search_semantic_snippets` | Semantic Scholar Open Access body snippets for methods, parameters, and wording clues |
- **Free-first retrieval**: prefer public metadata and open-access full-text routes before restricted or fragile sources.
- **One command surface**: keep search, status, download, and precise tool calls behind the same executable.
- **Agent-safe output**: produce predictable JSON that can be parsed without scraping terminal text.
- **Transparent source behavior**: document which platforms provide metadata only, which can download PDFs, and which need API keys.
- **No hidden background process**: each command starts, returns a result, and exits.
## Architecture
## Key Features
`paper-search` is not an MCP server. It is a normal CLI that AI agents can call through the bundled Skill, while terminal users and scripts can call the same `paper-search` command directly.
- **25 academic sources/platforms**: Crossref, OpenAlex, PubMed, PubMed Central, Europe PMC, arXiv, bioRxiv, medRxiv, Semantic Scholar, CORE, OpenAIRE, DBLP, ACM Digital Library metadata, USENIX metadata, OpenReview, Web of Science, Google Scholar, IACR ePrint, Sci-Hub, IEEE Xplore, ScienceDirect, Springer Nature/SpringerLink, Wiley, Scopus, and Unpaywall.
- **EasyScholar journal metrics**: query impact factor, 5-year impact factor, JCR/SSCI quartiles, CAS zones, JCI, ESI, warning flags, and optional raw official/custom rank fields.
- **Single command interface**: install once, then call `paper-search` from terminal, scripts, or agents.
- **JSON-first output**: stdout is machine-readable JSON by default; stderr is reserved for human-readable diagnostics.
- **Unified paper model**: normalized title, authors, DOI, source, dates, abstract, PDF URL, citation count, and provider-specific metadata where available.
- **Multi-source search with dedupe**: query selected sources with `--sources crossref,openalex,pmc`, or use `platform=all` to try every registered search source, then merge duplicates by DOI and title/author keys.
- **Semantic Scholar body-snippet search**: `search_semantic_snippets` searches Semantic Scholar's Open Access snippet index for body-text snippets, which is useful for finding methodological details. It requires `SEMANTIC_SCHOLAR_API_KEY`.
- **Funnel-style fallback download**: `download_with_fallback` tries native source download, discovered PDF URLs, PMC/Europe PMC/CORE/OpenAIRE, Unpaywall DOI resolution, then Sci-Hub as the final fallback unless `useSciHub=false`.
- **Rate limits and retry logic**: platform-specific rate limiting and retryable API error handling.
- **PDF download support**: download from supported sources such as arXiv, bioRxiv, medRxiv, Semantic Scholar, IACR, Sci-Hub, Springer open access, and Wiley DOI-based access.
- **Agent-friendly commands**: `tools`, `status`, `search`, `journal-metrics`, `download`, and `run` cover both simple use and precise advanced calls.
| Layer | Responsibility |
| --- | --- |
| CLI package body | Executes literature search, journal metrics lookup, PDF discovery/download, body snippet search, and stable JSON output |
| Bundled Skill | Ships `skills/paper-search` with agent routing rules and focused references; it does not store API keys, cookies, or account credentials |
| Friendly Management Layer | Provides `doctor`, `smoke`, `skills`, `config`, and `tools` around the four main capabilities: `metadata_search`, `journal_metrics`, `pdf_discovery`, and `body_snippet_search`. `doctor` health reports include masked configuration, Capability Profile, platform/source status, and missing or degraded items; `smoke` checks command wiring and live readiness; `skills` syncs the bundled Skill |
The four main capabilities are executed by the CLI package body and reported by the management layer. The Capability Profile also reports `entitled_access` so users can see whether publisher API keys, database keys, TDM tokens, or institutional entitlements are configured. Missing or degraded configuration for one workflow does not make unrelated workflows unavailable.
## Quick Start
### Install
Requires Node.js >= 18.0.0 and npm.

@@ -52,24 +45,21 @@

paper-search setup
paper-search search "machine learning" --platform crossref --max-results 3 --pretty
paper-search doctor --pretty
```
Run `paper-search setup` after installation to write optional API keys and emails into the user config.
For the Unpaywall and Crossref email prompts, you can press Enter and the CLI will write a random Gmail-format address automatically; use `paper-search config set` later if you want to replace it with your own email.
Try the four main workflows:
For local development, or to test changes that have not been released yet, install from source:
```bash
git clone git@github.com:dr-dumpling/paper-search-cli.git
cd paper-search-cli
npm install
npm run build
npm install -g .
paper-search search "machine learning clinical prediction" --platform crossref --max-results 3 --pretty
paper-search journal-metrics "Nature" "BMJ" --pretty
paper-search download 10.48550/arxiv.1201.0490 --platform arxiv --save-path ./downloads
paper-search run search_semantic_snippets --arg query="propensity score matching" --arg maxResults=3 --pretty
```
### Common Checks
Useful checks:
```bash
paper-search status --pretty
paper-search tools --pretty
paper-search config doctor --pretty
paper-search doctor --format text
paper-search smoke --mock --pretty
paper-search skills status --pretty
```

@@ -79,21 +69,17 @@

### Platform Families
The quick group table helps choose a source family. The capability matrix below is the clearer source of truth for what each platform can actually do.
The table below remains the source-of-truth for capabilities. In addition to the 25 paper search/retrieval sources, the CLI also provides EasyScholar journal metrics. EasyScholar does not participate in `platform=all` or `--sources`; call it with `journal-metrics` / `query_journal_metrics`.
### Platform Groups
For choosing a source or lookup tool quickly, use these broad families:
| Family | Platforms | Best For |
| Family | Platforms | Main use |
| --- | --- | --- |
| General scholarly metadata | Crossref, OpenAlex, Semantic Scholar, Google Scholar | Broad discovery, DOI metadata, citation clues, first-pass literature search |
| Journal metrics | EasyScholar | Impact factor, 5-year impact factor, JCR/SSCI quartiles, CAS zones, JCI, ESI, warning flags, and rank data |
| Medicine / life sciences | PubMed, PubMed Central, Europe PMC | Clinical, biomedical, public health, biomedical metadata, and open full text |
| Preprints / conference papers | arXiv, bioRxiv, medRxiv, OpenReview, IACR ePrint | Cross-disciplinary preprints, life-science/medical preprints, AI/ML submissions, and cryptography ePrints |
| Computer science / engineering | DBLP, ACM Digital Library metadata, IEEE Xplore, USENIX | CS bibliography, engineering databases, systems/security proceedings |
| Open full text / repositories | CORE, OpenAIRE, Unpaywall | Cross-disciplinary repository discovery and open-access PDF fallback routes |
| Citation indexes / publishers | Web of Science, Scopus, ScienceDirect, Springer Nature/SpringerLink, Wiley | Institution-backed metadata, citation databases, publisher-specific records and downloads |
| DOI-targeted lookup | Sci-Hub | DOI-based retrieval and the final automatic PDF fallback unless `useSciHub=false` |
| General scholarly metadata | Crossref, OpenAlex, Semantic Scholar, Google Scholar | Broad discovery, DOI metadata, citation clues, first-pass screening |
| Journal metrics | EasyScholar | Impact factor, JCR/SSCI quartile, CAS zone, JCI, ESI, warning flags |
| Biomedical and life sciences | PubMed, PubMed Central, Europe PMC | Biomedical metadata, PMID/PMCID verification, open full text |
| Preprints and conference papers | arXiv, bioRxiv, medRxiv, OpenReview, IACR ePrint | Preprints, AI/ML submissions, cryptography ePrints |
| Computer science and engineering | DBLP, ACM metadata, IEEE Xplore, USENIX | CS bibliography, engineering metadata, conference proceedings |
| Open access and repositories | CORE, OpenAIRE, Unpaywall | Repository discovery and open-access PDF fallback |
| Citation indexes and publishers | Web of Science, Scopus, ScienceDirect, Springer Nature/SpringerLink, Wiley | Institution-backed metadata, publisher records, entitled access |
| DOI-targeted fallback | Sci-Hub | DOI-based PDF fallback when enabled |
Some platforms belong to more than one practical workflow. For example, Semantic Scholar is useful for broad discovery and CS/AI, while arXiv covers CS, math, physics, and quantitative fields. These groups reflect the primary way a platform is used; CS searches often combine "computer science / engineering" with "preprints / conference papers."
### Capability Matrix

@@ -103,92 +89,86 @@

| Platform | Search | Download | Full Text | Citations | API Key | Special Features |
| Platform | Metadata search | PDF path | Body/full text | Citation signal | Config | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| Crossref | ✅ | ❌ | ❌ | ✅ | ❌ | Default search platform, broad metadata coverage |
| OpenAlex | ✅ | 🟡 Conditional | ❌ | ✅ | ❌ | Broad free metadata; can feed fallback downloads when records include OA links |
| Semantic Scholar | ✅ | ✅ | ✅ Body snippets | ✅ | 🟡 Optional* | AI semantic search + OA body snippets |
| Google Scholar | ✅ | ❌ | ❌ | ✅ | ❌ | Broad academic discovery, scrape-based |
| Crossref | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ❌ None | Default broad metadata source |
| OpenAlex | ✅ Yes | 🟡 Conditional | ❌ No | ✅ Yes | ❌ None | Free metadata; OA links can help PDF fallback |
| Semantic Scholar | ✅ Yes | 🟡 Conditional | ✅ Body snippets | ✅ Yes | 🟡 Optional; snippets require `SEMANTIC_SCHOLAR_API_KEY` | Good for AI/CS and body snippet clues |
| Google Scholar | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ❌ None | Broad discovery through page parsing |
#### Journal Metrics
| Platform | Search | Download | Full Text | Citations | API Key | Special Features |
| Platform | Metadata search | PDF path | Body/full text | Citation signal | Config | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| EasyScholar | ✅ Journal lookup | ❌ | ❌ | ❌ | ✅ Required | Impact factor, 5-year impact factor, JCR/SSCI quartiles, CAS zones, JCI, ESI, warning flags, and optional raw official/custom rank fields |
| EasyScholar | 🟡 Journal metrics only | ❌ No | ❌ No | ❌ No | ✅ Required `EASYSCHOLAR_KEY` | Impact factor, JCR/SSCI quartile, CAS zone, JCI, ESI, warnings, rank fields |
#### Medicine / Life Sciences
#### Biomedical and Life Sciences
| Platform | Search | Download | Full Text | Citations | API Key | Special Features |
| Platform | Metadata search | PDF path | Body/full text | Citation signal | Config | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| PubMed | ✅ | ❌ | ❌ | ❌ | 🟡 Optional | Biomedical literature through NCBI E-utilities |
| PubMed Central | ✅ | ✅ | ✅ | ❌ | ❌ | Open biomedical full text and PMC PDFs |
| Europe PMC | ✅ | ✅ | ✅ | ❌ | ❌ | Biomedical metadata plus open full-text links |
| PubMed | ✅ Yes | ❌ No | ❌ No | ❌ No | 🟡 Optional `PUBMED_API_KEY`, `NCBI_EMAIL`, `NCBI_TOOL` | NCBI E-utilities biomedical metadata |
| PubMed Central | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No | ❌ None | Open biomedical full text and PMC PDFs |
| Europe PMC | ✅ Yes | 🟡 Conditional | 🟡 Conditional | ❌ No | ❌ None | Biomedical metadata and open full-text links |
#### Computer Science / Engineering
#### Preprints and Conference Papers
| Platform | Search | Download | Full Text | Citations | API Key | Special Features |
| Platform | Metadata search | PDF path | Body/full text | Citation signal | Config | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| DBLP | ✅ | ❌ | ❌ | ❌ | ❌ | Computer science bibliography through the official DBLP search API |
| ACM Digital Library | ✅ | ❌ | ❌ | ✅ | ❌ | ACM DOI-prefix metadata through Crossref; no ACM scraping |
| USENIX | ✅ | ❌ | ❌ | ❌ | ❌ | DBLP-backed USENIX proceedings metadata; no USENIX search-page scraping |
| IEEE Xplore | ✅ | ❌ | ❌ | ✅ | ✅ Required | IEEE metadata through the official IEEE Xplore Metadata API |
| arXiv | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No | ❌ None | Physics, CS, math, quantitative preprints |
| bioRxiv | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No | ❌ None | Biology preprints |
| medRxiv | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No | ❌ None | Medical preprints |
| OpenReview | ✅ Yes | ❌ No | ❌ No | ❌ No | ❌ None | Public OpenReview notes, reviews, and submissions |
| IACR ePrint | ✅ Yes | ✅ Yes | ✅ Yes | ❌ No | ❌ None | Cryptography ePrint papers |
#### Preprints / Conference Papers
#### Computer Science and Engineering
| Platform | Search | Download | Full Text | Citations | API Key | Special Features |
| Platform | Metadata search | PDF path | Body/full text | Citation signal | Config | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| arXiv | ✅ | ✅ | ✅ | ❌ | ❌ | Physics, CS, math, and related preprints |
| bioRxiv | ✅ | ✅ | ✅ | ❌ | ❌ | Biology preprints |
| medRxiv | ✅ | ✅ | ✅ | ❌ | ❌ | Medical preprints |
| OpenReview | ✅ | ❌ | ❌ | ❌ | ❌ | Conference submissions, reviews, and preprints through public OpenReview notes search |
| IACR ePrint | ✅ | ✅ | ✅ | ❌ | ❌ | Cryptography papers |
| DBLP | ✅ Yes | ❌ No | ❌ No | ❌ No | ❌ None | Official DBLP computer-science bibliography |
| ACM metadata | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ❌ None | Uses Crossref ACM DOI-prefix metadata; does not scrape ACM pages |
| USENIX | ✅ Yes | ❌ No | ❌ No | ❌ No | ❌ None | Uses DBLP-backed USENIX metadata; does not scrape USENIX search pages |
| IEEE Xplore | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ✅ Required `IEEE_API_KEY` | Official IEEE Xplore Metadata API |
#### Open Full Text / Repositories
#### Open Access and Repositories
| Platform | Search | Download | Full Text | Citations | API Key | Special Features |
| Platform | Metadata search | PDF path | Body/full text | Citation signal | Config | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| CORE | ✅ | 🟡 Conditional | 🟡 Conditional | ❌ | 🟡 Optional | Downloads work when records include PDF or full-text links |
| OpenAIRE | ✅ | 🟡 Conditional | ❌ | ❌ | 🟡 Optional | Can feed fallback downloads when records include open links |
| Unpaywall | 🟡 Conditional | 🟡 Conditional | ❌ | ❌ | ✅ Required | DOI-only lookup; requires an email; downloads work when an OA PDF is found |
| CORE | ✅ Yes | 🟡 Conditional | 🟡 Conditional | ❌ No | 🟡 Optional `CORE_API_KEY` | Repository records may expose PDF or full-text links |
| OpenAIRE | ✅ Yes | 🟡 Conditional | ❌ No | ❌ No | 🟡 Optional `OPENAIRE_API_KEY` | Public search usually works without a key |
| Unpaywall | 🟡 DOI lookup only | 🟡 Conditional | ❌ No | ❌ No | ✅ Required `UNPAYWALL_EMAIL` or `PAPER_SEARCH_UNPAYWALL_EMAIL` | Finds DOI-based open-access PDF locations; email, not API key |
#### Citation Indexes / Publishers
#### Citation Indexes and Publishers
| Platform | Search | Download | Full Text | Citations | API Key | Special Features |
| Platform | Metadata search | PDF path | Body/full text | Citation signal | Config | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| Web of Science | ✅ | ❌ | ❌ | ✅ | ✅ Required | Citation database, date sorting, year ranges |
| ScienceDirect | ✅ | ❌ | ❌ | ✅ | ✅ Required | Elsevier metadata and abstracts |
| Springer Nature / SpringerLink | ✅ | 🟡 Conditional | ❌ | ❌ | ✅ Required | `springerlink` is an alias for the existing Springer Nature integration |
| Wiley | ❌ Keyword search | ✅ | ✅ | ❌ | ✅ Required | TDM API, DOI-based PDF download only |
| Scopus | ✅ | ❌ | ❌ | ✅ | ✅ Required | Abstract and citation database |
| Web of Science | ✅ Yes | ❌ No | ❌ No | ✅ Yes | ✅ Required `WOS_API_KEY` | Citation database metadata, date sorting, year ranges |
| ScienceDirect | ✅ Yes | 🟡 Conditional | ❌ No | ✅ Yes | ✅ Required `ELSEVIER_API_KEY` | Elsevier metadata; product permission is separate from Scopus |
| Springer Nature / SpringerLink | ✅ Yes | 🟡 Conditional | ❌ No | ❌ No | ✅ Required `SPRINGER_API_KEY`; 🟡 Optional `SPRINGER_OPENACCESS_API_KEY` | `springerlink` is an alias for the Springer integration |
| Wiley | ❌ No keyword search | ✅ DOI download | ✅ Yes | ❌ No | ✅ Required `WILEY_TDM_TOKEN` | TDM API; use a DOI found from another metadata source |
| Scopus | ✅ Yes | 🟡 Conditional metadata | ❌ No | ✅ Yes | ✅ Required `ELSEVIER_API_KEY` | Abstract and citation database; product permission is separate from ScienceDirect |
#### DOI-Targeted Lookup
#### DOI-Targeted Fallback
| Platform | Search | Download | Full Text | Citations | API Key | Special Features |
| Platform | Metadata search | PDF path | Body/full text | Citation signal | Config | Notes |
| --- | --- | --- | --- | --- | --- | --- |
| Sci-Hub | ✅ | ✅ | ❌ | ❌ | ❌ | DOI-based paper lookup and PDF retrieval |
| Sci-Hub | ❌ No | ✅ Yes | ❌ No | ❌ No | ❌ None | DOI/URL-targeted lookup and final PDF fallback when enabled |
Notes:
- In capability columns, `✅` means directly supported, `❌` means unsupported, and `🟡 Conditional` means support depends on record content or provider constraints, such as DOI-only lookup, available PDF/OA links, or open-access-only downloads.
- In the API Key column, `❌` means no configuration is needed, `🟡 Optional` means configuration improves limits or stability, and `✅ Required` means the key is required only when you use that platform, not that every new installation should configure it. Unpaywall requires an email rather than a traditional API key.
- Wiley does not support keyword search through the Wiley TDM API. Use `search_crossref` to find Wiley articles and then use `download_paper` with `platform=wiley` and the DOI.
- ACM and USENIX search intentionally use metadata-backed routes rather than crawling provider search pages, which keeps the integration compatible with robots.txt and reduces IP-blocking risk.
- `platform=all` tries every registered search source except DOI-download-only providers such as Wiley. Sources without configured credentials, sources that time out, and sources that fail are recorded in `failed_sources` / `errors` while the remaining sources continue.
- `--sources` accepts a comma-separated source list, for example `--sources crossref,openalex,pmc`.
- `🟡 Optional*` for Semantic Scholar means optional for regular search; `search_semantic_snippets` body-snippet search requires `SEMANTIC_SCHOLAR_API_KEY`.
- EasyScholar is a journal metrics lookup tool, not a paper search source. Use `paper-search journal-metrics "Nature"` or `paper-search run query_journal_metrics`.
- `Metadata search` means finding and screening papers; it is not the same as PDF download or body evidence.
- `pdf_discovery` separates open-access sources, configured entitlement sources, and Sci-Hub as a separately identified final fallback.
- EasyScholar is a journal metrics source, not a paper search source.
- Sci-Hub is not part of `metadata_search`; it is DOI/URL-targeted PDF fallback.
- `🟡 Conditional` means the platform can help only when the record exposes a DOI, open-access link, PDF URL, or configured entitlement.
- API keys are only required when you use the corresponding key-backed source or workflow.
## Configuration
Most free metadata sources work without configuration. For API keys and emails, prefer the user-level config file so the CLI works from any directory:
Most free metadata sources work without configuration. For stable agent workflows, run setup once and store credentials in the user config file:
```bash
paper-search setup
paper-search config set SEMANTIC_SCHOLAR_API_KEY your_semantic_scholar_api_key_here
paper-search setup EASYSCHOLAR_KEY # hidden prompt; safer for EasyScholar SecretKey
paper-search config set PAPER_SEARCH_UNPAYWALL_EMAIL you@example.com # optional: replace the setup-generated email
paper-search config list --pretty
paper-search config doctor --pretty
paper-search diagnostics --pretty
paper-search doctor --pretty
```
The default config path is:
Default config path:

@@ -199,567 +179,83 @@ ```text

The file is written with `0600` permissions. `config list` and `config doctor` mask secrets.
The config file is written with `0600` permissions. `config list`, `doctor`, and related commands mask secrets.
`paper-search setup` is the guided setup command. By default it asks for the recommended credentials only: Semantic Scholar, Unpaywall email, Crossref email, CORE, and EasyScholar. Use `paper-search setup --all` to walk through every supported configuration key, or `paper-search setup --keys SEMANTIC_SCHOLAR_API_KEY,CORE_API_KEY` to configure a specific subset.
### API Key Tiers
To reduce first-run friction, if `PAPER_SEARCH_UNPAYWALL_EMAIL` / `UNPAYWALL_EMAIL` / `CROSSREF_MAILTO` are not configured, pressing Enter during setup writes a random Gmail-format address such as `paper.search.xxxxxx@gmail.com`, so basic Unpaywall and Crossref requests can run immediately.
`paper-search diagnostics --pretty` lists every API-key or email-backed capability, the related config keys, whether the required keys are configured, common failure modes, and suggested next checks. Search commands also add a `diagnostic` field when a key-backed platform returns zero results or an auth/permission/rate-limit error.
### API Key Recommendation
`paper-search setup` asks only for the credentials that are most useful for ordinary new users. `✅ Required` in the platform table means "required for that platform", not "recommended for every installation".
| Level | Config keys | Recommended for new users | Notes |
| Tier | Keys | Used for | When to configure |
| --- | --- | --- | --- |
| Default recommended | `SEMANTIC_SCHOLAR_API_KEY` | Yes | Enables Semantic Scholar body-snippet search for methodology details and improves request stability. |
| Default recommended | `PAPER_SEARCH_UNPAYWALL_EMAIL` or `UNPAYWALL_EMAIL` | Yes | Finds open-access PDFs from DOI records; this only needs an email, not an API key. Press Enter in `setup` to generate a random Gmail-format email, or replace it manually. |
| Default recommended | `CROSSREF_MAILTO` | Yes | Puts Crossref requests in the polite pool, which is better for long-running or frequent searches. Press Enter in `setup` to reuse the generated email, or replace it manually. |
| Default recommended | `CORE_API_KEY` or `PAPER_SEARCH_CORE_API_KEY` | Yes | CORE anonymous access is often rate-limited; a key makes open repository search more reliable. |
| Default recommended | `EASYSCHOLAR_KEY` or `PAPER_SEARCH_EASYSCHOLAR_KEY` | Yes, if you need journal metrics | Enables EasyScholar journal metrics such as impact factor, JCR quartile, CAS zones, JCI, ESI, and warning flags. Use `paper-search setup EASYSCHOLAR_KEY` so the SecretKey is entered through a hidden prompt. |
| Biomedical-heavy use | `PUBMED_API_KEY`, `NCBI_EMAIL`, `NCBI_TOOL` | Recommended if you use PubMed heavily | Raises NCBI E-utilities limits and identifies the client. |
| Institution entitlement | `WOS_API_KEY` | Configure only with Web of Science API access | Enables Web of Science search and citation data; requires Clarivate API entitlement. |
| Institution entitlement | `IEEE_API_KEY` | Configure only with IEEE Xplore API access | Enables IEEE Xplore metadata search; IEEE may require registered API access and product entitlement. |
| Institution entitlement | `ELSEVIER_API_KEY` | Configure only with Scopus or ScienceDirect API access | One Elsevier key does not automatically grant both products; Scopus and ScienceDirect need separate entitlements. |
| Institution entitlement | `SPRINGER_API_KEY`, `SPRINGER_OPENACCESS_API_KEY` | Configure only when you need Springer | Used for Springer metadata and open-access records; 401 usually means an invalid key or missing product access. |
| Institution entitlement | `WILEY_TDM_TOKEN` | Configure only with Wiley TDM/institutional full-text access | DOI-based download only; availability depends on the token and institutional subscription. |
| Usually unnecessary | `PAPER_SEARCH_OPENAIRE_API_KEY` or `OPENAIRE_API_KEY` | Not recommended by default | OpenAIRE public search usually works without a key; configure only for account or quota requirements. |
| Recommended for most users | `SEMANTIC_SCHOLAR_API_KEY` | Body snippet search and more stable Semantic Scholar requests | Configure if you use methods/detail searches or high-frequency Semantic Scholar lookup |
| Recommended for most users | `UNPAYWALL_EMAIL` or `PAPER_SEARCH_UNPAYWALL_EMAIL` | DOI-based open-access PDF resolution | Configure during setup; an email is required, not an API key |
| Recommended for most users | `CROSSREF_MAILTO` | Crossref polite pool | Configure for long-running or frequent metadata search |
| Recommended for most users | `CORE_API_KEY` | CORE repository search | Configure if you rely on CORE or hit anonymous rate limits |
| Journal metrics | `EASYSCHOLAR_KEY` | EasyScholar impact factor, JCR/SSCI, CAS, JCI, ESI, warning flags | Configure if you need journal metrics; use `paper-search setup EASYSCHOLAR_KEY` for hidden input |
| Biomedical-heavy use | `PUBMED_API_KEY`, `NCBI_EMAIL`, `NCBI_TOOL` | NCBI E-utilities stability and higher limits | Configure if PubMed is a frequent source |
| Institutional or publisher access | `WOS_API_KEY`, `IEEE_API_KEY`, `ELSEVIER_API_KEY`, `SPRINGER_API_KEY`, `SPRINGER_OPENACCESS_API_KEY`, `WILEY_TDM_TOKEN` | Web of Science, IEEE, Scopus, ScienceDirect, Springer, Wiley metadata or entitled access | Configure only when you have the relevant API or institutional permission |
| Usually optional | `OPENAIRE_API_KEY` | OpenAIRE account/quota use | Usually unnecessary for public search |
You can also import an existing `.env`:
Useful key dashboards:
```bash
paper-search config import-env .env --pretty
```
| Service | Link |
| --- | --- |
| EasyScholar | [EasyScholar Open API](https://www.easyscholar.cc/console/user/open) |
| Semantic Scholar | [Semantic Scholar API](https://www.semanticscholar.org/product/api) |
| Unpaywall | [Unpaywall API](https://unpaywall.org/products/api) |
| CORE | [CORE API](https://core.ac.uk/services/api) |
| PubMed | [NCBI API Keys](https://ncbiinsights.ncbi.nlm.nih.gov/2017/11/02/new-api-keys-for-the-e-utilities/) |
| Web of Science | [Clarivate Developer Portal](https://developer.clarivate.com/apis) |
| IEEE Xplore | [IEEE Xplore Metadata API](https://developer.ieee.org/docs/read/Searching_the_IEEE_Xplore_Metadata_API) |
| Elsevier | [Elsevier Developer Portal](https://dev.elsevier.com/apikey/manage) |
| Springer Nature | [Springer Nature Developers](https://dev.springernature.com/) |
| Wiley TDM | [Wiley Text and Data Mining](https://onlinelibrary.wiley.com/library-info/resources/text-and-datamining) |
| OpenAIRE | [OpenAIRE APIs](https://develop.openaire.eu/) |
Config priority is:
1. Shell environment variables.
2. Current working directory `.env`.
3. User config file.
4. Built-in defaults for free sources.
For repo-local development, copying `.env.example` still works:
```bash
cp .env.example .env
```
### Environment Variables
```bash
# Web of Science, required for Web of Science search
WOS_API_KEY=your_web_of_science_api_key_here
WOS_API_VERSION=v1
# IEEE Xplore, required for IEEE metadata search
IEEE_API_KEY=your_ieee_api_key_here
# PubMed, optional; increases rate limit from 3 requests/sec to 10 requests/sec
PUBMED_API_KEY=your_ncbi_api_key_here
NCBI_EMAIL=you@example.com
NCBI_TOOL=paper-search-cli
# Semantic Scholar, required for body-snippet search and useful for higher request limits
SEMANTIC_SCHOLAR_API_KEY=your_semantic_scholar_api_key_here
# EasyScholar, required for journal metrics such as IF, JCR quartile, and CAS zones
EASYSCHOLAR_KEY=your_easyscholar_secret_key_here
# Elsevier, required for Scopus and ScienceDirect; each product still needs separate entitlement
ELSEVIER_API_KEY=your_elsevier_api_key_here
# Springer Nature, required for Springer search and open access download
SPRINGER_API_KEY=your_springer_api_key_here
SPRINGER_OPENACCESS_API_KEY=your_openaccess_api_key_here
# Wiley TDM, required for Wiley DOI-based PDF download
WILEY_TDM_TOKEN=your_wiley_tdm_token_here
# Crossref polite pool, optional but recommended; setup can auto-generate/reuse a random Gmail-format email
CROSSREF_MAILTO=you@example.com
# Unpaywall, required for DOI-based OA resolution; setup can auto-generate a random Gmail-format email
PAPER_SEARCH_UNPAYWALL_EMAIL=you@example.com
UNPAYWALL_EMAIL=you@example.com
# CORE, optional but recommended; anonymous access is often heavily rate-limited
PAPER_SEARCH_CORE_API_KEY=your_core_api_key_here
CORE_API_KEY=your_core_api_key_here
# OpenAIRE, optional; public search works without a key
PAPER_SEARCH_OPENAIRE_API_KEY=your_openaire_api_key_here
OPENAIRE_API_KEY=your_openaire_api_key_here
```
### API Key Sources
- Web of Science: [Clarivate Developer Portal](https://developer.clarivate.com/apis)
- IEEE Xplore: [IEEE Xplore Metadata API](https://developer.ieee.org/docs/read/Searching_the_IEEE_Xplore_Metadata_API)
- PubMed: [NCBI API Keys](https://ncbiinsights.ncbi.nlm.nih.gov/2017/11/02/new-api-keys-for-the-e-utilities/)
- Semantic Scholar: [Semantic Scholar API](https://www.semanticscholar.org/product/api)
- EasyScholar: [EasyScholar Open API](https://www.easyscholar.cc/console/user/open)
- Elsevier: [Elsevier Developer Portal](https://dev.elsevier.com/apikey/manage)
- Springer Nature: [Springer Nature Developers](https://dev.springernature.com/)
- Wiley TDM: [Wiley Text and Data Mining](https://onlinelibrary.wiley.com/library-info/resources/text-and-datamining)
- Unpaywall: [Unpaywall Data Format and API](https://unpaywall.org/products/api)
- CORE: [CORE API](https://core.ac.uk/services/api)
- OpenAIRE: [OpenAIRE APIs](https://develop.openaire.eu/)
`.env` is ignored by git. Do not commit API keys or tokens.
## Agent Skill
This repository includes an optional agent skill at `skills/paper-search/SKILL.md`. Install it into your agent's skill directory if your agent supports skills.
The npm package ships a bundled agent Skill at `skills/paper-search/SKILL.md`. Terminal users can use the CLI directly; AI agent workflows should install or sync the Skill so the agent can route the four main workflows correctly.
For example:
```bash
mkdir -p ~/.agents/skills/paper-search
cp skills/paper-search/SKILL.md ~/.agents/skills/paper-search/SKILL.md
paper-search setup --install-skills agents
paper-search skills status --pretty
paper-search skills diff --targets agents --format text
paper-search skills update --targets agents --pretty
```
The skill only teaches the agent how to call the `paper-search` CLI. API keys are still configured through `paper-search setup`, `paper-search config`, `.env`, or shell environment variables. Do not store secrets in the skill file.
Supported targets include `agents`, `codex`, `claude`, `cursor`, `gemini`, `antigravity`, and `all`. Skill updates overwrite package-managed Skill files while preserving extra files in the installed Skill directory.
## Output Contract
The Skill only teaches agents how to call the `paper-search` CLI. API keys still belong in `paper-search setup`, `paper-search config`, `.env`, or shell environment variables.
By default, every command writes JSON to stdout.
```json
{
"ok": true,
"tool": "search_papers",
"message": "Found 1 papers.",
"data": []
}
```
Use `--pretty` for formatted JSON:
```bash
paper-search search "machine learning" --platform crossref --max-results 1 --pretty
```
Use `--format text` if you need the raw text response:
```bash
paper-search search "machine learning" --platform crossref --max-results 1 --format text
```
Use `--include-text` to keep the raw response text alongside parsed JSON:
```bash
paper-search run search_crossref --arg query="machine learning" --arg maxResults=3 --include-text --pretty
```
## Commands
### `paper-search search`
Unified search entrypoint.
```bash
paper-search search <query> [options]
```
Examples:
```bash
paper-search search "machine learning" --platform crossref --max-results 10 --pretty
paper-search search "machine learning" --sources crossref,openalex --max-results 2 --pretty
paper-search search "cancer immunotherapy" --platform all --max-results 2 --pretty
paper-search search "transformer neural networks" --platform arxiv --category cs.AI --year 2023 --pretty
paper-search search "COVID-19 vaccine efficacy" --platform pubmed --max-results 20 --year 2023 --pretty
paper-search search "CRISPR gene editing" --platform webofscience --journal Nature --max-results 15 --pretty
```
Common options:
| Option | Description |
| Command | Purpose |
| --- | --- |
| `--platform` | Source platform. Default: `crossref` |
| `--sources` | Comma-separated source list for multi-source search, e.g. `crossref,openalex,pmc` |
| `--max-results` | Maximum result count |
| `--year` | Year filter, e.g. `2024`, `2020-2024`, `2020-` |
| `--author` | Author name filter |
| `--journal` | Journal name filter |
| `--category` | Category filter, mainly arXiv/bioRxiv/medRxiv |
| `--days` | Days back for bioRxiv/medRxiv |
| `--sort-by` | `relevance`, `date`, or `citations` |
| `--sort-order` | `asc` or `desc` |
| `paper-search search` | Integrated metadata search |
| `paper-search journal-metrics` | EasyScholar journal metrics lookup |
| `paper-search download` | Direct PDF download for a verified paper ID or DOI |
| `paper-search run` | Precise tool invocation with `--arg` or `--json-args` |
| `paper-search tools` | Runtime tool names and schemas |
| `paper-search doctor` | Masked config, Capability Profile, and platform status |
| `paper-search smoke` | Mock or live self-checks |
| `paper-search skills` | Bundled Skill status, diff, and update |
| `paper-search config` | User-level configuration management |
### `paper-search run`
Full command and tool schema: run `paper-search tools --pretty` or see [`skills/paper-search/references/cli-contract.md`](skills/paper-search/references/cli-contract.md).
Run a specific internal tool by name. This is the most precise command for agent workflows.
## Output
```bash
paper-search run <tool-name> --arg key=value --arg key=value
paper-search run <tool-name> --json-args '{"key":"value"}'
paper-search run <tool-name> --json-args @args.json
```
Commands return JSON by default. Use `--pretty` for formatted JSON and `--format text` only when you need a human-readable report.
Examples:
```bash
paper-search run search_crossref --arg query="machine learning" --arg maxResults=5 --pretty
paper-search run search_papers --json-args '{"query":"machine learning","sources":"crossref,openalex","maxResults":2}' --pretty
paper-search run search_pubmed --json-args '{"query":"osteoarthritis","maxResults":5,"sortBy":"date"}' --pretty
paper-search run get_paper_by_doi --arg doi="10.1038/nature12373" --pretty
paper-search run query_journal_metrics --json-args '{"journals":["Nature","BMJ"],"includeRaw":true}' --pretty
paper-search search "machine learning" --platform crossref --max-results 1 --pretty
paper-search doctor --format text
```
### `paper-search journal-metrics`
Query journal-level metrics through EasyScholar. Requires `EASYSCHOLAR_KEY` or `PAPER_SEARCH_EASYSCHOLAR_KEY`.
```bash
paper-search journal-metrics "Nature" "BMJ" --pretty
paper-search journal-metrics --file journals.txt --include-raw --pretty
```
Returned normalized fields include `impact_factor`, `impact_factor_5y`, `jcr_quartile`, `ssci_quartile`, `jci`, `cas_base`, `cas_upgraded`, `cas_small`, `cas_top`, `cas_zone`, `esi`, `warning`, `pku`, `cssci`, `cscd`, `ahci`, `ccf`, `ei`, and `china_st_core` when EasyScholar returns them. `--include-raw` also keeps `official_all`, `official_select`, and `custom_rank`.
### `paper-search tools`
List all available tool names, descriptions, and input schemas.
```bash
paper-search tools --pretty
```
### `paper-search status`
Show platform capabilities and API key status. Secrets are never printed.
```bash
paper-search status --pretty
paper-search status --validate --pretty
```
`--validate` may make live provider requests. Use it when you intentionally want credential validation.
### `paper-search diagnostics`
Show API-key-backed capabilities and troubleshooting guidance. This does not print secrets.
```bash
paper-search diagnostics --pretty
```
When a command returns zero results from a configured key-backed source, or fails with 401, 403, 400, or 429, JSON output includes a `diagnostic` field with likely causes and next actions.
### `paper-search config`
Manage the user-level config file.
```bash
paper-search config init --pretty
paper-search config set SEMANTIC_SCHOLAR_API_KEY your_key --pretty
paper-search config set PAPER_SEARCH_UNPAYWALL_EMAIL you@example.com --pretty # optional: replace the setup-generated email
paper-search config import-env .env --pretty
paper-search config list --pretty
paper-search config doctor --pretty
paper-search config path --pretty
paper-search config keys --pretty
```
### `paper-search download`
Download a paper PDF through a platform that supports downloads.
```bash
paper-search download <paper-id-or-doi> --platform <platform> [--save-path ./downloads]
```
Examples:
```bash
paper-search download 2301.00001 --platform arxiv --save-path ./downloads
paper-search download 10.1000/example --platform scihub --save-path ./downloads
paper-search download 10.1111/jtsb.12390 --platform wiley --save-path ./downloads
paper-search run download_with_fallback --arg source=arxiv --arg paperId=1201.0490 --arg doi=10.48550/arxiv.1201.0490 --arg savePath=./downloads --pretty
```
## Tool Reference
These names can be used with `paper-search run`.
### `search_papers`
Search across the unified dispatcher.
```bash
paper-search run search_papers --json-args '{"query":"machine learning","platform":"crossref","maxResults":10,"year":"2023","sortBy":"date"}' --pretty
```
Supported platforms:
```text
crossref, arxiv, webofscience, wos, pubmed, biorxiv, medrxiv, semantic,
iacr, googlescholar, scholar, scihub, ieee, sciencedirect, springer,
springerlink, scopus, openalex, unpaywall, pmc, europepmc, core,
openaire, dblp, acm, usenix, openreview, all
```
For multi-source search, pass `sources`:
```bash
paper-search run search_papers --json-args '{"query":"machine learning","sources":"crossref,openalex,pmc","maxResults":2}' --pretty
```
### `search_crossref`
Search Crossref, the default free metadata source.
```bash
paper-search run search_crossref --arg query="machine learning" --arg maxResults=10 --arg year=2023 --arg sortBy=relevance --arg sortOrder=desc --pretty
```
### `search_arxiv`
Search arXiv preprints.
```bash
paper-search run search_arxiv --arg query="transformer neural networks" --arg maxResults=10 --arg category=cs.AI --arg year=2023 --arg sortBy=date --arg sortOrder=desc --pretty
```
### `search_pubmed`
Search PubMed/MEDLINE biomedical literature.
```bash
paper-search run search_pubmed --json-args '{"query":"COVID-19 vaccine efficacy","maxResults":20,"year":"2023","journal":"New England Journal of Medicine","publicationType":["Journal Article","Clinical Trial"],"sortBy":"date"}' --pretty
```
### Open Metadata And Full-Text Sources
Use these commands for open metadata search, open full-text discovery, and fallback PDF lookup:
```bash
paper-search run search_openalex --arg query="machine learning" --arg maxResults=3 --pretty
paper-search run search_unpaywall --arg query="10.48550/arxiv.1201.0490" --pretty
paper-search run search_pmc --arg query="cancer immunotherapy" --arg maxResults=3 --pretty
paper-search run search_europepmc --arg query="cancer genomics" --arg maxResults=3 --pretty
paper-search run search_core --arg query="machine learning" --arg maxResults=3 --pretty
paper-search run search_openaire --arg query="machine learning" --arg maxResults=3 --pretty
```
Unpaywall is DOI-only and requires an email. CORE public access may return zero results or rate-limit quickly without an API key.
### Registry-Backed Platform Search
These metadata-oriented tools are generated from the platform registry, so adding later platforms only needs a new searcher plus registry metadata:
```bash
paper-search run search_dblp --arg query="graph neural networks" --arg maxResults=5 --pretty
paper-search run search_acm --arg query="software testing" --arg maxResults=5 --pretty
paper-search run search_usenix --arg query="file systems" --arg maxResults=5 --pretty
paper-search run search_openreview --arg query="large language models" --arg maxResults=5 --pretty
paper-search run search_springerlink --arg query="machine learning" --arg maxResults=5 --pretty
```
`search_ieee` uses the same generic schema but requires `IEEE_API_KEY`:
```bash
paper-search run search_ieee --arg query="wireless networks" --arg maxResults=5 --arg articleTitle="wireless" --pretty
```
### `search_webofscience`
Search Web of Science. Requires `WOS_API_KEY`.
```bash
paper-search run search_webofscience --arg query="CRISPR gene editing" --arg maxResults=15 --arg year=2022 --arg journal=Nature --pretty
```
### `search_google_scholar`
Search Google Scholar.
```bash
paper-search run search_google_scholar --arg query="deep learning" --arg maxResults=10 --arg yearLow=2020 --arg yearHigh=2024 --pretty
```
### `search_biorxiv` and `search_medrxiv`
Search preprint servers by recent day window and optional category.
```bash
paper-search run search_biorxiv --arg query="genomics" --arg maxResults=10 --arg days=30 --pretty
paper-search run search_medrxiv --arg query="epidemiology" --arg maxResults=10 --arg days=60 --pretty
```
### `search_semantic_scholar`
Search Semantic Scholar with optional field filters.
```bash
paper-search run search_semantic_scholar --json-args '{"query":"graph neural networks","maxResults":10,"fieldsOfStudy":["Computer Science"]}' --pretty
```
### `search_semantic_snippets`
Search Semantic Scholar's Open Access snippet index for body-text snippets that can help locate methodological details. Requires `SEMANTIC_SCHOLAR_API_KEY`.
```bash
paper-search run search_semantic_snippets --arg query="CMAverse mediation bootstrap confidence interval" --arg limit=5 --arg fieldsOfStudy=Medicine --pretty
```
### `query_journal_metrics`
Query EasyScholar journal metrics. This is not a paper search source; it is a journal-level lookup for publication planning, target-journal screening, and submission checks. Requires `EASYSCHOLAR_KEY` or `PAPER_SEARCH_EASYSCHOLAR_KEY`.
```bash
paper-search run query_journal_metrics --json-args '{"journals":["Nature","BMJ"]}' --pretty
paper-search run query_journal_metrics --json-args '{"journal":"Journal of Medical Internet Research","includeRaw":true}' --pretty
```
The normalized `core` object returns only fields present in EasyScholar for that journal, such as impact factor, JCR/SSCI quartiles, CAS zones, JCI, ESI, warning flags, and Chinese/discipline ranking indicators. Add `includeRaw=true` when you need the complete `officialRank.all`, `officialRank.select`, and `customRank` payloads.
### `search_iacr`
Search IACR ePrint Archive.
```bash
paper-search run search_iacr --arg query="zero knowledge proof" --arg maxResults=10 --arg fetchDetails=true --pretty
```
### `search_sciencedirect`
Search ScienceDirect. Requires `ELSEVIER_API_KEY`.
```bash
paper-search run search_sciencedirect --arg query="materials science" --arg maxResults=10 --arg openAccess=true --pretty
```
### `search_scopus`
Search Scopus. Requires `ELSEVIER_API_KEY`.
```bash
paper-search run search_scopus --arg query="citation analysis" --arg maxResults=10 --arg documentType=ar --pretty
```
### `search_springer`
Search Springer Nature. Requires `SPRINGER_API_KEY`.
```bash
paper-search run search_springer --arg query="machine learning" --arg maxResults=10 --arg type=Journal --arg openAccess=true --pretty
```
### `search_scihub`
Lookup a DOI or article URL through Sci-Hub and optionally download a PDF.
```bash
paper-search run search_scihub --arg doiOrUrl="10.1038/nature12373" --arg downloadPdf=false --pretty
paper-search run search_scihub --arg doiOrUrl="10.1038/nature12373" --arg downloadPdf=true --arg savePath=./downloads --pretty
```
### `check_scihub_mirrors`
Show Sci-Hub mirror health.
```bash
paper-search run check_scihub_mirrors --pretty
paper-search run check_scihub_mirrors --arg forceCheck=true --pretty
```
### `get_paper_by_doi`
Lookup metadata by DOI.
```bash
paper-search run get_paper_by_doi --arg doi="10.1038/nature12373" --arg platform=all --pretty
paper-search run get_paper_by_doi --arg doi="10.1038/nature12373" --arg platform=arxiv --pretty
```
### `download_paper`
Download PDF files from a platform. If the selected platform has no native downloader, or if native download fails, the command enters the same fallback funnel used by `download_with_fallback`.
```bash
paper-search run download_paper --arg paperId="2301.00001" --arg platform=arxiv --arg savePath=./downloads --pretty
```
Native download platforms:
```text
arxiv, biorxiv, medrxiv, semantic, iacr, scihub, springer, wiley,
pmc, europepmc, core
```
Other registered sources, such as `crossref`, `openalex`, `dblp`, `acm`, `usenix`, or `openreview`, can still be passed to `download_paper`; they start directly at the metadata/repository/Unpaywall/Sci-Hub fallback funnel.
### `download_with_fallback`
Try the full download funnel. The order is source-native download, metadata PDF URL, repository discovery, Unpaywall DOI resolution, then Sci-Hub as the final fallback:
```bash
paper-search run download_with_fallback --arg source=arxiv --arg paperId=1201.0490 --arg doi=10.48550/arxiv.1201.0490 --arg savePath=./downloads --pretty
paper-search run download_with_fallback --arg source=crossref --arg paperId="10.1038/nature12373" --arg doi="10.1038/nature12373" --arg savePath=./downloads --pretty
```
`useSciHub` defaults to `true`; set it to `false` only when you need to suppress that final fallback. `download_paper` also routes failed or unsupported platform downloads through the same funnel.
### `search_wiley`
Wiley keyword search is not supported by the Wiley TDM API. Use Crossref first, then download by DOI:
```bash
paper-search run search_crossref --arg query="site:wiley.com machine learning" --arg maxResults=10 --pretty
paper-search run download_paper --arg paperId="10.1111/example" --arg platform=wiley --pretty
```
### `get_platform_status`
Same as `paper-search status`.
```bash
paper-search run get_platform_status --pretty
paper-search run get_platform_status --arg validate=true --pretty
```
## Troubleshooting
### Command Not Found
| Problem | First check |
| --- | --- |
| Command not found | Reinstall globally with `npm install -g paper-search-cli` |
| Missing capability | Run `paper-search doctor --pretty` and configure the missing key with `paper-search setup` |
| Provider rate limits | Lower `--max-results`, configure the relevant key, or switch sources |
| Skill looks stale | Run `paper-search skills status --pretty`, then `paper-search skills update --targets agents --pretty` |
| Need complete CLI details | Run `paper-search tools --pretty` |
Run from the project:
```bash
node dist/cli.js status --pretty
```
Or register the local command:
```bash
npm link
paper-search status --pretty
```
### Missing API Key
Run:
```bash
paper-search status --pretty
```
If a provider shows `missing`, add the relevant key through `paper-search setup`, user config, or `.env`, then rerun the command.
For global installs, prefer user config:
```bash
paper-search setup
paper-search config set SEMANTIC_SCHOLAR_API_KEY your_key
paper-search config doctor --pretty
```
### Provider Rate Limits
Reduce `--max-results`, avoid repeated live validation, and prefer sources with official APIs. PubMed, Semantic Scholar, and CORE support optional keys for better limits. CORE anonymous access can return HTTP 429; configure `PAPER_SEARCH_CORE_API_KEY` when you rely on it.
### JSON Parsing In Scripts
Use default JSON output and parse stdout. Human diagnostics are written to stderr.
## Usage Boundaries

@@ -771,6 +267,4 @@

This project acknowledges and thanks the [LinuxDo](https://linux.do) community.
This project acknowledges and thanks the [LinuxDo](https://linux.do) community. The CLI + Skill direction and paper-search workflow refinements were shaped by community discussions and open-source sharing.
The CLI + Skill direction and paper-search workflow refinements were shaped by community discussions and open-source sharing. This repository keeps the workflow focused on a one-command terminal tool and does not require an MCP runtime.
It also references ideas from [openags/paper-search-mcp](https://github.com/openags/paper-search-mcp) while adapting the workflow to a standalone CLI.

@@ -777,0 +271,0 @@

@@ -10,6 +10,7 @@ ---

当用户提到“搜文献”“找论文”“文献检索”“search papers”“find papers”“literature search”
“查一下有没有相关研究”“帮我找几篇参考文献”“看看别人怎么做的”“下载论文 PDF”
“验证 PMID”“验证 DOI”“正文片段检索”“snippet search”“Methods 里怎么做的”
“方法学细节检索”“影响因子”“IF”“JCR 分区”“中科院分区”“期刊分区”
“期刊等级”“目标期刊指标”“journal metrics”等任务时使用。
“查一下有没有相关研究”“帮我找几篇参考文献”“看看别人怎么做的”“别人怎么写”
“Methods 里怎么做的”“Methods 写法”“方法学写法对照”“下载论文 PDF”
“验证 PMID”“验证 DOI”“正文片段检索”“snippet search”“方法学细节检索”
“影响因子”“IF”“JCR 分区”“中科院分区”“期刊分区”“期刊等级”
“目标期刊指标”“journal metrics”等任务时使用。
此 skill 只负责指导 agent 调用 paper-search CLI;API key 必须通过 paper-search setup、

@@ -21,150 +22,82 @@ paper-search config、.env 或环境变量配置,绝不要写入 Skill 文件。

你是学术文献检索调度器。所有检索、验证和下载动作优先通过 `paper-search` CLI 完成。Skill 只说明如何调用 CLI,不保存 API key,也不替用户生成或暴露密钥。
你是学术文献检索调度器。本 Skill 是 Routing Skill:负责把用户意图路由到 `paper-search` CLI,并维护证据、密钥和下载边界。优先通过 `paper-search` CLI 完成论文检索、元数据核验、正文片段检索、期刊指标查询和 PDF 获取;不要把本 Skill 当作密钥、cookie、账号或下载策略的存储位置。
## 先做配置检查
Reference 读取规则:
处理检索任务前,先确认 CLI 可用:
- 需要确认安装、配置、doctor、smoke、Skill 同步或健康状态时,读 `references/management-layer.md`。
- 需要在搜索、期刊指标、PDF 获取、正文片段检索之间做路由时,读 `references/capability-routing.md`。
- 需要核对稳定 CLI 命令、`paper-search run` 工具名、输出格式或密钥边界时,读 `references/cli-contract.md`。
- 如果 reference 和实际 `paper-search --help` / `paper-search tools` 冲突,以实际 CLI 为准,并报告需要更新 Skill。
```bash
command -v paper-search
paper-search status --pretty
```
## 快速自检
如果涉及 Semantic Scholar 正文片段、EasyScholar 期刊指标、CORE、Unpaywall、Web of Science、IEEE Xplore、Scopus、ScienceDirect、Springer/SpringerLink 或 Wiley 等需要 key/邮箱的能力,再运行:
第一次使用、环境不确定,或用户问“现在能用哪些能力”时:
```bash
paper-search config doctor --pretty
command -v paper-search
paper-search doctor --pretty
```
缺少 key 时,不要让用户把 key 发给 agent。提示用户在本机运行:
需要给用户一份可读健康报告时:
```bash
paper-search setup
paper-search config set SEMANTIC_SCHOLAR_API_KEY your_key
paper-search setup EASYSCHOLAR_KEY
paper-search config doctor --pretty
paper-search doctor --format text
```
CLI 的配置优先级:
安装缺失时先说明缺失;用户要求安装时再执行:
1. shell 环境变量
2. 当前目录 `.env`
3. 用户级配置 `~/.config/paper-search-cli/config.json`
4. 免费来源的内置默认值
## 安装缺失时
如果 `paper-search` 不存在,先告知用户需要安装。用户要求你安装时再执行:
```bash
npm install -g paper-search-cli
paper-search setup
paper-search status --pretty
paper-search doctor --pretty
```
## 常用命令
用户问“如何更新”、安装后怀疑 Skill 过期,或 `doctor`/`skills status` 显示 Skill 不同步时,先区分包本体更新和 Skill 同步;不要只运行 `skills update`。完整流程查看 `references/management-layer.md` 的 `Package Update And Capability Setup`。
### 快速检索
普通用户更新:
```bash
paper-search search "machine learning" --platform crossref --max-results 5 --pretty
paper-search search "osteoarthritis occupational exposure" --platform pubmed --max-results 10 --pretty
paper-search search "transformer attention mechanism" --sources arxiv,semantic,crossref --max-results 5 --pretty
paper-search search "graph neural networks" --platform dblp --max-results 5 --pretty
paper-search search "large language models" --platform openreview --max-results 5 --pretty
npm install -g paper-search-cli@latest
paper-search skills update --targets agents --pretty
paper-search doctor --pretty
```
`--platform all` 或 `--sources all` 只用于需要广覆盖召回时。精确任务优先指定平台或 `--sources`。
本地维护者更新:
### 精确工具调用
```bash
paper-search run search_pubmed --arg query="osteoarthritis occupational exposure" --arg maxResults=10 --pretty
paper-search run search_openalex --arg query="causal inference target trial emulation" --arg maxResults=5 --pretty
paper-search run search_acm --arg query="software testing" --arg maxResults=5 --pretty
paper-search run search_usenix --arg query="file systems" --arg maxResults=5 --pretty
paper-search run get_paper_by_doi --arg doi="10.xxxx/xxxxx" --pretty
git pull
npm install
npm run build
npm install -g .
paper-search skills update --targets agents --pretty
paper-search doctor --pretty
```
复杂参数使用 JSON:
缺少 API key 或 email 时,不要让用户在聊天里发送密钥;提示用户用 `paper-search setup` 或 `paper-search config` 在本机配置。
```bash
paper-search run search_semantic_scholar --json-args '{"query":"graph neural network medicine","maxResults":5,"year":"2020-2025"}' --pretty
```
## 功能地图
### 期刊指标查询
本 Skill 只有四个文献主功能。`doctor`、`smoke`、`config`、`skills` 是管理层命令,不属于文献任务本身。
当用户询问影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警、北大核心、南大核心、CSCD、A&HCI、CCF、EI 或目标期刊等级时,使用 EasyScholar 原生 CLI 工具,而不是通用论文检索。
| 用户意图 | 能力名 | 首选入口 | 关键边界 |
|---|---|---|---|
| 搜论文、找相关研究、验证 DOI/PMID、做文献初筛 | `metadata_search` | `paper-search search` 集成入口 / `paper-search run search_*` 精确工具入口 | 只返回和核验论文元数据;Sci-Hub 不属于搜索源 |
| 查影响因子、JCR/SSCI/中科院分区、JCI、ESI、预警、期刊等级 | `journal_metrics` | `paper-search journal-metrics` / `paper-search run query_journal_metrics` | 这是期刊指标查询,不是论文检索;需要 `EASYSCHOLAR_KEY` |
| 获取或下载已确认论文的 PDF | `pdf_discovery` | `paper-search download` / `paper-search run download_with_fallback` | 先核验论文身份,再下载;Sci-Hub 是默认开启的最后 fallback |
| 在论文正文片段中找 Methods/参数/写法线索 | `body_snippet_search` | `paper-search run search_semantic_snippets` | 查 Semantic Scholar OA snippet 索引;需要 `SEMANTIC_SCHOLAR_API_KEY`;不是完整全文解析 |
```bash
paper-search journal-metrics "Nature" "BMJ" --pretty
paper-search journal-metrics --file journals.txt --include-raw --pretty
paper-search run query_journal_metrics --json-args '{"journals":["Nature"],"includeRaw":true}' --pretty
```
## 默认工作流
返回时优先解释标准化的 `core` 字段:`impact_factor`、`impact_factor_5y`、`jcr_quartile`、`ssci_quartile`、`jci`、`cas_base`、`cas_upgraded`、`cas_small`、`cas_top`、`cas_zone`、`esi`、`warning`、`pku`、`cssci`、`cscd`、`ahci`、`ccf`、`ei`、`china_st_core`。如果需要完整字段,使用 `--include-raw` 并检查 `official_all`、`official_select`、`custom_rank`。
开放式文献任务使用 Two-Stage Paper Workflow:
EasyScholar 文档要求每秒最多 2 次请求;批量查询时不要并发调用。
1. 先做 `metadata_search`:检索和核验文献条目,确认题名、作者、年份、期刊、DOI、PMID/PMCID、URL、摘要线索和相关性。
2. 用户确认条目或任务明确需要 PDF 后,再做 `pdf_discovery`:下载选中的已核验条目;下载失败项记录原因,不阻塞其他条目。
### 下载 PDF
Direct Paper Request 可以跳过广泛发现:用户给出单个 DOI、PMID、PMCID、arXiv ID 或已核验清单并明确要求下载时,先核验目标身份,再进入下载。
```bash
paper-search download 2301.12345 --platform arxiv --save-path ./downloads --pretty
paper-search run download_paper --arg paperId="10.xxxx/xxxxx" --arg platform=springer --arg savePath="./downloads" --pretty
paper-search run download_with_fallback --json-args '{"source":"crossref","paperId":"10.xxxx/xxxxx","doi":"10.xxxx/xxxxx","title":"Paper title","savePath":"./downloads"}' --pretty
```
## 验证与输出边界
下载漏斗默认包含 Sci-Hub 作为最后兜底;只有用户明确要求关闭该阶段时,才把 `useSciHub` 设为 `false`。
关键论文输出前尽量验证:
## 平台选择
| 任务 | 首选 | 补充 |
|---|---|---|
| 生物医学、临床、药学、公卫 | `pubmed` | `pmc`, `europepmc`, `semantic`, `crossref` |
| 正文方法学片段 | `search_semantic_snippets` | 先用 `pubmed`/`semantic` 找题名和同义词 |
| 计算机、AI、数学、物理 | `arxiv` | `semantic`, `crossref`, `openalex` |
| 计算机文献目录/会议元数据 | `dblp` | `acm`, `usenix`, `openreview`, `ieee` 需要 key |
| 跨学科广覆盖 | `crossref` | `openalex`, `semantic` |
| 开放获取全文发现 | `pmc`, `europepmc`, `core`, `openaire`, `unpaywall` | `download_with_fallback` |
| 期刊影响因子/分区/等级 | `journal-metrics` | `query_journal_metrics` |
| 密码学 | `iacr` | `arxiv` |
| 引用统计排序 | `semantic`, `crossref`, `openalex` | `webofscience`, `scopus` 需要 key |
| 出版商/付费数据库 | `webofscience`, `ieee`, `scopus`, `sciencedirect`, `springer`/`springerlink`, `wiley` | 仅在 key 已配置时使用 |
平台边界:
- `acm` 通过 Crossref 的 ACM DOI 前缀检索元数据,不抓取 ACM Digital Library 页面。
- `usenix` 通过 DBLP 返回 USENIX 相关会议/期刊元数据,不抓取 USENIX 搜索页。
- `springerlink` 是 `springer` 的别名,仍需要 Springer API key。
查询构建规则:
- 默认把中文问题转为英文关键词。
- 用 3-8 个核心概念词,不要写成长句。
- 医学主题可加入 MeSH 或标准术语。
- 找方法细节时加入软件名、参数名、模型名、章节词,例如 `methods`, `statistical analysis`, `adjusted for`, `bootstrap`, `sensitivity analysis`。
## 正文片段检索
PubMed 只提供题名、作者、摘要、PMID、DOI、期刊和年份等元数据,不提供论文正文抓取。
正文片段检索使用:
```bash
paper-search run search_semantic_snippets --arg query="CMAverse mediation bootstrap confidence interval" --arg limit=5 --arg fieldsOfStudy=Medicine --pretty
```
使用规则:
1. 该工具需要 `SEMANTIC_SCHOLAR_API_KEY`。
2. 它检索 Semantic Scholar Open Access snippet 索引,不等于完整全文解析。
3. 只有 `snippetKind="body"` 的结果才能作为正文片段证据;`title` 或 `abstract` 只能作为线索。
4. 输出正文片段前,必须补齐和核验标题、作者、年份、期刊、DOI 或 PMID。
5. 如果 snippet 无结果,不代表研究不存在;回退到 `search_pubmed`、`search_semantic_scholar` 或 `search_crossref` 做摘要级检索。
## 验证规范
输出给用户前,关键论文必须尽量验证:
```bash
paper-search run search_pubmed --arg query="37654321[PMID]" --arg maxResults=1 --pretty

@@ -178,33 +111,8 @@ paper-search run get_paper_by_doi --arg doi="10.xxxx/xxxxx" --pretty

- 不凭模型记忆编造 PMID、DOI、期刊、年份或作者。
- PMID 必须能被 PubMed 查询确认。
- DOI 必须能被 DOI 查询或 Crossref/OpenAlex/Semantic Scholar 结果支持。
- PMID 必须能被 PubMed 查询确认;DOI 必须能被 DOI 查询或 Crossref/OpenAlex/Semantic Scholar 结果支持。
- 同一论文的 PMID、DOI、题名、第一作者和年份应一致;不一致时标记为可疑。
- snippet 结果缺少元数据时,先用完整标题二次检索补齐。
- `config` / `doctor` 输出应视为已脱敏,但不要复述、保存或写入任何原始密钥。
## 输出格式
## 常见失败处理
### 文献列表
```markdown
| # | 标题 | 作者 | 年份 | 期刊/来源 | DOI | PMID | 验证 |
|---|---|---|---:|---|---|---|---|
| 1 | [Title](URL) | First Author et al. | 2024 | Journal | 10.xxxx/xxxxx | 12345678 | 已验证 |
```
### 正文片段结果
```markdown
### 发现 1
**论文:** Full paper title
**引用:** Author et al. Journal. Year. DOI/PMID.
**片段类型:** body
**章节:** Methods / Statistical Analysis
**来源:** Semantic Scholar URL
> snippet text
```
## 错误处理
| 场景 | 处理 |

@@ -216,3 +124,2 @@ |---|---|

| 429 限流 | 降低 `--max-results`,换平台,或提示配置可选 key |
| EasyScholar 批量查询 | 控制在每秒最多 2 次请求;优先使用单次 `journal-metrics` 多期刊输入,不要并发 |
| 0 结果 | 放宽关键词,换英文同义词,换平台,或用 `--sources` 扩展 |

@@ -219,0 +126,0 @@ | 下载失败 | 优先开放获取来源和 `download_with_fallback`,报告失败原因 |

# Paper Search CLI
[English](README.md)
Paper Search CLI 是一个独立的 Node.js 命令行工具,用于跨多个学术来源检索论文、核验元数据、EasyScholar 检索影响因子和期刊分区等信息、下载 PDF。它面向终端直接使用、自动化脚本和 agent 工作流,提供稳定命令入口和可预测的 JSON 输出。
![Node.js](https://img.shields.io/badge/node.js->=18.0.0-green.svg)
![TypeScript](https://img.shields.io/badge/typescript-^5.5.3-blue.svg)
![License](https://img.shields.io/badge/license-MIT-blue.svg)
![Platforms](https://img.shields.io/badge/platforms-25-brightgreen.svg)
![Version](https://img.shields.io/badge/version-0.2.0-blue.svg)
[![LinuxDo](https://img.shields.io/badge/LinuxDo-community-1f6feb)](https://linux.do)
感谢真诚、友善、团结、专业的 [LinuxDo](https://linux.do) 社区。本项目的 CLI + Skill 路线和论文检索工作流改进,来自社区交流与开源分享的启发。
[快速开始](#快速开始) · [配置](#配置) · [Agent Skill](#agent-skill) · [支持的平台](#支持的平台) · [命令](#命令) · [工具参考](#工具参考) · [排障](#排障)
## 设计目标
- **免费来源优先**:优先使用公开元数据和开放获取全文路径,再考虑受限或不稳定来源。
- **单一命令入口**:检索、状态检查、下载和精确工具调用都收口到同一个可执行命令。
- **适合 agent 解析**:默认输出稳定 JSON,避免让调用方解析终端文本。
- **来源能力透明**:明确区分哪些平台只能提供元数据、哪些能下载 PDF、哪些需要 API key。
- **无后台服务负担**:每次调用只执行一个命令,返回结果后退出。
## 核心特性
- **25 个学术来源/平台**:Crossref、OpenAlex、PubMed、PubMed Central、Europe PMC、arXiv、bioRxiv、medRxiv、Semantic Scholar、CORE、OpenAIRE、DBLP、ACM Digital Library 元数据、USENIX 元数据、OpenReview、Web of Science、Google Scholar、IACR ePrint、Sci-Hub、IEEE Xplore、ScienceDirect、Springer Nature/SpringerLink、Wiley、Scopus、Unpaywall。
- **EasyScholar 影响因子与期刊分区检索**:检索影响因子、5 年影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警字段,以及可选的官方/自定义原始等级字段等。
- **PDF 下载支持**:支持 arXiv、bioRxiv、medRxiv、Semantic Scholar、IACR、Sci-Hub、Springer 开放获取、Wiley DOI 下载等路径。
- **正文片段检索**:用于检索论文正文片段,数据来源于 Semantic Scholar 中,适合查找论文中的方法学细节等。
- **适合 agent 调用**:`tools`、`status`、`search`、`journal-metrics`、`download`、`run` 覆盖简单检索和精确工具调用。
## 快速开始
### 安装
要求 Node.js >= 18.0.0 和 npm。
```bash
npm install -g paper-search-cli
paper-search setup
paper-search search "machine learning" --platform crossref --max-results 3 --pretty
```
安装后运行 `paper-search setup`,即可把可选 API key 和 email 写入用户级配置。
其中 Unpaywall 和 Crossref 的邮箱项可以直接回车跳过,CLI 会自动写入一个随机前缀的 Gmail 格式邮箱;如果你想使用自己的邮箱,后续再用 `paper-search config set` 覆盖即可。
如果你需要本地开发版,或要验证尚未发布的改动,可以从源码安装:
```bash
git clone git@github.com:dr-dumpling/paper-search-cli.git
cd paper-search-cli
npm install
npm run build
npm install -g .
```
### 常用检查
```bash
paper-search status --pretty
paper-search tools --pretty
paper-search config doctor --pretty
```
## 支持的平台
### 平台类型
下面的能力表仍然是平台能力的准确信息来源。除 25 个论文检索/获取来源外,CLI 还提供 EasyScholar 影响因子、期刊分区等检索;EasyScholar 不参与 `platform=all` 或 `--sources`,应使用 `journal-metrics` / `query_journal_metrics` 调用。
如果只是快速选择检索来源或查询工具,可以先按这些类型判断:
| 类型 | 平台 | 适合场景 |
| --- | --- | --- |
| 综合检索 | Crossref、OpenAlex、Semantic Scholar、Google Scholar | 广覆盖发现、DOI 元数据、引用线索、文献初筛 |
| 影响因子/期刊分区 | EasyScholar | 影响因子、5 年影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警和等级信息 |
| 医学/生命科学 | PubMed、PubMed Central、Europe PMC | 临床、生物医学、公卫、生物医学元数据和开放全文 |
| 预印本/会议稿 | arXiv、bioRxiv、medRxiv、OpenReview、IACR ePrint | 跨学科预印本、生命科学/医学预印本、AI/ML 投稿和密码学 ePrint |
| 计算机/工程 | DBLP、ACM Digital Library 元数据、IEEE Xplore、USENIX | CS 文献目录、工程数据库、系统/安全会议论文 |
| 开放全文/仓储 | CORE、OpenAIRE、Unpaywall | 跨学科仓储发现和开放获取 PDF 回退路径 |
| 引文库/出版商 | Web of Science、Scopus、ScienceDirect、Springer Nature/SpringerLink、Wiley | 机构权限型元数据、引文数据库、出版商记录和下载 |
| DOI 定向获取 | Sci-Hub | DOI 定向获取,并作为 PDF 下载漏斗的最后自动兜底;除非传入 `useSciHub=false` |
部分平台会跨多个实际工作流。例如 Semantic Scholar 既适合广覆盖检索,也常用于 CS/AI;arXiv 覆盖计算机、数学、物理和部分定量学科。这里按主要使用方式归类;做计算机方向检索时,通常会同时用“计算机/工程”和“预印本/会议稿”两组。
### 能力矩阵
#### 综合检索
| 平台 | 搜索 | 下载 | 全文 | 被引统计 | API Key | 特色功能 |
| --- | --- | --- | --- | --- | --- | --- |
| Crossref | ✅ | ❌ | ❌ | ✅ | ❌ | 默认搜索平台,广泛元数据覆盖 |
| OpenAlex | ✅ | 🟡 条件支持 | ❌ | ✅ | ❌ | 广泛免费元数据;记录含开放链接时可用于回退下载 |
| Semantic Scholar | ✅ | ✅ | ✅ 正文片段 | ✅ | 🟡 可选* | AI 语义检索 + OA 正文片段 |
| Google Scholar | ✅ | ❌ | ❌ | ✅ | ❌ | 广泛学术发现,基于页面解析 |
#### 影响因子与期刊分区
| 平台 | 搜索 | 下载 | 全文 | 被引统计 | API Key | 特色功能 |
| --- | --- | --- | --- | --- | --- | --- |
| EasyScholar | ✅ 影响因子/分区检索 | ❌ | ❌ | ❌ | ✅ 必需 | 影响因子、5 年影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警字段,以及可选的官方/自定义原始等级字段 |
#### 医学/生命科学
| 平台 | 搜索 | 下载 | 全文 | 被引统计 | API Key | 特色功能 |
| --- | --- | --- | --- | --- | --- | --- |
| PubMed | ✅ | ❌ | ❌ | ❌ | 🟡 可选 | NCBI E-utilities 生物医学文献 |
| PubMed Central | ✅ | ✅ | ✅ | ❌ | ❌ | 生物医学开放全文和 PMC PDF |
| Europe PMC | ✅ | ✅ | ✅ | ❌ | ❌ | 生物医学元数据和开放全文链接 |
#### 计算机/工程
| 平台 | 搜索 | 下载 | 全文 | 被引统计 | API Key | 特色功能 |
| --- | --- | --- | --- | --- | --- | --- |
| DBLP | ✅ | ❌ | ❌ | ❌ | ❌ | 通过官方 DBLP search API 检索计算机文献目录 |
| ACM Digital Library | ✅ | ❌ | ❌ | ✅ | ❌ | 通过 Crossref 的 ACM DOI 前缀元数据检索;不抓取 ACM 页面 |
| USENIX | ✅ | ❌ | ❌ | ❌ | ❌ | 基于 DBLP 的 USENIX 会议元数据;不抓取 USENIX 搜索页 |
| IEEE Xplore | ✅ | ❌ | ❌ | ✅ | ✅ 必需 | 通过官方 IEEE Xplore Metadata API 检索 IEEE 元数据 |
#### 开放全文/仓储
| 平台 | 搜索 | 下载 | 全文 | 被引统计 | API Key | 特色功能 |
| --- | --- | --- | --- | --- | --- | --- |
| CORE | ✅ | 🟡 条件支持 | 🟡 条件支持 | ❌ | 🟡 可选 | 记录含 PDF 或全文链接时可下载 |
| OpenAIRE | ✅ | 🟡 条件支持 | ❌ | ❌ | 🟡 可选 | 记录含开放链接时可用于回退下载 |
| Unpaywall | 🟡 条件支持 | 🟡 条件支持 | ❌ | ❌ | ✅ 必需 | 仅支持 DOI 查询;需要 email;发现 OA PDF 时可下载 |
#### 预印本/会议稿
| 平台 | 搜索 | 下载 | 全文 | 被引统计 | API Key | 特色功能 |
| --- | --- | --- | --- | --- | --- | --- |
| arXiv | ✅ | ✅ | ✅ | ❌ | ❌ | 物理、计算机、数学等预印本 |
| bioRxiv | ✅ | ✅ | ✅ | ❌ | ❌ | 生物学预印本 |
| medRxiv | ✅ | ✅ | ✅ | ❌ | ❌ | 医学预印本 |
| OpenReview | ✅ | ❌ | ❌ | ❌ | ❌ | 通过公开 OpenReview notes search 检索会议投稿、评审和预印本 |
| IACR ePrint | ✅ | ✅ | ✅ | ❌ | ❌ | 密码学论文 |
#### 引文库/出版商
| 平台 | 搜索 | 下载 | 全文 | 被引统计 | API Key | 特色功能 |
| --- | --- | --- | --- | --- | --- | --- |
| Web of Science | ✅ | ❌ | ❌ | ✅ | ✅ 必需 | 引文数据库、日期排序、年份范围 |
| ScienceDirect | ✅ | ❌ | ❌ | ✅ | ✅ 必需 | Elsevier 元数据和摘要 |
| Springer Nature / SpringerLink | ✅ | 🟡 条件支持 | ❌ | ❌ | ✅ 必需 | `springerlink` 是现有 Springer Nature 集成的别名 |
| Wiley | ❌ 关键词搜索 | ✅ | ✅ | ❌ | ✅ 必需 | TDM API,仅支持 DOI 下载 PDF |
| Scopus | ✅ | ❌ | ❌ | ✅ | ✅ 必需 | 摘要和引文数据库 |
#### DOI 定向获取
| 平台 | 搜索 | 下载 | 全文 | 被引统计 | API Key | 特色功能 |
| --- | --- | --- | --- | --- | --- | --- |
| Sci-Hub | ✅ | ✅ | ❌ | ❌ | ❌ | 基于 DOI 查询和下载 |
说明:
- 能力列中,`✅` 表示直接支持,`❌` 表示不支持,`🟡 条件支持` 表示只在满足条件时可用,例如记录里含 PDF/开放获取链接、只能按 DOI 查询,或只能下载开放获取记录。
- API Key 列中,`❌` 表示不需要配置,`🟡 可选` 表示不配置也能用但限额或稳定性较弱,`✅ 必需` 表示只在启用该平台时必须配置,不代表新用户默认都要配置。Unpaywall 需要的是 email,不是传统 API key。
- Wiley TDM API 不支持关键词搜索。应先用 `search_crossref` 找到 Wiley 文章 DOI,再用 `download_paper` 配合 `platform=wiley` 下载。
- ACM 和 USENIX 检索刻意走元数据后端,不抓取平台搜索页,以遵守 robots.txt 并降低 IP 被封风险。
- `platform=all` 会尝试所有已注册检索来源,但不包含 Wiley 这类只支持 DOI 下载、不能关键词搜索的平台。未配置 key、超时或请求失败的来源会写入 `failed_sources` / `errors`,其他来源继续返回。
- `--sources` 接受逗号分隔来源,例如 `--sources crossref,openalex,pmc`。
- `🟡 可选*` 对 Semantic Scholar 的含义是:普通检索可选;`search_semantic_snippets` 正文片段检索必需配置 `SEMANTIC_SCHOLAR_API_KEY`。
- EasyScholar 是影响因子、期刊分区等检索工具,不是论文检索来源;使用 `paper-search journal-metrics "Nature"` 或 `paper-search run query_journal_metrics`。
## 配置
多数免费元数据来源无需配置。API key 和 email 推荐写入用户级配置文件,这样 CLI 在任意目录运行都能读取:
```bash
paper-search setup
paper-search config set SEMANTIC_SCHOLAR_API_KEY your_semantic_scholar_api_key_here
paper-search setup EASYSCHOLAR_KEY # 隐藏输入;更适合配置 EasyScholar SecretKey
paper-search config set PAPER_SEARCH_UNPAYWALL_EMAIL you@example.com # 可选:手动覆盖 setup 自动生成的邮箱
paper-search config list --pretty
paper-search config doctor --pretty
paper-search diagnostics --pretty
```
默认配置路径:
```text
~/.config/paper-search-cli/config.json
```
配置文件权限会写成 `0600`。`config list` 和 `config doctor` 会自动脱敏。
`paper-search setup` 是引导式配置命令。默认只询问推荐配置:Semantic Scholar、Unpaywall email、Crossref email、CORE 和 EasyScholar。需要遍历所有支持项时使用 `paper-search setup --all`;只想配置指定项时使用 `paper-search setup --keys SEMANTIC_SCHOLAR_API_KEY,CORE_API_KEY`。
为降低首次配置成本,如果 `PAPER_SEARCH_UNPAYWALL_EMAIL` / `UNPAYWALL_EMAIL` / `CROSSREF_MAILTO` 尚未配置,setup 时直接回车会自动写入一个随机前缀的 Gmail 格式邮箱,例如 `paper.search.xxxxxx@gmail.com`,用于让 Unpaywall 和 Crossref 的基础请求能直接运行。
`paper-search diagnostics --pretty` 会列出所有依赖 API key 或 email 的能力、相关配置项、当前是否已配置、常见失败原因和建议排查动作。检索命令在 key-backed 平台返回 0 结果,或遇到 401、403、400、429 时,也会在 JSON 输出里附带 `diagnostic` 字段。
### API key 推荐策略
`paper-search setup` 默认只询问最适合普通新用户先配置的项目。平台表里的 `✅ 必需` 是“使用该平台必需”,不是“所有安装都建议配置”。
| 等级 | 配置项 | 是否建议新用户配置 | 说明 |
| --- | --- | --- | --- |
| 默认推荐 | `SEMANTIC_SCHOLAR_API_KEY` | 建议配置 | 开启 Semantic Scholar 正文片段检索,适合方法学细节检索,也能提高请求稳定性。 |
| 默认推荐 | `PAPER_SEARCH_UNPAYWALL_EMAIL` 或 `UNPAYWALL_EMAIL` | 建议配置 | 用 DOI 查找开放获取 PDF;只需要邮箱,不需要申请 API key。`setup` 直接回车会自动生成随机 Gmail 格式邮箱,也可以手动换成自己的邮箱。 |
| 默认推荐 | `CROSSREF_MAILTO` | 建议配置 | 让 Crossref 请求进入 polite pool,适合长期或高频检索。`setup` 直接回车会复用自动生成的邮箱,也可以手动换成自己的邮箱。 |
| 默认推荐 | `CORE_API_KEY` 或 `PAPER_SEARCH_CORE_API_KEY` | 建议配置 | CORE 匿名访问容易限流;配置 key 后更适合开放仓储检索。 |
| 默认推荐 | `EASYSCHOLAR_KEY` 或 `PAPER_SEARCH_EASYSCHOLAR_KEY` | 需要检索影响因子、期刊分区等时建议配置 | 开启 EasyScholar 检索影响因子、JCR 分区、中科院分区、JCI、ESI 和预警字段等能力。建议用 `paper-search setup EASYSCHOLAR_KEY` 通过隐藏输入配置 SecretKey。 |
| 生物医学高频 | `PUBMED_API_KEY`、`NCBI_EMAIL`、`NCBI_TOOL` | 经常用 PubMed 时建议配置 | 提高 NCBI E-utilities 限额,并让请求带上明确客户端信息。 |
| 机构权限型 | `WOS_API_KEY` | 有 Web of Science API 权限再配置 | 用于 Web of Science 检索和引文数据;需要 Clarivate API 权限。 |
| 机构权限型 | `IEEE_API_KEY` | 有 IEEE Xplore API 权限再配置 | 用于 IEEE Xplore 元数据检索;IEEE 可能要求注册 API 访问和产品权限。 |
| 机构权限型 | `ELSEVIER_API_KEY` | 有 Scopus 或 ScienceDirect API 权限再配置 | 同一个 Elsevier key 不等于自动拥有两个产品权限,Scopus 和 ScienceDirect 需要分别开通。 |
| 机构权限型 | `SPRINGER_API_KEY`、`SPRINGER_OPENACCESS_API_KEY` | 需要 Springer 平台时再配置 | 用于 Springer 元数据和开放获取记录;401 通常表示 key 无效或产品权限未开通。 |
| 机构权限型 | `WILEY_TDM_TOKEN` | 有 Wiley TDM/机构全文权限再配置 | 仅支持 DOI 下载;能否下载取决于 token 和机构订阅权限。 |
| 通常不用 | `PAPER_SEARCH_OPENAIRE_API_KEY` 或 `OPENAIRE_API_KEY` | 不建议默认配置 | OpenAIRE 公开检索通常无需 key;只有账号或配额要求时再配置。 |
也可以从现有 `.env` 导入:
```bash
paper-search config import-env .env --pretty
```
配置优先级:
1. shell 环境变量。
2. 当前工作目录 `.env`。
3. 用户级配置文件。
4. 免费来源的内置默认值。
仓库本地开发时,继续复制 `.env.example` 也可以:
```bash
cp .env.example .env
```
### 环境变量
```bash
# Web of Science,搜索 Web of Science 时必需
WOS_API_KEY=your_web_of_science_api_key_here
WOS_API_VERSION=v1
# IEEE Xplore,IEEE 元数据检索必需
IEEE_API_KEY=your_ieee_api_key_here
# PubMed,可选;从 3 requests/sec 提升到 10 requests/sec
PUBMED_API_KEY=your_ncbi_api_key_here
NCBI_EMAIL=you@example.com
NCBI_TOOL=paper-search-cli
# Semantic Scholar,正文片段检索必需,也可提升请求限额
SEMANTIC_SCHOLAR_API_KEY=your_semantic_scholar_api_key_here
# EasyScholar,检索影响因子、JCR 分区和中科院分区等信息时必需
EASYSCHOLAR_KEY=your_easyscholar_secret_key_here
# Elsevier,Scopus 和 ScienceDirect 必需;两个产品仍需要分别开通权限
ELSEVIER_API_KEY=your_elsevier_api_key_here
# Springer Nature,Springer 检索和开放获取下载必需
SPRINGER_API_KEY=your_springer_api_key_here
SPRINGER_OPENACCESS_API_KEY=your_openaccess_api_key_here
# Wiley TDM,Wiley DOI 下载必需
WILEY_TDM_TOKEN=your_wiley_tdm_token_here
# Crossref polite pool,可选但推荐;setup 直接回车会自动生成/复用随机 Gmail 格式邮箱
CROSSREF_MAILTO=you@example.com
# Unpaywall,DOI 开放获取解析必需;setup 直接回车会自动生成随机 Gmail 格式邮箱
PAPER_SEARCH_UNPAYWALL_EMAIL=you@example.com
UNPAYWALL_EMAIL=you@example.com
# CORE,可选但推荐;匿名访问经常被强限流
PAPER_SEARCH_CORE_API_KEY=your_core_api_key_here
CORE_API_KEY=your_core_api_key_here
# OpenAIRE,可选;公开搜索无需 key
PAPER_SEARCH_OPENAIRE_API_KEY=your_openaire_api_key_here
OPENAIRE_API_KEY=your_openaire_api_key_here
```
### API Key 获取入口
- Web of Science: [Clarivate Developer Portal](https://developer.clarivate.com/apis)
- IEEE Xplore: [IEEE Xplore Metadata API](https://developer.ieee.org/docs/read/Searching_the_IEEE_Xplore_Metadata_API)
- PubMed: [NCBI API Keys](https://ncbiinsights.ncbi.nlm.nih.gov/2017/11/02/new-api-keys-for-the-e-utilities/)
- Semantic Scholar: [Semantic Scholar API](https://www.semanticscholar.org/product/api)
- EasyScholar: [EasyScholar Open API](https://www.easyscholar.cc/console/user/open)
- Elsevier: [Elsevier Developer Portal](https://dev.elsevier.com/apikey/manage)
- Springer Nature: [Springer Nature Developers](https://dev.springernature.com/)
- Wiley TDM: [Wiley Text and Data Mining](https://onlinelibrary.wiley.com/library-info/resources/text-and-datamining)
- Unpaywall: [Unpaywall Data Format and API](https://unpaywall.org/products/api)
- CORE: [CORE API](https://core.ac.uk/services/api)
- OpenAIRE: [OpenAIRE APIs](https://develop.openaire.eu/)
`.env` 已被 git 忽略。不要提交 API key 或 token。
## Agent Skill
本仓库提供一个可选的 agent skill,位置是 `skills/paper-search/SKILL.md`。如果你的 agent 支持 skills,可以把它安装到对应的 skill 目录。
例如:
```bash
mkdir -p ~/.agents/skills/paper-search
cp skills/paper-search/SKILL.md ~/.agents/skills/paper-search/SKILL.md
```
这个 skill 只负责告诉 agent 如何调用 `paper-search` CLI。API key 仍然通过 `paper-search setup`、`paper-search config`、`.env` 或 shell 环境变量配置。不要把密钥写进 skill 文件。
## 输出约定
默认所有命令都向 stdout 输出 JSON。
```json
{
"ok": true,
"tool": "search_papers",
"message": "Found 1 papers.",
"data": []
}
```
使用 `--pretty` 输出格式化 JSON:
```bash
paper-search search "machine learning" --platform crossref --max-results 1 --pretty
```
需要原始文本响应时使用 `--format text`:
```bash
paper-search search "machine learning" --platform crossref --max-results 1 --format text
```
需要在 JSON 中保留原始响应文本时使用 `--include-text`:
```bash
paper-search run search_crossref --arg query="machine learning" --arg maxResults=3 --include-text --pretty
```
## 命令
### `paper-search search`
统一检索入口。
```bash
paper-search search <query> [options]
```
示例:
```bash
paper-search search "machine learning" --platform crossref --max-results 10 --pretty
paper-search search "machine learning" --sources crossref,openalex --max-results 2 --pretty
paper-search search "cancer immunotherapy" --platform all --max-results 2 --pretty
paper-search search "transformer neural networks" --platform arxiv --category cs.AI --year 2023 --pretty
paper-search search "COVID-19 vaccine efficacy" --platform pubmed --max-results 20 --year 2023 --pretty
paper-search search "CRISPR gene editing" --platform webofscience --journal Nature --max-results 15 --pretty
```
常用选项:
| 参数 | 说明 |
| --- | --- |
| `--platform` | 数据来源。默认 `crossref` |
| `--sources` | 逗号分隔的多源检索列表,例如 `crossref,openalex,pmc` |
| `--max-results` | 最大返回数量 |
| `--year` | 年份过滤,例如 `2024`、`2020-2024`、`2020-` |
| `--author` | 作者过滤 |
| `--journal` | 期刊过滤 |
| `--category` | 分类过滤,主要用于 arXiv/bioRxiv/medRxiv |
| `--days` | bioRxiv/medRxiv 回溯天数 |
| `--sort-by` | `relevance`、`date` 或 `citations` |
| `--sort-order` | `asc` 或 `desc` |
### `paper-search run`
按内部工具名执行。这个入口最适合 agent 精确调用。
```bash
paper-search run <tool-name> --arg key=value --arg key=value
paper-search run <tool-name> --json-args '{"key":"value"}'
paper-search run <tool-name> --json-args @args.json
```
示例:
```bash
paper-search run search_crossref --arg query="machine learning" --arg maxResults=5 --pretty
paper-search run search_papers --json-args '{"query":"machine learning","sources":"crossref,openalex","maxResults":2}' --pretty
paper-search run search_pubmed --json-args '{"query":"osteoarthritis","maxResults":5,"sortBy":"date"}' --pretty
paper-search run get_paper_by_doi --arg doi="10.1038/nature12373" --pretty
paper-search run query_journal_metrics --json-args '{"journals":["Nature","BMJ"],"includeRaw":true}' --pretty
```
### `paper-search journal-metrics`
通过 EasyScholar 检索影响因子、期刊分区等信息。需要配置 `EASYSCHOLAR_KEY` 或 `PAPER_SEARCH_EASYSCHOLAR_KEY`。
```bash
paper-search journal-metrics "Nature" "BMJ" --pretty
paper-search journal-metrics --file journals.txt --include-raw --pretty
```
标准化返回字段包括 `impact_factor`、`impact_factor_5y`、`jcr_quartile`、`ssci_quartile`、`jci`、`cas_base`、`cas_upgraded`、`cas_small`、`cas_top`、`cas_zone`、`esi`、`warning`、`pku`、`cssci`、`cscd`、`ahci`、`ccf`、`ei` 和 `china_st_core`,具体以 EasyScholar 对该期刊实际返回字段为准。加 `--include-raw` 会额外保留 `official_all`、`official_select` 和 `custom_rank`。
### `paper-search tools`
列出全部可用工具名、说明和输入 schema。
```bash
paper-search tools --pretty
```
### `paper-search status`
查看平台能力和 API key 状态。不会打印密钥内容。
```bash
paper-search status --pretty
paper-search status --validate --pretty
```
`--validate` 可能会向平台发起实时请求,只在确实需要验证凭证时使用。
### `paper-search diagnostics`
查看依赖 API key / email 的能力和排障建议。不会打印密钥内容。
```bash
paper-search diagnostics --pretty
```
当命令在已配置 key 的平台返回 0 结果,或遇到 401、403、400、429 时,JSON 输出会包含 `diagnostic` 字段,说明可能原因和下一步操作。
### `paper-search config`
管理用户级配置文件。
```bash
paper-search config init --pretty
paper-search config set SEMANTIC_SCHOLAR_API_KEY your_key --pretty
paper-search config set PAPER_SEARCH_UNPAYWALL_EMAIL you@example.com --pretty # 可选:手动覆盖 setup 自动生成的邮箱
paper-search config import-env .env --pretty
paper-search config list --pretty
paper-search config doctor --pretty
paper-search config path --pretty
paper-search config keys --pretty
```
### `paper-search download`
从支持下载的平台下载论文 PDF。
```bash
paper-search download <paper-id-or-doi> --platform <platform> [--save-path ./downloads]
```
示例:
```bash
paper-search download 2301.00001 --platform arxiv --save-path ./downloads
paper-search download 10.1000/example --platform scihub --save-path ./downloads
paper-search download 10.1111/jtsb.12390 --platform wiley --save-path ./downloads
paper-search run download_with_fallback --arg source=arxiv --arg paperId=1201.0490 --arg doi=10.48550/arxiv.1201.0490 --arg savePath=./downloads --pretty
```
## 工具参考
以下工具名可用于 `paper-search run`。
### `search_papers`
通过统一调度器检索。
```bash
paper-search run search_papers --json-args '{"query":"machine learning","platform":"crossref","maxResults":10,"year":"2023","sortBy":"date"}' --pretty
```
支持的平台:
```text
crossref, arxiv, webofscience, wos, pubmed, biorxiv, medrxiv, semantic,
iacr, googlescholar, scholar, scihub, ieee, sciencedirect, springer,
springerlink, scopus, openalex, unpaywall, pmc, europepmc, core,
openaire, dblp, acm, usenix, openreview, all
```
多源检索使用 `sources`:
```bash
paper-search run search_papers --json-args '{"query":"machine learning","sources":"crossref,openalex,pmc","maxResults":2}' --pretty
```
### `search_crossref`
搜索 Crossref,默认免费元数据来源。
```bash
paper-search run search_crossref --arg query="machine learning" --arg maxResults=10 --arg year=2023 --arg sortBy=relevance --arg sortOrder=desc --pretty
```
### `search_arxiv`
搜索 arXiv 预印本。
```bash
paper-search run search_arxiv --arg query="transformer neural networks" --arg maxResults=10 --arg category=cs.AI --arg year=2023 --arg sortBy=date --arg sortOrder=desc --pretty
```
### `search_pubmed`
搜索 PubMed/MEDLINE 生物医学文献。
```bash
paper-search run search_pubmed --json-args '{"query":"COVID-19 vaccine efficacy","maxResults":20,"year":"2023","journal":"New England Journal of Medicine","publicationType":["Journal Article","Clinical Trial"],"sortBy":"date"}' --pretty
```
### 开放元数据与全文来源
这些命令用于开放元数据检索、开放全文发现和 PDF 回退查找:
```bash
paper-search run search_openalex --arg query="machine learning" --arg maxResults=3 --pretty
paper-search run search_unpaywall --arg query="10.48550/arxiv.1201.0490" --pretty
paper-search run search_pmc --arg query="cancer immunotherapy" --arg maxResults=3 --pretty
paper-search run search_europepmc --arg query="cancer genomics" --arg maxResults=3 --pretty
paper-search run search_core --arg query="machine learning" --arg maxResults=3 --pretty
paper-search run search_openaire --arg query="machine learning" --arg maxResults=3 --pretty
```
Unpaywall 只支持 DOI,且需要配置 email。CORE 匿名访问可能很快返回空结果或被限流,长期使用建议配置 API key。
### 注册表驱动的平台检索
这些偏元数据检索的工具由平台注册表生成;后续接入新平台时,只需要增加新的 searcher 和平台注册信息:
```bash
paper-search run search_dblp --arg query="graph neural networks" --arg maxResults=5 --pretty
paper-search run search_acm --arg query="software testing" --arg maxResults=5 --pretty
paper-search run search_usenix --arg query="file systems" --arg maxResults=5 --pretty
paper-search run search_openreview --arg query="large language models" --arg maxResults=5 --pretty
paper-search run search_springerlink --arg query="machine learning" --arg maxResults=5 --pretty
```
`search_ieee` 使用同一套通用参数,但需要配置 `IEEE_API_KEY`:
```bash
paper-search run search_ieee --arg query="wireless networks" --arg maxResults=5 --arg articleTitle="wireless" --pretty
```
### `search_webofscience`
搜索 Web of Science。需要 `WOS_API_KEY`。
```bash
paper-search run search_webofscience --arg query="CRISPR gene editing" --arg maxResults=15 --arg year=2022 --arg journal=Nature --pretty
```
### `search_google_scholar`
搜索 Google Scholar。
```bash
paper-search run search_google_scholar --arg query="deep learning" --arg maxResults=10 --arg yearLow=2020 --arg yearHigh=2024 --pretty
```
### `search_biorxiv` 和 `search_medrxiv`
按最近天数窗口和可选分类搜索预印本。
```bash
paper-search run search_biorxiv --arg query="genomics" --arg maxResults=10 --arg days=30 --pretty
paper-search run search_medrxiv --arg query="epidemiology" --arg maxResults=10 --arg days=60 --pretty
```
### `search_semantic_scholar`
搜索 Semantic Scholar,可附加领域过滤。
```bash
paper-search run search_semantic_scholar --json-args '{"query":"graph neural networks","maxResults":10,"fieldsOfStudy":["Computer Science"]}' --pretty
```
### `search_semantic_snippets`
搜索 Semantic Scholar 的 Open Access snippet 索引,用于定位论文正文中的方法学细节片段。需要 `SEMANTIC_SCHOLAR_API_KEY`。
```bash
paper-search run search_semantic_snippets --arg query="CMAverse mediation bootstrap confidence interval" --arg limit=5 --arg fieldsOfStudy=Medicine --pretty
```
### `query_journal_metrics`
检索 EasyScholar 影响因子、期刊分区等信息。它不是论文检索来源,而是影响因子与期刊分区检索工具,适合投稿规划、目标期刊筛选和投稿前检查。需要配置 `EASYSCHOLAR_KEY` 或 `PAPER_SEARCH_EASYSCHOLAR_KEY`。
```bash
paper-search run query_journal_metrics --json-args '{"journals":["Nature","BMJ"]}' --pretty
paper-search run query_journal_metrics --json-args '{"journal":"Journal of Medical Internet Research","includeRaw":true}' --pretty
```
标准化的 `core` 对象只返回 EasyScholar 对该期刊实际存在的字段,例如影响因子、JCR/SSCI 分区、中科院分区、JCI、ESI、预警字段和中文/学科等级信息。需要完整官方和自定义等级数据时,使用 `includeRaw=true` 保留 `officialRank.all`、`officialRank.select` 和 `customRank`。
### `search_iacr`
搜索 IACR ePrint Archive。
```bash
paper-search run search_iacr --arg query="zero knowledge proof" --arg maxResults=10 --arg fetchDetails=true --pretty
```
### `search_sciencedirect`
搜索 ScienceDirect。需要 `ELSEVIER_API_KEY`。
```bash
paper-search run search_sciencedirect --arg query="materials science" --arg maxResults=10 --arg openAccess=true --pretty
```
### `search_scopus`
搜索 Scopus。需要 `ELSEVIER_API_KEY`。
```bash
paper-search run search_scopus --arg query="citation analysis" --arg maxResults=10 --arg documentType=ar --pretty
```
### `search_springer`
搜索 Springer Nature。需要 `SPRINGER_API_KEY`。
```bash
paper-search run search_springer --arg query="machine learning" --arg maxResults=10 --arg type=Journal --arg openAccess=true --pretty
```
### `search_scihub`
通过 DOI 或文章 URL 查询 Sci-Hub,并可选择下载 PDF。
```bash
paper-search run search_scihub --arg doiOrUrl="10.1038/nature12373" --arg downloadPdf=false --pretty
paper-search run search_scihub --arg doiOrUrl="10.1038/nature12373" --arg downloadPdf=true --arg savePath=./downloads --pretty
```
### `check_scihub_mirrors`
查看 Sci-Hub 镜像状态。
```bash
paper-search run check_scihub_mirrors --pretty
paper-search run check_scihub_mirrors --arg forceCheck=true --pretty
```
### `get_paper_by_doi`
按 DOI 查询元数据。
```bash
paper-search run get_paper_by_doi --arg doi="10.1038/nature12373" --arg platform=all --pretty
paper-search run get_paper_by_doi --arg doi="10.1038/nature12373" --arg platform=arxiv --pretty
```
### `download_paper`
从指定平台下载 PDF。如果该平台没有原生下载器,或原生下载失败,会进入与 `download_with_fallback` 相同的下载漏斗。
```bash
paper-search run download_paper --arg paperId="2301.00001" --arg platform=arxiv --arg savePath=./downloads --pretty
```
原生下载平台:
```text
arxiv, biorxiv, medrxiv, semantic, iacr, scihub, springer, wiley,
pmc, europepmc, core
```
其他已注册来源,例如 `crossref`、`openalex`、`dblp`、`acm`、`usenix`、`openreview`,也可以传给 `download_paper`;它们会直接进入元数据/仓储/Unpaywall/Sci-Hub 回退漏斗。
### `download_with_fallback`
按完整下载漏斗尝试下载。顺序是原生下载、元数据 PDF URL、仓储发现、Unpaywall DOI 解析,最后默认使用 Sci-Hub 兜底:
```bash
paper-search run download_with_fallback --arg source=arxiv --arg paperId=1201.0490 --arg doi=10.48550/arxiv.1201.0490 --arg savePath=./downloads --pretty
paper-search run download_with_fallback --arg source=crossref --arg paperId="10.1038/nature12373" --arg doi="10.1038/nature12373" --arg savePath=./downloads --pretty
```
`useSciHub` 默认为 `true`;只有需要关闭该最后兜底路径时才设置为 `false`。`download_paper` 在指定平台下载失败或平台不支持直接下载时,也会进入同一条漏斗。
### `search_wiley`
Wiley TDM API 不支持关键词搜索。应先用 Crossref 检索,再按 DOI 下载:
```bash
paper-search run search_crossref --arg query="site:wiley.com machine learning" --arg maxResults=10 --pretty
paper-search run download_paper --arg paperId="10.1111/example" --arg platform=wiley --pretty
```
### `get_platform_status`
等价于 `paper-search status`。
```bash
paper-search run get_platform_status --pretty
paper-search run get_platform_status --arg validate=true --pretty
```
## 排障
### 找不到命令
直接从项目运行:
```bash
node dist/cli.js status --pretty
```
或注册为本机命令:
```bash
npm link
paper-search status --pretty
```
### 缺少 API Key
运行:
```bash
paper-search status --pretty
```
如果某个平台显示 `missing`,通过 `paper-search setup`、用户级配置或 `.env` 添加对应 key 后重试。
全局安装时推荐写入用户级配置:
```bash
paper-search setup
paper-search config set SEMANTIC_SCHOLAR_API_KEY your_key
paper-search config doctor --pretty
```
### 平台限流
减少 `--max-results`,避免反复实时验证,优先使用官方 API。PubMed、Semantic Scholar 和 CORE 可通过可选 key 提升限额。CORE 匿名访问可能返回 HTTP 429;如果要稳定使用,建议配置 `PAPER_SEARCH_CORE_API_KEY`。
### 脚本解析 JSON
默认解析 stdout 即可。人类可读诊断会写入 stderr。
## 使用边界
部分来源可能受平台条款、机构订阅或当地法律限制。请只在你具备相应访问权限、并符合所在机构和平台规则的前提下使用相关功能。
## 项目来源
本项目认可并感谢 [LinuxDo](https://linux.do) 社区。
本项目的 CLI + Skill 路线和论文检索工作流改进,来自社区交流与开源分享的启发。当前定位是单命令终端工具,不需要 MCP 运行时。
项目也参考了 [openags/paper-search-mcp](https://github.com/openags/paper-search-mcp) 的相关思路,并将工作流适配为独立 CLI。
## License
MIT

Sorry, the diff of this file is not supported yet