ai4scholar 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/index.d.ts.map +1 -1
  2. package/dist/index.js +47 -10
  3. package/dist/index.js.map +1 -1
  4. package/dist/src/hooks/inject-skill.d.ts +11 -0
  5. package/dist/src/hooks/inject-skill.d.ts.map +1 -0
  6. package/dist/src/hooks/inject-skill.js +61 -0
  7. package/dist/src/hooks/inject-skill.js.map +1 -0
  8. package/dist/src/hooks/scholar-mode.js +1 -1
  9. package/dist/src/hooks/scholar-mode.js.map +1 -1
  10. package/dist/src/services/auto-updater.d.ts +15 -0
  11. package/dist/src/services/auto-updater.d.ts.map +1 -0
  12. package/dist/src/services/auto-updater.js +153 -0
  13. package/dist/src/services/auto-updater.js.map +1 -0
  14. package/dist/src/tools/arxiv.d.ts +32 -0
  15. package/dist/src/tools/arxiv.d.ts.map +1 -1
  16. package/dist/src/tools/arxiv.js +54 -0
  17. package/dist/src/tools/arxiv.js.map +1 -1
  18. package/dist/src/tools/biorxiv.d.ts +64 -0
  19. package/dist/src/tools/biorxiv.d.ts.map +1 -1
  20. package/dist/src/tools/biorxiv.js +65 -0
  21. package/dist/src/tools/biorxiv.js.map +1 -1
  22. package/dist/src/tools/doi-download.d.ts +33 -0
  23. package/dist/src/tools/doi-download.d.ts.map +1 -0
  24. package/dist/src/tools/doi-download.js +196 -0
  25. package/dist/src/tools/doi-download.js.map +1 -0
  26. package/dist/src/tools/pdf-utils.d.ts +9 -0
  27. package/dist/src/tools/pdf-utils.d.ts.map +1 -0
  28. package/dist/src/tools/pdf-utils.js +31 -0
  29. package/dist/src/tools/pdf-utils.js.map +1 -0
  30. package/dist/src/tools/pubmed.d.ts +16 -0
  31. package/dist/src/tools/pubmed.d.ts.map +1 -1
  32. package/dist/src/tools/pubmed.js +28 -1
  33. package/dist/src/tools/pubmed.js.map +1 -1
  34. package/dist/src/tools/semantic-scholar.d.ts +132 -0
  35. package/dist/src/tools/semantic-scholar.d.ts.map +1 -1
  36. package/dist/src/tools/semantic-scholar.js +230 -0
  37. package/dist/src/tools/semantic-scholar.js.map +1 -1
  38. package/package.json +3 -2
  39. package/skills/literature-survey/SKILL.md +106 -157
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AA6BlD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,QAqEtD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAkDlD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,QAyGtD"}
package/dist/index.js CHANGED
@@ -1,11 +1,16 @@
1
+ import path from "node:path";
1
2
  import { setApiKey } from "./src/tools/api-client.js";
2
- import { createSemanticSearchTool, createSemanticDetailTool, createSemanticCitationsTool, createSemanticReferencesTool, createSemanticAuthorSearchTool, createSemanticAuthorPapersTool, createSemanticRecommendationsTool, createSemanticRecommendationsForPaperTool, createSemanticSnippetSearchTool, } from "./src/tools/semantic-scholar.js";
3
- import { createPubmedSearchTool, createPubmedDetailTool, createPubmedCitationsTool, createPubmedRelatedTool, } from "./src/tools/pubmed.js";
3
+ import { createSkillInjectionHook } from "./src/hooks/inject-skill.js";
4
+ import { createAutoUpdaterService } from "./src/services/auto-updater.js";
5
+ import { createSemanticSearchTool, createSemanticDetailTool, createSemanticCitationsTool, createSemanticReferencesTool, createSemanticAuthorSearchTool, createSemanticAuthorPapersTool, createSemanticRecommendationsTool, createSemanticRecommendationsForPaperTool, createSemanticSnippetSearchTool, createSemanticAuthorDetailTool, createSemanticPaperMatchTool, createSemanticPaperBatchTool, createSemanticAuthorBatchTool, createSemanticPaperAuthorsTool, createSemanticBulkSearchTool, createSemanticDownloadTool, createSemanticReadTool, } from "./src/tools/semantic-scholar.js";
6
+ import { createPubmedSearchTool, createPubmedDetailTool, createPubmedCitationsTool, createPubmedRelatedTool, createPubmedBatchTool, } from "./src/tools/pubmed.js";
4
7
  import { createGoogleScholarSearchTool } from "./src/tools/google-scholar.js";
