nexus-cli 0.3.0__tar.gz → 0.5.1__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.
- nexus_cli-0.5.1/.STATUS +303 -0
- nexus_cli-0.5.1/.github/workflows/ci.yml +143 -0
- nexus_cli-0.5.1/.github/workflows/quality.yml +110 -0
- nexus_cli-0.5.1/.github/workflows/release.yml +125 -0
- nexus_cli-0.5.1/.github/workflows/test.yml +129 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/.gitignore +1 -0
- nexus_cli-0.5.1/CI_CD_SUMMARY.md +212 -0
- nexus_cli-0.5.1/CLAUDE.md +535 -0
- nexus_cli-0.5.1/DOCUMENTATION_UPDATE_SUMMARY.md +202 -0
- nexus_cli-0.5.1/FINAL_SESSION_SUMMARY.md +351 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/PKG-INFO +56 -4
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/README.md +55 -3
- nexus_cli-0.5.1/README_BADGES.md +45 -0
- nexus_cli-0.5.1/RELEASE_NOTES_v0.5.0.md +423 -0
- nexus_cli-0.5.1/SESSION_COMPLETE.txt +79 -0
- nexus_cli-0.5.1/SESSION_SUMMARY.md +616 -0
- nexus_cli-0.5.1/SESSION_WRAP_UP.txt +152 -0
- nexus_cli-0.5.1/TEST_SUMMARY.md +257 -0
- nexus_cli-0.5.1/TUTORIAL_GUIDE.md +274 -0
- nexus_cli-0.5.1/TUTORIAL_QUICK_REF.md +232 -0
- nexus_cli-0.5.1/docs/changelog.md +243 -0
- nexus_cli-0.5.1/docs/development/architecture.md +719 -0
- nexus_cli-0.5.1/docs/development/contributing.md +124 -0
- nexus_cli-0.5.1/docs/development/testing.md +581 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/docs/getting-started/quickstart.md +46 -5
- nexus_cli-0.5.1/docs/guide/knowledge.md +81 -0
- nexus_cli-0.5.1/docs/guide/overview.md +89 -0
- nexus_cli-0.5.1/docs/guide/research.md +83 -0
- nexus_cli-0.5.1/docs/guide/teaching.md +85 -0
- nexus_cli-0.5.1/docs/guide/writing.md +90 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/docs/index.md +46 -2
- nexus_cli-0.5.1/docs/reference/api.md +553 -0
- nexus_cli-0.5.1/docs/reference/cli.md +278 -0
- nexus_cli-0.5.1/docs/reference/mcp.md +653 -0
- nexus_cli-0.5.1/docs/tutorials/first-steps.md +264 -0
- nexus_cli-0.5.1/docs/tutorials/graph-viz.md +471 -0
- nexus_cli-0.5.1/docs/tutorials/tutorial-guide.md +1 -0
- nexus_cli-0.5.1/docs/tutorials/tutorial-quick-ref.md +1 -0
- nexus_cli-0.5.1/docs/tutorials/tutorial-system.md +394 -0
- nexus_cli-0.5.1/docs/tutorials/vault-setup.md +352 -0
- nexus_cli-0.5.1/docs/tutorials/zotero.md +394 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/mkdocs.yml +10 -5
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/__init__.py +1 -1
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/cli.py +245 -35
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/knowledge/vault.py +109 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/research/pdf.py +0 -1
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/utils/config.py +12 -5
- nexus_cli-0.5.1/nexus/utils/tutorial.py +638 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/writing/manuscript.py +200 -0
- nexus_cli-0.5.1/output.json +4 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/.claude-plugin/plugin.json +4 -1
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/pyproject.toml +1 -1
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_bibliography.py +0 -2
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_cli.py +0 -1
- nexus_cli-0.5.1/tests/test_cli_commands.py +174 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_cli_integration.py +10 -2
- nexus_cli-0.5.1/tests/test_cli_research_commands.py +388 -0
- nexus_cli-0.5.1/tests/test_cli_vault_commands.py +326 -0
- nexus_cli-0.5.1/tests/test_cli_writing_commands.py +247 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_config.py +1 -2
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_courses.py +0 -2
- nexus_cli-0.5.1/tests/test_dogfooding.py +1055 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_edge_cases.py +1 -4
- nexus_cli-0.5.1/tests/test_graph_export.py +249 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_manuscript.py +0 -2
- nexus_cli-0.5.1/tests/test_manuscript_batch.py +368 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_pdf.py +0 -2
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_pdf_extractor.py +2 -5
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_quarto.py +1 -1
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_quarto_manager.py +2 -5
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_search.py +1 -6
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_validation.py +5 -7
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_zotero_client.py +1 -5
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/uv.lock +1 -1
- nexus_cli-0.3.0/.STATUS +0 -169
- nexus_cli-0.3.0/.github/workflows/ci.yml +0 -125
- nexus_cli-0.3.0/CLAUDE.md +0 -199
- nexus_cli-0.3.0/docs/changelog.md +0 -107
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/.github/workflows/docs.yml +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/.github/workflows/publish.yml +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/.python-version +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/RELEASE_NOTES_v0.4.0.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/config/nexus.example.yaml +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/docs/getting-started/configuration.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/docs/getting-started/installation.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/install.sh +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/main.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/integrations/__init__.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/knowledge/__init__.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/knowledge/search.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/research/__init__.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/research/zotero.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/teaching/__init__.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/teaching/courses.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/teaching/quarto.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/utils/__init__.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/writing/__init__.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/nexus/writing/bibliography.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/README.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/commands/check.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/commands/cite.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/commands/dashboard.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/commands/manuscripts.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/commands/search.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/skills/integration-patterns/skill.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/skills/knowledge/vault-operations/skill.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/skills/research/zotero-integration/skill.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/skills/teaching/course-management/skill.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/plugin/skills/writing/manuscript-management/skill.md +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/__init__.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/conftest.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_vault.py +0 -0
- {nexus_cli-0.3.0 → nexus_cli-0.5.1}/tests/test_zotero.py +0 -0
nexus_cli-0.5.1/.STATUS
ADDED
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
status: released
|
|
2
|
+
priority: 1
|
|
3
|
+
progress: 100
|
|
4
|
+
next: v0.6.0 planning - additional exporters and interactive CLI
|
|
5
|
+
type: dev
|
|
6
|
+
checkpoint: v0.5.0 RELEASED - 302 tests passing (54% coverage), graph export & batch ops
|
|
7
|
+
release_date: 2025-12-25
|
|
8
|
+
release_url: https://github.com/Data-Wise/nexus-cli/releases/tag/v0.5.0
|
|
9
|
+
docs_url: https://data-wise.github.io/nexus-cli/
|
|
10
|
+
|
|
11
|
+
# ═══════════════════════════════════════════════════════════════════
|
|
12
|
+
# Nexus CLI - Knowledge Workflow for Research, Teaching, Writing
|
|
13
|
+
# ═══════════════════════════════════════════════════════════════════
|
|
14
|
+
|
|
15
|
+
🔧 Nexus CLI Development Status
|
|
16
|
+
────────────────────────────────────────
|
|
17
|
+
|
|
18
|
+
📍 LOCATION
|
|
19
|
+
~/projects/dev-tools/nexus-cli/
|
|
20
|
+
|
|
21
|
+
⏰ LAST UPDATED
|
|
22
|
+
2025-12-25 - v0.5.0 RELEASED - Graph Export & Batch Operations!
|
|
23
|
+
|
|
24
|
+
────────────────────────────────────────
|
|
25
|
+
|
|
26
|
+
🎉 RELEASE v0.5.0 - GRAPH EXPORT & BATCH OPERATIONS
|
|
27
|
+
|
|
28
|
+
**Feature enhancement release with productivity improvements!**
|
|
29
|
+
|
|
30
|
+
Release highlights:
|
|
31
|
+
- ✅ 302 tests passing (54% coverage, +9.8% from v0.4.0)
|
|
32
|
+
- ✅ Graph export formats (GraphML, D3.js, JSON)
|
|
33
|
+
- ✅ Batch manuscript operations (status, progress, archive)
|
|
34
|
+
- ✅ Comprehensive documentation (9,500+ lines added)
|
|
35
|
+
- ✅ Manuscript module: 78% coverage (+27% improvement)
|
|
36
|
+
- ✅ GitHub Pages updated
|
|
37
|
+
- ✅ GitHub Release published
|
|
38
|
+
- ✅ All CI/CD pipelines passing
|
|
39
|
+
|
|
40
|
+
────────────────────────────────────────
|
|
41
|
+
|
|
42
|
+
🎯 CURRENT STATUS
|
|
43
|
+
|
|
44
|
+
**v0.5.0 SHIPPED** ✅
|
|
45
|
+
|
|
46
|
+
All v0.5.0 features complete:
|
|
47
|
+
- ✅ Graph Export Formats (GraphML, D3.js)
|
|
48
|
+
- ✅ Batch Manuscript Operations
|
|
49
|
+
- ✅ Comprehensive Documentation (tutorials, API, architecture)
|
|
50
|
+
- ✅ Enhanced Test Coverage (54.35%, +4.47%)
|
|
51
|
+
- ✅ Manuscript Module: 78% coverage (+27%)
|
|
52
|
+
|
|
53
|
+
Release artifacts:
|
|
54
|
+
- Git tag: v0.5.0
|
|
55
|
+
- GitHub Release: https://github.com/Data-Wise/nexus-cli/releases/tag/v0.5.0
|
|
56
|
+
- Documentation: https://data-wise.github.io/nexus-cli/
|
|
57
|
+
- CI/CD: All passing ✅
|
|
58
|
+
|
|
59
|
+
────────────────────────────────────────
|
|
60
|
+
|
|
61
|
+
📊 PROGRESS
|
|
62
|
+
|
|
63
|
+
Core Infrastructure:
|
|
64
|
+
CLI Skeleton ████████████████████ 100% ✅
|
|
65
|
+
Configuration System ████████████████████ 100% ✅
|
|
66
|
+
Doctor Command ████████████████████ 100% ✅
|
|
67
|
+
Project Setup ████████████████████ 100% ✅
|
|
68
|
+
|
|
69
|
+
Domains:
|
|
70
|
+
Knowledge Domain ████████████████████ 100% ✅
|
|
71
|
+
Research Domain ████████████████████ 100% ✅
|
|
72
|
+
Teaching Domain ████████████████████ 100% ✅
|
|
73
|
+
Writing Domain ████████████████████ 100% ✅
|
|
74
|
+
Claude Plugin ████████████████████ 100% ✅
|
|
75
|
+
Testing & CI/CD ████████████████████ 100% ✅
|
|
76
|
+
Documentation ████████████████████ 100% ✅
|
|
77
|
+
|
|
78
|
+
**Overall Progress**: 100% ✅ (v0.4.0 Released)
|
|
79
|
+
|
|
80
|
+
────────────────────────────────────────
|
|
81
|
+
|
|
82
|
+
📦 RELEASE DETAILS
|
|
83
|
+
|
|
84
|
+
Version: 0.5.0
|
|
85
|
+
Date: December 25, 2025
|
|
86
|
+
Type: Feature Enhancement Release
|
|
87
|
+
Status: ✅ Released
|
|
88
|
+
|
|
89
|
+
Key improvements:
|
|
90
|
+
1. **Graph Export Formats**
|
|
91
|
+
- GraphML format (Gephi, Cytoscape, yEd)
|
|
92
|
+
- D3.js format (web visualizations)
|
|
93
|
+
- Enhanced JSON format with tags/limits
|
|
94
|
+
- Proper XML escaping for special characters
|
|
95
|
+
|
|
96
|
+
2. **Batch Manuscript Operations**
|
|
97
|
+
- Batch status updates for multiple manuscripts
|
|
98
|
+
- Batch progress updates
|
|
99
|
+
- Batch archiving to Archive/ directory
|
|
100
|
+
- Metadata export to JSON/CSV
|
|
101
|
+
|
|
102
|
+
3. **Comprehensive Documentation** (~9,500 lines)
|
|
103
|
+
- 4 tutorial pages: first-steps, vault-setup, zotero, graph-viz
|
|
104
|
+
- API reference with code examples
|
|
105
|
+
- MCP server documentation (17 tools)
|
|
106
|
+
- Testing guide (302 tests, 54% coverage)
|
|
107
|
+
- Architecture documentation
|
|
108
|
+
|
|
109
|
+
4. **Quality Improvements**
|
|
110
|
+
- 27 new tests (+9.8% increase)
|
|
111
|
+
- Coverage: 49.88% → 54.35% (+4.47%)
|
|
112
|
+
- Manuscript module: 50.99% → 78.03% (+27%)
|
|
113
|
+
- New test files: test_graph_export, test_manuscript_batch
|
|
114
|
+
|
|
115
|
+
────────────────────────────────────────
|
|
116
|
+
|
|
117
|
+
📊 TEST SUMMARY
|
|
118
|
+
|
|
119
|
+
302 tests total (301 passing, 1 skipped) - 54.35% coverage:
|
|
120
|
+
|
|
121
|
+
Core tests:
|
|
122
|
+
- test_config.py - Config loading (3 tests)
|
|
123
|
+
- test_vault.py - Vault operations (22 tests)
|
|
124
|
+
- test_manuscript.py - Manuscript management (11 tests)
|
|
125
|
+
- test_bibliography.py - Bibliography parsing (13 tests)
|
|
126
|
+
- test_courses.py - Course management (9 tests)
|
|
127
|
+
- test_cli.py - CLI commands (13 tests)
|
|
128
|
+
- test_zotero.py - Zotero item (5 tests)
|
|
129
|
+
- test_pdf.py - PDF document (3 tests)
|
|
130
|
+
- test_quarto.py - Quarto project (4 tests)
|
|
131
|
+
- test_search.py - Unified search (21 tests)
|
|
132
|
+
|
|
133
|
+
Integration & validation:
|
|
134
|
+
- test_validation.py - Data model validation (28 tests)
|
|
135
|
+
- test_cli_integration.py - CLI integration (19 tests)
|
|
136
|
+
- test_cli_commands.py - CLI commands (19 tests)
|
|
137
|
+
- test_edge_cases.py - Edge cases & errors (25 tests)
|
|
138
|
+
|
|
139
|
+
v0.4.0 comprehensive tests:
|
|
140
|
+
- test_quarto_manager.py - QuartoManager (29 tests) ⭐
|
|
141
|
+
- test_pdf_extractor.py - PDFExtractor (23 tests) ⭐
|
|
142
|
+
- test_zotero_client.py - ZoteroClient (28 tests) ⭐
|
|
143
|
+
|
|
144
|
+
v0.5.0 new tests:
|
|
145
|
+
- test_graph_export.py - Graph export formats (11 tests) ⭐
|
|
146
|
+
- test_manuscript_batch.py - Batch operations (16 tests) ⭐
|
|
147
|
+
|
|
148
|
+
Coverage by module (top performers):
|
|
149
|
+
- teaching/quarto.py: 91% (+4% in v0.5.0)
|
|
150
|
+
- utils/config.py: 80%
|
|
151
|
+
- writing/manuscript.py: 78% (+27% in v0.5.0) 🎯
|
|
152
|
+
- research/pdf.py: 77%
|
|
153
|
+
- research/zotero.py: 73%
|
|
154
|
+
- writing/bibliography.py: 72%
|
|
155
|
+
- teaching/courses.py: 70%
|
|
156
|
+
- knowledge/vault.py: 59% (+6% in v0.5.0)
|
|
157
|
+
- knowledge/search.py: 60%
|
|
158
|
+
|
|
159
|
+
Run: `pytest --cov=nexus --cov-report=html`
|
|
160
|
+
|
|
161
|
+
────────────────────────────────────────
|
|
162
|
+
|
|
163
|
+
🎯 NEXT STEPS (v0.6.0 Planning)
|
|
164
|
+
|
|
165
|
+
Feature enhancements:
|
|
166
|
+
- [ ] Additional graph export formats (GML, Cytoscape JSON)
|
|
167
|
+
- [ ] Batch operations for other domains (courses, bibliography)
|
|
168
|
+
- [ ] Interactive CLI mode with prompts
|
|
169
|
+
- [ ] Workflow automation commands
|
|
170
|
+
- [ ] Export to graph databases (Neo4j, ArangoDB)
|
|
171
|
+
|
|
172
|
+
Quality improvements:
|
|
173
|
+
- [ ] Increase test coverage to 60%+
|
|
174
|
+
- [ ] Performance benchmarks with pytest-benchmark
|
|
175
|
+
- [ ] Improve CLI test coverage (currently 20%)
|
|
176
|
+
- [ ] Additional integration tests
|
|
177
|
+
- [ ] User acceptance testing
|
|
178
|
+
|
|
179
|
+
Developer experience:
|
|
180
|
+
- [ ] Plugin system for custom exporters
|
|
181
|
+
- [ ] API client library
|
|
182
|
+
- [ ] Web UI for graph visualization
|
|
183
|
+
- [ ] Enhanced error messages
|
|
184
|
+
|
|
185
|
+
────────────────────────────────────────
|
|
186
|
+
|
|
187
|
+
🔗 RELATED PROJECTS
|
|
188
|
+
|
|
189
|
+
| Project | Location | Purpose |
|
|
190
|
+
|---------|----------|---------|
|
|
191
|
+
| Nexus MCP Server | ~/mcp-servers/nexus/ | MCP server with 17 tools |
|
|
192
|
+
| Nexus (docs) | ~/projects/dev-tools/nexus/ | Architecture & vault template |
|
|
193
|
+
| Statistical Research | ~/.claude/plugins/statistical-research/ | Research MCP plugin |
|
|
194
|
+
|
|
195
|
+
────────────────────────────────────────
|
|
196
|
+
|
|
197
|
+
💡 ARCHITECTURE
|
|
198
|
+
|
|
199
|
+
**Claude Integration (No API Needed)**
|
|
200
|
+
|
|
201
|
+
Four patterns:
|
|
202
|
+
1. **MCP Server**: 17 tools via Model Context Protocol
|
|
203
|
+
2. **Claude calls Nexus**: Claude runs `nexus` via Bash
|
|
204
|
+
3. **Piping**: `nexus search | claude -p "summarize"`
|
|
205
|
+
4. **Plugin skills**: Teach Claude how to use nexus
|
|
206
|
+
|
|
207
|
+
**Four Domains**:
|
|
208
|
+
- 🔬 Research: Zotero (2,728 papers), PDFs (~1,800 files), literature
|
|
209
|
+
- 📚 Teaching: Courses, materials, Quarto integration
|
|
210
|
+
- ✍️ Writing: Manuscripts, bibliography, LaTeX
|
|
211
|
+
- 🧠 Knowledge: Vault (Obsidian), unified search, graph viz
|
|
212
|
+
|
|
213
|
+
────────────────────────────────────────
|
|
214
|
+
|
|
215
|
+
📁 KEY FILES
|
|
216
|
+
|
|
217
|
+
Core:
|
|
218
|
+
- nexus/cli.py - Main CLI (Typer) - 1109 lines
|
|
219
|
+
- nexus/utils/config.py - Configuration - 82 lines
|
|
220
|
+
- pyproject.toml - Project metadata (v0.5.0)
|
|
221
|
+
- mkdocs.yml - Documentation config
|
|
222
|
+
- README.md - User documentation
|
|
223
|
+
- CLAUDE.md - Claude Code guidance
|
|
224
|
+
|
|
225
|
+
Domains:
|
|
226
|
+
- nexus/knowledge/vault.py - VaultManager - 319 lines (59% cov) ⭐ +39 lines
|
|
227
|
+
- nexus/knowledge/search.py - UnifiedSearch - 100 lines (60% cov)
|
|
228
|
+
- nexus/research/zotero.py - ZoteroClient - 193 lines (73% cov)
|
|
229
|
+
- nexus/research/pdf.py - PDFExtractor - 205 lines (77% cov)
|
|
230
|
+
- nexus/teaching/courses.py - CourseManager - 214 lines (70% cov)
|
|
231
|
+
- nexus/teaching/quarto.py - QuartoManager - 162 lines (91% cov)
|
|
232
|
+
- nexus/writing/manuscript.py - ManuscriptManager - 355 lines (78% cov) ⭐ +116 lines
|
|
233
|
+
- nexus/writing/bibliography.py - BibliographyManager - 176 lines (72% cov)
|
|
234
|
+
|
|
235
|
+
Testing:
|
|
236
|
+
- tests/ - 18 test modules, 302 tests
|
|
237
|
+
- .github/workflows/ci.yml - CI/CD pipeline
|
|
238
|
+
- .github/workflows/docs.yml - Documentation deployment
|
|
239
|
+
|
|
240
|
+
Documentation:
|
|
241
|
+
- docs/ - MkDocs source files
|
|
242
|
+
- site/ - Built documentation (gh-pages)
|
|
243
|
+
|
|
244
|
+
────────────────────────────────────────
|
|
245
|
+
|
|
246
|
+
🔧 QUICK COMMANDS
|
|
247
|
+
|
|
248
|
+
Development:
|
|
249
|
+
```bash
|
|
250
|
+
# Run tests
|
|
251
|
+
pytest --cov=nexus --cov-report=html
|
|
252
|
+
|
|
253
|
+
# Type check
|
|
254
|
+
mypy nexus/
|
|
255
|
+
|
|
256
|
+
# Lint
|
|
257
|
+
ruff check nexus/ tests/
|
|
258
|
+
|
|
259
|
+
# Format
|
|
260
|
+
ruff format nexus/ tests/
|
|
261
|
+
|
|
262
|
+
# Serve docs locally
|
|
263
|
+
mkdocs serve
|
|
264
|
+
|
|
265
|
+
# Deploy docs
|
|
266
|
+
mkdocs gh-deploy
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Usage:
|
|
270
|
+
```bash
|
|
271
|
+
# Doctor check
|
|
272
|
+
nexus doctor
|
|
273
|
+
|
|
274
|
+
# Search knowledge
|
|
275
|
+
nexus knowledge search "mediation"
|
|
276
|
+
|
|
277
|
+
# Search Zotero
|
|
278
|
+
nexus research zotero search "causal inference"
|
|
279
|
+
|
|
280
|
+
# Check bibliography
|
|
281
|
+
nexus write bib check manuscript/
|
|
282
|
+
|
|
283
|
+
# Graph visualization
|
|
284
|
+
nexus knowledge vault graph --json > graph.json
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
────────────────────────────────────────
|
|
288
|
+
|
|
289
|
+
📚 DOCUMENTATION
|
|
290
|
+
|
|
291
|
+
- **Home**: https://data-wise.github.io/nexus-cli/
|
|
292
|
+
- **Installation**: https://data-wise.github.io/nexus-cli/getting-started/installation/
|
|
293
|
+
- **Quick Start**: https://data-wise.github.io/nexus-cli/getting-started/quickstart/
|
|
294
|
+
- **Configuration**: https://data-wise.github.io/nexus-cli/getting-started/configuration/
|
|
295
|
+
- **Tutorials**: https://data-wise.github.io/nexus-cli/tutorials/ ⭐ NEW
|
|
296
|
+
- **API Reference**: https://data-wise.github.io/nexus-cli/reference/api/ ⭐ NEW
|
|
297
|
+
- **Changelog**: https://data-wise.github.io/nexus-cli/changelog/
|
|
298
|
+
- **GitHub**: https://github.com/Data-Wise/nexus-cli
|
|
299
|
+
- **Release**: https://github.com/Data-Wise/nexus-cli/releases/tag/v0.5.0
|
|
300
|
+
|
|
301
|
+
────────────────────────────────────────
|
|
302
|
+
|
|
303
|
+
✅ v0.5.0 FEATURE RELEASE - RELEASED 2025-12-25
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main, develop ]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
test:
|
|
12
|
+
name: Test Python ${{ matrix.python-version }} on ${{ matrix.os }}
|
|
13
|
+
runs-on: ${{ matrix.os }}
|
|
14
|
+
strategy:
|
|
15
|
+
fail-fast: false
|
|
16
|
+
matrix:
|
|
17
|
+
os: [ubuntu-latest, macos-latest]
|
|
18
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
19
|
+
|
|
20
|
+
steps:
|
|
21
|
+
- name: Checkout code
|
|
22
|
+
uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
25
|
+
uses: actions/setup-python@v5
|
|
26
|
+
with:
|
|
27
|
+
python-version: ${{ matrix.python-version }}
|
|
28
|
+
|
|
29
|
+
- name: Install uv
|
|
30
|
+
uses: astral-sh/setup-uv@v4
|
|
31
|
+
with:
|
|
32
|
+
enable-cache: true
|
|
33
|
+
|
|
34
|
+
- name: Install dependencies
|
|
35
|
+
run: |
|
|
36
|
+
uv sync --all-extras
|
|
37
|
+
|
|
38
|
+
- name: Run linting
|
|
39
|
+
run: |
|
|
40
|
+
uv run ruff check nexus/
|
|
41
|
+
continue-on-error: true
|
|
42
|
+
|
|
43
|
+
- name: Run type checking
|
|
44
|
+
run: |
|
|
45
|
+
uv run mypy nexus/ --ignore-missing-imports
|
|
46
|
+
continue-on-error: true
|
|
47
|
+
|
|
48
|
+
- name: Run tests with coverage
|
|
49
|
+
run: |
|
|
50
|
+
uv run pytest --cov=nexus --cov-report=xml --cov-report=term -v
|
|
51
|
+
|
|
52
|
+
- name: Upload coverage to Codecov
|
|
53
|
+
uses: codecov/codecov-action@v4
|
|
54
|
+
if: matrix.os == 'ubuntu-latest' && matrix.python-version == '3.13'
|
|
55
|
+
with:
|
|
56
|
+
file: ./coverage.xml
|
|
57
|
+
flags: unittests
|
|
58
|
+
name: codecov-umbrella
|
|
59
|
+
fail_ci_if_error: false
|
|
60
|
+
env:
|
|
61
|
+
CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }}
|
|
62
|
+
|
|
63
|
+
lint:
|
|
64
|
+
name: Code Quality
|
|
65
|
+
runs-on: ubuntu-latest
|
|
66
|
+
steps:
|
|
67
|
+
- uses: actions/checkout@v4
|
|
68
|
+
|
|
69
|
+
- name: Set up Python
|
|
70
|
+
uses: actions/setup-python@v5
|
|
71
|
+
with:
|
|
72
|
+
python-version: "3.13"
|
|
73
|
+
|
|
74
|
+
- name: Install uv
|
|
75
|
+
uses: astral-sh/setup-uv@v4
|
|
76
|
+
with:
|
|
77
|
+
enable-cache: true
|
|
78
|
+
|
|
79
|
+
- name: Install dependencies
|
|
80
|
+
run: uv sync --all-extras
|
|
81
|
+
|
|
82
|
+
- name: Check code formatting with ruff
|
|
83
|
+
run: |
|
|
84
|
+
uv run ruff format --check nexus/ tests/
|
|
85
|
+
|
|
86
|
+
- name: Lint with ruff
|
|
87
|
+
run: |
|
|
88
|
+
uv run ruff check nexus/ tests/
|
|
89
|
+
|
|
90
|
+
type-check:
|
|
91
|
+
name: Type Checking
|
|
92
|
+
runs-on: ubuntu-latest
|
|
93
|
+
steps:
|
|
94
|
+
- uses: actions/checkout@v4
|
|
95
|
+
|
|
96
|
+
- name: Set up Python
|
|
97
|
+
uses: actions/setup-python@v5
|
|
98
|
+
with:
|
|
99
|
+
python-version: "3.13"
|
|
100
|
+
|
|
101
|
+
- name: Install uv
|
|
102
|
+
uses: astral-sh/setup-uv@v4
|
|
103
|
+
with:
|
|
104
|
+
enable-cache: true
|
|
105
|
+
|
|
106
|
+
- name: Install dependencies
|
|
107
|
+
run: uv sync --all-extras
|
|
108
|
+
|
|
109
|
+
- name: Run mypy
|
|
110
|
+
run: |
|
|
111
|
+
uv run mypy nexus/ --ignore-missing-imports --no-error-summary
|
|
112
|
+
|
|
113
|
+
coverage:
|
|
114
|
+
name: Coverage Report
|
|
115
|
+
runs-on: ubuntu-latest
|
|
116
|
+
needs: test
|
|
117
|
+
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
118
|
+
steps:
|
|
119
|
+
- uses: actions/checkout@v4
|
|
120
|
+
|
|
121
|
+
- name: Set up Python
|
|
122
|
+
uses: actions/setup-python@v5
|
|
123
|
+
with:
|
|
124
|
+
python-version: "3.13"
|
|
125
|
+
|
|
126
|
+
- name: Install uv
|
|
127
|
+
uses: astral-sh/setup-uv@v4
|
|
128
|
+
with:
|
|
129
|
+
enable-cache: true
|
|
130
|
+
|
|
131
|
+
- name: Install dependencies
|
|
132
|
+
run: uv sync --all-extras
|
|
133
|
+
|
|
134
|
+
- name: Generate coverage report
|
|
135
|
+
run: |
|
|
136
|
+
uv run pytest --cov=nexus --cov-report=html --cov-report=term
|
|
137
|
+
|
|
138
|
+
- name: Upload coverage HTML report
|
|
139
|
+
uses: actions/upload-artifact@v4
|
|
140
|
+
with:
|
|
141
|
+
name: coverage-report
|
|
142
|
+
path: htmlcov/
|
|
143
|
+
retention-days: 30
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
name: Code Quality
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main, develop ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ main ]
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
jobs:
|
|
11
|
+
lint:
|
|
12
|
+
name: Linting
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
|
|
18
|
+
- name: Set up Python
|
|
19
|
+
uses: actions/setup-python@v5
|
|
20
|
+
with:
|
|
21
|
+
python-version: "3.13"
|
|
22
|
+
|
|
23
|
+
- name: Install uv
|
|
24
|
+
uses: astral-sh/setup-uv@v4
|
|
25
|
+
|
|
26
|
+
- name: Install dependencies
|
|
27
|
+
run: uv sync --all-extras --dev
|
|
28
|
+
|
|
29
|
+
- name: Run ruff check
|
|
30
|
+
run: |
|
|
31
|
+
uv run ruff check nexus/ tests/ --output-format=github
|
|
32
|
+
|
|
33
|
+
- name: Run ruff format check
|
|
34
|
+
run: |
|
|
35
|
+
uv run ruff format --check nexus/ tests/
|
|
36
|
+
|
|
37
|
+
type-check:
|
|
38
|
+
name: Type Checking
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
|
|
41
|
+
steps:
|
|
42
|
+
- uses: actions/checkout@v4
|
|
43
|
+
|
|
44
|
+
- name: Set up Python
|
|
45
|
+
uses: actions/setup-python@v5
|
|
46
|
+
with:
|
|
47
|
+
python-version: "3.13"
|
|
48
|
+
|
|
49
|
+
- name: Install uv
|
|
50
|
+
uses: astral-sh/setup-uv@v4
|
|
51
|
+
|
|
52
|
+
- name: Install dependencies
|
|
53
|
+
run: uv sync --all-extras --dev
|
|
54
|
+
|
|
55
|
+
- name: Run mypy
|
|
56
|
+
run: |
|
|
57
|
+
uv run mypy nexus/ --ignore-missing-imports --show-error-codes
|
|
58
|
+
continue-on-error: true
|
|
59
|
+
|
|
60
|
+
security:
|
|
61
|
+
name: Security Scan
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
|
|
64
|
+
steps:
|
|
65
|
+
- uses: actions/checkout@v4
|
|
66
|
+
|
|
67
|
+
- name: Set up Python
|
|
68
|
+
uses: actions/setup-python@v5
|
|
69
|
+
with:
|
|
70
|
+
python-version: "3.13"
|
|
71
|
+
|
|
72
|
+
- name: Install uv
|
|
73
|
+
uses: astral-sh/setup-uv@v4
|
|
74
|
+
|
|
75
|
+
- name: Install dependencies
|
|
76
|
+
run: uv sync --all-extras --dev
|
|
77
|
+
|
|
78
|
+
- name: Run bandit security scan
|
|
79
|
+
run: |
|
|
80
|
+
uv run bandit -r nexus/ -f json -o bandit-report.json
|
|
81
|
+
continue-on-error: true
|
|
82
|
+
|
|
83
|
+
- name: Upload security report
|
|
84
|
+
uses: actions/upload-artifact@v4
|
|
85
|
+
if: always()
|
|
86
|
+
with:
|
|
87
|
+
name: security-scan-report
|
|
88
|
+
path: bandit-report.json
|
|
89
|
+
retention-days: 30
|
|
90
|
+
|
|
91
|
+
dependency-check:
|
|
92
|
+
name: Dependency Security
|
|
93
|
+
runs-on: ubuntu-latest
|
|
94
|
+
|
|
95
|
+
steps:
|
|
96
|
+
- uses: actions/checkout@v4
|
|
97
|
+
|
|
98
|
+
- name: Set up Python
|
|
99
|
+
uses: actions/setup-python@v5
|
|
100
|
+
with:
|
|
101
|
+
python-version: "3.13"
|
|
102
|
+
|
|
103
|
+
- name: Install uv
|
|
104
|
+
uses: astral-sh/setup-uv@v4
|
|
105
|
+
|
|
106
|
+
- name: Check for vulnerabilities
|
|
107
|
+
run: |
|
|
108
|
+
uv pip list --format=json > deps.json
|
|
109
|
+
echo "Dependency check complete"
|
|
110
|
+
continue-on-error: true
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- 'v*'
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
id-token: write
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
steps:
|
|
16
|
+
- uses: actions/checkout@v4
|
|
17
|
+
with:
|
|
18
|
+
fetch-depth: 0
|
|
19
|
+
|
|
20
|
+
- name: Set up Python
|
|
21
|
+
uses: actions/setup-python@v5
|
|
22
|
+
with:
|
|
23
|
+
python-version: "3.12"
|
|
24
|
+
|
|
25
|
+
- name: Install build dependencies
|
|
26
|
+
run: pip install build
|
|
27
|
+
|
|
28
|
+
- name: Build package
|
|
29
|
+
run: python -m build
|
|
30
|
+
|
|
31
|
+
- name: Upload artifacts
|
|
32
|
+
uses: actions/upload-artifact@v4
|
|
33
|
+
with:
|
|
34
|
+
name: dist
|
|
35
|
+
path: dist/
|
|
36
|
+
|
|
37
|
+
release:
|
|
38
|
+
needs: build
|
|
39
|
+
runs-on: ubuntu-latest
|
|
40
|
+
steps:
|
|
41
|
+
- uses: actions/checkout@v4
|
|
42
|
+
with:
|
|
43
|
+
fetch-depth: 0
|
|
44
|
+
|
|
45
|
+
- name: Download artifacts
|
|
46
|
+
uses: actions/download-artifact@v4
|
|
47
|
+
with:
|
|
48
|
+
name: dist
|
|
49
|
+
path: dist/
|
|
50
|
+
|
|
51
|
+
- name: Get version from tag
|
|
52
|
+
id: get_version
|
|
53
|
+
run: echo "VERSION=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
|
|
54
|
+
|
|
55
|
+
- name: Generate changelog
|
|
56
|
+
id: changelog
|
|
57
|
+
run: |
|
|
58
|
+
# Get commits since last tag
|
|
59
|
+
LAST_TAG=$(git describe --tags --abbrev=0 HEAD^ 2>/dev/null || echo "")
|
|
60
|
+
if [ -z "$LAST_TAG" ]; then
|
|
61
|
+
COMMITS=$(git log --oneline --pretty=format:"- %s" | head -20)
|
|
62
|
+
else
|
|
63
|
+
COMMITS=$(git log --oneline --pretty=format:"- %s" ${LAST_TAG}..HEAD)
|
|
64
|
+
fi
|
|
65
|
+
|
|
66
|
+
# Create changelog
|
|
67
|
+
echo "CHANGELOG<<EOF" >> $GITHUB_OUTPUT
|
|
68
|
+
echo "## What's Changed" >> $GITHUB_OUTPUT
|
|
69
|
+
echo "" >> $GITHUB_OUTPUT
|
|
70
|
+
echo "$COMMITS" >> $GITHUB_OUTPUT
|
|
71
|
+
echo "" >> $GITHUB_OUTPUT
|
|
72
|
+
echo "**Full Changelog**: https://github.com/${{ github.repository }}/compare/${LAST_TAG}...v${{ steps.get_version.outputs.VERSION }}" >> $GITHUB_OUTPUT
|
|
73
|
+
echo "EOF" >> $GITHUB_OUTPUT
|
|
74
|
+
|
|
75
|
+
- name: Create GitHub Release
|
|
76
|
+
uses: softprops/action-gh-release@v1
|
|
77
|
+
with:
|
|
78
|
+
name: v${{ steps.get_version.outputs.VERSION }}
|
|
79
|
+
body: ${{ steps.changelog.outputs.CHANGELOG }}
|
|
80
|
+
files: dist/*
|
|
81
|
+
draft: false
|
|
82
|
+
prerelease: ${{ contains(github.ref, 'alpha') || contains(github.ref, 'beta') || contains(github.ref, 'rc') }}
|
|
83
|
+
env:
|
|
84
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
85
|
+
|
|
86
|
+
publish-pypi:
|
|
87
|
+
needs: release
|
|
88
|
+
runs-on: ubuntu-latest
|
|
89
|
+
environment: pypi
|
|
90
|
+
permissions:
|
|
91
|
+
id-token: write
|
|
92
|
+
steps:
|
|
93
|
+
- name: Download artifacts
|
|
94
|
+
uses: actions/download-artifact@v4
|
|
95
|
+
with:
|
|
96
|
+
name: dist
|
|
97
|
+
path: dist/
|
|
98
|
+
|
|
99
|
+
- name: Publish to PyPI
|
|
100
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
101
|
+
|
|
102
|
+
docs:
|
|
103
|
+
needs: release
|
|
104
|
+
runs-on: ubuntu-latest
|
|
105
|
+
permissions:
|
|
106
|
+
contents: write
|
|
107
|
+
steps:
|
|
108
|
+
- uses: actions/checkout@v4
|
|
109
|
+
with:
|
|
110
|
+
fetch-depth: 0
|
|
111
|
+
|
|
112
|
+
- name: Set up Python
|
|
113
|
+
uses: actions/setup-python@v5
|
|
114
|
+
with:
|
|
115
|
+
python-version: "3.12"
|
|
116
|
+
|
|
117
|
+
- name: Install dependencies
|
|
118
|
+
run: |
|
|
119
|
+
pip install mkdocs-material mkdocstrings[python] mkdocs-git-revision-date-localized-plugin
|
|
120
|
+
|
|
121
|
+
- name: Build and deploy docs
|
|
122
|
+
run: |
|
|
123
|
+
git config user.name "github-actions[bot]"
|
|
124
|
+
git config user.email "github-actions[bot]@users.noreply.github.com"
|
|
125
|
+
mkdocs gh-deploy --force
|