@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.
- package/LICENSE +21 -0
- package/README.md +188 -0
- package/dist/api.d.ts +67 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +247 -0
- package/dist/api.js.map +1 -0
- package/dist/cli.d.ts +8 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +391 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/cards.d.ts +52 -0
- package/dist/commands/cards.d.ts.map +1 -0
- package/dist/commands/cards.js +189 -0
- package/dist/commands/cards.js.map +1 -0
- package/dist/commands/data.d.ts +34 -0
- package/dist/commands/data.d.ts.map +1 -0
- package/dist/commands/data.js +230 -0
- package/dist/commands/data.js.map +1 -0
- package/dist/commands/review.d.ts +16 -0
- package/dist/commands/review.d.ts.map +1 -0
- package/dist/commands/review.js +132 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/serve.d.ts +24 -0
- package/dist/commands/serve.d.ts.map +1 -0
- package/dist/commands/serve.js +161 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/config.d.ts +37 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +94 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/types.d.ts +114 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +5 -0
- package/dist/types.js.map +1 -0
- package/dist/utils.d.ts +52 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +141 -0
- package/dist/utils.js.map +1 -0
- package/package.json +62 -0
package/dist/cli.js
ADDED
|
@@ -0,0 +1,391 @@
|
|
|
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
|
+
import { Command } from "commander";
|
|
8
|
+
import chalk from "chalk";
|
|
9
|
+
import { displayConfig, resetConfig, setConfig } from "./config.js";
|
|
10
|
+
import { addCardCommand, deleteCardCommand, dueCardsCommand, editCardCommand, exportCardsCommand, importCardsCommand, listCardsCommand, searchCardsCommand, showCardCommand, } from "./commands/cards.js";
|
|
11
|
+
import { backupCommand, cleanBackupsCommand, exportCommand, importCommand, listBackupsCommand, restoreCommand, statsCommand, } from "./commands/data.js";
|
|
12
|
+
import { reviewCommand, reviewStatsCommand } from "./commands/review.js";
|
|
13
|
+
import { docsCommand, serveCommand, statusCommand, stopCommand } from "./commands/serve.js";
|
|
14
|
+
// Version - will be replaced by build process
|
|
15
|
+
const version = "1.0.0";
|
|
16
|
+
// Create CLI
|
|
17
|
+
const program = new Command()
|
|
18
|
+
.name("papyrus")
|
|
19
|
+
.description("Papyrus CLI - Command line interface for Papyrus SRS")
|
|
20
|
+
.version(version, "-v, --version", "Display version number")
|
|
21
|
+
.configureOutput({
|
|
22
|
+
outputError: (str, write) => write(chalk.red(str)),
|
|
23
|
+
});
|
|
24
|
+
// ==================== Card Commands ====================
|
|
25
|
+
const cardCmd = program
|
|
26
|
+
.command("card")
|
|
27
|
+
.alias("cards")
|
|
28
|
+
.description("Manage flashcards");
|
|
29
|
+
cardCmd
|
|
30
|
+
.command("list")
|
|
31
|
+
.alias("ls")
|
|
32
|
+
.description("List all cards")
|
|
33
|
+
.option("-l, --limit <number>", "Limit number of results", parseInt)
|
|
34
|
+
.option("-t, --tags <tags>", "Filter by tags (comma-separated)")
|
|
35
|
+
.option("-d, --detailed", "Show detailed information")
|
|
36
|
+
.action(async (options) => {
|
|
37
|
+
try {
|
|
38
|
+
await listCardsCommand(options);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
42
|
+
process.exit(1);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
cardCmd
|
|
46
|
+
.command("show <id>")
|
|
47
|
+
.alias("get")
|
|
48
|
+
.description("Show card details")
|
|
49
|
+
.action(async (id) => {
|
|
50
|
+
try {
|
|
51
|
+
await showCardCommand(id);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
55
|
+
process.exit(1);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
cardCmd
|
|
59
|
+
.command("add <question> <answer>")
|
|
60
|
+
.alias("create")
|
|
61
|
+
.description("Add a new card")
|
|
62
|
+
.option("-t, --tags <tags>", "Add tags (comma-separated)")
|
|
63
|
+
.action(async (question, answer, options) => {
|
|
64
|
+
try {
|
|
65
|
+
await addCardCommand(question, answer, options);
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
cardCmd
|
|
73
|
+
.command("edit <id>")
|
|
74
|
+
.alias("update")
|
|
75
|
+
.description("Edit a card")
|
|
76
|
+
.option("-q, --question <text>", "Update question")
|
|
77
|
+
.option("-a, --answer <text>", "Update answer")
|
|
78
|
+
.option("-t, --tags <tags>", "Update tags (comma-separated)")
|
|
79
|
+
.action(async (id, options) => {
|
|
80
|
+
try {
|
|
81
|
+
await editCardCommand(id, options);
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
85
|
+
process.exit(1);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
cardCmd
|
|
89
|
+
.command("delete <id>")
|
|
90
|
+
.alias("rm")
|
|
91
|
+
.description("Delete a card")
|
|
92
|
+
.option("-f, --force", "Force deletion without confirmation")
|
|
93
|
+
.action(async (id, options) => {
|
|
94
|
+
try {
|
|
95
|
+
await deleteCardCommand(id, options.force);
|
|
96
|
+
}
|
|
97
|
+
catch (error) {
|
|
98
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
99
|
+
process.exit(1);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
cardCmd
|
|
103
|
+
.command("search <query>")
|
|
104
|
+
.alias("find")
|
|
105
|
+
.description("Search cards")
|
|
106
|
+
.action(async (query) => {
|
|
107
|
+
try {
|
|
108
|
+
await searchCardsCommand(query);
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
112
|
+
process.exit(1);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
cardCmd
|
|
116
|
+
.command("import <file>")
|
|
117
|
+
.description("Import cards from text file")
|
|
118
|
+
.action(async (file) => {
|
|
119
|
+
try {
|
|
120
|
+
await importCardsCommand(file);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
124
|
+
process.exit(1);
|
|
125
|
+
}
|
|
126
|
+
});
|
|
127
|
+
cardCmd
|
|
128
|
+
.command("export")
|
|
129
|
+
.description("Export cards to JSON")
|
|
130
|
+
.option("-o, --output <file>", "Output file path")
|
|
131
|
+
.action(async (options) => {
|
|
132
|
+
try {
|
|
133
|
+
await exportCardsCommand(options);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
137
|
+
process.exit(1);
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
cardCmd
|
|
141
|
+
.command("due")
|
|
142
|
+
.alias("due-today")
|
|
143
|
+
.description("List cards due for review")
|
|
144
|
+
.action(async () => {
|
|
145
|
+
try {
|
|
146
|
+
await dueCardsCommand();
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
// ==================== Review Commands ====================
|
|
154
|
+
program
|
|
155
|
+
.command("review")
|
|
156
|
+
.alias("study")
|
|
157
|
+
.description("Start a review session")
|
|
158
|
+
.action(async () => {
|
|
159
|
+
try {
|
|
160
|
+
await reviewCommand();
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
164
|
+
process.exit(1);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
program
|
|
168
|
+
.command("stats")
|
|
169
|
+
.alias("statistics")
|
|
170
|
+
.description("Show review statistics")
|
|
171
|
+
.action(async () => {
|
|
172
|
+
try {
|
|
173
|
+
await reviewStatsCommand();
|
|
174
|
+
}
|
|
175
|
+
catch (error) {
|
|
176
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
177
|
+
process.exit(1);
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
// ==================== Data Commands ====================
|
|
181
|
+
const dataCmd = program
|
|
182
|
+
.command("data")
|
|
183
|
+
.description("Manage data and backups");
|
|
184
|
+
dataCmd
|
|
185
|
+
.command("backup")
|
|
186
|
+
.description("Create a backup")
|
|
187
|
+
.option("-o, --output <file>", "Output file path")
|
|
188
|
+
.action(async (options) => {
|
|
189
|
+
try {
|
|
190
|
+
await backupCommand(options);
|
|
191
|
+
}
|
|
192
|
+
catch (error) {
|
|
193
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
194
|
+
process.exit(1);
|
|
195
|
+
}
|
|
196
|
+
});
|
|
197
|
+
dataCmd
|
|
198
|
+
.command("restore <file>")
|
|
199
|
+
.description("Restore from backup")
|
|
200
|
+
.option("-f, --force", "Force restore without confirmation")
|
|
201
|
+
.action(async (file, options) => {
|
|
202
|
+
try {
|
|
203
|
+
await restoreCommand(file, options.force);
|
|
204
|
+
}
|
|
205
|
+
catch (error) {
|
|
206
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
207
|
+
process.exit(1);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
dataCmd
|
|
211
|
+
.command("list-backups")
|
|
212
|
+
.alias("backups")
|
|
213
|
+
.description("List all backups")
|
|
214
|
+
.action(async () => {
|
|
215
|
+
try {
|
|
216
|
+
await listBackupsCommand();
|
|
217
|
+
}
|
|
218
|
+
catch (error) {
|
|
219
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
220
|
+
process.exit(1);
|
|
221
|
+
}
|
|
222
|
+
});
|
|
223
|
+
dataCmd
|
|
224
|
+
.command("clean-backups")
|
|
225
|
+
.description("Clean old backups")
|
|
226
|
+
.option("-k, --keep <number>", "Number of backups to keep", parseInt, 10)
|
|
227
|
+
.action(async (options) => {
|
|
228
|
+
try {
|
|
229
|
+
await cleanBackupsCommand(options.keep);
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
233
|
+
process.exit(1);
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
dataCmd
|
|
237
|
+
.command("export <file>")
|
|
238
|
+
.description("Export data to JSON file")
|
|
239
|
+
.action(async (file) => {
|
|
240
|
+
try {
|
|
241
|
+
await exportCommand(file);
|
|
242
|
+
}
|
|
243
|
+
catch (error) {
|
|
244
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
245
|
+
process.exit(1);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
dataCmd
|
|
249
|
+
.command("import <file>")
|
|
250
|
+
.description("Import data from JSON file")
|
|
251
|
+
.option("-f, --force", "Force import without confirmation")
|
|
252
|
+
.action(async (file, options) => {
|
|
253
|
+
try {
|
|
254
|
+
await importCommand(file, options.force);
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
258
|
+
process.exit(1);
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
dataCmd
|
|
262
|
+
.command("stats")
|
|
263
|
+
.description("Show data statistics")
|
|
264
|
+
.action(async () => {
|
|
265
|
+
try {
|
|
266
|
+
await statsCommand();
|
|
267
|
+
}
|
|
268
|
+
catch (error) {
|
|
269
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
270
|
+
process.exit(1);
|
|
271
|
+
}
|
|
272
|
+
});
|
|
273
|
+
// ==================== Server Commands ====================
|
|
274
|
+
program
|
|
275
|
+
.command("serve")
|
|
276
|
+
.alias("server")
|
|
277
|
+
.description("Start the Papyrus API server")
|
|
278
|
+
.option("-p, --port <number>", "Port to listen on", parseInt)
|
|
279
|
+
.option("-h, --host <address>", "Host to bind to")
|
|
280
|
+
.option("-d, --detach", "Run in background")
|
|
281
|
+
.action(async (options) => {
|
|
282
|
+
try {
|
|
283
|
+
await serveCommand(options);
|
|
284
|
+
}
|
|
285
|
+
catch (error) {
|
|
286
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
287
|
+
process.exit(1);
|
|
288
|
+
}
|
|
289
|
+
});
|
|
290
|
+
program
|
|
291
|
+
.command("status")
|
|
292
|
+
.description("Check server status")
|
|
293
|
+
.action(async () => {
|
|
294
|
+
try {
|
|
295
|
+
await statusCommand();
|
|
296
|
+
}
|
|
297
|
+
catch (error) {
|
|
298
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
299
|
+
process.exit(1);
|
|
300
|
+
}
|
|
301
|
+
});
|
|
302
|
+
program
|
|
303
|
+
.command("stop")
|
|
304
|
+
.description("Stop the Papyrus server")
|
|
305
|
+
.action(async () => {
|
|
306
|
+
try {
|
|
307
|
+
await stopCommand();
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
311
|
+
process.exit(1);
|
|
312
|
+
}
|
|
313
|
+
});
|
|
314
|
+
program
|
|
315
|
+
.command("docs")
|
|
316
|
+
.description("Open API documentation")
|
|
317
|
+
.action(async () => {
|
|
318
|
+
try {
|
|
319
|
+
await docsCommand();
|
|
320
|
+
}
|
|
321
|
+
catch (error) {
|
|
322
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
323
|
+
process.exit(1);
|
|
324
|
+
}
|
|
325
|
+
});
|
|
326
|
+
// ==================== Config Commands ====================
|
|
327
|
+
program
|
|
328
|
+
.command("config")
|
|
329
|
+
.description("Manage CLI configuration")
|
|
330
|
+
.option("--get <key>", "Get configuration value")
|
|
331
|
+
.option("--set <key=value>", "Set configuration value")
|
|
332
|
+
.option("--reset", "Reset to defaults")
|
|
333
|
+
.action(async (options) => {
|
|
334
|
+
try {
|
|
335
|
+
if (options.reset) {
|
|
336
|
+
resetConfig();
|
|
337
|
+
console.log(chalk.green("Configuration reset to defaults."));
|
|
338
|
+
}
|
|
339
|
+
else if (options.get) {
|
|
340
|
+
const { loadConfig } = await import("./config.js");
|
|
341
|
+
const config = loadConfig();
|
|
342
|
+
const value = config[options.get];
|
|
343
|
+
console.log(`${options.get}: ${value}`);
|
|
344
|
+
}
|
|
345
|
+
else if (options.set) {
|
|
346
|
+
const [key, value] = options.set.split("=");
|
|
347
|
+
if (!key || value === undefined) {
|
|
348
|
+
console.error(chalk.red("Usage: --set key=value"));
|
|
349
|
+
process.exit(1);
|
|
350
|
+
}
|
|
351
|
+
setConfig(key, value);
|
|
352
|
+
console.log(chalk.green(`Set ${key} = ${value}`));
|
|
353
|
+
}
|
|
354
|
+
else {
|
|
355
|
+
displayConfig();
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
catch (error) {
|
|
359
|
+
console.error(chalk.red(`Error: ${error}`));
|
|
360
|
+
process.exit(1);
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
// ==================== Help & Info ====================
|
|
364
|
+
program
|
|
365
|
+
.command("quickstart")
|
|
366
|
+
.description("Show quick start guide")
|
|
367
|
+
.action(() => {
|
|
368
|
+
console.log(chalk.bold("\nš Papyrus CLI Quick Start\n"));
|
|
369
|
+
console.log("1. Start the server:");
|
|
370
|
+
console.log(chalk.cyan(" papyrus serve\n"));
|
|
371
|
+
console.log("2. Add some cards:");
|
|
372
|
+
console.log(chalk.cyan(" papyrus card add \"Question?\" \"Answer!\"\n"));
|
|
373
|
+
console.log("3. Start reviewing:");
|
|
374
|
+
console.log(chalk.cyan(" papyrus review\n"));
|
|
375
|
+
console.log("4. Check stats:");
|
|
376
|
+
console.log(chalk.cyan(" papyrus stats\n"));
|
|
377
|
+
console.log("For more help: papyrus --help\n");
|
|
378
|
+
});
|
|
379
|
+
// Error handling
|
|
380
|
+
program.exitOverride();
|
|
381
|
+
async function main() {
|
|
382
|
+
try {
|
|
383
|
+
await program.parseAsync();
|
|
384
|
+
}
|
|
385
|
+
catch (error) {
|
|
386
|
+
// Commander handles its own errors
|
|
387
|
+
process.exit(1);
|
|
388
|
+
}
|
|
389
|
+
}
|
|
390
|
+
main();
|
|
391
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EACL,cAAc,EACd,iBAAiB,EACjB,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAsB,aAAa,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC7F,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAE5F,8CAA8C;AAC9C,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,aAAa;AACb,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;KAC1B,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,wBAAwB,CAAC;KAC3D,eAAe,CAAC;IACf,WAAW,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CACnD,CAAC,CAAC;AAEL,0DAA0D;AAE1D,MAAM,OAAO,GAAG,OAAO;KACpB,OAAO,CAAC,MAAM,CAAC;KACf,KAAK,CAAC,OAAO,CAAC;KACd,WAAW,CAAC,mBAAmB,CAAC,CAAC;AAEpC,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,sBAAsB,EAAE,yBAAyB,EAAE,QAAQ,CAAC;KACnE,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;KAC/D,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,KAAK,CAAC,KAAK,CAAC;KACZ,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;IACnB,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,EAAE,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,yBAAyB,CAAC;KAClC,KAAK,CAAC,QAAQ,CAAC;KACf,WAAW,CAAC,gBAAgB,CAAC;KAC7B,MAAM,CAAC,mBAAmB,EAAE,4BAA4B,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAC1C,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,KAAK,CAAC,QAAQ,CAAC;KACf,WAAW,CAAC,aAAa,CAAC;KAC1B,MAAM,CAAC,uBAAuB,EAAE,iBAAiB,CAAC;KAClD,MAAM,CAAC,qBAAqB,EAAE,eAAe,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,+BAA+B,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IAC5B,IAAI,CAAC;QACH,MAAM,eAAe,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,KAAK,CAAC,IAAI,CAAC;KACX,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,aAAa,EAAE,qCAAqC,CAAC;KAC5D,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE;IAC5B,IAAI,CAAC;QACH,MAAM,iBAAiB,CAAC,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,KAAK,CAAC,MAAM,CAAC;KACb,WAAW,CAAC,cAAc,CAAC;KAC3B,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;IACtB,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,6BAA6B,CAAC;KAC1C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,KAAK,CAAC,WAAW,CAAC;KAClB,WAAW,CAAC,2BAA2B,CAAC;KACxC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,eAAe,EAAE,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,4DAA4D;AAE5D,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,KAAK,CAAC,OAAO,CAAC;KACd,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,KAAK,CAAC,YAAY,CAAC;KACnB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAE1D,MAAM,OAAO,GAAG,OAAO;KACpB,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yBAAyB,CAAC,CAAC;AAE1C,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,iBAAiB,CAAC;KAC9B,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,aAAa,EAAE,oCAAoC,CAAC;KAC3D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC9B,IAAI,CAAC;QACH,MAAM,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,KAAK,CAAC,SAAS,CAAC;KAChB,WAAW,CAAC,kBAAkB,CAAC;KAC/B,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,kBAAkB,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,mBAAmB,CAAC;KAChC,MAAM,CAAC,qBAAqB,EAAE,2BAA2B,EAAE,QAAQ,EAAE,EAAE,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,aAAa,EAAE,mCAAmC,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE;IAC9B,IAAI,CAAC;QACH,MAAM,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,YAAY,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,4DAA4D;AAE5D,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,KAAK,CAAC,QAAQ,CAAC;KACf,WAAW,CAAC,8BAA8B,CAAC;KAC3C,MAAM,CAAC,qBAAqB,EAAE,mBAAmB,EAAE,QAAQ,CAAC;KAC5D,MAAM,CAAC,sBAAsB,EAAE,iBAAiB,CAAC;KACjD,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,MAAM,YAAY,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,qBAAqB,CAAC;KAClC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,yBAAyB,CAAC;KACtC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,WAAW,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,WAAW,EAAE,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,4DAA4D;AAE5D,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,aAAa,EAAE,yBAAyB,CAAC;KAChD,MAAM,CAAC,mBAAmB,EAAE,yBAAyB,CAAC;KACtD,MAAM,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACtC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,WAAW,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,GAA0B,CAAC,CAAC;YACzD,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,KAAK,KAAK,EAAE,CAAC,CAAC;QAC1C,CAAC;aAAM,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YACvB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC5C,IAAI,CAAC,GAAG,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,SAAS,CAAC,GAAU,EAAE,KAAK,CAAC,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,aAAa,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC,CAAC;QAC5C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,wDAAwD;AAExD,OAAO;KACJ,OAAO,CAAC,YAAY,CAAC;KACrB,WAAW,CAAC,wBAAwB,CAAC;KACrC,MAAM,CAAC,GAAG,EAAE;IACX,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC,CAAC;IAC1D,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,iDAAiD,CAAC,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEL,iBAAiB;AACjB,OAAO,CAAC,YAAY,EAAE,CAAC;AAEvB,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mCAAmC;QACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Papyrus CLI - Card Management Commands
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* List all cards command
|
|
6
|
+
*/
|
|
7
|
+
export declare function listCardsCommand(options: {
|
|
8
|
+
limit?: number;
|
|
9
|
+
tags?: string;
|
|
10
|
+
detailed?: boolean;
|
|
11
|
+
}): Promise<void>;
|
|
12
|
+
/**
|
|
13
|
+
* Show card details command
|
|
14
|
+
*/
|
|
15
|
+
export declare function showCardCommand(id: string): Promise<void>;
|
|
16
|
+
/**
|
|
17
|
+
* Add card command
|
|
18
|
+
*/
|
|
19
|
+
export declare function addCardCommand(question: string, answer: string, options: {
|
|
20
|
+
tags?: string;
|
|
21
|
+
}): Promise<void>;
|
|
22
|
+
/**
|
|
23
|
+
* Edit card command
|
|
24
|
+
*/
|
|
25
|
+
export declare function editCardCommand(id: string, options: {
|
|
26
|
+
question?: string;
|
|
27
|
+
answer?: string;
|
|
28
|
+
tags?: string;
|
|
29
|
+
}): Promise<void>;
|
|
30
|
+
/**
|
|
31
|
+
* Delete card command
|
|
32
|
+
*/
|
|
33
|
+
export declare function deleteCardCommand(id: string, force?: boolean): Promise<void>;
|
|
34
|
+
/**
|
|
35
|
+
* Search cards command
|
|
36
|
+
*/
|
|
37
|
+
export declare function searchCardsCommand(query: string): Promise<void>;
|
|
38
|
+
/**
|
|
39
|
+
* Import cards from file command
|
|
40
|
+
*/
|
|
41
|
+
export declare function importCardsCommand(filePath: string): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* Export cards command
|
|
44
|
+
*/
|
|
45
|
+
export declare function exportCardsCommand(options: {
|
|
46
|
+
output?: string;
|
|
47
|
+
}): Promise<void>;
|
|
48
|
+
/**
|
|
49
|
+
* Get due cards command
|
|
50
|
+
*/
|
|
51
|
+
export declare function dueCardsCommand(): Promise<void>;
|
|
52
|
+
//# sourceMappingURL=cards.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../src/commands/cards.ts"],"names":[],"mappings":"AAAA;;GAEG;AAmCH;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqChB;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkB/D;AAED;;GAEG;AACH,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;IACP,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GACA,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhF;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAarE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAYxE;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBpF;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBrD"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Papyrus CLI - Card Management Commands
|
|
3
|
+
*/
|
|
4
|
+
import { readFileSync } from "fs";
|
|
5
|
+
import { createCard, deleteCard, getCard, importCards, listCards, searchCards, updateCard, } from "../api.js";
|
|
6
|
+
import { formatRelativeTime, parseTags, truncate } from "../utils.js";
|
|
7
|
+
/**
|
|
8
|
+
* Display card in formatted output
|
|
9
|
+
*/
|
|
10
|
+
function displayCard(card, detailed = false) {
|
|
11
|
+
console.log(`\n ID: ${card.id}`);
|
|
12
|
+
console.log(` Q: ${card.q}`);
|
|
13
|
+
console.log(` A: ${card.a}`);
|
|
14
|
+
if (card.tags && card.tags.length > 0) {
|
|
15
|
+
console.log(` Tags: ${card.tags.join(", ")}`);
|
|
16
|
+
}
|
|
17
|
+
if (detailed) {
|
|
18
|
+
console.log(` Next Review: ${formatRelativeTime(card.next_review)}`);
|
|
19
|
+
console.log(` Interval: ${Math.round(card.interval / 86400)} days`);
|
|
20
|
+
console.log(` EF: ${card.ef.toFixed(2)}`);
|
|
21
|
+
console.log(` Repetitions: ${card.repetitions}`);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* List all cards command
|
|
26
|
+
*/
|
|
27
|
+
export async function listCardsCommand(options) {
|
|
28
|
+
const cards = await listCards();
|
|
29
|
+
if (cards.length === 0) {
|
|
30
|
+
console.log("No cards found.");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
// Filter by tags if specified
|
|
34
|
+
let filtered = cards;
|
|
35
|
+
if (options.tags) {
|
|
36
|
+
const tags = parseTags(options.tags);
|
|
37
|
+
filtered = cards.filter(c => tags.some(t => c.tags?.includes(t)));
|
|
38
|
+
}
|
|
39
|
+
// Limit if specified
|
|
40
|
+
const limit = options.limit || filtered.length;
|
|
41
|
+
const display = filtered.slice(0, limit);
|
|
42
|
+
console.log(`\nFound ${filtered.length} cards (showing ${display.length}):\n`);
|
|
43
|
+
for (const card of display) {
|
|
44
|
+
console.log(` [${card.id}] ${truncate(card.q, 50)}`);
|
|
45
|
+
if (options.detailed) {
|
|
46
|
+
console.log(` A: ${truncate(card.a, 50)}`);
|
|
47
|
+
if (card.tags?.length) {
|
|
48
|
+
console.log(` Tags: ${card.tags.join(", ")}`);
|
|
49
|
+
}
|
|
50
|
+
console.log(` Next: ${formatRelativeTime(card.next_review)}`);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
if (filtered.length > limit) {
|
|
54
|
+
console.log(`\n ... and ${filtered.length - limit} more`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Show card details command
|
|
59
|
+
*/
|
|
60
|
+
export async function showCardCommand(id) {
|
|
61
|
+
try {
|
|
62
|
+
const card = await getCard(id);
|
|
63
|
+
console.log("\nš Card Details");
|
|
64
|
+
displayCard(card, true);
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
// Try searching if exact ID fails
|
|
68
|
+
const results = await searchCards(id);
|
|
69
|
+
if (results.count > 0) {
|
|
70
|
+
console.log(`\nFound ${results.count} matching card(s):`);
|
|
71
|
+
for (const result of results.results.slice(0, 5)) {
|
|
72
|
+
displayCard(result.card, true);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
console.error(`Card not found: ${id}`);
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Add card command
|
|
83
|
+
*/
|
|
84
|
+
export async function addCardCommand(question, answer, options) {
|
|
85
|
+
const tags = parseTags(options.tags);
|
|
86
|
+
const card = await createCard({
|
|
87
|
+
q: question,
|
|
88
|
+
a: answer,
|
|
89
|
+
tags,
|
|
90
|
+
});
|
|
91
|
+
console.log("\nā
Card created successfully!");
|
|
92
|
+
displayCard(card, true);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Edit card command
|
|
96
|
+
*/
|
|
97
|
+
export async function editCardCommand(id, options) {
|
|
98
|
+
const update = {};
|
|
99
|
+
if (options.question)
|
|
100
|
+
update.q = options.question;
|
|
101
|
+
if (options.answer)
|
|
102
|
+
update.a = options.answer;
|
|
103
|
+
if (options.tags !== undefined)
|
|
104
|
+
update.tags = parseTags(options.tags);
|
|
105
|
+
const card = await updateCard(id, update);
|
|
106
|
+
console.log("\nā
Card updated successfully!");
|
|
107
|
+
displayCard(card, true);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Delete card command
|
|
111
|
+
*/
|
|
112
|
+
export async function deleteCardCommand(id, force = false) {
|
|
113
|
+
const card = await getCard(id);
|
|
114
|
+
if (!force) {
|
|
115
|
+
const { confirm } = await import("../utils.js");
|
|
116
|
+
const confirmed = await confirm(`Delete card "${truncate(card.q, 40)}"?`);
|
|
117
|
+
if (!confirmed) {
|
|
118
|
+
console.log("Cancelled.");
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
await deleteCard(id);
|
|
123
|
+
console.log("\nā
Card deleted successfully!");
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Search cards command
|
|
127
|
+
*/
|
|
128
|
+
export async function searchCardsCommand(query) {
|
|
129
|
+
const results = await searchCards(query);
|
|
130
|
+
if (results.count === 0) {
|
|
131
|
+
console.log("No cards found matching your query.");
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
console.log(`\nFound ${results.count} matching card(s):\n`);
|
|
135
|
+
for (const result of results.results) {
|
|
136
|
+
displayCard(result.card);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Import cards from file command
|
|
141
|
+
*/
|
|
142
|
+
export async function importCardsCommand(filePath) {
|
|
143
|
+
const { isReadableFile } = await import("../utils.js");
|
|
144
|
+
if (!isReadableFile(filePath)) {
|
|
145
|
+
console.error(`File not found or not readable: ${filePath}`);
|
|
146
|
+
process.exit(1);
|
|
147
|
+
}
|
|
148
|
+
const content = readFileSync(filePath, "utf-8");
|
|
149
|
+
const count = await importCards(content);
|
|
150
|
+
console.log(`\nā
Successfully imported ${count} card(s)!`);
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Export cards command
|
|
154
|
+
*/
|
|
155
|
+
export async function exportCardsCommand(options) {
|
|
156
|
+
const cards = await listCards();
|
|
157
|
+
const output = {
|
|
158
|
+
cards,
|
|
159
|
+
exported_at: new Date().toISOString(),
|
|
160
|
+
count: cards.length,
|
|
161
|
+
};
|
|
162
|
+
const json = JSON.stringify(output, null, 2);
|
|
163
|
+
if (options.output) {
|
|
164
|
+
const { writeFileSync } = await import("fs");
|
|
165
|
+
writeFileSync(options.output, json, "utf-8");
|
|
166
|
+
console.log(`\nā
Exported ${cards.length} cards to ${options.output}`);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
console.log(json);
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Get due cards command
|
|
174
|
+
*/
|
|
175
|
+
export async function dueCardsCommand() {
|
|
176
|
+
const cards = await listCards();
|
|
177
|
+
const now = Date.now() / 1000;
|
|
178
|
+
const dueCards = cards.filter(c => c.next_review <= now);
|
|
179
|
+
if (dueCards.length === 0) {
|
|
180
|
+
console.log("\nš No cards are due for review!");
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
console.log(`\nš ${dueCards.length} card(s) due for review:\n`);
|
|
184
|
+
for (const card of dueCards) {
|
|
185
|
+
console.log(` [${card.id}] ${truncate(card.q, 50)}`);
|
|
186
|
+
console.log(` Due: ${formatRelativeTime(card.next_review)}`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=cards.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cards.js","sourceRoot":"","sources":["../../src/commands/cards.ts"],"names":[],"mappings":"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"}
|