5
- import { createArxivSearchTool } from "./src/tools/arxiv.js";
6
- import { createBiorxivSearchTool, createMedrxivSearchTool } from "./src/tools/biorxiv.js";
8
+ import { createArxivSearchTool, createArxivDownloadTool, createArxivReadTool } from "./src/tools/arxiv.js";
9
+ import { createBiorxivSearchTool, createMedrxivSearchTool, createBiorxivDownloadTool, createMedrxivDownloadTool, createBiorxivReadTool, createMedrxivReadTool, } from "./src/tools/biorxiv.js";
10
+ import { createDoiDownloadTool, createDoiReadTool } from "./src/tools/doi-download.js";
7
11
  import { handleLibrary, handleProjects, handleReadingList, } from "./src/commands.js";
8
12
  import { createScholarModeHook } from "./src/hooks/scholar-mode.js";
13
+ const UPDATE_CHECK_INTERVAL_MS = 60 * 60 * 1000; // 1 hour
9
14
  export default function register(api) {
10
15
  const cfg = api.pluginConfig;
11
16
  if (cfg?.apiKey) {
@@ -14,7 +19,7 @@ export default function register(api) {
14
19
  else {
15
20
  api.logger.warn("AI4Scholar: no apiKey configured. Semantic Scholar, PubMed, and Google Scholar tools require an API key from ai4scholar.net.");
16
21
  }
17
- // --- Semantic Scholar (9 tools) ---
22
+ // --- Semantic Scholar (17 tools) ---
18
23
  api.registerTool(createSemanticSearchTool());
19
24
  api.registerTool(createSemanticDetailTool());
20
25
  api.registerTool(createSemanticCitationsTool());
@@ -24,18 +29,36 @@ export default function register(api) {
24
29
  api.registerTool(createSemanticRecommendationsTool());
25
30
  api.registerTool(createSemanticRecommendationsForPaperTool());
26
31
  api.registerTool(createSemanticSnippetSearchTool());
27
- // --- PubMed (4 tools) ---
32
+ api.registerTool(createSemanticAuthorDetailTool());
33
+ api.registerTool(createSemanticPaperMatchTool());
34
+ api.registerTool(createSemanticPaperBatchTool());
35
+ api.registerTool(createSemanticAuthorBatchTool());
36
+ api.registerTool(createSemanticPaperAuthorsTool());
37
+ api.registerTool(createSemanticBulkSearchTool());
38
+ api.registerTool(createSemanticDownloadTool());
39
+ api.registerTool(createSemanticReadTool());
40
+ // --- PubMed (5 tools) ---
28
41
  api.registerTool(createPubmedSearchTool());
29
42
  api.registerTool(createPubmedDetailTool());
30
43
  api.registerTool(createPubmedCitationsTool());
31
44
  api.registerTool(createPubmedRelatedTool());
45
+ api.registerTool(createPubmedBatchTool());
32
46
  // --- Google Scholar (1 tool) ---
33
47
  api.registerTool(createGoogleScholarSearchTool());
34
- // --- arXiv (1 tool) ---
48
+ // --- arXiv (3 tools) ---
35
49
  api.registerTool(createArxivSearchTool());
36
- // --- bioRxiv & medRxiv (2 tools) ---
50
+ api.registerTool(createArxivDownloadTool());
51
+ api.registerTool(createArxivReadTool());
52
+ // --- bioRxiv & medRxiv (6 tools) ---
37
53
  api.registerTool(createBiorxivSearchTool());
38
54
  api.registerTool(createMedrxivSearchTool());
55
+ api.registerTool(createBiorxivDownloadTool());
56
+ api.registerTool(createMedrxivDownloadTool());
57
+ api.registerTool(createBiorxivReadTool());
58
+ api.registerTool(createMedrxivReadTool());
59
+ // --- DOI direct download (2 tools) ---
60
+ api.registerTool(createDoiDownloadTool());
61
+ api.registerTool(createDoiReadTool());
39
62
  // --- Slash commands ---
40
63
  api.registerCommand({
41
64
  name: "library",
@@ -58,8 +81,22 @@ export default function register(api) {
58
81
  requireAuth: false,
59
82
  handler: handleReadingList,
60
83
  });
61
- // --- Scholar mode hook ---
84
+ // --- Hooks ---
62
85
  api.on("before_prompt_build", createScholarModeHook(), { priority: 100 });
63
- api.logger.info(`AI4Scholar plugin loaded — 17 tools registered (apiKey: ${cfg?.apiKey ? "configured" : "missing"})`);
86
+ api.on("before_tool_call", createSkillInjectionHook(path.dirname(api.source)));
87
+ // --- Auto-updater service ---
88
+ const autoUpdateEnabled = cfg?.autoUpdate !== false;
89
+ if (autoUpdateEnabled) {
90
+ api.registerService(createAutoUpdaterService({
91
+ packageName: "ai4scholar",
92
+ checkIntervalMs: UPDATE_CHECK_INTERVAL_MS,
93
+ logger: {
94
+ info: (msg) => api.logger.info(msg),
95
+ warn: (msg) => api.logger.warn(msg),
96
+ debug: (msg) => api.logger.debug?.(msg),
97
+ },
98
+ }));
99
+ }
100
+ api.logger.info(`AI4Scholar plugin loaded — 34 tools registered (apiKey: ${cfg?.apiKey ? "configured" : "missing"})`);
64
101
  }
65
102
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export declare function createSkillInjectionHook(entryFileDir: string): (event: {
2
+ toolName: string;
3
+ params: Record<string, unknown>;
4
+ }, _ctx: {
5
+ agentId?: string;
6
+ sessionKey?: string;
7
+ toolName: string;
8
+ }) => Promise<{
9
+ params: Record<string, unknown>;
10
+ } | void>;
11
+ //# sourceMappingURL=inject-skill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-skill.d.ts","sourceRoot":"","sources":["../../../src/hooks/inject-skill.ts"],"names":[],"mappings":"AA2BA,wBAAgB,wBAAwB,CAAC,YAAY,EAAE,MAAM,IAKzD,OAAO;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,EAC5D,MAAM;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,KAChE,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,CAiCvD"}
@@ -0,0 +1,61 @@
1
+ import fs from "node:fs/promises";
2
+ import fsSync from "node:fs";
3
+ import path from "node:path";
4
+ /**
5
+ * Build a before_tool_call hook that injects SKILL.md content into
6
+ * sessions_spawn task parameters.
7
+ *
8
+ * When the orchestrator spawns a sub-agent with task="/literature-survey\n...",
9
+ * this hook reads the matching SKILL.md and appends its body to the task,
10
+ * so the sub-agent receives full workflow instructions even though its
11
+ * system prompt runs in "minimal" mode (no <available_skills> section).
12
+ */
13
+ function findPluginRoot(startDir) {
14
+ let dir = startDir;
15
+ for (;;) {
16
+ if (fsSync.existsSync(path.join(dir, "openclaw.plugin.json"))) {
17
+ return dir;
18
+ }
19
+ const parent = path.dirname(dir);
20
+ if (parent === dir)
21
+ break;
22
+ dir = parent;
23
+ }
24
+ return startDir;
25
+ }
26
+ export function createSkillInjectionHook(entryFileDir) {
27
+ const pluginRoot = findPluginRoot(entryFileDir);
28
+ const skillsDir = path.join(pluginRoot, "skills");
29
+ return async (event, _ctx) => {
30
+ if (event.toolName !== "sessions_spawn")
31
+ return;
32
+ const task = event.params?.task;
33
+ if (typeof task !== "string")
34
+ return;
35
+ const match = task.match(/^\/([a-z][\w-]*)/);
36
+ if (!match)
37
+ return;
38
+ const skillName = match[1];
39
+ const skillMdPath = path.join(skillsDir, skillName, "SKILL.md");
40
+ let content;
41
+ try {
42
+ content = await fs.readFile(skillMdPath, "utf-8");
43
+ }
44
+ catch {
45
+ return;
46
+ }
47
+ const body = content.replace(/^---[\s\S]*?---\s*/, "").trim();
48
+ if (!body)
49
+ return;
50
+ const firstNewline = task.indexOf("\n");
51
+ const newTask = firstNewline === -1
52
+ ? task + "\n\n" + body
53
+ : task.slice(0, firstNewline) +
54
+ "\n\n" +
55
+ body +
56
+ "\n\n" +
57
+ task.slice(firstNewline + 1);
58
+ return { params: { ...event.params, task: newTask } };
59
+ };
60
+ }
61
+ //# sourceMappingURL=inject-skill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"inject-skill.js","sourceRoot":"","sources":["../../../src/hooks/inject-skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B;;;;;;;;GAQG;AAEH,SAAS,cAAc,CAAC,QAAgB;IACtC,IAAI,GAAG,GAAG,QAAQ,CAAC;IACnB,SAAS,CAAC;QACR,IAAI,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC,EAAE,CAAC;YAC9D,OAAO,GAAG,CAAC;QACb,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,YAAoB;IAC3D,MAAM,UAAU,GAAG,cAAc,CAAC,YAAY,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAElD,OAAO,KAAK,EACV,KAA4D,EAC5D,IAAiE,EACZ,EAAE;QACvD,IAAI,KAAK,CAAC,QAAQ,KAAK,gBAAgB;YAAE,OAAO;QAEhD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,CAAC;QAChC,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO;QAErC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK;YAAE,OAAO;QACnB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE3B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;QAChE,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,IAAI;YAAE,OAAO;QAElB,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,OAAO,GACX,YAAY,KAAK,CAAC,CAAC;YACjB,CAAC,CAAC,IAAI,GAAG,MAAM,GAAG,IAAI;YACtB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC;gBAC3B,MAAM;gBACN,IAAI;gBACJ,MAAM;gBACN,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC;QAEnC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC;IACxD,CAAC,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
- const SCHOLAR_MODE_PROMPT = `[AI4Scholar] For academic literature tasks (paper search, literature review, citation analysis, reading list management), match a skill from <available_skills> and read its SKILL.md before acting. Literature projects are managed under $W/projects/<topic>/. You have access to tools from ai4scholar-mcp covering Semantic Scholar, PubMed, Google Scholar, arXiv, bioRxiv, and medRxiv.`;
1
+ const SCHOLAR_MODE_PROMPT = `[AI4Scholar] You have 34 academic literature tools covering Semantic Scholar, PubMed, Google Scholar, arXiv, bioRxiv, and medRxiv. Capabilities include: search, paper detail, citations, references, author lookup, recommendations, snippet search, batch queries, title matching, bulk search, PDF download, full-text reading, and direct DOI-based paper download (leverages institutional access when available). For paper search or literature questions, call the tools directly and respond in Markdown. Only read the literature-survey SKILL.md when the user explicitly requests an HTML report or a comprehensive multi-source survey.`;
2
2
  export function createScholarModeHook() {
3
3
  return (event, _context) => {
4
4
  if (!event.messages || event.messages.length === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"scholar-mode.js","sourceRoot":"","sources":["../../../src/hooks/scholar-mode.ts"],"names":[],"mappings":"AAgBA,MAAM,mBAAmB,GAAG,+XAA+X,CAAC;AAE5Z,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,KAAgB,EAAE,QAAqB,EAAc,EAAE;QAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"scholar-mode.js","sourceRoot":"","sources":["../../../src/hooks/scholar-mode.ts"],"names":[],"mappings":"AAgBA,MAAM,mBAAmB,GAAG,snBAAsnB,CAAC;AAEnpB,MAAM,UAAU,qBAAqB;IACnC,OAAO,CAAC,KAAgB,EAAE,QAAqB,EAAc,EAAE;QAC7D,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACnD,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC;QACjD,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ export interface AutoUpdaterOptions {
2
+ packageName: string;
3
+ checkIntervalMs: number;
4
+ logger: {
5
+ info: (msg: string) => void;
6
+ warn: (msg: string) => void;
7
+ debug?: (msg: string) => void;
8
+ };
9
+ }
10
+ export declare function createAutoUpdaterService(options: AutoUpdaterOptions): {
11
+ id: string;
12
+ start: () => Promise<void>;
13
+ stop: () => void;
14
+ };
15
+ //# sourceMappingURL=auto-updater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-updater.d.ts","sourceRoot":"","sources":["../../../src/services/auto-updater.ts"],"names":[],"mappings":"AAkHA,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE;QACN,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAC5B,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;QAC5B,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;KAC/B,CAAC;CACH;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,kBAAkB;;;;EAyDnE"}
@@ -0,0 +1,153 @@
1
+ import { exec } from "child_process";
2
+ import { readFileSync, existsSync, lstatSync } from "fs";
3
+ import { fileURLToPath } from "url";
4
+ import { dirname, join } from "path";
5
+ function getPluginRoot() {
6
+ const __filename = fileURLToPath(import.meta.url);
7
+ const __dirname = dirname(__filename);
8
+ let root = __dirname;
9
+ for (let i = 0; i < 5; i++) {
10
+ if (existsSync(join(root, "package.json"))) {
11
+ return root;
12
+ }
13
+ root = dirname(root);
14
+ }
15
+ return join(__dirname, "../../..");
16
+ }
17
+ function isDevMode() {
18
+ if (process.env.AI4SCHOLAR_DEV === "1" || process.env.AI4SCHOLAR_DEV === "true") {
19
+ return true;
20
+ }
21
+ if (process.env.NODE_ENV === "development") {
22
+ return true;
23
+ }
24
+ const pluginRoot = getPluginRoot();
25
+ if (existsSync(join(pluginRoot, "tsconfig.json"))) {
26
+ return true;
27
+ }
28
+ try {
29
+ if (lstatSync(pluginRoot).isSymbolicLink()) {
30
+ return true;
31
+ }
32
+ }
33
+ catch {
34
+ // ignore
35
+ }
36
+ try {
37
+ const pkg = JSON.parse(readFileSync(join(pluginRoot, "package.json"), "utf-8"));
38
+ if (pkg.version && pkg.version.includes("-dev")) {
39
+ return true;
40
+ }
41
+ }
42
+ catch {
43
+ // ignore
44
+ }
45
+ return false;
46
+ }
47
+ function getCurrentVersion() {
48
+ try {
49
+ const packagePath = join(getPluginRoot(), "package.json");
50
+ const pkg = JSON.parse(readFileSync(packagePath, "utf-8"));
51
+ return pkg.version;
52
+ }
53
+ catch {
54
+ return "0.0.0";
55
+ }
56
+ }
57
+ async function getLatestVersion(packageName) {
58
+ return new Promise((resolve) => {
59
+ exec(`npm view ${packageName} version`, { timeout: 10000 }, (error, stdout) => {
60
+ if (error) {
61
+ resolve(null);
62
+ return;
63
+ }
64
+ resolve(stdout.trim());
65
+ });
66
+ });
67
+ }
68
+ function isNewerVersion(current, latest) {
69
+ const currentParts = current.split(".").map(Number);
70
+ const latestParts = latest.split(".").map(Number);
71
+ for (let i = 0; i < 3; i++) {
72
+ const c = currentParts[i] || 0;
73
+ const l = latestParts[i] || 0;
74
+ if (l > c)
75
+ return true;
76
+ if (l < c)
77
+ return false;
78
+ }
79
+ return false;
80
+ }
81
+ function getExtensionsDir() {
82
+ const home = process.env.HOME || process.env.USERPROFILE || "";
83
+ return join(home, ".openclaw", "extensions");
84
+ }
85
+ async function runUpdate(packageName, logger) {
86
+ const extensionsDir = getExtensionsDir();
87
+ const targetDir = join(extensionsDir, packageName);
88
+ return new Promise((resolve) => {
89
+ const cmd = `cd "${extensionsDir}" && npm pack ${packageName} --pack-destination . && tar -xzf ${packageName}-*.tgz && rm -rf "${targetDir}" && mv package "${targetDir}" && rm ${packageName}-*.tgz`;
90
+ exec(cmd, { timeout: 120000 }, (error, _stdout, stderr) => {
91
+ if (error) {
92
+ logger.warn(`AI4Scholar auto-update failed: ${stderr || error.message}`);
93
+ resolve(false);
94
+ return;
95
+ }
96
+ logger.info(`AI4Scholar updated. Restart gateway to apply.`);
97
+ resolve(true);
98
+ });
99
+ });
100
+ }
101
+ export function createAutoUpdaterService(options) {
102
+ const { packageName, checkIntervalMs, logger } = options;
103
+ let intervalId = null;
104
+ let isChecking = false;
105
+ const checkAndUpdate = async () => {
106
+ if (isChecking)
107
+ return;
108
+ isChecking = true;
109
+ try {
110
+ const currentVersion = getCurrentVersion();
111
+ const latestVersion = await getLatestVersion(packageName);
112
+ if (!latestVersion) {
113
+ logger.debug?.(`AI4Scholar update check: could not fetch latest version`);
114
+ return;
115
+ }
116
+ if (isNewerVersion(currentVersion, latestVersion)) {
117
+ logger.info(`AI4Scholar update available: ${currentVersion} → ${latestVersion}`);
118
+ await runUpdate(packageName, logger);
119
+ }
120
+ else {
121
+ logger.debug?.(`AI4Scholar is up to date (${currentVersion})`);
122
+ }
123
+ }
124
+ catch (err) {
125
+ logger.warn(`AI4Scholar update check error: ${err}`);
126
+ }
127
+ finally {
128
+ isChecking = false;
129
+ }
130
+ };
131
+ return {
132
+ id: "ai4scholar-auto-updater",
133
+ start: async () => {
134
+ if (isDevMode()) {
135
+ logger.debug?.("AI4Scholar auto-updater skipped (dev mode)");
136
+ return;
137
+ }
138
+ logger.debug?.("AI4Scholar auto-updater service started");
139
+ setTimeout(() => {
140
+ checkAndUpdate();
141
+ }, 5000);
142
+ intervalId = setInterval(checkAndUpdate, checkIntervalMs);
143
+ },
144
+ stop: () => {
145
+ if (intervalId) {
146
+ clearInterval(intervalId);
147
+ intervalId = null;
148
+ }
149
+ logger.debug?.("AI4Scholar auto-updater service stopped");
150
+ },
151
+ };
152
+ }
153
+ //# sourceMappingURL=auto-updater.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto-updater.js","sourceRoot":"","sources":["../../../src/services/auto-updater.ts"],"names":[],"mappings":"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"}
@@ -17,4 +17,36 @@ export declare function createArxivSearchTool(): {
17
17
  isError?: boolean;
18
18
  }>;
19
19
  };
20
+ export declare function createArxivDownloadTool(): {
21
+ label: string;
22
+ name: string;
23
+ description: string;
24
+ parameters: import("@sinclair/typebox").TObject<{
25
+ paper_id: import("@sinclair/typebox").TString;
26
+ }>;
27
+ execute: (_id: string, raw: unknown) => Promise<{
28
+ type: "tool_result";
29
+ content: {
30
+ type: "text";
31
+ text: string;
32
+ }[];
33
+ isError?: boolean;
34
+ }>;
35
+ };
36
+ export declare function createArxivReadTool(): {
37
+ label: string;
38
+ name: string;
39
+ description: string;
40
+ parameters: import("@sinclair/typebox").TObject<{
41
+ paper_id: import("@sinclair/typebox").TString;
42
+ }>;
43
+ execute: (_id: string, raw: unknown) => Promise<{
44
+ type: "tool_result";
45
+ content: {
46
+ type: "text";
47
+ text: string;
48
+ }[];
49
+ isError?: boolean;
50
+ }>;
51
+ };
20
52
  //# sourceMappingURL=arxiv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"arxiv.d.ts","sourceRoot":"","sources":["../../../src/tools/arxiv.ts"],"names":[],"mappings":"AA+DA,wBAAgB,qBAAqB;;;;;;;;;;mBAkBZ,MAAM,OAAO,OAAO;;;;;;;;EA6B5C"}
1
+ {"version":3,"file":"arxiv.d.ts","sourceRoot":"","sources":["../../../src/tools/arxiv.ts"],"names":[],"mappings":"AAgEA,wBAAgB,qBAAqB;;;;;;;;;;mBAkBZ,MAAM,OAAO,OAAO;;;;;;;;EA6B5C;AAMD,wBAAgB,uBAAuB;;;;;;;mBASd,MAAM,OAAO,OAAO;;;;;;;;EAW5C;AAMD,wBAAgB,mBAAmB;;;;;;;mBASV,MAAM,OAAO,OAAO;;;;;;;;EAkB5C"}
@@ -2,6 +2,7 @@ import { Type } from "@sinclair/typebox";
2
2
  import { fetchRaw } from "./api-client.js";
3
3
  import { readString, readNumber } from "./params.js";
4
4
  import { Result } from "./result.js";
5
+ import { fetchPdfBuffer, extractPdfText } from "./pdf-utils.js";
5
6
  const ARXIV_API = "https://export.arxiv.org/api/query";
6
7
  const SORT_MAP = {
7
8
  relevance: "relevance",
@@ -80,4 +81,57 @@ export function createArxivSearchTool() {
80
81
  },
81
82
  };
82
83
  }
84
+ // ---------------------------------------------------------------------------
85
+ // download_arxiv
86
+ // ---------------------------------------------------------------------------
87
+ export function createArxivDownloadTool() {
88
+ return {
89
+ label: "arXiv PDF Download",
90
+ name: "download_arxiv",
91
+ description: "Get the direct PDF download URL for an arXiv paper by its ID.",
92
+ parameters: Type.Object({
93
+ paper_id: Type.String({ description: "arXiv paper ID (e.g. '2106.12345')" }),
94
+ }),
95
+ execute: async (_id, raw) => {
96
+ const p = raw;
97
+ const paperId = readString(p, "paper_id", { required: true });
98
+ const pdfUrl = `https://arxiv.org/pdf/${paperId}.pdf`;
99
+ return Result.ok({
100
+ paper_id: paperId,
101
+ pdf_url: pdfUrl,
102
+ abs_url: `https://arxiv.org/abs/${paperId}`,
103
+ });
104
+ },
105
+ };
106
+ }
107
+ // ---------------------------------------------------------------------------
108
+ // read_arxiv_paper
109
+ // ---------------------------------------------------------------------------
110
+ export function createArxivReadTool() {
111
+ return {
112
+ label: "arXiv Paper Reader",
113
+ name: "read_arxiv_paper",
114
+ description: "Download and extract full text from an arXiv paper PDF. Returns the raw text content.",
115
+ parameters: Type.Object({
116
+ paper_id: Type.String({ description: "arXiv paper ID (e.g. '2106.12345')" }),
117
+ }),
118
+ execute: async (_id, raw) => {
119
+ const p = raw;
120
+ const paperId = readString(p, "paper_id", { required: true });
121
+ const pdfUrl = `https://arxiv.org/pdf/${paperId}.pdf`;
122
+ const buf = await fetchPdfBuffer(pdfUrl);
123
+ if (!buf.ok)
124
+ return Result.err("download_error", buf.error);
125
+ try {
126
+ const text = await extractPdfText(buf.data);
127
+ if (!text.trim())
128
+ return Result.err("extraction_error", "PDF downloaded but no readable text could be extracted");
129
+ return Result.ok({ paper_id: paperId, pdf_url: pdfUrl, text });
130
+ }
131
+ catch (e) {
132
+ return Result.err("extraction_error", e instanceof Error ? e.message : String(e));
133
+ }
134
+ },
135
+ };
136
+ }
83
137
  //# sourceMappingURL=arxiv.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"arxiv.js","sourceRoot":"","sources":["../../../src/tools/arxiv.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,SAAS,GAAG,oCAAoC,CAAC;AAEvD,MAAM,QAAQ,GAA2B;IACvC,SAAS,EAAE,WAAW;IACtB,eAAe,EAAE,iBAAiB;IAClC,aAAa,EAAE,eAAe;CAC/B,CAAC;AAaF,SAAS,YAAY,CAAC,GAAW;IAC/B,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,6BAA6B,CAAC;IAC9C,IAAI,CAAyB,CAAC;IAE9B,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACf,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE;YACxB,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAEhF,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,mCAAmC,CAAC;QACnD,IAAI,EAA0B,CAAC;QAC/B,OAAO,CAAC,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAElE,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,yBAAyB,OAAO,EAAE,CAAC;QAE3E,MAAM,UAAU,GAAa,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,+BAA+B,CAAC;QAC9C,IAAI,EAA0B,CAAC;QAC/B,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI;YAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAE7D,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;YACrB,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC;QAChH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,KAAK,EAAE,cAAc;QACrB,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,gHAAgH;QAClH,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;YACtB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,4CAA4C,EAAE,CAAC;YACjF,WAAW,EAAE,IAAI,CAAC,QAAQ,CACxB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,gCAAgC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CACxF;YACD,OAAO,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,8DAA8D,EAAE,CAAC,CAC7F;YACD,SAAS,EAAE,IAAI,CAAC,QAAQ,CACtB,IAAI,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,sDAAsD,EAAE,CAAC,CACrF;SACF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,GAAW,EAAE,GAAY,EAAE,EAAE;YAC3C,MAAM,CAAC,GAAG,GAA8B,CAAC;YACzC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAE,CAAC;YAC1D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACvF,MAAM,OAAO,GAAG,UAAU,CAAC,CAAC,EAAE,SAAS,CAAC,IAAI,WAAW,CAAC;YACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,IAAI,WAAW,CAAC;YAC9D,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAE5C,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBACrC,WAAW,GAAG,GAAG,KAAK,uBAAuB,CAAC,mBAAmB,CAAC;YACpE,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC;gBACjC,YAAY,EAAE,WAAW;gBACzB,KAAK,EAAE,GAAG;gBACV,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC;gBAC/B,MAAM;gBACN,SAAS,EAAE,YAAY;aACxB,CAAC,CAAC;YAEH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,GAAG,CAAC,EAAE;gBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAEvD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtC,OAAO,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC5D,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"arxiv.js","sourceRoot":"","sources":["../../../src/tools/arxiv.ts"],"names":[],"mappings":"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"}
@@ -34,4 +34,68 @@ export declare function createMedrxivSearchTool(): {
34
34
  isError?: boolean;
35
35
  }>;
36
36
  };
37
+ export declare function createBiorxivDownloadTool(): {
38
+ label: string;
39
+ name: string;
40
+ description: string;
41
+ parameters: import("@sinclair/typebox").TObject<{
42
+ paper_id: import("@sinclair/typebox").TString;
43
+ }>;
44
+ execute: (_id: string, raw: unknown) => Promise<{
45
+ type: "tool_result";
46
+ content: {
47
+ type: "text";
48
+ text: string;
49
+ }[];
50
+ isError?: boolean;
51
+ }>;
52
+ };
53
+ export declare function createMedrxivDownloadTool(): {
54
+ label: string;
55
+ name: string;
56
+ description: string;
57
+ parameters: import("@sinclair/typebox").TObject<{
58
+ paper_id: import("@sinclair/typebox").TString;
59
+ }>;
60
+ execute: (_id: string, raw: unknown) => Promise<{
61
+ type: "tool_result";
62
+ content: {
63
+ type: "text";
64
+ text: string;
65
+ }[];
66
+ isError?: boolean;
67
+ }>;
68
+ };
69
+ export declare function createBiorxivReadTool(): {
70
+ label: string;
71
+ name: string;
72
+ description: string;
73
+ parameters: import("@sinclair/typebox").TObject<{
74
+ paper_id: import("@sinclair/typebox").TString;
75
+ }>;
76
+ execute: (_id: string, raw: unknown) => Promise<{
77
+ type: "tool_result";
78
+ content: {
79
+ type: "text";
80
+ text: string;
81
+ }[];
82
+ isError?: boolean;
83
+ }>;
84
+ };
85
+ export declare function createMedrxivReadTool(): {
86
+ label: string;
87
+ name: string;
88
+ description: string;
89
+ parameters: import("@sinclair/typebox").TObject<{
90
+ paper_id: import("@sinclair/typebox").TString;
91
+ }>;
92
+ execute: (_id: string, raw: unknown) => Promise<{
93
+ type: "tool_result";
94
+ content: {
95
+ type: "text";
96
+ text: string;
97
+ }[];
98
+ isError?: boolean;
99
+ }>;
100
+ };
37
101
  //# sourceMappingURL=biorxiv.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"biorxiv.d.ts","sourceRoot":"","sources":["../../../src/tools/biorxiv.ts"],"names":[],"mappings":"AA2FA,wBAAgB,uBAAuB;;;;;;;;;mBAvCd,MAAM,OAAO,OAAO;;;;;;;;EAyC5C;AAED,wBAAgB,uBAAuB;;;;;;;;;mBA3Cd,MAAM,OAAO,OAAO;;;;;;;;EA6C5C"}
1
+ {"version":3,"file":"biorxiv.d.ts","sourceRoot":"","sources":["../../../src/tools/biorxiv.ts"],"names":[],"mappings":"AA4FA,wBAAgB,uBAAuB;;;;;;;;;mBAvCd,MAAM,OAAO,OAAO;;;;;;;;EAyC5C;AAED,wBAAgB,uBAAuB;;;;;;;;;mBA3Cd,MAAM,OAAO,OAAO;;;;;;;;EA6C5C;AAyDD,wBAAgB,yBAAyB;;;;;;;mBA1ChB,MAAM,OAAO,OAAO;;;;;;;;EA4C5C;AACD,wBAAgB,yBAAyB;;;;;;;mBA7ChB,MAAM,OAAO,OAAO;;;;;;;;EA+C5C;AACD,wBAAgB,qBAAqB;;;;;;;mBA1BZ,MAAM,OAAO,OAAO;;;;;;;;EA4B5C;AACD,wBAAgB,qBAAqB;;;;;;;mBA7BZ,MAAM,OAAO,OAAO;;;;;;;;EA+B5C"}