@ncukondo/reference-manager 0.3.0 → 0.4.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 +267 -109
- package/dist/chunks/file-watcher-B-SiUw5f.js +1557 -0
- package/dist/chunks/file-watcher-B-SiUw5f.js.map +1 -0
- package/dist/chunks/{search-Be9vzUIH.js → index-DLIGxQaB.js} +399 -89
- package/dist/chunks/index-DLIGxQaB.js.map +1 -0
- package/dist/chunks/loader-DuzyKV70.js +394 -0
- package/dist/chunks/loader-DuzyKV70.js.map +1 -0
- package/dist/cli/commands/add.d.ts +3 -3
- package/dist/cli/commands/add.d.ts.map +1 -1
- package/dist/cli/commands/cite.d.ts +3 -3
- package/dist/cli/commands/cite.d.ts.map +1 -1
- package/dist/cli/commands/fulltext.d.ts +5 -34
- package/dist/cli/commands/fulltext.d.ts.map +1 -1
- package/dist/cli/commands/list.d.ts +3 -3
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/mcp.d.ts +16 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/remove.d.ts +3 -3
- package/dist/cli/commands/remove.d.ts.map +1 -1
- package/dist/cli/commands/search.d.ts +3 -3
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/server.d.ts +2 -0
- package/dist/cli/commands/server.d.ts.map +1 -1
- package/dist/cli/commands/update.d.ts +3 -3
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/execution-context.d.ts +23 -36
- package/dist/cli/execution-context.d.ts.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/server-client.d.ts +24 -40
- package/dist/cli/server-client.d.ts.map +1 -1
- package/dist/cli/server-detection.d.ts +1 -0
- package/dist/cli/server-detection.d.ts.map +1 -1
- package/dist/cli.js +21060 -317
- package/dist/cli.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/schema.d.ts +2 -3
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/core/csl-json/types.d.ts +3 -0
- package/dist/core/csl-json/types.d.ts.map +1 -1
- package/dist/core/library-interface.d.ts +100 -0
- package/dist/core/library-interface.d.ts.map +1 -0
- package/dist/core/library.d.ts +29 -46
- package/dist/core/library.d.ts.map +1 -1
- package/dist/features/operations/add.d.ts +2 -2
- package/dist/features/operations/add.d.ts.map +1 -1
- package/dist/features/operations/cite.d.ts +2 -2
- package/dist/features/operations/cite.d.ts.map +1 -1
- package/dist/features/operations/fulltext/attach.d.ts +47 -0
- package/dist/features/operations/fulltext/attach.d.ts.map +1 -0
- package/dist/features/operations/fulltext/detach.d.ts +38 -0
- package/dist/features/operations/fulltext/detach.d.ts.map +1 -0
- package/dist/features/operations/fulltext/get.d.ts +41 -0
- package/dist/features/operations/fulltext/get.d.ts.map +1 -0
- package/dist/features/operations/fulltext/index.d.ts +9 -0
- package/dist/features/operations/fulltext/index.d.ts.map +1 -0
- package/dist/features/operations/index.d.ts +15 -0
- package/dist/features/operations/index.d.ts.map +1 -0
- package/dist/features/operations/library-operations.d.ts +64 -0
- package/dist/features/operations/library-operations.d.ts.map +1 -0
- package/dist/features/operations/list.d.ts +2 -2
- package/dist/features/operations/list.d.ts.map +1 -1
- package/dist/features/operations/operations-library.d.ts +36 -0
- package/dist/features/operations/operations-library.d.ts.map +1 -0
- package/dist/features/operations/remove.d.ts +4 -4
- package/dist/features/operations/remove.d.ts.map +1 -1
- package/dist/features/operations/search.d.ts +2 -2
- package/dist/features/operations/search.d.ts.map +1 -1
- package/dist/features/operations/update.d.ts +2 -2
- package/dist/features/operations/update.d.ts.map +1 -1
- package/dist/features/search/matcher.d.ts.map +1 -1
- package/dist/features/search/normalizer.d.ts +12 -0
- package/dist/features/search/normalizer.d.ts.map +1 -1
- package/dist/features/search/tokenizer.d.ts.map +1 -1
- package/dist/features/search/types.d.ts +1 -1
- package/dist/features/search/types.d.ts.map +1 -1
- package/dist/features/search/uppercase.d.ts +41 -0
- package/dist/features/search/uppercase.d.ts.map +1 -0
- package/dist/index.js +24 -192
- package/dist/index.js.map +1 -1
- package/dist/mcp/context.d.ts +19 -0
- package/dist/mcp/context.d.ts.map +1 -0
- package/dist/mcp/index.d.ts +20 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/resources/index.d.ts +10 -0
- package/dist/mcp/resources/index.d.ts.map +1 -0
- package/dist/mcp/resources/library.d.ts +26 -0
- package/dist/mcp/resources/library.d.ts.map +1 -0
- package/dist/mcp/tools/add.d.ts +17 -0
- package/dist/mcp/tools/add.d.ts.map +1 -0
- package/dist/mcp/tools/cite.d.ts +15 -0
- package/dist/mcp/tools/cite.d.ts.map +1 -0
- package/dist/mcp/tools/fulltext.d.ts +51 -0
- package/dist/mcp/tools/fulltext.d.ts.map +1 -0
- package/dist/mcp/tools/index.d.ts +12 -0
- package/dist/mcp/tools/index.d.ts.map +1 -0
- package/dist/mcp/tools/list.d.ts +13 -0
- package/dist/mcp/tools/list.d.ts.map +1 -0
- package/dist/mcp/tools/remove.d.ts +19 -0
- package/dist/mcp/tools/remove.d.ts.map +1 -0
- package/dist/mcp/tools/search.d.ts +13 -0
- package/dist/mcp/tools/search.d.ts.map +1 -0
- package/dist/server/index.d.ts +23 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/routes/references.d.ts.map +1 -1
- package/dist/server.js +5 -271
- package/dist/server.js.map +1 -1
- package/package.json +2 -1
- package/dist/chunks/detector-DHztTaFY.js +0 -619
- package/dist/chunks/detector-DHztTaFY.js.map +0 -1
- package/dist/chunks/loader-mQ25o6cV.js +0 -1054
- package/dist/chunks/loader-mQ25o6cV.js.map +0 -1
- package/dist/chunks/search-Be9vzUIH.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,18 +1,72 @@
|
|
|
1
1
|
# reference-manager
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
> Automate your literature workflow — from systematic reviews to manuscript writing
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
[](https://www.npmjs.com/package/@ncukondo/reference-manager)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[]()
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
- **
|
|
14
|
-
- **
|
|
15
|
-
- **
|
|
9
|
+
A command-line reference management tool designed for automation. Integrates with AI agents (Claude Code, Claude Desktop) via MCP and works seamlessly with shell scripts and Pandoc.
|
|
10
|
+
|
|
11
|
+
## Why reference-manager?
|
|
12
|
+
|
|
13
|
+
Traditional reference managers (Zotero, Mendeley, EndNote) are designed for manual, GUI-based workflows. **reference-manager** takes a different approach:
|
|
14
|
+
|
|
15
|
+
- **Automation-first**: Every operation is available via CLI and MCP — no GUI required
|
|
16
|
+
- **AI-native**: Direct integration with Claude and other AI agents through the Model Context Protocol
|
|
17
|
+
- **Single source of truth**: CSL-JSON format ensures compatibility and transparency
|
|
18
|
+
- **Pandoc-ready**: Generate citations in any style, ready for academic writing
|
|
19
|
+
|
|
20
|
+
## Use Cases
|
|
21
|
+
|
|
22
|
+
### Systematic Review / Scoping Review
|
|
23
|
+
|
|
24
|
+
Automate the tedious parts of literature reviews:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
# Import references from multiple sources
|
|
28
|
+
ref add pmid:12345678 pmid:23456789
|
|
29
|
+
ref add "10.1234/example.doi"
|
|
30
|
+
ref add exported-from-pubmed.nbib
|
|
31
|
+
|
|
32
|
+
# AI-assisted screening (with Claude Code)
|
|
33
|
+
# "Review the abstracts in my library and flag potentially relevant papers for my review on AI in medical education"
|
|
34
|
+
|
|
35
|
+
# Export for analysis
|
|
36
|
+
ref list --format json > references.json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
### Manuscript Writing
|
|
40
|
+
|
|
41
|
+
Streamline your writing workflow:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
# Generate citations
|
|
45
|
+
ref cite smith2024 jones2023 --style apa
|
|
46
|
+
# Output: (Smith, 2024; Jones, 2023)
|
|
47
|
+
|
|
48
|
+
# Attach and manage full-text PDFs
|
|
49
|
+
ref fulltext attach smith2024 ~/papers/smith2024.pdf
|
|
50
|
+
|
|
51
|
+
# Export for Pandoc
|
|
52
|
+
ref list --format json > references.json
|
|
53
|
+
pandoc manuscript.md --bibliography references.json -o manuscript.docx
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### AI-Assisted Research
|
|
57
|
+
|
|
58
|
+
Let Claude help manage your references:
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
You: "Find all papers by Smith published after 2020"
|
|
62
|
+
Claude: [uses search tool] Found 3 references...
|
|
63
|
+
|
|
64
|
+
You: "Generate an APA citation for the machine learning paper"
|
|
65
|
+
Claude: [uses cite tool] Smith, J. (2024). Machine learning applications...
|
|
66
|
+
|
|
67
|
+
You: "Add this paper: 10.1234/example"
|
|
68
|
+
Claude: [uses add tool] Added reference: example2024
|
|
69
|
+
```
|
|
16
70
|
|
|
17
71
|
## Installation
|
|
18
72
|
|
|
@@ -20,10 +74,10 @@ A local reference management tool using CSL-JSON as the single source of truth.
|
|
|
20
74
|
|
|
21
75
|
- Node.js 22 or later
|
|
22
76
|
|
|
23
|
-
### From npm
|
|
77
|
+
### From npm
|
|
24
78
|
|
|
25
79
|
```bash
|
|
26
|
-
npm install -g reference-manager
|
|
80
|
+
npm install -g @ncukondo/reference-manager
|
|
27
81
|
```
|
|
28
82
|
|
|
29
83
|
### From source
|
|
@@ -36,92 +90,182 @@ npm run build
|
|
|
36
90
|
npm link
|
|
37
91
|
```
|
|
38
92
|
|
|
39
|
-
##
|
|
40
|
-
|
|
41
|
-
The command `ref` is available after installation (alias: `reference-manager`).
|
|
42
|
-
|
|
43
|
-
### Basic Commands
|
|
93
|
+
## Quick Start
|
|
44
94
|
|
|
45
95
|
```bash
|
|
46
|
-
#
|
|
96
|
+
# Initialize (creates default config and empty library)
|
|
47
97
|
ref list
|
|
48
98
|
|
|
49
|
-
#
|
|
99
|
+
# Add a reference by DOI
|
|
100
|
+
ref add "10.1038/nature12373"
|
|
101
|
+
|
|
102
|
+
# Add from PubMed
|
|
103
|
+
ref add pmid:25056061
|
|
104
|
+
|
|
105
|
+
# Search your library
|
|
50
106
|
ref search "author:smith machine learning"
|
|
51
107
|
|
|
52
|
-
#
|
|
53
|
-
ref
|
|
108
|
+
# Generate a citation
|
|
109
|
+
ref cite smith2024 --style apa
|
|
54
110
|
|
|
55
|
-
#
|
|
56
|
-
|
|
111
|
+
# List all references
|
|
112
|
+
ref list
|
|
113
|
+
```
|
|
57
114
|
|
|
58
|
-
|
|
59
|
-
ref update smith-2020 updates.json
|
|
115
|
+
## AI Integration (MCP)
|
|
60
116
|
|
|
61
|
-
|
|
62
|
-
ref remove smith-2020
|
|
117
|
+
reference-manager provides an MCP (Model Context Protocol) server for direct integration with AI agents.
|
|
63
118
|
|
|
64
|
-
|
|
65
|
-
ref server start
|
|
66
|
-
ref server status
|
|
67
|
-
ref server stop
|
|
68
|
-
```
|
|
119
|
+
### Claude Code Setup
|
|
69
120
|
|
|
70
|
-
|
|
121
|
+
Add reference-manager as an MCP server (no global installation required):
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
claude mcp add reference-manager -- npx -y @ncukondo/reference-manager mcp
|
|
125
|
+
```
|
|
71
126
|
|
|
72
|
-
|
|
127
|
+
Or with a custom library path:
|
|
73
128
|
|
|
74
129
|
```bash
|
|
75
|
-
|
|
76
|
-
|
|
130
|
+
claude mcp add reference-manager -- npx -y @ncukondo/reference-manager mcp --library ~/my-references.json
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### Claude Desktop Setup
|
|
77
134
|
|
|
78
|
-
|
|
79
|
-
ref fulltext attach smith-2020 ~/notes/smith-2020.md
|
|
135
|
+
Add to your Claude Desktop configuration file:
|
|
80
136
|
|
|
81
|
-
|
|
82
|
-
|
|
137
|
+
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
138
|
+
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
|
|
83
139
|
|
|
84
|
-
|
|
85
|
-
|
|
140
|
+
```json
|
|
141
|
+
{
|
|
142
|
+
"mcpServers": {
|
|
143
|
+
"reference-manager": {
|
|
144
|
+
"command": "npx",
|
|
145
|
+
"args": ["-y", "@ncukondo/reference-manager", "mcp"]
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
86
150
|
|
|
87
|
-
|
|
88
|
-
|
|
151
|
+
With a custom library:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"mcpServers": {
|
|
156
|
+
"reference-manager": {
|
|
157
|
+
"command": "npx",
|
|
158
|
+
"args": ["-y", "@ncukondo/reference-manager", "mcp", "--library", "/path/to/library.json"]
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
```
|
|
89
163
|
|
|
90
|
-
|
|
91
|
-
ref fulltext get smith-2020 --pdf
|
|
164
|
+
### Available Tools
|
|
92
165
|
|
|
93
|
-
|
|
94
|
-
|
|
166
|
+
| Tool | Description | Parameters |
|
|
167
|
+
|------|-------------|------------|
|
|
168
|
+
| `search` | Search references by query | `query`: Search string (e.g., `"author:smith 2024"`) |
|
|
169
|
+
| `list` | List all references | `format?`: `"json"` \| `"bibtex"` \| `"pretty"` |
|
|
170
|
+
| `add` | Add new reference(s) | `input`: DOI, PMID, BibTeX, RIS, or CSL-JSON |
|
|
171
|
+
| `remove` | Remove a reference | `id`: Reference ID, `force`: must be `true` |
|
|
172
|
+
| `cite` | Generate formatted citation | `ids`: Array of reference IDs, `style?`: Citation style, `format?`: `"text"` \| `"html"` |
|
|
173
|
+
| `fulltext_attach` | Attach PDF/Markdown to reference | `id`: Reference ID, `path`: File path |
|
|
174
|
+
| `fulltext_get` | Get full-text content | `id`: Reference ID |
|
|
175
|
+
| `fulltext_detach` | Detach full-text from reference | `id`: Reference ID |
|
|
95
176
|
|
|
96
|
-
|
|
97
|
-
ref fulltext detach smith-2020 --pdf
|
|
177
|
+
### Available Resources
|
|
98
178
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
179
|
+
| URI | Description |
|
|
180
|
+
|-----|-------------|
|
|
181
|
+
| `library://references` | All references as CSL-JSON array |
|
|
182
|
+
| `library://reference/{id}` | Single reference by ID |
|
|
183
|
+
| `library://styles` | Available citation styles |
|
|
102
184
|
|
|
103
|
-
|
|
185
|
+
## CLI Reference
|
|
186
|
+
|
|
187
|
+
### Basic Commands
|
|
104
188
|
|
|
105
189
|
```bash
|
|
106
|
-
#
|
|
190
|
+
# List all references
|
|
107
191
|
ref list
|
|
108
|
-
|
|
109
|
-
# JSON format
|
|
110
192
|
ref list --format json
|
|
111
|
-
|
|
112
|
-
# BibTeX format
|
|
113
193
|
ref list --format bibtex
|
|
114
194
|
|
|
115
|
-
#
|
|
116
|
-
ref
|
|
195
|
+
# Search references
|
|
196
|
+
ref search "machine learning"
|
|
197
|
+
ref search "author:smith"
|
|
198
|
+
ref search "author:jones year:2024"
|
|
199
|
+
ref search "title:\"deep learning\""
|
|
200
|
+
|
|
201
|
+
# Add references
|
|
202
|
+
ref add paper.json # From CSL-JSON file
|
|
203
|
+
ref add references.bib # From BibTeX
|
|
204
|
+
ref add export.ris # From RIS
|
|
205
|
+
ref add "10.1038/nature12373" # From DOI
|
|
206
|
+
ref add pmid:25056061 # From PubMed ID
|
|
207
|
+
cat references.json | ref add # From stdin
|
|
208
|
+
|
|
209
|
+
# Remove a reference
|
|
210
|
+
ref remove smith2024
|
|
211
|
+
ref remove smith2024 --force # Skip confirmation
|
|
212
|
+
|
|
213
|
+
# Update a reference
|
|
214
|
+
ref update smith2024 updates.json
|
|
215
|
+
ref update smith2024 --set "title=New Title"
|
|
216
|
+
|
|
217
|
+
# Generate citations
|
|
218
|
+
ref cite smith2024
|
|
219
|
+
ref cite smith2024 jones2023 --style apa
|
|
220
|
+
ref cite smith2024 --style chicago-author-date --format html
|
|
117
221
|
```
|
|
118
222
|
|
|
119
|
-
###
|
|
223
|
+
### Fulltext Management
|
|
120
224
|
|
|
121
|
-
|
|
225
|
+
```bash
|
|
226
|
+
# Attach files
|
|
227
|
+
ref fulltext attach smith2024 ~/papers/smith2024.pdf
|
|
228
|
+
ref fulltext attach smith2024 ~/notes/smith2024.md
|
|
229
|
+
ref fulltext attach smith2024 paper.pdf --move # Move instead of copy
|
|
230
|
+
ref fulltext attach smith2024 paper.pdf --force # Overwrite existing
|
|
231
|
+
|
|
232
|
+
# Get attached files
|
|
233
|
+
ref fulltext get smith2024 --pdf # Get PDF path
|
|
234
|
+
ref fulltext get smith2024 --md # Get Markdown path
|
|
235
|
+
ref fulltext get smith2024 --pdf --stdout # Output content to stdout
|
|
236
|
+
|
|
237
|
+
# Detach files
|
|
238
|
+
ref fulltext detach smith2024 --pdf
|
|
239
|
+
ref fulltext detach smith2024 --pdf --delete # Also delete the file
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### Output Formats
|
|
243
|
+
|
|
244
|
+
| Format | Flag | Description |
|
|
245
|
+
|--------|------|-------------|
|
|
246
|
+
| Pretty | (default) | Human-readable format |
|
|
247
|
+
| JSON | `--format json` | CSL-JSON array |
|
|
248
|
+
| BibTeX | `--format bibtex` | BibTeX format |
|
|
249
|
+
| IDs only | `--format ids-only` | One ID per line |
|
|
250
|
+
|
|
251
|
+
### Search Query Syntax
|
|
252
|
+
|
|
253
|
+
- **Simple search**: `machine learning` (matches any field)
|
|
254
|
+
- **Field-specific**: `author:smith`, `title:neural`, `year:2024`
|
|
255
|
+
- **Phrase search**: `"machine learning"` (exact phrase)
|
|
256
|
+
- **Combined**: `author:smith "deep learning" 2024`
|
|
257
|
+
|
|
258
|
+
Supported field prefixes: `author:`, `title:`, `doi:`, `pmid:`, `pmcid:`, `url:`, `keyword:`, `tag:`
|
|
259
|
+
|
|
260
|
+
## Configuration
|
|
261
|
+
|
|
262
|
+
Configuration file: `~/.reference-manager.config.toml`
|
|
122
263
|
|
|
123
264
|
```toml
|
|
265
|
+
# Path to the library file
|
|
124
266
|
library = "~/references.json"
|
|
267
|
+
|
|
268
|
+
# Logging level: silent, info, debug
|
|
125
269
|
log_level = "info"
|
|
126
270
|
|
|
127
271
|
[backup]
|
|
@@ -129,18 +273,61 @@ enabled = true
|
|
|
129
273
|
max_count = 10
|
|
130
274
|
max_age_days = 30
|
|
131
275
|
|
|
276
|
+
[fulltext]
|
|
277
|
+
directory = "~/references/fulltext"
|
|
278
|
+
|
|
132
279
|
[server]
|
|
133
280
|
auto_start = true
|
|
134
281
|
auto_stop_minutes = 60
|
|
282
|
+
```
|
|
135
283
|
|
|
136
|
-
|
|
137
|
-
|
|
284
|
+
### Environment Variables
|
|
285
|
+
|
|
286
|
+
| Variable | Description |
|
|
287
|
+
|----------|-------------|
|
|
288
|
+
| `REFERENCE_MANAGER_LIBRARY` | Override library file path |
|
|
289
|
+
| `REFERENCE_MANAGER_FULLTEXT_DIR` | Override fulltext directory |
|
|
290
|
+
|
|
291
|
+
## Data Format
|
|
292
|
+
|
|
293
|
+
reference-manager uses [CSL-JSON](https://citeproc-js.readthedocs.io/en/latest/csl-json/markup.html) as its native format — the same format used by Pandoc, Zotero, and other academic tools.
|
|
294
|
+
|
|
295
|
+
### Pandoc Integration
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
# Export your library
|
|
299
|
+
ref list --format json > references.json
|
|
300
|
+
|
|
301
|
+
# Use with Pandoc
|
|
302
|
+
pandoc manuscript.md \
|
|
303
|
+
--bibliography references.json \
|
|
304
|
+
--csl apa.csl \
|
|
305
|
+
-o manuscript.docx
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
### Custom Fields
|
|
309
|
+
|
|
310
|
+
reference-manager extends CSL-JSON with a `custom` object for additional metadata:
|
|
311
|
+
|
|
312
|
+
```json
|
|
313
|
+
{
|
|
314
|
+
"id": "smith2024",
|
|
315
|
+
"type": "article-journal",
|
|
316
|
+
"title": "Example Paper",
|
|
317
|
+
"custom": {
|
|
318
|
+
"uuid": "550e8400-e29b-41d4-a716-446655440000",
|
|
319
|
+
"tags": ["important", "to-read"],
|
|
320
|
+
"fulltext_pdf": "smith2024.pdf",
|
|
321
|
+
"fulltext_md": "smith2024.md"
|
|
322
|
+
}
|
|
323
|
+
}
|
|
138
324
|
```
|
|
139
325
|
|
|
140
|
-
|
|
141
|
-
|
|
326
|
+
## Project Status
|
|
327
|
+
|
|
328
|
+
**Alpha** — This project is under active development. APIs and commands may change between versions.
|
|
142
329
|
|
|
143
|
-
See
|
|
330
|
+
See [ROADMAP.md](./ROADMAP.md) for development progress and planned features.
|
|
144
331
|
|
|
145
332
|
## Development
|
|
146
333
|
|
|
@@ -153,55 +340,26 @@ npm run build
|
|
|
153
340
|
### Test
|
|
154
341
|
|
|
155
342
|
```bash
|
|
156
|
-
# Run all tests
|
|
157
|
-
npm test
|
|
158
|
-
|
|
159
|
-
# Watch mode
|
|
160
|
-
npm run test:watch
|
|
161
|
-
|
|
162
|
-
# Coverage
|
|
163
|
-
npm run test:coverage
|
|
343
|
+
npm test # Run all tests
|
|
344
|
+
npm run test:watch # Watch mode
|
|
345
|
+
npm run test:coverage # Coverage report
|
|
164
346
|
```
|
|
165
347
|
|
|
166
348
|
### Quality Checks
|
|
167
349
|
|
|
168
350
|
```bash
|
|
169
|
-
#
|
|
170
|
-
npm run
|
|
171
|
-
|
|
172
|
-
# Linting
|
|
173
|
-
npm run lint
|
|
174
|
-
|
|
175
|
-
# Format
|
|
176
|
-
npm run format
|
|
351
|
+
npm run typecheck # TypeScript type checking
|
|
352
|
+
npm run lint # Linting
|
|
353
|
+
npm run format # Code formatting
|
|
177
354
|
```
|
|
178
355
|
|
|
179
|
-
## Project Status
|
|
180
|
-
|
|
181
|
-
✅ **All phases completed** (Phase 1-5)
|
|
182
|
-
|
|
183
|
-
- 606 tests passing
|
|
184
|
-
- Full TypeScript type coverage
|
|
185
|
-
- Multi-platform support (Linux, macOS, Windows)
|
|
186
|
-
- Ready for distribution
|
|
187
|
-
|
|
188
|
-
## Architecture
|
|
189
|
-
|
|
190
|
-
The project is organized into modular components:
|
|
191
|
-
|
|
192
|
-
- **Core**: CSL-JSON processing, Reference/Library management, Identifier generation
|
|
193
|
-
- **Features**: Search, Duplicate detection, 3-way merge, File monitoring
|
|
194
|
-
- **CLI**: Command-line interface with Commander.js
|
|
195
|
-
- **Server**: HTTP server with Hono
|
|
196
|
-
- **Utils**: Logging, File operations, Backup management
|
|
197
|
-
- **Config**: TOML-based configuration
|
|
198
|
-
|
|
199
|
-
See `spec/_index.md` for detailed architecture documentation.
|
|
200
|
-
|
|
201
356
|
## License
|
|
202
357
|
|
|
203
358
|
MIT
|
|
204
359
|
|
|
205
|
-
##
|
|
360
|
+
## Links
|
|
206
361
|
|
|
207
|
-
https://github.com/ncukondo/reference-manager
|
|
362
|
+
- [Repository](https://github.com/ncukondo/reference-manager)
|
|
363
|
+
- [npm Package](https://www.npmjs.com/package/@ncukondo/reference-manager)
|
|
364
|
+
- [Issues](https://github.com/ncukondo/reference-manager/issues)
|
|
365
|
+
- [Documentation](./spec/)
|