traceable-research-mcp 0.1.0__tar.gz

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 (89) hide show
  1. traceable_research_mcp-0.1.0/.agents/plugins/marketplace.json +17 -0
  2. traceable_research_mcp-0.1.0/.claude/settings.local.json +8 -0
  3. traceable_research_mcp-0.1.0/.claude-plugin/marketplace.json +17 -0
  4. traceable_research_mcp-0.1.0/.github/workflows/ci.yml +46 -0
  5. traceable_research_mcp-0.1.0/.gitignore +22 -0
  6. traceable_research_mcp-0.1.0/.superpowers/sdd/progress.md +3 -0
  7. traceable_research_mcp-0.1.0/.superpowers/sdd/task-0-brief.md +36 -0
  8. traceable_research_mcp-0.1.0/.superpowers/sdd/task-0-report.md +129 -0
  9. traceable_research_mcp-0.1.0/.superpowers/sdd/task-0-review.diff +2573 -0
  10. traceable_research_mcp-0.1.0/LICENSE +22 -0
  11. traceable_research_mcp-0.1.0/NOTICE +9 -0
  12. traceable_research_mcp-0.1.0/PKG-INFO +19 -0
  13. traceable_research_mcp-0.1.0/PUBLISHING.md +102 -0
  14. traceable_research_mcp-0.1.0/README.md +65 -0
  15. traceable_research_mcp-0.1.0/docs/superpowers/plans/2026-07-20-deep-research-toolkit.md +1482 -0
  16. traceable_research_mcp-0.1.0/docs//350/250/255/350/250/210/350/252/252/346/230/216.md +624 -0
  17. traceable_research_mcp-0.1.0/plugins/deep-research-toolkit/.claude-plugin/plugin.json +20 -0
  18. traceable_research_mcp-0.1.0/plugins/deep-research-toolkit/.codex-plugin/plugin.json +24 -0
  19. traceable_research_mcp-0.1.0/plugins/deep-research-toolkit/.mcp.json +13 -0
  20. traceable_research_mcp-0.1.0/plugins/deep-research-toolkit/skills/deep-research/SKILL.md +40 -0
  21. traceable_research_mcp-0.1.0/plugins/deep-research-toolkit/skills/deep-research/references/evidence-rules.md +22 -0
  22. traceable_research_mcp-0.1.0/pyproject.toml +51 -0
  23. traceable_research_mcp-0.1.0/src/deep_research/__init__.py +1 -0
  24. traceable_research_mcp-0.1.0/src/deep_research/cli.py +113 -0
  25. traceable_research_mcp-0.1.0/src/deep_research/config.py +46 -0
  26. traceable_research_mcp-0.1.0/src/deep_research/deduplicate.py +69 -0
  27. traceable_research_mcp-0.1.0/src/deep_research/errors.py +28 -0
  28. traceable_research_mcp-0.1.0/src/deep_research/evidence.py +56 -0
  29. traceable_research_mcp-0.1.0/src/deep_research/http.py +60 -0
  30. traceable_research_mcp-0.1.0/src/deep_research/jobs.py +56 -0
  31. traceable_research_mcp-0.1.0/src/deep_research/mcp/__init__.py +0 -0
  32. traceable_research_mcp-0.1.0/src/deep_research/mcp/server.py +182 -0
  33. traceable_research_mcp-0.1.0/src/deep_research/models.py +145 -0
  34. traceable_research_mcp-0.1.0/src/deep_research/normalize.py +30 -0
  35. traceable_research_mcp-0.1.0/src/deep_research/paths.py +63 -0
  36. traceable_research_mcp-0.1.0/src/deep_research/pdf.py +102 -0
  37. traceable_research_mcp-0.1.0/src/deep_research/pipeline.py +203 -0
  38. traceable_research_mcp-0.1.0/src/deep_research/providers/__init__.py +0 -0
  39. traceable_research_mcp-0.1.0/src/deep_research/providers/base.py +23 -0
  40. traceable_research_mcp-0.1.0/src/deep_research/providers/crossref.py +66 -0
  41. traceable_research_mcp-0.1.0/src/deep_research/providers/openalex.py +87 -0
  42. traceable_research_mcp-0.1.0/src/deep_research/providers/semantic_scholar.py +80 -0
  43. traceable_research_mcp-0.1.0/src/deep_research/providers/unpaywall.py +49 -0
  44. traceable_research_mcp-0.1.0/src/deep_research/reports/__init__.py +4 -0
  45. traceable_research_mcp-0.1.0/src/deep_research/reports/common.py +25 -0
  46. traceable_research_mcp-0.1.0/src/deep_research/reports/csv_export.py +45 -0
  47. traceable_research_mcp-0.1.0/src/deep_research/reports/docx_export.py +63 -0
  48. traceable_research_mcp-0.1.0/src/deep_research/reports/exporter.py +60 -0
  49. traceable_research_mcp-0.1.0/src/deep_research/reports/markdown.py +47 -0
  50. traceable_research_mcp-0.1.0/src/deep_research/reports/validate.py +44 -0
  51. traceable_research_mcp-0.1.0/src/deep_research/screening.py +58 -0
  52. traceable_research_mcp-0.1.0/src/deep_research/state.py +45 -0
  53. traceable_research_mcp-0.1.0/src/deep_research/storage.py +364 -0
  54. traceable_research_mcp-0.1.0/tests/__init__.py +0 -0
  55. traceable_research_mcp-0.1.0/tests/contract/__init__.py +0 -0
  56. traceable_research_mcp-0.1.0/tests/contract/test_mcp_tools.py +142 -0
  57. traceable_research_mcp-0.1.0/tests/contract/test_plugin_files.py +85 -0
  58. traceable_research_mcp-0.1.0/tests/fixtures/pdfs/two-page-text.pdf +0 -0
  59. traceable_research_mcp-0.1.0/tests/fixtures/provider_payloads/crossref.json +14 -0
  60. traceable_research_mcp-0.1.0/tests/fixtures/provider_payloads/openalex.json +19 -0
  61. traceable_research_mcp-0.1.0/tests/fixtures/provider_payloads/semantic_scholar.json +17 -0
  62. traceable_research_mcp-0.1.0/tests/fixtures/provider_payloads/unpaywall.json +8 -0
  63. traceable_research_mcp-0.1.0/tests/integration/__init__.py +0 -0
  64. traceable_research_mcp-0.1.0/tests/integration/helpers.py +45 -0
  65. traceable_research_mcp-0.1.0/tests/integration/test_online_smoke.py +45 -0
  66. traceable_research_mcp-0.1.0/tests/integration/test_pipeline.py +86 -0
  67. traceable_research_mcp-0.1.0/tests/integration/test_resume.py +86 -0
  68. traceable_research_mcp-0.1.0/tests/providers/__init__.py +0 -0
  69. traceable_research_mcp-0.1.0/tests/providers/helpers.py +19 -0
  70. traceable_research_mcp-0.1.0/tests/providers/test_crossref.py +39 -0
  71. traceable_research_mcp-0.1.0/tests/providers/test_openalex.py +84 -0
  72. traceable_research_mcp-0.1.0/tests/providers/test_semantic_scholar.py +44 -0
  73. traceable_research_mcp-0.1.0/tests/providers/test_unpaywall.py +47 -0
  74. traceable_research_mcp-0.1.0/tests/unit/__init__.py +0 -0
  75. traceable_research_mcp-0.1.0/tests/unit/test_config.py +39 -0
  76. traceable_research_mcp-0.1.0/tests/unit/test_deduplicate.py +26 -0
  77. traceable_research_mcp-0.1.0/tests/unit/test_evidence.py +52 -0
  78. traceable_research_mcp-0.1.0/tests/unit/test_models.py +28 -0
  79. traceable_research_mcp-0.1.0/tests/unit/test_normalize.py +26 -0
  80. traceable_research_mcp-0.1.0/tests/unit/test_paths.py +13 -0
  81. traceable_research_mcp-0.1.0/tests/unit/test_pdf.py +30 -0
  82. traceable_research_mcp-0.1.0/tests/unit/test_report_exports.py +113 -0
  83. traceable_research_mcp-0.1.0/tests/unit/test_report_validation.py +58 -0
  84. traceable_research_mcp-0.1.0/tests/unit/test_screening.py +25 -0
  85. traceable_research_mcp-0.1.0/tests/unit/test_state.py +12 -0
  86. traceable_research_mcp-0.1.0/tests/unit/test_storage.py +48 -0
  87. traceable_research_mcp-0.1.0/uv.lock +1147 -0
  88. traceable_research_mcp-0.1.0//346/223/215/344/275/234/350/252/252/346/230/216.md +177 -0
  89. traceable_research_mcp-0.1.0//350/252/252/346/230/216/346/233/270.md +465 -0
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "deep-research-toolkit-local",
3
+ "plugins": [
4
+ {
5
+ "name": "deep-research-toolkit",
6
+ "description": "Traceable scholarly research tools exposed over MCP.",
7
+ "source": {
8
+ "type": "local",
9
+ "path": "./plugins/deep-research-toolkit"
10
+ },
11
+ "policy": {
12
+ "installation": "AVAILABLE",
13
+ "authentication": "ON_INSTALL"
14
+ }
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "permissions": {
3
+ "allow": [
4
+ "Bash(uv --version)",
5
+ "Bash(py --version)"
6
+ ]
7
+ }
8
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
3
+ "name": "deep-research-toolkit",
4
+ "description": "Traceable scholarly research tools exposed over MCP.",
5
+ "owner": {
6
+ "name": "Deep Research Toolkit contributors",
7
+ "url": "https://github.com/CYC2002tommy/Deep-Research-Agent"
8
+ },
9
+ "plugins": [
10
+ {
11
+ "name": "deep-research-toolkit",
12
+ "description": "Traceable literature review over free APIs with evidence-linked bilingual reports.",
13
+ "source": "./plugins/deep-research-toolkit",
14
+ "category": "productivity"
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,46 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ pull_request:
6
+
7
+ jobs:
8
+ test:
9
+ strategy:
10
+ fail-fast: false
11
+ matrix:
12
+ os: [ubuntu-latest, macos-latest, windows-latest]
13
+ python-version: ["3.11", "3.13"]
14
+ runs-on: ${{ matrix.os }}
15
+ steps:
16
+ - uses: actions/checkout@v4
17
+ - name: Install uv
18
+ uses: astral-sh/setup-uv@v5
19
+ with:
20
+ python-version: ${{ matrix.python-version }}
21
+ - name: Sync dependencies
22
+ run: uv sync --extra dev
23
+ - name: Ruff lint
24
+ run: uv run ruff check .
25
+ - name: Ruff format check
26
+ run: uv run ruff format --check .
27
+ - name: Mypy
28
+ run: uv run mypy src
29
+ - name: Tests
30
+ run: uv run pytest -m "not online" -q
31
+
32
+ build:
33
+ runs-on: ubuntu-latest
34
+ needs: test
35
+ steps:
36
+ - uses: actions/checkout@v4
37
+ - name: Install uv
38
+ uses: astral-sh/setup-uv@v5
39
+ with:
40
+ python-version: "3.11"
41
+ - name: Build wheel and sdist
42
+ run: uv build
43
+ - uses: actions/upload-artifact@v4
44
+ with:
45
+ name: dist
46
+ path: dist/*
@@ -0,0 +1,22 @@
1
+ # Python
2
+ __pycache__/
3
+ *.pyc
4
+ .venv/
5
+ dist/
6
+ build/
7
+ *.egg-info/
8
+
9
+ # Partial writes
10
+ *.part
11
+
12
+ # Local research artifacts (reports/ and evidence/ are intentionally NOT ignored)
13
+ .deep-research/research.sqlite3
14
+ .deep-research/research.sqlite3-shm
15
+ .deep-research/research.sqlite3-wal
16
+ .deep-research/jobs/
17
+ .deep-research/sources/
18
+ .deep-research/cache/
19
+ .deep-research/quarantine/
20
+
21
+ # Local worktrees
22
+ .worktrees/
@@ -0,0 +1,3 @@
1
+ # Subagent-Driven Development Progress
2
+
3
+ Task 0: complete (commit 844e317, review clean)
@@ -0,0 +1,36 @@
1
+ ### Task 0: Initialize version control and preserve approved specifications
2
+
3
+ **Files:**
4
+ - Existing: docs/設計說明.md
5
+ - Existing: 說明書.md
6
+ - Existing: docs/superpowers/plans/2026-07-20-deep-research-toolkit.md
7
+
8
+ **Interfaces:**
9
+ - Produces: a main-branch Git repository with the approved documents as the
10
+ immutable implementation baseline.
11
+
12
+ - [ ] **Step 1: Initialize the repository**
13
+
14
+ Run:
15
+
16
+ git init -b main
17
+
18
+ Expected: Git reports an empty repository initialized on branch main.
19
+
20
+ - [ ] **Step 2: Verify the documentation baseline**
21
+
22
+ Run:
23
+
24
+ git status --short
25
+
26
+ Expected: the two specifications and this implementation plan appear as
27
+ untracked files; no product source files exist yet.
28
+
29
+ - [ ] **Step 3: Commit the approved documents**
30
+
31
+ Run:
32
+
33
+ git add docs/設計說明.md 說明書.md docs/superpowers/plans/2026-07-20-deep-research-toolkit.md
34
+ git commit -m "docs: define deep research toolkit"
35
+
36
+ Expected: commit succeeds and git status --short prints no output.
@@ -0,0 +1,129 @@
1
+ # Task 0 Report — Initialize version control and preserve approved specifications
2
+
3
+ ## Status
4
+
5
+ Completed successfully.
6
+
7
+ ## Commands and results
8
+
9
+ 1. `git init -b main`
10
+ - Result: initialized an empty Git repository on branch `main`.
11
+ 2. `git status --short`
12
+ - Result: documentation and `.superpowers/` were untracked; no product source files existed.
13
+ 3. `git add -- 'docs/設計說明.md' '說明書.md' 'docs/superpowers/plans/2026-07-20-deep-research-toolkit.md'`
14
+ - Result: staged exactly the three approved documentation files.
15
+ 4. `git commit -m 'docs: define deep research toolkit'`
16
+ - Result: created root commit `844e317` (`docs: define deep research toolkit`).
17
+ 5. `git status --short; git log -1 --oneline; git show --stat --oneline HEAD`
18
+ - Result: confirmed the expected commit and its three-file contents. The only remaining untracked path is `.superpowers/`.
19
+
20
+ ## Files committed
21
+
22
+ - `docs/設計說明.md`
23
+ - `說明書.md`
24
+ - `docs/superpowers/plans/2026-07-20-deep-research-toolkit.md`
25
+
26
+ ## Self-review
27
+
28
+ - Confirmed `main` is the repository's initial branch.
29
+ - Confirmed the root commit has subject `docs: define deep research toolkit`.
30
+ - Confirmed the commit contains exactly the three approved documents (2,545 inserted lines).
31
+ - Confirmed no `.superpowers/` scratch materials were staged or committed.
32
+ - Did not modify any approved Markdown document.
33
+
34
+ ## Concerns
35
+
36
+ - `git status --short` remains non-empty because `.superpowers/` contains local planning/scratch files, including this report. These files were intentionally left untracked per the task requirements.
37
+ - Git emitted line-ending warnings indicating that files may be converted from LF to CRLF if Git rewrites them on this Windows workspace; the committed document content was not changed as part of this task.
38
+
39
+ ## Fix Review
40
+
41
+ ### Local-only scratch exclusion
42
+
43
+ Command:
44
+
45
+ ```powershell
46
+ Add exactly `.superpowers/` to `.git/info/exclude`.
47
+ git status --short
48
+ ```
49
+
50
+ Output:
51
+
52
+ ```text
53
+ (no output)
54
+ ```
55
+
56
+ Result: `.superpowers/` is excluded only in the local Git metadata. No repository file, index entry, or commit was changed.
57
+
58
+ ### Committed-blob verification
59
+
60
+ Command:
61
+
62
+ ```powershell
63
+ $paths = @('docs/設計說明.md','說明書.md','docs/superpowers/plans/2026-07-20-deep-research-toolkit.md')
64
+ foreach ($p in $paths) {
65
+ $work = git hash-object -- $p
66
+ $head = git rev-parse "HEAD:$p"
67
+ Write-Output "$p`n working $work`n HEAD $head`n match $($work -eq $head)"
68
+ }
69
+ ```
70
+
71
+ Output:
72
+
73
+ ```text
74
+ docs/設計說明.md
75
+ working 8afe6ea444006af485e703b1682738de199ed0d3
76
+ HEAD 8afe6ea444006af485e703b1682738de199ed0d3
77
+ match True
78
+ 說明書.md
79
+ working ca8ea2527dbd64035d5e063ef86e48cb3350f380
80
+ HEAD ca8ea2527dbd64035d5e063ef86e48cb3350f380
81
+ match True
82
+ docs/superpowers/plans/2026-07-20-deep-research-toolkit.md
83
+ working 9369ef78c94923dcb51b41ade2cf3bfeb64354a7
84
+ HEAD 9369ef78c94923dcb51b41ade2cf3bfeb64354a7
85
+ match True
86
+ ```
87
+
88
+ ### Timestamp evidence
89
+
90
+ Command:
91
+
92
+ ```powershell
93
+ git log -1 --format='commit %H%ncommit timestamp %ci'
94
+ Get-Item 'docs/設計說明.md','說明書.md','docs/superpowers/plans/2026-07-20-deep-research-toolkit.md' |
95
+ ForEach-Object { Write-Output "$($_.FullName)`n LastWriteTime $($_.LastWriteTime.ToString('yyyy-MM-dd HH:mm:ss K'))" }
96
+ ```
97
+
98
+ Output:
99
+
100
+ ```text
101
+ commit 844e3174ad2c421874ccaf4adaa4a8fd2f340a36
102
+ commit timestamp 2026-07-20 01:39:59 +0800
103
+ ...\docs\設計說明.md
104
+ LastWriteTime 2026-07-20 01:25:29 +08:00
105
+ ...\說明書.md
106
+ LastWriteTime 2026-07-20 01:25:29 +08:00
107
+ ...\docs\superpowers\plans\2026-07-20-deep-research-toolkit.md
108
+ LastWriteTime 2026-07-20 01:35:59 +08:00
109
+ ```
110
+
111
+ The document LastWriteTime values precede the commit timestamp, and the blob hashes exactly match `HEAD`; Task 0 did not rewrite the approved Markdown files.
112
+
113
+ ### Final commit state
114
+
115
+ Command:
116
+
117
+ ```powershell
118
+ git status --porcelain=v1
119
+ git rev-parse HEAD
120
+ git log -1 --format='%s'
121
+ ```
122
+
123
+ Output:
124
+
125
+ ```text
126
+ (no status output)
127
+ 844e3174ad2c421874ccaf4adaa4a8fd2f340a36
128
+ docs: define deep research toolkit
129
+ ```