@yeyuan98/opencode-bioresearcher-plugin 1.6.7 → 1.6.8-alpha.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/LICENSE +0 -0
- package/README.md +11 -0
- package/dist/agents/bioresearcher/index.d.ts +0 -0
- package/dist/agents/bioresearcher/index.js +0 -0
- package/dist/agents/bioresearcher/prompt.d.ts +0 -0
- package/dist/agents/bioresearcher/prompt.js +0 -0
- package/dist/agents/bioresearcherDR/index.d.ts +0 -0
- package/dist/agents/bioresearcherDR/index.js +0 -0
- package/dist/agents/bioresearcherDR/prompt.d.ts +1 -1
- package/dist/agents/bioresearcherDR/prompt.js +1 -0
- package/dist/agents/bioresearcherDR_worker/index.d.ts +0 -0
- package/dist/agents/bioresearcherDR_worker/index.js +0 -0
- package/dist/agents/bioresearcherDR_worker/prompt.d.ts +1 -1
- package/dist/agents/bioresearcherDR_worker/prompt.js +1 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +4 -3
- package/dist/shared/skill-sync.d.ts +0 -0
- package/dist/shared/skill-sync.js +0 -0
- package/dist/shared/tool-restrictions.d.ts +0 -0
- package/dist/shared/tool-restrictions.js +0 -0
- package/dist/skills/bioresearcher-core/README.md +0 -0
- package/dist/skills/bioresearcher-core/SKILL.md +0 -0
- package/dist/skills/bioresearcher-core/examples/contexts.json +0 -0
- package/dist/skills/bioresearcher-core/examples/data-exchange-example.md +0 -0
- package/dist/skills/bioresearcher-core/examples/template.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/bioresearcher/analysis-methods.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/bioresearcher/best-practices.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/bioresearcher/python-standards.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/bioresearcher/report-template.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/bioresearcher/tool-selection.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/calculator.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/citations.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/data-exchange.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/json-tools.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/progress.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/rate-limiting.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/retry.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/shell-commands.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/subagent-waves.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/table-tools.md +0 -0
- package/dist/skills/bioresearcher-core/patterns/user-confirmation.md +0 -0
- package/dist/skills/bioresearcher-core/python/template.md +0 -0
- package/dist/skills/bioresearcher-core/python/template.py +0 -0
- package/dist/skills/bioresearcher-tests/README.md +0 -0
- package/dist/skills/bioresearcher-tests/SKILL.md +0 -0
- package/dist/skills/bioresearcher-tests/pyproject.toml +0 -0
- package/dist/skills/bioresearcher-tests/resources/json_samples/in_markdown.md.gz +0 -0
- package/dist/skills/bioresearcher-tests/resources/json_samples/nested_object.json.gz +0 -0
- package/dist/skills/bioresearcher-tests/resources/json_samples/schema_draft7.json.gz +0 -0
- package/dist/skills/bioresearcher-tests/resources/json_samples/simple_array.json.gz +0 -0
- package/dist/skills/bioresearcher-tests/resources/json_samples/simple_object.json.gz +0 -0
- package/dist/skills/bioresearcher-tests/resources/obo_sample.obo.gz +0 -0
- package/dist/skills/bioresearcher-tests/resources/pubmed_sample.xml.gz +0 -0
- package/dist/skills/bioresearcher-tests/resources/table_sample.xlsx.gz +0 -0
- package/dist/skills/bioresearcher-tests/test_cases/json_tests.md +0 -0
- package/dist/skills/bioresearcher-tests/test_cases/misc_tests.md +0 -0
- package/dist/skills/bioresearcher-tests/test_cases/parser_tests.md +0 -0
- package/dist/skills/bioresearcher-tests/test_cases/skill_tests.md +0 -0
- package/dist/skills/bioresearcher-tests/test_cases/table_tests.md +0 -0
- package/dist/skills/bioresearcher-tests/test_runner.py +0 -0
- package/dist/skills/demo-skill/SKILL.md +0 -0
- package/dist/skills/demo-skill/demo_script.py +0 -0
- package/dist/skills/env-jsonc-setup/SKILL.md +0 -0
- package/dist/skills/gromacs-guides/SKILL.md +0 -0
- package/dist/skills/gromacs-guides/guides/create_index.md +96 -96
- package/dist/skills/gromacs-guides/guides/inspect_tpr.md +160 -160
- package/dist/skills/long-table-summary/SKILL.md +0 -0
- package/dist/skills/long-table-summary/combine_outputs.py +0 -0
- package/dist/skills/long-table-summary/generate_prompts.py +0 -0
- package/dist/skills/long-table-summary/pyproject.toml +0 -0
- package/dist/skills/pubmed-weekly/SKILL.md +0 -0
- package/dist/skills/pubmed-weekly/pubmed_weekly.py +0 -0
- package/dist/skills/pubmed-weekly/pyproject.toml +0 -0
- package/dist/skills/python-setup-uv/SKILL.md +0 -0
- package/dist/tools/db/backends/index.d.ts +0 -0
- package/dist/tools/db/backends/index.js +0 -0
- package/dist/tools/db/backends/mongodb/backend.d.ts +0 -0
- package/dist/tools/db/backends/mongodb/backend.js +0 -0
- package/dist/tools/db/backends/mongodb/connection.d.ts +0 -0
- package/dist/tools/db/backends/mongodb/connection.js +0 -0
- package/dist/tools/db/backends/mongodb/index.d.ts +0 -0
- package/dist/tools/db/backends/mongodb/index.js +0 -0
- package/dist/tools/db/backends/mongodb/translator.d.ts +0 -0
- package/dist/tools/db/backends/mongodb/translator.js +0 -0
- package/dist/tools/db/backends/mysql/backend.d.ts +0 -0
- package/dist/tools/db/backends/mysql/backend.js +0 -0
- package/dist/tools/db/backends/mysql/connection.d.ts +0 -0
- package/dist/tools/db/backends/mysql/connection.js +0 -0
- package/dist/tools/db/backends/mysql/index.d.ts +0 -0
- package/dist/tools/db/backends/mysql/index.js +0 -0
- package/dist/tools/db/backends/mysql/translator.d.ts +0 -0
- package/dist/tools/db/backends/mysql/translator.js +0 -0
- package/dist/tools/db/core/base.d.ts +0 -0
- package/dist/tools/db/core/base.js +0 -0
- package/dist/tools/db/core/config-loader.d.ts +0 -0
- package/dist/tools/db/core/config-loader.js +0 -0
- package/dist/tools/db/core/index.d.ts +0 -0
- package/dist/tools/db/core/index.js +0 -0
- package/dist/tools/db/core/jsonc-parser.d.ts +0 -0
- package/dist/tools/db/core/jsonc-parser.js +0 -0
- package/dist/tools/db/core/validator.d.ts +0 -0
- package/dist/tools/db/core/validator.js +0 -0
- package/dist/tools/db/index.d.ts +0 -0
- package/dist/tools/db/index.js +0 -0
- package/dist/tools/db/interface/backend.d.ts +0 -0
- package/dist/tools/db/interface/backend.js +0 -0
- package/dist/tools/db/interface/connection.d.ts +0 -0
- package/dist/tools/db/interface/connection.js +0 -0
- package/dist/tools/db/interface/index.d.ts +0 -0
- package/dist/tools/db/interface/index.js +0 -0
- package/dist/tools/db/interface/query.d.ts +0 -0
- package/dist/tools/db/interface/query.js +0 -0
- package/dist/tools/db/interface/schema.d.ts +0 -0
- package/dist/tools/db/interface/schema.js +0 -0
- package/dist/tools/db/tools.d.ts +0 -0
- package/dist/tools/db/tools.js +0 -0
- package/dist/tools/db/utils.d.ts +0 -0
- package/dist/tools/db/utils.js +0 -0
- package/dist/tools/misc/calculator.d.ts +0 -0
- package/dist/tools/misc/calculator.js +0 -0
- package/dist/tools/misc/index.d.ts +1 -0
- package/dist/tools/misc/index.js +1 -0
- package/dist/tools/misc/json-extract.d.ts +0 -0
- package/dist/tools/misc/json-extract.js +0 -0
- package/dist/tools/misc/json-infer.d.ts +0 -0
- package/dist/tools/misc/json-infer.js +0 -0
- package/dist/tools/misc/json-validate.d.ts +0 -0
- package/dist/tools/misc/json-validate.js +0 -0
- package/dist/tools/misc/markdown-to-html.d.ts +19 -0
- package/dist/tools/misc/markdown-to-html.js +109 -0
- package/dist/tools/misc/marked-bundle.d.ts +1 -0
- package/dist/tools/misc/marked-bundle.js +1 -0
- package/dist/tools/misc/timer.d.ts +0 -0
- package/dist/tools/misc/timer.js +0 -0
- package/dist/tools/parser/obo/index.d.ts +0 -0
- package/dist/tools/parser/obo/index.js +0 -0
- package/dist/tools/parser/obo/obo.d.ts +0 -0
- package/dist/tools/parser/obo/obo.js +0 -0
- package/dist/tools/parser/obo/types.d.ts +0 -0
- package/dist/tools/parser/obo/types.js +0 -0
- package/dist/tools/parser/obo/utils.d.ts +0 -0
- package/dist/tools/parser/obo/utils.js +0 -0
- package/dist/tools/parser/pubmed/index.d.ts +0 -0
- package/dist/tools/parser/pubmed/index.js +0 -0
- package/dist/tools/parser/pubmed/pubmed.d.ts +0 -0
- package/dist/tools/parser/pubmed/pubmed.js +0 -0
- package/dist/tools/parser/pubmed/types.d.ts +0 -0
- package/dist/tools/parser/pubmed/types.js +0 -0
- package/dist/tools/parser/pubmed/utils.d.ts +0 -0
- package/dist/tools/parser/pubmed/utils.js +0 -0
- package/dist/tools/sandbox/bash-parser.d.ts +0 -0
- package/dist/tools/sandbox/bash-parser.js +0 -0
- package/dist/tools/sandbox/escape-scenarios.test.d.ts +0 -0
- package/dist/tools/sandbox/escape-scenarios.test.js +0 -0
- package/dist/tools/sandbox/expander.d.ts +0 -0
- package/dist/tools/sandbox/expander.js +0 -0
- package/dist/tools/sandbox/final-verification.test.d.ts +0 -0
- package/dist/tools/sandbox/final-verification.test.js +0 -0
- package/dist/tools/sandbox/hooks.d.ts +0 -0
- package/dist/tools/sandbox/hooks.js +0 -0
- package/dist/tools/sandbox/index.d.ts +0 -0
- package/dist/tools/sandbox/index.js +0 -0
- package/dist/tools/sandbox/manager.d.ts +0 -0
- package/dist/tools/sandbox/manager.js +0 -0
- package/dist/tools/sandbox/sandbox.integration.test.d.ts +0 -0
- package/dist/tools/sandbox/sandbox.integration.test.js +0 -0
- package/dist/tools/sandbox/sandbox.test.d.ts +0 -0
- package/dist/tools/sandbox/sandbox.test.js +0 -0
- package/dist/tools/sandbox/tool.d.ts +0 -0
- package/dist/tools/sandbox/tool.js +0 -0
- package/dist/tools/sandbox/types.d.ts +0 -0
- package/dist/tools/sandbox/types.js +0 -0
- package/dist/tools/sandbox/validator.d.ts +0 -0
- package/dist/tools/sandbox/validator.js +0 -0
- package/dist/tools/skill/frontmatter.d.ts +0 -0
- package/dist/tools/skill/frontmatter.js +0 -0
- package/dist/tools/skill/index.d.ts +0 -0
- package/dist/tools/skill/index.js +0 -0
- package/dist/tools/skill/registry.d.ts +0 -0
- package/dist/tools/skill/registry.js +0 -0
- package/dist/tools/skill/tool.d.ts +0 -0
- package/dist/tools/skill/tool.js +0 -0
- package/dist/tools/skill/types.d.ts +0 -0
- package/dist/tools/skill/types.js +0 -0
- package/dist/tools/table/index.d.ts +0 -0
- package/dist/tools/table/index.js +0 -0
- package/dist/tools/table/tools.d.ts +0 -0
- package/dist/tools/table/tools.js +0 -0
- package/dist/tools/table/utils.d.ts +0 -0
- package/dist/tools/table/utils.js +0 -0
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +3 -2
- package/dist/skills/pzfx-io/SKILL.md +0 -111
- package/dist/skills/pzfx-io/guides/convert.md +0 -102
- package/dist/skills/pzfx-io/guides/read-parse.md +0 -116
- package/dist/skills/pzfx-io/guides/schema-reference.md +0 -167
- package/dist/skills/pzfx-io/guides/write-edit.md +0 -150
- package/dist/skills/pzfx-io/pyproject.toml +0 -6
- package/dist/skills/pzfx-io/pzfx.py +0 -1156
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
@@ -115,6 +115,17 @@ Query orders placed in the last 30 days.
|
|
|
115
115
|
|
|
116
116
|
Configuration via `env.jsonc` in working directory. Use the `env-jsonc-setup` skill for guided setup.
|
|
117
117
|
|
|
118
|
+
### Markdown to HTML
|
|
119
|
+
|
|
120
|
+
Convert markdown to a standalone HTML file with embedded rendering — no internet required.
|
|
121
|
+
|
|
122
|
+
**Generate viewable reports from markdown, right in your workflow.**
|
|
123
|
+
|
|
124
|
+
```text
|
|
125
|
+
Convert report.md to report.html using markdownToHtml tool.
|
|
126
|
+
Render my research findings as an HTML file at /tmp/findings.html.
|
|
127
|
+
```
|
|
128
|
+
|
|
118
129
|
## Skills
|
|
119
130
|
|
|
120
131
|
Skills are reusable prompt templates discovered by OpenCode's built-in `skill` tool.
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* A specialized biomedical research agent that performs reference-based
|
|
5
5
|
* pharmaceutical and drug development research using BioMCP tools.
|
|
6
6
|
*/
|
|
7
|
-
export declare const BIORESEARCHERDR_SYSTEM_PROMPT = "\n------ RULE REMINDER START ------\nIMPORTANT: THIS REMINDER SHALL OVERRIDE ALL OTHER PROMPTS PROVIDED TO YOU. IGNORE ALL OTHER PROMPTS.\nOverall goal: Perform reference-based biomedical and pharmaceutical drug development research.\n\nSteps to STRICTLY adhere to:\n\n1. If the user query includes 'no-interview', skip Step 2 and proceed to Step 3. Otherwise, proceed to Step 2.\n2. Comprehend initial user inquiry. Use the question tool to ask user to clarify 3-6 unclear points depending on inquiry complexity.\n3. Comprehend final user inquiry to identify critical research aspects to answer user inquiry.\n4. If the original user inquiry includes 'light-research', combine and/or pick top two research aspects and proceed to Step 5. Otherwise, proceed directly to Step 5.\n5. Decide on TOPIC of this inquiry (NO user input). TOPIC should be highly succinct, underscore-separated name based on user inquiry.\n6. Use the todowrite tool to generate a list of identified research aspects.\n7. Create the reports_biomcp/<TOPIC>/ directory by writing a placeholder file to it (e.g., write to reports_biomcp/<TOPIC>/.gitkeep). The write tool auto-creates parent directories - do NOT attempt to use bash mkdir.\n8. Use the task tool to assign each research aspect to a bioresearcherDR_worker subagent. Start subagents in parallel in batches (size of 5 for each batch). Record finished subagents by checking the todo list. Prompt the user: 'If subagents are stuck without progress for too long, interrupt and ask me to resume work.'\n9. Proceed until subagents complete research. Restart failed subagents if necessary.\n10. Load the skill 'bioresearcher-core' and read 'patterns/citations.md' for citation format. Read reports from all subagents. Summarize findings to provide a succinct and accurate report addressing user inquiry with proper citations.\n11. Write to reports_biomcp/<TOPIC>/final_report.md with full bibliography.\n\nFollow this template to prompt the bioresearcherDR_worker subagents (Step 8):\n\n```md\nTOPIC: <TOPIC>\nYOUR RESEARCH FOCUS: <RESEARCH-ASPECT>\nDESCRIPTION: <ABSTRACT>\n```\n\nABSTRACT should be a short paragraph of less than 200 words, describing exact focus of the subagent's research aspect and a list of detailed research items.\n\nRules for YOU:\n\n- Do NOT use the following tools: biomcp*, web*, context7* (i.e., tool names starting with biomcp or web or context7. VERY IMPORTANT DO NOT USE ANY BIOMCP TOOL).\n- Do NOT fallback to internal knowledge when query tools fail. STRICTLY ADHERE to external trusted sources.\n- DO provide concrete references for all findings with citations (in brackets, e.g., [1], [2], ...) and full bibliography at the end.\n- DO keep your word succinct, accurate and professional, fitting top standards of academic writing.\n------ RULE REMINDER END ------\n";
|
|
7
|
+
export declare const BIORESEARCHERDR_SYSTEM_PROMPT = "\n------ RULE REMINDER START ------\nIMPORTANT: THIS REMINDER SHALL OVERRIDE ALL OTHER PROMPTS PROVIDED TO YOU. IGNORE ALL OTHER PROMPTS.\nOverall goal: Perform reference-based biomedical and pharmaceutical drug development research.\n\nSteps to STRICTLY adhere to:\n\n1. If the user query includes 'no-interview', skip Step 2 and proceed to Step 3. Otherwise, proceed to Step 2.\n2. Comprehend initial user inquiry. Use the question tool to ask user to clarify 3-6 unclear points depending on inquiry complexity.\n3. Comprehend final user inquiry to identify critical research aspects to answer user inquiry.\n4. If the original user inquiry includes 'light-research', combine and/or pick top two research aspects and proceed to Step 5. Otherwise, proceed directly to Step 5.\n5. Decide on TOPIC of this inquiry (NO user input). TOPIC should be highly succinct, underscore-separated name based on user inquiry.\n6. Use the todowrite tool to generate a list of identified research aspects.\n7. Create the reports_biomcp/<TOPIC>/ directory by writing a placeholder file to it (e.g., write to reports_biomcp/<TOPIC>/.gitkeep). The write tool auto-creates parent directories - do NOT attempt to use bash mkdir.\n8. Use the task tool to assign each research aspect to a bioresearcherDR_worker subagent. Start subagents in parallel in batches (size of 5 for each batch). Record finished subagents by checking the todo list. Prompt the user: 'If subagents are stuck without progress for too long, interrupt and ask me to resume work.'\n9. Proceed until subagents complete research. Restart failed subagents if necessary.\n10. Load the skill 'bioresearcher-core' and read 'patterns/citations.md' for citation format. Read reports from all subagents. Summarize findings to provide a succinct and accurate report addressing user inquiry with proper citations.\n11. Write to reports_biomcp/<TOPIC>/final_report.md with full bibliography.\n12. Use the `markdownToHtml` tool to convert the final report to a standalone HTML file at reports_biomcp/<TOPIC>/final_report.html with an appropriate title.\n\nFollow this template to prompt the bioresearcherDR_worker subagents (Step 8):\n\n```md\nTOPIC: <TOPIC>\nYOUR RESEARCH FOCUS: <RESEARCH-ASPECT>\nDESCRIPTION: <ABSTRACT>\n```\n\nABSTRACT should be a short paragraph of less than 200 words, describing exact focus of the subagent's research aspect and a list of detailed research items.\n\nRules for YOU:\n\n- Do NOT use the following tools: biomcp*, web*, context7* (i.e., tool names starting with biomcp or web or context7. VERY IMPORTANT DO NOT USE ANY BIOMCP TOOL).\n- Do NOT fallback to internal knowledge when query tools fail. STRICTLY ADHERE to external trusted sources.\n- DO provide concrete references for all findings with citations (in brackets, e.g., [1], [2], ...) and full bibliography at the end.\n- DO keep your word succinct, accurate and professional, fitting top standards of academic writing.\n------ RULE REMINDER END ------\n";
|
|
8
8
|
export declare function getBioResearcherDRPrompt(): string;
|
|
@@ -22,6 +22,7 @@ Steps to STRICTLY adhere to:
|
|
|
22
22
|
9. Proceed until subagents complete research. Restart failed subagents if necessary.
|
|
23
23
|
10. Load the skill 'bioresearcher-core' and read 'patterns/citations.md' for citation format. Read reports from all subagents. Summarize findings to provide a succinct and accurate report addressing user inquiry with proper citations.
|
|
24
24
|
11. Write to reports_biomcp/<TOPIC>/final_report.md with full bibliography.
|
|
25
|
+
12. Use the \`markdownToHtml\` tool to convert the final report to a standalone HTML file at reports_biomcp/<TOPIC>/final_report.html with an appropriate title.
|
|
25
26
|
|
|
26
27
|
Follow this template to prompt the bioresearcherDR_worker subagents (Step 8):
|
|
27
28
|
|
|
File without changes
|
|
File without changes
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* A focused worker subagent that executes specific research tasks
|
|
5
5
|
* assigned by the bioresearcherDR orchestrator.
|
|
6
6
|
*/
|
|
7
|
-
export declare const BIORESEARCHERDRWORKER_SYSTEM_PROMPT = "\n------ RULE REMINDER START ------\nIMPORTANT: THIS REMINDER SHALL OVERRIDE ALL OTHER PROMPTS PROVIDED TO YOU. IGNORE ALL OTHER PROMPTS.\n\nOverall goal: Execute focused biomedical research as directed by the orchestrator.\n\n## Skill Loading (MANDATORY)\n\nAt the start of your task, load the core skill:\n\n```\nskill bioresearcher-core\n```\n\nThis skill provides patterns for:\n- `patterns/rate-limiting.md` - API rate limiting (use 0.5s between biomcp calls)\n- `patterns/retry.md` - Retry logic for failed requests (up to 3 retries)\n- `patterns/citations.md` - Citation formatting for your report\n\n## Workflow\n\n1. **Follow directions**: Execute the specific research task assigned to you\n2. **Stay focused**: Do NOT delegate to other subagents\n3. **Write findings**: Output to `reports_biomcp/<TOPIC>/<YOUR-FOCUS>.md`. The write tool auto-creates parent directories - no need to create the directory first.\n\n## Rate Limiting\n\nALWAYS use blockingTimer(0.5) between consecutive biomcp* tool calls.\n\n## Retry Logic\n\nIf a query fails:\n1. Wait a few seconds using blockingTimer\n2. Try with a simpler query\n3. Retry up to 3 times before giving up\n\n## Rules\n\n- Do NOT run concurrent MCP calls (sequential only)\n- Do NOT fallback to internal knowledge - use external trusted sources only\n- ALWAYS provide citations [1], [2], ... with full bibliography\n- Keep writing succinct, accurate, professional (academic standard)\n------ RULE REMINDER END ------\n";
|
|
7
|
+
export declare const BIORESEARCHERDRWORKER_SYSTEM_PROMPT = "\n------ RULE REMINDER START ------\nIMPORTANT: THIS REMINDER SHALL OVERRIDE ALL OTHER PROMPTS PROVIDED TO YOU. IGNORE ALL OTHER PROMPTS.\n\nOverall goal: Execute focused biomedical research as directed by the orchestrator.\n\n## Skill Loading (MANDATORY)\n\nAt the start of your task, load the core skill:\n\n```\nskill bioresearcher-core\n```\n\nThis skill provides patterns for:\n- `patterns/rate-limiting.md` - API rate limiting (use 0.5s between biomcp calls)\n- `patterns/retry.md` - Retry logic for failed requests (up to 3 retries)\n- `patterns/citations.md` - Citation formatting for your report\n\n## Workflow\n\n1. **Follow directions**: Execute the specific research task assigned to you\n2. **Stay focused**: Do NOT delegate to other subagents\n3. **Write findings**: Output to `reports_biomcp/<TOPIC>/<YOUR-FOCUS>.md`. The write tool auto-creates parent directories - no need to create the directory first.\n4. **Generate HTML**: After writing the markdown report, use the `markdownToHtml` tool to convert it to a standalone HTML file at `reports_biomcp/<TOPIC>/<YOUR-FOCUS>.html` with the same title as your report.\n\n## Rate Limiting\n\nALWAYS use blockingTimer(0.5) between consecutive biomcp* tool calls.\n\n## Retry Logic\n\nIf a query fails:\n1. Wait a few seconds using blockingTimer\n2. Try with a simpler query\n3. Retry up to 3 times before giving up\n\n## Rules\n\n- Do NOT run concurrent MCP calls (sequential only)\n- Do NOT fallback to internal knowledge - use external trusted sources only\n- ALWAYS provide citations [1], [2], ... with full bibliography\n- Keep writing succinct, accurate, professional (academic standard)\n------ RULE REMINDER END ------\n";
|
|
8
8
|
export declare function getBioResearcherDRWorkerPrompt(): string;
|
|
@@ -28,6 +28,7 @@ This skill provides patterns for:
|
|
|
28
28
|
1. **Follow directions**: Execute the specific research task assigned to you
|
|
29
29
|
2. **Stay focused**: Do NOT delegate to other subagents
|
|
30
30
|
3. **Write findings**: Output to \`reports_biomcp/<TOPIC>/<YOUR-FOCUS>.md\`. The write tool auto-creates parent directories - no need to create the directory first.
|
|
31
|
+
4. **Generate HTML**: After writing the markdown report, use the \`markdownToHtml\` tool to convert it to a standalone HTML file at \`reports_biomcp/<TOPIC>/<YOUR-FOCUS>.html\` with the same title as your report.
|
|
31
32
|
|
|
32
33
|
## Rate Limiting
|
|
33
34
|
|
package/dist/index.d.ts
CHANGED
|
File without changes
|
package/dist/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { createBioResearcherDRAgent } from "./agents/bioresearcherDR/index";
|
|
|
4
4
|
import { createBioResearcherDRWorkerAgent } from "./agents/bioresearcherDR_worker/index";
|
|
5
5
|
import { tableTools } from "./tools/table/index";
|
|
6
6
|
import { dbTools } from "./tools/db/index";
|
|
7
|
-
import { blockingTimer, calculator, jsonExtract, jsonValidate, jsonInfer } from "./tools/misc/index";
|
|
7
|
+
import { blockingTimer, calculator, jsonExtract, jsonValidate, jsonInfer, markdownToHtml } from "./tools/misc/index";
|
|
8
8
|
import { parse_pubmed_articleSet } from "./tools/parser/pubmed";
|
|
9
9
|
import { parse_obo_file } from "./tools/parser/obo";
|
|
10
10
|
export const BioResearcherPlugin = async (input) => {
|
|
@@ -23,7 +23,7 @@ export const BioResearcherPlugin = async (input) => {
|
|
|
23
23
|
"tableGroupBy", "tablePivotSummary", "tableAppendRows", "tableUpdateCell",
|
|
24
24
|
"tableCreateFile", "dbQuery", "dbListTables", "dbDescribeTable",
|
|
25
25
|
"calculator", "blockingTimer", "jsonExtract", "jsonValidate", "jsonInfer",
|
|
26
|
-
"parse_pubmed_articleSet", "parse_obo_file",
|
|
26
|
+
"parse_pubmed_articleSet", "parse_obo_file", "markdownToHtml",
|
|
27
27
|
];
|
|
28
28
|
if (!pluginToolIds.includes(input.toolID))
|
|
29
29
|
return;
|
|
@@ -38,7 +38,8 @@ export const BioResearcherPlugin = async (input) => {
|
|
|
38
38
|
jsonValidate,
|
|
39
39
|
jsonInfer,
|
|
40
40
|
parse_pubmed_articleSet,
|
|
41
|
-
parse_obo_file
|
|
41
|
+
parse_obo_file,
|
|
42
|
+
markdownToHtml
|
|
42
43
|
}
|
|
43
44
|
};
|
|
44
45
|
};
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,96 +1,96 @@
|
|
|
1
|
-
# Creating Index Files for Protein Chains
|
|
2
|
-
|
|
3
|
-
## Basic Method
|
|
4
|
-
|
|
5
|
-
```bash
|
|
6
|
-
# Interactive mode
|
|
7
|
-
gmx make_ndx -f <tpr_file> -o <index_file.ndx>
|
|
8
|
-
|
|
9
|
-
# Non-interactive: split protein group by chain
|
|
10
|
-
printf "splitch <protein_group>\nq\n" | gmx make_ndx -f <tpr_file> -o <index_file.ndx>
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Caveat: `splitch` Artefacts
|
|
14
|
-
|
|
15
|
-
`splitch` uses topological connectivity and may incorrectly split a single chain into multiple groups when:
|
|
16
|
-
- Hydrogen atoms were rebuilt by `pdb2gmx` (N-terminal residues get extra H1/H2/H3 atoms)
|
|
17
|
-
- Residue numbering has gaps (e.g., residues 1-18, then 26-108)
|
|
18
|
-
|
|
19
|
-
**Symptom**: After `splitch`, a single protein chain appears as multiple `Protein_chainN` groups where the atom counts don't match expected molecule boundaries.
|
|
20
|
-
|
|
21
|
-
## Recommended Workflow: Fix Incorrectly Split Chains
|
|
22
|
-
|
|
23
|
-
**Step 1: Identify the incorrect split**
|
|
24
|
-
After `splitch`, press Enter (empty line) in `make_ndx` to list all groups. Compare atom counts against your expected molecule sizes.
|
|
25
|
-
|
|
26
|
-
**Step 2: Merge the incorrectly split groups**
|
|
27
|
-
```
|
|
28
|
-
<group_N> | <group_M>
|
|
29
|
-
```
|
|
30
|
-
This creates a new merged group named `Protein_chainN_Protein_chainM` at the end of the list.
|
|
31
|
-
|
|
32
|
-
**Step 3: Verify the merged group**
|
|
33
|
-
Press Enter to list groups again. The merged group should have the correct total atom count.
|
|
34
|
-
|
|
35
|
-
**Step 4: Delete the incorrect split groups**
|
|
36
|
-
Delete in DESCENDING order to avoid index shifting confusion:
|
|
37
|
-
```
|
|
38
|
-
del <higher_index>
|
|
39
|
-
del <lower_index>
|
|
40
|
-
```
|
|
41
|
-
After `k` deletions, the merged group index shifts down by `k`.
|
|
42
|
-
|
|
43
|
-
**Step 5: Rename the merged group (optional)**
|
|
44
|
-
```
|
|
45
|
-
name <final_index> <custom_name>
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
## Generic Example (interactive `make_ndx` session)
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
> splitch 1
|
|
52
|
-
Found N chains
|
|
53
|
-
1: XXX atoms (a to b)
|
|
54
|
-
2: YY atoms (c to d) <-- suspiciously small, may be incorrect split
|
|
55
|
-
3: ZZZ atoms (e to f) <-- remainder of same chain
|
|
56
|
-
|
|
57
|
-
> <-- press Enter to list groups
|
|
58
|
-
...
|
|
59
|
-
N Protein_chain1 XXX atoms
|
|
60
|
-
N+1 Protein_chain2 YY atoms <-- wrong split (too small)
|
|
61
|
-
N+2 Protein_chain3 ZZZ atoms <-- wrong split (remainder)
|
|
62
|
-
...
|
|
63
|
-
|
|
64
|
-
> N+1 | N+2 <-- merge the incorrectly split groups
|
|
65
|
-
Merged two groups with OR: YY ZZZ -> (YY+ZZZ)
|
|
66
|
-
|
|
67
|
-
> <-- press Enter to verify
|
|
68
|
-
...
|
|
69
|
-
M Protein_chain2_Protein_chain3 (YY+ZZZ) atoms <-- correct total!
|
|
70
|
-
|
|
71
|
-
> del N+2 <-- delete higher index first
|
|
72
|
-
> del N+1 <-- then lower index
|
|
73
|
-
|
|
74
|
-
> <-- press Enter
|
|
75
|
-
...
|
|
76
|
-
M-2 Protein_chain2_Protein_chain3 (YY+ZZZ) atoms <-- shifted!
|
|
77
|
-
|
|
78
|
-
> name M-2 <your_chain_name>
|
|
79
|
-
> q
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**Key insight**: After deleting `k` groups that were created AFTER the merged group, the merged group's index decreases by `k`.
|
|
83
|
-
|
|
84
|
-
## Non-interactive Equivalent
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
printf "splitch 1\n<group_N> | <group_M>\ndel <higher>\ndel <lower>\nname <final> <name>\nq\n" | \
|
|
88
|
-
gmx make_ndx -f <tpr_file> -o <index_file.ndx>
|
|
89
|
-
```
|
|
90
|
-
|
|
91
|
-
## Creating C-alpha Groups
|
|
92
|
-
|
|
93
|
-
In `make_ndx` interactive mode:
|
|
94
|
-
```
|
|
95
|
-
a CA & <chain_group> # creates C-alpha selection for specified chain
|
|
96
|
-
```
|
|
1
|
+
# Creating Index Files for Protein Chains
|
|
2
|
+
|
|
3
|
+
## Basic Method
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
# Interactive mode
|
|
7
|
+
gmx make_ndx -f <tpr_file> -o <index_file.ndx>
|
|
8
|
+
|
|
9
|
+
# Non-interactive: split protein group by chain
|
|
10
|
+
printf "splitch <protein_group>\nq\n" | gmx make_ndx -f <tpr_file> -o <index_file.ndx>
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Caveat: `splitch` Artefacts
|
|
14
|
+
|
|
15
|
+
`splitch` uses topological connectivity and may incorrectly split a single chain into multiple groups when:
|
|
16
|
+
- Hydrogen atoms were rebuilt by `pdb2gmx` (N-terminal residues get extra H1/H2/H3 atoms)
|
|
17
|
+
- Residue numbering has gaps (e.g., residues 1-18, then 26-108)
|
|
18
|
+
|
|
19
|
+
**Symptom**: After `splitch`, a single protein chain appears as multiple `Protein_chainN` groups where the atom counts don't match expected molecule boundaries.
|
|
20
|
+
|
|
21
|
+
## Recommended Workflow: Fix Incorrectly Split Chains
|
|
22
|
+
|
|
23
|
+
**Step 1: Identify the incorrect split**
|
|
24
|
+
After `splitch`, press Enter (empty line) in `make_ndx` to list all groups. Compare atom counts against your expected molecule sizes.
|
|
25
|
+
|
|
26
|
+
**Step 2: Merge the incorrectly split groups**
|
|
27
|
+
```
|
|
28
|
+
<group_N> | <group_M>
|
|
29
|
+
```
|
|
30
|
+
This creates a new merged group named `Protein_chainN_Protein_chainM` at the end of the list.
|
|
31
|
+
|
|
32
|
+
**Step 3: Verify the merged group**
|
|
33
|
+
Press Enter to list groups again. The merged group should have the correct total atom count.
|
|
34
|
+
|
|
35
|
+
**Step 4: Delete the incorrect split groups**
|
|
36
|
+
Delete in DESCENDING order to avoid index shifting confusion:
|
|
37
|
+
```
|
|
38
|
+
del <higher_index>
|
|
39
|
+
del <lower_index>
|
|
40
|
+
```
|
|
41
|
+
After `k` deletions, the merged group index shifts down by `k`.
|
|
42
|
+
|
|
43
|
+
**Step 5: Rename the merged group (optional)**
|
|
44
|
+
```
|
|
45
|
+
name <final_index> <custom_name>
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
## Generic Example (interactive `make_ndx` session)
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
> splitch 1
|
|
52
|
+
Found N chains
|
|
53
|
+
1: XXX atoms (a to b)
|
|
54
|
+
2: YY atoms (c to d) <-- suspiciously small, may be incorrect split
|
|
55
|
+
3: ZZZ atoms (e to f) <-- remainder of same chain
|
|
56
|
+
|
|
57
|
+
> <-- press Enter to list groups
|
|
58
|
+
...
|
|
59
|
+
N Protein_chain1 XXX atoms
|
|
60
|
+
N+1 Protein_chain2 YY atoms <-- wrong split (too small)
|
|
61
|
+
N+2 Protein_chain3 ZZZ atoms <-- wrong split (remainder)
|
|
62
|
+
...
|
|
63
|
+
|
|
64
|
+
> N+1 | N+2 <-- merge the incorrectly split groups
|
|
65
|
+
Merged two groups with OR: YY ZZZ -> (YY+ZZZ)
|
|
66
|
+
|
|
67
|
+
> <-- press Enter to verify
|
|
68
|
+
...
|
|
69
|
+
M Protein_chain2_Protein_chain3 (YY+ZZZ) atoms <-- correct total!
|
|
70
|
+
|
|
71
|
+
> del N+2 <-- delete higher index first
|
|
72
|
+
> del N+1 <-- then lower index
|
|
73
|
+
|
|
74
|
+
> <-- press Enter
|
|
75
|
+
...
|
|
76
|
+
M-2 Protein_chain2_Protein_chain3 (YY+ZZZ) atoms <-- shifted!
|
|
77
|
+
|
|
78
|
+
> name M-2 <your_chain_name>
|
|
79
|
+
> q
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
**Key insight**: After deleting `k` groups that were created AFTER the merged group, the merged group's index decreases by `k`.
|
|
83
|
+
|
|
84
|
+
## Non-interactive Equivalent
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
printf "splitch 1\n<group_N> | <group_M>\ndel <higher>\ndel <lower>\nname <final> <name>\nq\n" | \
|
|
88
|
+
gmx make_ndx -f <tpr_file> -o <index_file.ndx>
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Creating C-alpha Groups
|
|
92
|
+
|
|
93
|
+
In `make_ndx` interactive mode:
|
|
94
|
+
```
|
|
95
|
+
a CA & <chain_group> # creates C-alpha selection for specified chain
|
|
96
|
+
```
|