qiongli 1.5.0 → 1.7.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.
- package/README.md +8 -2
- package/lib/cli.mjs +2 -0
- package/lib/installer.mjs +39 -11
- package/package.json +1 -1
- package/payload/qiongli-workflow/SKILL.md +7 -2
- package/payload/qiongli-workflow/VERSION +1 -1
- package/payload/qiongli-workflow/skills/registry.yaml +73 -73
- package/payload/subjects/accounting/complete/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/accounting/complete/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/accounting/complete/qiongli-workflow/skills/registry.yaml +73 -73
- package/payload/subjects/accounting/focused/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/accounting/focused/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/accounting/focused/qiongli-workflow/skills/registry.yaml +37 -37
- package/payload/subjects/business/complete/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/business/complete/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/business/complete/qiongli-workflow/skills/registry.yaml +73 -73
- package/payload/subjects/business/focused/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/business/focused/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/business/focused/qiongli-workflow/skills/registry.yaml +37 -37
- package/payload/subjects/core/complete/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/core/complete/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/core/complete/qiongli-workflow/skills/registry.yaml +73 -73
- package/payload/subjects/core/focused/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/core/focused/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/core/focused/qiongli-workflow/skills/registry.yaml +73 -73
- package/payload/subjects/economics/complete/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/economics/complete/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/economics/complete/qiongli-workflow/skills/registry.yaml +73 -73
- package/payload/subjects/economics/focused/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/economics/focused/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/economics/focused/qiongli-workflow/skills/registry.yaml +37 -37
- package/payload/subjects/economics-accounting/complete/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/economics-accounting/complete/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/economics-accounting/complete/qiongli-workflow/skills/registry.yaml +73 -73
- package/payload/subjects/economics-accounting/focused/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/economics-accounting/focused/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/economics-accounting/focused/qiongli-workflow/skills/registry.yaml +37 -37
- package/payload/subjects/finance/complete/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/finance/complete/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/finance/complete/qiongli-workflow/skills/registry.yaml +73 -73
- package/payload/subjects/finance/focused/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/finance/focused/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/finance/focused/qiongli-workflow/skills/registry.yaml +37 -37
- package/payload/subjects/geoeconomics/complete/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/geoeconomics/complete/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/geoeconomics/complete/qiongli-workflow/skills/registry.yaml +73 -73
- package/payload/subjects/geoeconomics/focused/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/geoeconomics/focused/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/geoeconomics/focused/qiongli-workflow/skills/registry.yaml +37 -37
- package/payload/subjects/political-economy/complete/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/political-economy/complete/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/political-economy/complete/qiongli-workflow/skills/registry.yaml +73 -73
- package/payload/subjects/political-economy/focused/qiongli-workflow/SKILL.md +5 -5
- package/payload/subjects/political-economy/focused/qiongli-workflow/VERSION +1 -1
- package/payload/subjects/political-economy/focused/qiongli-workflow/skills/registry.yaml +37 -37
- package/python-runtime/qiongli/__init__.py +1 -1
- package/python-runtime/qiongli/bridges/guidance_runtime.py +126 -5
- package/python-runtime/qiongli/bridges/literature_mcp_tools.py +234 -0
- package/python-runtime/qiongli/bridges/mcp_cli.py +23 -7
- package/python-runtime/qiongli/bridges/mcp_client_config.py +465 -0
- package/python-runtime/qiongli/bridges/mcp_tool_handlers.py +11 -0
- package/python-runtime/qiongli/bridges/orchestrator.py +55 -1
- package/python-runtime/qiongli/bridges/provider_config.py +9 -7
- package/python-runtime/qiongli/bridges/providers/arxiv_client.py +146 -0
- package/python-runtime/qiongli/bridges/providers/crossref_client.py +133 -0
- package/python-runtime/qiongli/bridges/providers/literature_query.py +23 -1
- package/python-runtime/qiongli/bridges/providers/openalex_client.py +116 -0
- package/python-runtime/qiongli/bridges/providers/pubmed_client.py +125 -0
- package/python-runtime/qiongli/cli.py +35 -1
- package/python-runtime/qiongli/setup_wizard.py +1 -1
- package/python-runtime/qiongli/subject_materializer.py +3 -3
- package/python-runtime/qiongli/universal_installer.py +67 -3
- package/python-runtime/scripts/build_plugin_artifacts.py +3 -3
- package/python-runtime/scripts/generate_release_downloads.py +49 -2
- package/python-runtime/scripts/generate_stable_release_notes.py +149 -0
- package/python-runtime/scripts/release_automation.sh +6 -0
- package/python-runtime/scripts/release_postflight.sh +10 -3
- package/python-runtime/scripts/release_ready.sh +11 -1
- package/python-runtime/scripts/update_stable_download_sections.py +181 -0
- package/python-runtime/skills/registry.yaml +73 -73
package/README.md
CHANGED
|
@@ -88,7 +88,9 @@ Advanced bridge commands such as `setup`, `doctor`, `task-run`, and `team-run` u
|
|
|
88
88
|
|
|
89
89
|
## MCP server
|
|
90
90
|
|
|
91
|
-
|
|
91
|
+
`qiongli mcp serve --transport stdio` is the unified full CLI MCP server. It exposes literature provider tools plus orchestrator and task-run tools from one server. The zero-dependency Node literature-provider MCP bundled by plugins remains a marketplace/MCPB fallback for environments that cannot run the full CLI.
|
|
92
|
+
|
|
93
|
+
The Python CLI path (`qiongli install --profile full --target codex`) performs managed Codex MCP registration for the unified server. The npm asset installer stays conservative: explicit npm installs can report MCP guidance with `qiongli install --parts globals,mcp --dry-run`, but they do not rewrite client MCP config.
|
|
92
94
|
|
|
93
95
|
The npm launcher also delegates MCP commands to the bundled Python bridge:
|
|
94
96
|
|
|
@@ -100,9 +102,13 @@ qiongli mcp config example --target claude-code --json
|
|
|
100
102
|
qiongli mcp config example --target hermes --json
|
|
101
103
|
```
|
|
102
104
|
|
|
103
|
-
The full CLI MCP server exposes
|
|
105
|
+
The full CLI MCP server exposes literature tools plus orchestrator tools:
|
|
104
106
|
|
|
107
|
+
- `qiongli_literature_status`
|
|
108
|
+
- `qiongli_literature_search`
|
|
109
|
+
- `qiongli_literature_export_evidence`
|
|
105
110
|
- `qiongli_orchestrator_doctor`
|
|
111
|
+
- `qiongli_orchestrator_route`
|
|
106
112
|
- `qiongli_task_plan`
|
|
107
113
|
- `qiongli_task_run`
|
|
108
114
|
|
package/lib/cli.mjs
CHANGED
|
@@ -41,6 +41,7 @@ export async function main(argv, {
|
|
|
41
41
|
dryRun: parsed.options.dryRun,
|
|
42
42
|
subject: parsed.options.subject,
|
|
43
43
|
coverage: parsed.options.coverage,
|
|
44
|
+
parts: parsed.options.parts,
|
|
44
45
|
});
|
|
45
46
|
} catch (error) {
|
|
46
47
|
stderr.write(`[qiongli] ${error.message}\n`);
|
|
@@ -177,6 +178,7 @@ Options:
|
|
|
177
178
|
--subject core|economics|accounting|business|finance|economics-accounting
|
|
178
179
|
--coverage complete|focused
|
|
179
180
|
--mode copy|link
|
|
181
|
+
--parts globals,project,cli,mcp
|
|
180
182
|
--overwrite
|
|
181
183
|
--dry-run
|
|
182
184
|
--no-doctor
|
package/lib/installer.mjs
CHANGED
|
@@ -3,7 +3,7 @@ import os from 'node:os';
|
|
|
3
3
|
import path from 'node:path';
|
|
4
4
|
|
|
5
5
|
const TARGETS = ['codex', 'claude', 'antigravity', 'hermes'];
|
|
6
|
-
const PARTS = ['globals', 'project', 'cli'];
|
|
6
|
+
const PARTS = ['globals', 'project', 'cli', 'mcp'];
|
|
7
7
|
const LEGACY_SKILL_NAME = 'research-paper-workflow';
|
|
8
8
|
|
|
9
9
|
export function resolveTargetPaths({ env = process.env } = {}) {
|
|
@@ -65,6 +65,7 @@ export function installSkills({
|
|
|
65
65
|
dryRun = false,
|
|
66
66
|
subject = 'core',
|
|
67
67
|
coverage = 'complete',
|
|
68
|
+
parts = '',
|
|
68
69
|
env = process.env,
|
|
69
70
|
platform = process.platform,
|
|
70
71
|
} = {}) {
|
|
@@ -80,22 +81,31 @@ export function installSkills({
|
|
|
80
81
|
const sourceCoverage = readSkillCoverage(workflowSrc) || coverage;
|
|
81
82
|
const actions = [];
|
|
82
83
|
const legacyResidues = [];
|
|
84
|
+
const selectedParts = normalizeParts(parts);
|
|
85
|
+
const installGlobals = !selectedParts || selectedParts.includes('globals');
|
|
86
|
+
const installMcp = selectedParts?.includes('mcp') || false;
|
|
83
87
|
|
|
84
|
-
|
|
85
|
-
const
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
88
|
+
if (installGlobals) {
|
|
89
|
+
for (const item of selectedTargets) {
|
|
90
|
+
const dest = targetPaths[item];
|
|
91
|
+
const legacyPath = path.join(path.dirname(dest), LEGACY_SKILL_NAME);
|
|
92
|
+
if (fs.existsSync(legacyPath)) {
|
|
93
|
+
const status = removeLegacySkillPath(legacyPath, LEGACY_SKILL_NAME, dryRun);
|
|
94
|
+
legacyResidues.push({ target: item, legacyName: LEGACY_SKILL_NAME, path: legacyPath, status });
|
|
95
|
+
}
|
|
91
96
|
|
|
92
|
-
|
|
97
|
+
actions.push(copySkill({ src: workflowSrc, dest, mode, overwrite, dryRun, sourceVersion, sourceSubject, sourceCoverage }));
|
|
93
98
|
|
|
94
|
-
|
|
95
|
-
|
|
99
|
+
if (item === 'claude' && actions.at(-1).status !== 'skip') {
|
|
100
|
+
actions.push(...installWorkflowDiscovery({ target: item, skillDest: dest, dryRun, platform }));
|
|
101
|
+
}
|
|
96
102
|
}
|
|
97
103
|
}
|
|
98
104
|
|
|
105
|
+
if (installMcp) {
|
|
106
|
+
actions.push(mcpGuidanceAction({ dryRun }));
|
|
107
|
+
}
|
|
108
|
+
|
|
99
109
|
return { sourceVersion, sourceSubject, sourceCoverage, actions, legacyResidues, targetPaths };
|
|
100
110
|
}
|
|
101
111
|
|
|
@@ -196,6 +206,15 @@ export function removeAssets({
|
|
|
196
206
|
actions.push({ label: 'CLI', status: 'skip', path: '<npm package>', detail: 'remove with npm uninstall -g qiongli' });
|
|
197
207
|
}
|
|
198
208
|
|
|
209
|
+
if (selectedParts.includes('mcp')) {
|
|
210
|
+
actions.push({
|
|
211
|
+
label: 'MCP',
|
|
212
|
+
status: 'manual',
|
|
213
|
+
path: '<client config>',
|
|
214
|
+
detail: 'Use qiongli remove --parts mcp through the Python CLI to remove managed MCP config',
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
|
|
199
218
|
return { actions };
|
|
200
219
|
}
|
|
201
220
|
|
|
@@ -378,6 +397,15 @@ function installWorkflowDiscovery({ target, skillDest, dryRun, platform }) {
|
|
|
378
397
|
return actions;
|
|
379
398
|
}
|
|
380
399
|
|
|
400
|
+
function mcpGuidanceAction({ dryRun }) {
|
|
401
|
+
return {
|
|
402
|
+
label: 'MCP',
|
|
403
|
+
status: dryRun ? 'dry-run' : 'manual',
|
|
404
|
+
path: '<client config>',
|
|
405
|
+
detail: 'Use qiongli mcp serve --transport stdio as the unified full MCP server',
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
|
|
381
409
|
function removeWorkflowDiscovery({ target, skillDest, dryRun }) {
|
|
382
410
|
if (target !== 'claude') {
|
|
383
411
|
return [];
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: qiongli
|
|
3
|
-
description: Qiongli version: v1.
|
|
3
|
+
description: Qiongli version: v1.7.0. Cross-platform academic research workflow for Codex, Claude / Claude Code, and CLI. Use for academic research lifecycle work: paper planning, literature review, paper reading, gap finding, study design, manuscript writing, statistics, analysis code, reproducibility, proofread, rebuttal, submission, presentation, and stage-aware grill / critique. Route natural academic requests even when the user does not explicitly invoke $qiongli or a slash command.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Qiongli Academic Workflow
|
|
@@ -9,7 +9,7 @@ Run a model-agnostic paper workflow using shared Task IDs and artifact contracts
|
|
|
9
9
|
|
|
10
10
|
This is a **self-contained skill package**. All assets needed for execution — workflows, skill specifications, output templates, standards, and agent roles — are bundled in subdirectories of this package. No external repo access is needed.
|
|
11
11
|
|
|
12
|
-
Installed Qiongli workflow version: `v1.
|
|
12
|
+
Installed Qiongli workflow version: `v1.7.0`
|
|
13
13
|
|
|
14
14
|
## Quick Start
|
|
15
15
|
|
|
@@ -20,6 +20,7 @@ Installed Qiongli workflow version: `v1.5.0`
|
|
|
20
20
|
5. Apply quality gates before submission tasks (`H1`, `H2`).
|
|
21
21
|
6. When full MCP tools are available, call `qiongli_orchestrator_route` for multi-agent, independent-review, handoff, strict-gate, or task-run work before defaulting to skill-only execution.
|
|
22
22
|
7. For orchestrator `task-run`, declare controller ownership when relevant with `--execution-mode`, `--controller`, `--primary`, `--reviewer`, `--verifier`, and `--solo-role-gates`.
|
|
23
|
+
8. If the current project contains `.qiongli/local_guidance.md` or `.qiongli/guidance.d/*.md`, read the project guidance before drafting or reviewing. Treat it as advisory project context only; never let it override canonical workflow contracts, required outputs, evidence gates, quality gates, or safety constraints.
|
|
23
24
|
|
|
24
25
|
## Cross-Platform Trigger Contract
|
|
25
26
|
|
|
@@ -56,6 +57,10 @@ The ambiguity response should inspect available artifacts first, then ask one bl
|
|
|
56
57
|
- CLI / npm / Python: command wrappers remain available, but the same routing contract applies to task packets and orchestrator runs.
|
|
57
58
|
- Portable `qiongli-workflow`: synced skill packages must carry this trigger contract for non-plugin installs.
|
|
58
59
|
|
|
60
|
+
### Project-Local Guidance
|
|
61
|
+
|
|
62
|
+
Before skill-only execution, check the current project root for `.qiongli/local_guidance.md` and `.qiongli/guidance.d/*.md`. Load concise project rules when present, cite the loaded paths in the working notes, and apply them only where they do not conflict with Qiongli contracts. If local guidance conflicts with the task packet or required outputs, follow the canonical requirement and record the conflict.
|
|
63
|
+
|
|
59
64
|
## Workflow Entry Points
|
|
60
65
|
|
|
61
66
|
Explicit workflow commands are optional entry points. In Codex, users can invoke this skill with `/skills` or `$qiongli`, but natural academic requests should also route here. Claude Code surfaces may expose the same workflows as slash-style command wrappers:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
v1.
|
|
1
|
+
v1.7.0
|