scientify 1.6.2 → 1.7.1
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.
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/src/hooks/research-mode.d.ts +26 -0
- package/dist/src/hooks/research-mode.d.ts.map +1 -0
- package/dist/src/hooks/research-mode.js +137 -0
- package/dist/src/hooks/research-mode.js.map +1 -0
- package/package.json +12 -11
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAsBlD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,iBAAiB,QA2FtD"}
|
package/dist/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import { createOpenAlexSearchTool } from "./src/tools/openalex-search.js";
|
|
|
8
8
|
import { createUnpaywallDownloadTool } from "./src/tools/unpaywall-download.js";
|
|
9
9
|
import { createAutoUpdaterService } from "./src/services/auto-updater.js";
|
|
10
10
|
import { createSkillInjectionHook } from "./src/hooks/inject-skill.js";
|
|
11
|
+
import { createResearchModeHook } from "./src/hooks/research-mode.js";
|
|
11
12
|
// Default: check every hour
|
|
12
13
|
const UPDATE_CHECK_INTERVAL_MS = 60 * 60 * 1000;
|
|
13
14
|
export default function register(api) {
|
|
@@ -81,6 +82,12 @@ export default function register(api) {
|
|
|
81
82
|
// api.source = entry file path (e.g. dist/index.js); findPluginRoot() walks
|
|
82
83
|
// up to locate openclaw.plugin.json, which is always at the plugin root.
|
|
83
84
|
api.on("before_tool_call", createSkillInjectionHook(path.dirname(api.source)));
|
|
84
|
-
|
|
85
|
+
// Inject research mode prompt into all conversations.
|
|
86
|
+
// This reminds the agent to use research skills for academic tasks.
|
|
87
|
+
// The agent decides whether to use skills based on task type.
|
|
88
|
+
api.on("before_prompt_build", createResearchModeHook(), {
|
|
89
|
+
priority: 100, // High priority to inject early
|
|
90
|
+
});
|
|
91
|
+
api.logger.info("Scientify plugin loaded (research mode: always active)");
|
|
85
92
|
}
|
|
86
93
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,mBAAmB,GACpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,2BAA2B,EAAE,MAAM,mCAAmC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hook types (simplified for plugin use)
|
|
3
|
+
*/
|
|
4
|
+
type HookEvent = {
|
|
5
|
+
prompt: string;
|
|
6
|
+
messages?: unknown[];
|
|
7
|
+
};
|
|
8
|
+
type HookContext = {
|
|
9
|
+
agentId?: string;
|
|
10
|
+
sessionKey?: string;
|
|
11
|
+
workspaceDir?: string;
|
|
12
|
+
};
|
|
13
|
+
type HookResult = {
|
|
14
|
+
prependContext?: string;
|
|
15
|
+
systemPrompt?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Creates the research mode hook that injects enhancement prompt
|
|
19
|
+
* into all conversations when scientify is active.
|
|
20
|
+
*
|
|
21
|
+
* This ensures agents are always aware of available research skills
|
|
22
|
+
* and know how to use them properly.
|
|
23
|
+
*/
|
|
24
|
+
export declare function createResearchModeHook(): (_event: HookEvent, _context: HookContext) => HookResult;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=research-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research-mode.d.ts","sourceRoot":"","sources":["../../../src/hooks/research-mode.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,KAAK,SAAS,GAAG;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;CACtB,CAAC;AAEF,KAAK,WAAW,GAAG;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,CAAC;AA2HF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,KAC5B,QAAQ,SAAS,EAAE,UAAU,WAAW,KAAG,UAAU,CAO9D"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Research Mode Enhancement Prompt
|
|
3
|
+
*
|
|
4
|
+
* Injected into every conversation when scientify is active.
|
|
5
|
+
* Reminds the agent to use research skills for academic tasks.
|
|
6
|
+
*/
|
|
7
|
+
const RESEARCH_MODE_PROMPT = `
|
|
8
|
+
# 🔬 Scientify Research Assistant
|
|
9
|
+
|
|
10
|
+
You have access to specialized research workflows (skills) for academic tasks.
|
|
11
|
+
|
|
12
|
+
## Available Research Skills (For You to Use)
|
|
13
|
+
|
|
14
|
+
When the user requests research work, use these skills:
|
|
15
|
+
|
|
16
|
+
### literature-survey
|
|
17
|
+
Search & download academic papers from arXiv, OpenAlex, and GitHub repositories.
|
|
18
|
+
|
|
19
|
+
**When to use**: User asks for literature review, paper search, related work survey.
|
|
20
|
+
|
|
21
|
+
**How to use**:
|
|
22
|
+
1. Find skill path in <available_skills>
|
|
23
|
+
2. Read the SKILL.md: read({ file_path: "<path-from-available_skills>" })
|
|
24
|
+
3. Follow every step exactly
|
|
25
|
+
|
|
26
|
+
### research-pipeline
|
|
27
|
+
Complete end-to-end research pipeline: literature survey → deep analysis → planning → implementation → review → experiments.
|
|
28
|
+
|
|
29
|
+
**When to use**: User wants full research workflow from papers to final results.
|
|
30
|
+
|
|
31
|
+
**How to use**:
|
|
32
|
+
1. Find skill path in <available_skills>
|
|
33
|
+
2. Read the SKILL.md: read({ file_path: "<path-from-available_skills>" })
|
|
34
|
+
3. Follow the orchestration steps (this skill will spawn sub-agents for each phase)
|
|
35
|
+
|
|
36
|
+
**Important**: research-pipeline uses sessions_spawn to create specialized sub-agents. You don't need to manually run research-survey, research-plan, etc. - the pipeline handles that internally.
|
|
37
|
+
|
|
38
|
+
## When NOT to Use Skills
|
|
39
|
+
|
|
40
|
+
Handle these normally without skills:
|
|
41
|
+
- General programming questions
|
|
42
|
+
- File operations, debugging
|
|
43
|
+
- Casual conversation
|
|
44
|
+
- Non-academic queries
|
|
45
|
+
|
|
46
|
+
## How to Use Skills (IMPORTANT)
|
|
47
|
+
|
|
48
|
+
When you identify a research task:
|
|
49
|
+
|
|
50
|
+
1. **Identify** the matching skill from the list above
|
|
51
|
+
2. **Locate** the skill file path from \`<available_skills>\` in your system prompt
|
|
52
|
+
3. **Read** the skill file completely: \`read({ file_path: "<skill-path-from-available_skills>" })\`
|
|
53
|
+
4. **Execute** every step in the SKILL.md exactly as written
|
|
54
|
+
|
|
55
|
+
**Do NOT**:
|
|
56
|
+
- ❌ Skip reading the skill file
|
|
57
|
+
- ❌ Improvise your own workflow
|
|
58
|
+
- ❌ Assume you remember the steps from previous sessions
|
|
59
|
+
|
|
60
|
+
## Project Management (You Handle This)
|
|
61
|
+
|
|
62
|
+
For research tasks, you automatically manage project structure:
|
|
63
|
+
|
|
64
|
+
1. **Check** if project exists: \`read({ file_path: "$W/projects/<topic>/task.json" })\`
|
|
65
|
+
2. **Create** if needed: Use \`write\` to create directory structure and task.json
|
|
66
|
+
3. **Load** context: Read existing task.json to understand current status
|
|
67
|
+
4. **Continue** work: Resume from the last completed phase
|
|
68
|
+
|
|
69
|
+
User doesn't need to run commands. You create and manage projects automatically.
|
|
70
|
+
|
|
71
|
+
### Example Project Structure
|
|
72
|
+
|
|
73
|
+
\`\`\`
|
|
74
|
+
$W/projects/<topic>/
|
|
75
|
+
├── task.json # Project metadata & status
|
|
76
|
+
├── papers/ # Downloaded papers
|
|
77
|
+
│ └── _meta/ # Paper metadata
|
|
78
|
+
├── repos/ # Reference code repositories
|
|
79
|
+
├── survey_res.md # Literature survey results
|
|
80
|
+
├── plan_res.md # Implementation plan
|
|
81
|
+
├── project/ # Your implementation
|
|
82
|
+
└── experiment_res.md # Experiment results
|
|
83
|
+
\`\`\`
|
|
84
|
+
|
|
85
|
+
## Example Workflows
|
|
86
|
+
|
|
87
|
+
### Example 1: Literature Survey Only
|
|
88
|
+
|
|
89
|
+
\`\`\`
|
|
90
|
+
User: "Survey recent papers on Vision Transformers"
|
|
91
|
+
|
|
92
|
+
You:
|
|
93
|
+
1. Identify: Literature survey task
|
|
94
|
+
2. Skill: literature-survey
|
|
95
|
+
3. Read: literature-survey/SKILL.md from <available_skills>
|
|
96
|
+
4. Project: Create $W/projects/vision-transformer-survey/
|
|
97
|
+
5. Execute: Follow search → download → categorize steps
|
|
98
|
+
6. Output: survey_res.md with categorized papers
|
|
99
|
+
\`\`\`
|
|
100
|
+
|
|
101
|
+
### Example 2: Complete Research Pipeline
|
|
102
|
+
|
|
103
|
+
\`\`\`
|
|
104
|
+
User: "I want to implement Vision Transformer on MNIST, from literature survey to experiments"
|
|
105
|
+
|
|
106
|
+
You:
|
|
107
|
+
1. Identify: Full research workflow
|
|
108
|
+
2. Skill: research-pipeline
|
|
109
|
+
3. Read: research-pipeline/SKILL.md from <available_skills>
|
|
110
|
+
4. Project: Create $W/projects/vit-mnist/
|
|
111
|
+
5. Execute: Follow orchestration steps
|
|
112
|
+
- Pipeline spawns sub-agents for survey, analysis, planning, coding, review, experiments
|
|
113
|
+
- You don't manually read research-survey, research-implement, etc.
|
|
114
|
+
6. Output: Complete research project with all deliverables
|
|
115
|
+
\`\`\`
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
**Remember**: Skills contain precise workflows tested in production. Read them before acting, don't guess.
|
|
120
|
+
`;
|
|
121
|
+
/**
|
|
122
|
+
* Creates the research mode hook that injects enhancement prompt
|
|
123
|
+
* into all conversations when scientify is active.
|
|
124
|
+
*
|
|
125
|
+
* This ensures agents are always aware of available research skills
|
|
126
|
+
* and know how to use them properly.
|
|
127
|
+
*/
|
|
128
|
+
export function createResearchModeHook() {
|
|
129
|
+
return (_event, _context) => {
|
|
130
|
+
// Unconditionally inject research mode prompt
|
|
131
|
+
// The agent will decide whether to use skills based on task type
|
|
132
|
+
return {
|
|
133
|
+
prependContext: RESEARCH_MODE_PROMPT,
|
|
134
|
+
};
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=research-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"research-mode.js","sourceRoot":"","sources":["../../../src/hooks/research-mode.ts"],"names":[],"mappings":"AAmBA;;;;;GAKG;AACH,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiH5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,MAAiB,EAAE,QAAqB,EAAc,EAAE;QAC9D,8CAA8C;QAC9C,iEAAiE;QACjE,OAAO;YACL,cAAc,EAAE,oBAAoB;SACrC,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "scientify",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.1",
|
|
4
4
|
"description": "Scientify - AI-powered research workflow automation for OpenClaw. Includes idea generation, literature review, research pipeline skills, and arxiv tool.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -29,6 +29,16 @@
|
|
|
29
29
|
"bugs": {
|
|
30
30
|
"url": "https://github.com/tsingyuai/scientify/issues"
|
|
31
31
|
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "tsc",
|
|
34
|
+
"clean": "rm -rf dist",
|
|
35
|
+
"dev": "tsc --watch",
|
|
36
|
+
"dev:link": "npm run build && rm -rf ~/.openclaw/extensions/scientify && ln -sfn \"$(pwd)\" ~/.openclaw/extensions/scientify",
|
|
37
|
+
"dev:unlink": "rm -f ~/.openclaw/extensions/scientify",
|
|
38
|
+
"dev:reload": "nodemon --watch src --watch skills --ext ts,md,json --exec \"npm run build && pkill -USR1 -f 'openclaw.mjs gateway' || true\" --delay 500ms",
|
|
39
|
+
"prepublishOnly": "npm run clean && npm run build",
|
|
40
|
+
"release": "npm version patch && git push && git push --tags"
|
|
41
|
+
},
|
|
32
42
|
"devDependencies": {
|
|
33
43
|
"@semantic-release/changelog": "^6.0.3",
|
|
34
44
|
"@semantic-release/commit-analyzer": "^13.0.1",
|
|
@@ -51,14 +61,5 @@
|
|
|
51
61
|
"extensions": [
|
|
52
62
|
"./dist/index.js"
|
|
53
63
|
]
|
|
54
|
-
},
|
|
55
|
-
"scripts": {
|
|
56
|
-
"build": "tsc",
|
|
57
|
-
"clean": "rm -rf dist",
|
|
58
|
-
"dev": "tsc --watch",
|
|
59
|
-
"dev:link": "npm run build && rm -rf ~/.openclaw/extensions/scientify && ln -sfn \"$(pwd)\" ~/.openclaw/extensions/scientify",
|
|
60
|
-
"dev:unlink": "rm -f ~/.openclaw/extensions/scientify",
|
|
61
|
-
"dev:reload": "nodemon --watch src --watch skills --ext ts,md,json --exec \"npm run build && pkill -USR1 -f 'openclaw.mjs gateway' || true\" --delay 500ms",
|
|
62
|
-
"release": "npm version patch && git push && git push --tags"
|
|
63
64
|
}
|
|
64
|
-
}
|
|
65
|
+
}
|