@alpacali/papyrus-cli 1.0.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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +188 -0
  3. package/dist/api.d.ts +67 -0
  4. package/dist/api.d.ts.map +1 -0
  5. package/dist/api.js +247 -0
  6. package/dist/api.js.map +1 -0
  7. package/dist/cli.d.ts +8 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +391 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/commands/cards.d.ts +52 -0
  12. package/dist/commands/cards.d.ts.map +1 -0
  13. package/dist/commands/cards.js +189 -0
  14. package/dist/commands/cards.js.map +1 -0
  15. package/dist/commands/data.d.ts +34 -0
  16. package/dist/commands/data.d.ts.map +1 -0
  17. package/dist/commands/data.js +230 -0
  18. package/dist/commands/data.js.map +1 -0
  19. package/dist/commands/review.d.ts +16 -0
  20. package/dist/commands/review.d.ts.map +1 -0
  21. package/dist/commands/review.js +132 -0
  22. package/dist/commands/review.js.map +1 -0
  23. package/dist/commands/serve.d.ts +24 -0
  24. package/dist/commands/serve.d.ts.map +1 -0
  25. package/dist/commands/serve.js +161 -0
  26. package/dist/commands/serve.js.map +1 -0
  27. package/dist/config.d.ts +37 -0
  28. package/dist/config.d.ts.map +1 -0
  29. package/dist/config.js +94 -0
  30. package/dist/config.js.map +1 -0
  31. package/dist/index.d.ts +10 -0
  32. package/dist/index.d.ts.map +1 -0
  33. package/dist/index.js +12 -0
  34. package/dist/index.js.map +1 -0
  35. package/dist/types.d.ts +114 -0
  36. package/dist/types.d.ts.map +1 -0
  37. package/dist/types.js +5 -0
  38. package/dist/types.js.map +1 -0
  39. package/dist/utils.d.ts +52 -0
  40. package/dist/utils.d.ts.map +1 -0
  41. package/dist/utils.js +141 -0
  42. package/dist/utils.js.map +1 -0
  43. package/package.json +62 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Papyrus Team
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,188 @@
1
+ # 📜 Papyrus CLI
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@papyrus/cli)](https://www.npmjs.com/package/@papyrus/cli)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ A powerful command-line interface for [Papyrus](https://github.com/Papyrus/Papyrus) - the SRS (Spaced Repetition System) learning application.
7
+
8
+ ## ✨ Features
9
+
10
+ - 🎴 **Card Management** - Create, edit, delete, and search flashcards
11
+ - 📚 **Interactive Review** - Terminal-based review sessions with SM-2 algorithm
12
+ - 📊 **Statistics** - Track your learning progress
13
+ - 💾 **Data Management** - Backup, restore, import, and export your data
14
+ - 🚀 **Server Control** - Start and manage the Papyrus API server
15
+ - ⚙️ **Configuration** - Flexible CLI configuration
16
+
17
+ ## 📦 Installation
18
+
19
+ ```bash
20
+ npm install -g @papyrus/cli
21
+ ```
22
+
23
+ Or use with npx:
24
+
25
+ ```bash
26
+ npx @papyrus/cli <command>
27
+ ```
28
+
29
+ ## 🚀 Quick Start
30
+
31
+ ```bash
32
+ # 1. Start the Papyrus server
33
+ papyrus serve
34
+
35
+ # 2. Add a card
36
+ papyrus card add "What is the capital of France?" "Paris"
37
+
38
+ # 3. Start reviewing
39
+ papyrus review
40
+
41
+ # 4. Check your stats
42
+ papyrus stats
43
+ ```
44
+
45
+ ## 📖 Commands
46
+
47
+ ### Card Management
48
+
49
+ ```bash
50
+ # List all cards
51
+ papyrus card list
52
+ papyrus card list --tags "language" --detailed
53
+
54
+ # Show card details
55
+ papyrus card show <id>
56
+
57
+ # Add a new card
58
+ papyrus card add "Question" "Answer" --tags "tag1,tag2"
59
+
60
+ # Edit a card
61
+ papyrus card edit <id> --question "New question" --tags "updated"
62
+
63
+ # Delete a card
64
+ papyrus card delete <id>
65
+ papyrus card delete <id> --force
66
+
67
+ # Search cards
68
+ papyrus card search "keyword"
69
+
70
+ # Import from text file
71
+ papyrus card import cards.txt
72
+
73
+ # Export to JSON
74
+ papyrus card export --output cards.json
75
+
76
+ # List due cards
77
+ papyrus card due
78
+ ```
79
+
80
+ ### Review
81
+
82
+ ```bash
83
+ # Start interactive review session
84
+ papyrus review
85
+
86
+ # Show review statistics
87
+ papyrus stats
88
+ ```
89
+
90
+ ### Data Management
91
+
92
+ ```bash
93
+ # Create backup
94
+ papyrus data backup
95
+ papyrus data backup --output my-backup.db
96
+
97
+ # Restore from backup
98
+ papyrus data restore my-backup.db
99
+
100
+ # List backups
101
+ papyrus data list-backups
102
+
103
+ # Clean old backups
104
+ papyrus data clean-backups --keep 5
105
+
106
+ # Export data
107
+ papyrus data export data.json
108
+
109
+ # Import data
110
+ papyrus data import data.json
111
+
112
+ # Show data stats
113
+ papyrus data stats
114
+ ```
115
+
116
+ ### Server Management
117
+
118
+ ```bash
119
+ # Start server
120
+ papyrus serve
121
+ papyrus serve --port 8080 --detach
122
+
123
+ # Check server status
124
+ papyrus serve status
125
+
126
+ # Stop server
127
+ papyrus serve stop
128
+
129
+ # Open API docs
130
+ papyrus serve docs
131
+ ```
132
+
133
+ ### Configuration
134
+
135
+ ```bash
136
+ # Show configuration
137
+ papyrus config
138
+
139
+ # Get specific value
140
+ papyrus config --get apiUrl
141
+
142
+ # Set value
143
+ papyrus config --set apiUrl=http://localhost:8080
144
+
145
+ # Reset to defaults
146
+ papyrus config --reset
147
+ ```
148
+
149
+ ## 📝 Import Format
150
+
151
+ When importing cards from a text file, use the following format:
152
+
153
+ ```
154
+ Question 1 === Answer 1
155
+
156
+ Question 2 === Answer 2
157
+
158
+ # Lines starting with # are ignored
159
+ Question 3 === Answer 3
160
+ ```
161
+
162
+ ## ⚙️ Configuration
163
+
164
+ Configuration is stored in `~/.papyrus/config.json`:
165
+
166
+ ```json
167
+ {
168
+ "apiUrl": "http://127.0.0.1:8000",
169
+ "dataDir": "~/Documents/Papyrus"
170
+ }
171
+ ```
172
+
173
+ ## 🔧 Requirements
174
+
175
+ - Node.js 18+
176
+ - Papyrus API server running
177
+
178
+ ## 🤝 Contributing
179
+
180
+ Contributions are welcome! Please feel free to submit a Pull Request.
181
+
182
+ ## 📄 License
183
+
184
+ MIT License - see the [LICENSE](LICENSE) file for details.
185
+
186
+ ---
187
+
188
+ **Papyrus CLI** - Learn smarter, remember longer.
package/dist/api.d.ts ADDED
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Papyrus CLI - API Client
3
+ */
4
+ import type { Card, CreateCardInput, HealthResponse, ReviewStatsResponse, SearchResponse, UpdateCardInput } from "./types.js";
5
+ /**
6
+ * Health check
7
+ */
8
+ export declare function healthCheck(): Promise<HealthResponse>;
9
+ /**
10
+ * Check if API is available
11
+ */
12
+ export declare function isApiAvailable(): Promise<boolean>;
13
+ /**
14
+ * List all cards
15
+ */
16
+ export declare function listCards(): Promise<Card[]>;
17
+ /**
18
+ * Get a single card by ID
19
+ */
20
+ export declare function getCard(id: string): Promise<Card>;
21
+ /**
22
+ * Create a new card
23
+ */
24
+ export declare function createCard(input: CreateCardInput): Promise<Card>;
25
+ /**
26
+ * Update a card
27
+ */
28
+ export declare function updateCard(id: string, input: UpdateCardInput): Promise<Card>;
29
+ /**
30
+ * Delete a card
31
+ */
32
+ export declare function deleteCard(id: string): Promise<void>;
33
+ /**
34
+ * Import cards from text
35
+ */
36
+ export declare function importCards(content: string): Promise<number>;
37
+ /**
38
+ * Get review queue
39
+ */
40
+ export declare function getReviewQueue(): Promise<Card[]>;
41
+ /**
42
+ * Get review stats
43
+ */
44
+ export declare function getReviewStats(): Promise<ReviewStatsResponse>;
45
+ /**
46
+ * Submit review
47
+ */
48
+ export declare function submitReview(cardId: string, quality: number): Promise<void>;
49
+ /**
50
+ * Search cards
51
+ */
52
+ export declare function searchCards(query: string): Promise<SearchResponse>;
53
+ /**
54
+ * Export data
55
+ */
56
+ export declare function exportData(): Promise<unknown>;
57
+ /**
58
+ * Import data
59
+ */
60
+ export declare function importData(data: unknown): Promise<void>;
61
+ /**
62
+ * Create backup
63
+ */
64
+ export declare function createBackup(): Promise<{
65
+ path: string;
66
+ }>;
67
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EACV,IAAI,EAGJ,eAAe,EAEf,cAAc,EAEd,mBAAmB,EAEnB,cAAc,EACd,eAAe,EAChB,MAAM,YAAY,CAAC;AA4CpB;;GAEG;AACH,wBAAsB,WAAW,IAAI,OAAO,CAAC,cAAc,CAAC,CAQ3D;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CAOvD;AAID;;GAEG;AACH,wBAAsB,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAQjD;AAED;;GAEG;AACH,wBAAsB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYvD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAQtE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAQlF;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAO1D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAUlE;AAID;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC,CAQtD;AAED;;GAEG;AACH,wBAAsB,cAAc,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAQnE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAOjF;AAID;;GAEG;AACH,wBAAsB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAUxE;AAID;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CAQnD;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAO7D;AAED;;GAEG;AACH,wBAAsB,YAAY,IAAI,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAQ9D"}
package/dist/api.js ADDED
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Papyrus CLI - API Client
3
+ */
4
+ import axios, { AxiosError } from "axios";
5
+ import { getApiUrl } from "./config.js";
6
+ /**
7
+ * Create configured Axios instance
8
+ */
9
+ function createClient() {
10
+ return axios.create({
11
+ baseURL: getApiUrl(),
12
+ timeout: 30000,
13
+ headers: {
14
+ "Content-Type": "application/json",
15
+ },
16
+ });
17
+ }
18
+ /**
19
+ * Handle API errors
20
+ */
21
+ function handleError(error) {
22
+ if (error instanceof AxiosError) {
23
+ const message = error.response?.data?.detail ||
24
+ error.response?.data?.message ||
25
+ error.message;
26
+ const status = error.response?.status;
27
+ if (status === 404) {
28
+ throw new Error(`Not found: ${message}`);
29
+ }
30
+ else if (status === 400) {
31
+ throw new Error(`Bad request: ${message}`);
32
+ }
33
+ else if (status === 500) {
34
+ throw new Error(`Server error: ${message}`);
35
+ }
36
+ else if (error.code === "ECONNREFUSED") {
37
+ throw new Error("Cannot connect to Papyrus API. " +
38
+ "Make sure the server is running with: papyrus serve");
39
+ }
40
+ throw new Error(`API error: ${message}`);
41
+ }
42
+ throw error;
43
+ }
44
+ /**
45
+ * Health check
46
+ */
47
+ export async function healthCheck() {
48
+ const client = createClient();
49
+ try {
50
+ const response = await client.get("/api/health");
51
+ return response.data;
52
+ }
53
+ catch (error) {
54
+ return handleError(error);
55
+ }
56
+ }
57
+ /**
58
+ * Check if API is available
59
+ */
60
+ export async function isApiAvailable() {
61
+ try {
62
+ await healthCheck();
63
+ return true;
64
+ }
65
+ catch {
66
+ return false;
67
+ }
68
+ }
69
+ // ==================== Card APIs ====================
70
+ /**
71
+ * List all cards
72
+ */
73
+ export async function listCards() {
74
+ const client = createClient();
75
+ try {
76
+ const response = await client.get("/api/cards");
77
+ return response.data.cards;
78
+ }
79
+ catch (error) {
80
+ return handleError(error);
81
+ }
82
+ }
83
+ /**
84
+ * Get a single card by ID
85
+ */
86
+ export async function getCard(id) {
87
+ const client = createClient();
88
+ try {
89
+ const cards = await listCards();
90
+ const card = cards.find(c => c.id === id);
91
+ if (!card) {
92
+ throw new Error(`Card not found: ${id}`);
93
+ }
94
+ return card;
95
+ }
96
+ catch (error) {
97
+ return handleError(error);
98
+ }
99
+ }
100
+ /**
101
+ * Create a new card
102
+ */
103
+ export async function createCard(input) {
104
+ const client = createClient();
105
+ try {
106
+ const response = await client.post("/api/cards", input);
107
+ return response.data.card;
108
+ }
109
+ catch (error) {
110
+ return handleError(error);
111
+ }
112
+ }
113
+ /**
114
+ * Update a card
115
+ */
116
+ export async function updateCard(id, input) {
117
+ const client = createClient();
118
+ try {
119
+ const response = await client.patch(`/api/cards/${id}`, input);
120
+ return response.data.card;
121
+ }
122
+ catch (error) {
123
+ return handleError(error);
124
+ }
125
+ }
126
+ /**
127
+ * Delete a card
128
+ */
129
+ export async function deleteCard(id) {
130
+ const client = createClient();
131
+ try {
132
+ await client.delete(`/api/cards/${id}`);
133
+ }
134
+ catch (error) {
135
+ return handleError(error);
136
+ }
137
+ }
138
+ /**
139
+ * Import cards from text
140
+ */
141
+ export async function importCards(content) {
142
+ const client = createClient();
143
+ try {
144
+ const response = await client.post("/api/cards/import/txt", {
145
+ content,
146
+ });
147
+ return response.data.count;
148
+ }
149
+ catch (error) {
150
+ return handleError(error);
151
+ }
152
+ }
153
+ // ==================== Review APIs ====================
154
+ /**
155
+ * Get review queue
156
+ */
157
+ export async function getReviewQueue() {
158
+ const client = createClient();
159
+ try {
160
+ const response = await client.get("/api/review/queue");
161
+ return response.data.cards;
162
+ }
163
+ catch (error) {
164
+ return handleError(error);
165
+ }
166
+ }
167
+ /**
168
+ * Get review stats
169
+ */
170
+ export async function getReviewStats() {
171
+ const client = createClient();
172
+ try {
173
+ const response = await client.get("/api/review/stats");
174
+ return response.data;
175
+ }
176
+ catch (error) {
177
+ return handleError(error);
178
+ }
179
+ }
180
+ /**
181
+ * Submit review
182
+ */
183
+ export async function submitReview(cardId, quality) {
184
+ const client = createClient();
185
+ try {
186
+ await client.post(`/api/review/${cardId}`, { quality });
187
+ }
188
+ catch (error) {
189
+ return handleError(error);
190
+ }
191
+ }
192
+ // ==================== Search APIs ====================
193
+ /**
194
+ * Search cards
195
+ */
196
+ export async function searchCards(query) {
197
+ const client = createClient();
198
+ try {
199
+ const response = await client.get("/api/search", {
200
+ params: { q: query },
201
+ });
202
+ return response.data;
203
+ }
204
+ catch (error) {
205
+ return handleError(error);
206
+ }
207
+ }
208
+ // ==================== Data APIs ====================
209
+ /**
210
+ * Export data
211
+ */
212
+ export async function exportData() {
213
+ const client = createClient();
214
+ try {
215
+ const response = await client.get("/api/data/export");
216
+ return response.data;
217
+ }
218
+ catch (error) {
219
+ return handleError(error);
220
+ }
221
+ }
222
+ /**
223
+ * Import data
224
+ */
225
+ export async function importData(data) {
226
+ const client = createClient();
227
+ try {
228
+ await client.post("/api/data/import", data);
229
+ }
230
+ catch (error) {
231
+ return handleError(error);
232
+ }
233
+ }
234
+ /**
235
+ * Create backup
236
+ */
237
+ export async function createBackup() {
238
+ const client = createClient();
239
+ try {
240
+ const response = await client.post("/api/data/backup");
241
+ return response.data;
242
+ }
243
+ catch (error) {
244
+ return handleError(error);
245
+ }
246
+ }
247
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Papyrus CLI - Main Entry Point
4
+ *
5
+ * A command-line interface for the Papyrus SRS learning system.
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG"}