@purveyors/cli 0.5.0 → 0.6.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 +292 -32
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +35 -4
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/catalog.d.ts +1 -1
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +41 -5
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +26 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context.d.ts +8 -0
- package/dist/commands/context.d.ts.map +1 -0
- package/dist/commands/context.js +282 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/inventory.d.ts +1 -1
- package/dist/commands/inventory.d.ts.map +1 -1
- package/dist/commands/inventory.js +78 -41
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/roast.d.ts +1 -1
- package/dist/commands/roast.d.ts.map +1 -1
- package/dist/commands/roast.js +112 -63
- package/dist/commands/roast.js.map +1 -1
- package/dist/commands/sales.d.ts +1 -1
- package/dist/commands/sales.d.ts.map +1 -1
- package/dist/commands/sales.js +59 -34
- package/dist/commands/sales.js.map +1 -1
- package/dist/commands/tasting.d.ts +1 -1
- package/dist/commands/tasting.d.ts.map +1 -1
- package/dist/commands/tasting.js +46 -25
- package/dist/commands/tasting.js.map +1 -1
- package/dist/index.js +57 -28
- package/dist/index.js.map +1 -1
- package/dist/lib/ai.js +1 -1
- package/dist/lib/ai.js.map +1 -1
- package/dist/lib/auth-guard.d.ts +14 -0
- package/dist/lib/auth-guard.d.ts.map +1 -0
- package/dist/lib/auth-guard.js +44 -0
- package/dist/lib/auth-guard.js.map +1 -0
- package/dist/lib/supabase.d.ts.map +1 -1
- package/dist/lib/supabase.js +9 -8
- package/dist/lib/supabase.js.map +1 -1
- package/package.json +1 -1
package/dist/commands/roast.js
CHANGED
|
@@ -2,9 +2,9 @@ import { Command } from 'commander';
|
|
|
2
2
|
import * as p from '@clack/prompts';
|
|
3
3
|
import { access, readFile } from 'fs/promises';
|
|
4
4
|
import { basename } from 'path';
|
|
5
|
-
import { createAuthenticatedClient } from '../lib/supabase.js';
|
|
6
5
|
import { outputData, info, success } from '../lib/output.js';
|
|
7
|
-
import { withErrorHandling,
|
|
6
|
+
import { withErrorHandling, PrvrsError } from '../lib/errors.js';
|
|
7
|
+
import { requireAuth } from '../lib/auth-guard.js';
|
|
8
8
|
import { confirm, todayIso } from '../lib/prompts.js';
|
|
9
9
|
import { listRoasts, getRoast, createRoast, deleteRoast, importRoastFromFile, } from '../lib/roast.js';
|
|
10
10
|
import { pickBean, guardCancel } from '../lib/interactive/forms.js';
|
|
@@ -13,7 +13,7 @@ import { getConfigValue } from '../lib/config.js';
|
|
|
13
13
|
// ─── Command builder ──────────────────────────────────────────────────────────
|
|
14
14
|
/**
|
|
15
15
|
* `purvey roast` — Browse and manage your roast profiles.
|
|
16
|
-
* Requires authentication.
|
|
16
|
+
* Requires member+ authentication.
|
|
17
17
|
*/
|
|
18
18
|
export function buildRoastCommand() {
|
|
19
19
|
const roast = new Command('roast').description('Browse and manage your roast profiles');
|
|
@@ -23,14 +23,22 @@ export function buildRoastCommand() {
|
|
|
23
23
|
.description('List your roast profiles, sorted by date (newest first)')
|
|
24
24
|
.option('--coffee-id <id>', 'Filter by green_coffee_inv ID')
|
|
25
25
|
.option('--limit <n>', 'Maximum results to return', '20')
|
|
26
|
+
.addHelpText('after', `
|
|
27
|
+
Examples:
|
|
28
|
+
purvey roast list --pretty
|
|
29
|
+
purvey roast list --coffee-id 7 --pretty
|
|
30
|
+
purvey roast list --limit 5 | jq '.[].roast_id'
|
|
31
|
+
purvey roast list --csv > roasts.csv
|
|
32
|
+
|
|
33
|
+
Notes:
|
|
34
|
+
--coffee-id filters by inventory item (green_coffee_inv.id), not catalog_id.
|
|
35
|
+
Returns roast_id, batch_name, roast_date, oz_in, oz_out, and bean details.
|
|
36
|
+
Requires authentication (member role).
|
|
37
|
+
`)
|
|
26
38
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
27
39
|
const globalOpts = cmd.optsWithGlobals();
|
|
28
|
-
const supabase = await
|
|
29
|
-
const
|
|
30
|
-
if (!user) {
|
|
31
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
32
|
-
}
|
|
33
|
-
const data = await listRoasts(supabase, user.id, {
|
|
40
|
+
const { supabase, userId } = await requireAuth('member');
|
|
41
|
+
const data = await listRoasts(supabase, userId, {
|
|
34
42
|
coffeeId: opts.coffeeId !== undefined ? parseInt(opts.coffeeId, 10) : undefined,
|
|
35
43
|
limit: Math.max(1, parseInt(opts.limit, 10)),
|
|
36
44
|
});
|
|
@@ -46,14 +54,23 @@ export function buildRoastCommand() {
|
|
|
46
54
|
.description('Fetch a single roast profile by roast_id')
|
|
47
55
|
.option('--include-temps', 'Include temperature curve data (roast_temperatures)')
|
|
48
56
|
.option('--include-events', 'Include roast events (roast_events)')
|
|
57
|
+
.addHelpText('after', `
|
|
58
|
+
Examples:
|
|
59
|
+
purvey roast get 123 --pretty
|
|
60
|
+
purvey roast get 123 --include-temps --pretty
|
|
61
|
+
purvey roast get 123 --include-events | jq '.events'
|
|
62
|
+
purvey roast get 123 --include-temps --include-events --csv
|
|
63
|
+
|
|
64
|
+
Notes:
|
|
65
|
+
<id> is roast_data.roast_id (integer).
|
|
66
|
+
--include-temps adds the full temperature curve array (can be large).
|
|
67
|
+
--include-events adds roast event markers (FC start, drop, etc.).
|
|
68
|
+
Requires authentication (member role).
|
|
69
|
+
`)
|
|
49
70
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
50
71
|
const globalOpts = cmd.optsWithGlobals();
|
|
51
|
-
const supabase = await
|
|
52
|
-
const
|
|
53
|
-
if (!user) {
|
|
54
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
55
|
-
}
|
|
56
|
-
const data = await getRoast(supabase, user.id, parseInt(id, 10), {
|
|
72
|
+
const { supabase, userId } = await requireAuth('member');
|
|
73
|
+
const data = await getRoast(supabase, userId, parseInt(id, 10), {
|
|
57
74
|
includeTemps: Boolean(opts.includeTemps),
|
|
58
75
|
includeEvents: Boolean(opts.includeEvents),
|
|
59
76
|
});
|
|
@@ -63,27 +80,36 @@ export function buildRoastCommand() {
|
|
|
63
80
|
roast
|
|
64
81
|
.command('create')
|
|
65
82
|
.description('Create a new roast profile')
|
|
66
|
-
.option('--coffee-id <id>', 'green_coffee_inv ID for this roast')
|
|
83
|
+
.option('--coffee-id <id>', '[REQUIRED] green_coffee_inv ID for this roast')
|
|
67
84
|
.option('--batch-name <name>', "Batch name (defaults to coffee name + today's date)")
|
|
68
85
|
.option('--oz-in <oz>', 'Green weight in ounces')
|
|
69
86
|
.option('--oz-out <oz>', 'Roasted weight in ounces')
|
|
70
87
|
.option('--roast-date <YYYY-MM-DD>', 'Roast date (defaults to today)')
|
|
71
88
|
.option('--notes <text>', 'Roast notes')
|
|
72
|
-
.option('--form', 'Interactive form mode')
|
|
89
|
+
.option('--form', 'Interactive form mode (browse and select bean)')
|
|
90
|
+
.addHelpText('after', `
|
|
91
|
+
Examples:
|
|
92
|
+
purvey roast create --coffee-id 7 --pretty
|
|
93
|
+
purvey roast create --coffee-id 7 --batch-name "Ethiopia Guji Light" --oz-in 16
|
|
94
|
+
purvey roast create --coffee-id 42 --oz-in 12 --oz-out 9.8 --roast-date 2026-03-15
|
|
95
|
+
purvey roast create --coffee-id 7 --notes "Extended drying phase, aimed for medium roast"
|
|
96
|
+
purvey roast create --form # interactive wizard
|
|
97
|
+
|
|
98
|
+
Required flags: --coffee-id (green_coffee_inv.id)
|
|
99
|
+
Use 'purvey inventory list' to find your --coffee-id.
|
|
100
|
+
Prefer 'purvey roast import' if you have an Artisan .alog file.
|
|
101
|
+
Requires authentication (member role).
|
|
102
|
+
`)
|
|
73
103
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
74
104
|
const globalOpts = cmd.optsWithGlobals();
|
|
75
|
-
const supabase = await
|
|
76
|
-
const { data: { user }, } = await supabase.auth.getUser();
|
|
77
|
-
if (!user) {
|
|
78
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
79
|
-
}
|
|
105
|
+
const { supabase, userId } = await requireAuth('member');
|
|
80
106
|
// ── Interactive form mode ──────────────────────────────────────────
|
|
81
107
|
// Auto-enter form mode if config form-mode is true and required args are missing
|
|
82
108
|
const formMode = opts.form ||
|
|
83
109
|
(!(opts.coffeeId && opts.roastDate) && (await getConfigValue('form-mode')) === 'true');
|
|
84
110
|
if (formMode) {
|
|
85
111
|
p.intro('Create Roast Profile');
|
|
86
|
-
const bean = await pickBean(supabase,
|
|
112
|
+
const bean = await pickBean(supabase, userId);
|
|
87
113
|
const today = todayIso();
|
|
88
114
|
const defaultBatch = `${bean.name} ${today}`;
|
|
89
115
|
const batchNameRaw = await p.text({
|
|
@@ -128,7 +154,7 @@ export function buildRoastCommand() {
|
|
|
128
154
|
undefined;
|
|
129
155
|
const spin = p.spinner();
|
|
130
156
|
spin.start('Creating roast profile...');
|
|
131
|
-
const data = await createRoast(supabase,
|
|
157
|
+
const data = await createRoast(supabase, userId, {
|
|
132
158
|
coffeeId: bean.id,
|
|
133
159
|
batchName: String(batchNameRaw).trim() || defaultBatch,
|
|
134
160
|
ozIn,
|
|
@@ -160,7 +186,7 @@ export function buildRoastCommand() {
|
|
|
160
186
|
if (isNaN(ozOut) || ozOut <= 0)
|
|
161
187
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --oz-out: "${opts.ozOut}".`);
|
|
162
188
|
}
|
|
163
|
-
const data = await createRoast(supabase,
|
|
189
|
+
const data = await createRoast(supabase, userId, {
|
|
164
190
|
coffeeId,
|
|
165
191
|
batchName: opts.batchName,
|
|
166
192
|
ozIn,
|
|
@@ -176,13 +202,18 @@ export function buildRoastCommand() {
|
|
|
176
202
|
.command('delete <id>')
|
|
177
203
|
.description('Delete a roast profile (must be yours)')
|
|
178
204
|
.option('-y, --yes', 'Skip confirmation prompt')
|
|
205
|
+
.addHelpText('after', `
|
|
206
|
+
Examples:
|
|
207
|
+
purvey roast delete 123 # prompts for confirmation
|
|
208
|
+
purvey roast delete 123 --yes # skip confirmation (use in scripts)
|
|
209
|
+
|
|
210
|
+
Notes:
|
|
211
|
+
Permanently deletes the roast profile and associated temperature/event data.
|
|
212
|
+
Cannot be undone. Requires authentication (member role).
|
|
213
|
+
`)
|
|
179
214
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
180
215
|
void cmd;
|
|
181
|
-
const supabase = await
|
|
182
|
-
const { data: { user }, } = await supabase.auth.getUser();
|
|
183
|
-
if (!user) {
|
|
184
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
185
|
-
}
|
|
216
|
+
const { supabase, userId } = await requireAuth('member');
|
|
186
217
|
const roastId = parseInt(id, 10);
|
|
187
218
|
if (isNaN(roastId)) {
|
|
188
219
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid roast ID: "${id}".`);
|
|
@@ -194,7 +225,7 @@ export function buildRoastCommand() {
|
|
|
194
225
|
return;
|
|
195
226
|
}
|
|
196
227
|
}
|
|
197
|
-
await deleteRoast(supabase,
|
|
228
|
+
await deleteRoast(supabase, userId, roastId);
|
|
198
229
|
success(`Roast profile ${roastId} deleted.`);
|
|
199
230
|
}));
|
|
200
231
|
// ── roast import <file> ───────────────────────────────────────────────────
|
|
@@ -202,11 +233,25 @@ export function buildRoastCommand() {
|
|
|
202
233
|
.command('import')
|
|
203
234
|
.description('Import an Artisan .alog file and create a new roast profile')
|
|
204
235
|
.argument('[file]', 'Path to .alog file (or use --form for interactive mode)')
|
|
205
|
-
.option('--coffee-id <id>', 'green_coffee_inv ID for this roast')
|
|
236
|
+
.option('--coffee-id <id>', '[REQUIRED] green_coffee_inv ID for this roast')
|
|
206
237
|
.option('--batch-name <name>', 'Batch name (auto-generated from coffee name + date if omitted)')
|
|
207
238
|
.option('--oz-in <oz>', 'Green weight in ounces (extracted from .alog if omitted)')
|
|
208
239
|
.option('--roast-notes <notes>', 'Additional roast notes')
|
|
209
|
-
.option('--form', 'Interactive form mode')
|
|
240
|
+
.option('--form', 'Interactive form mode (browse and select bean)')
|
|
241
|
+
.addHelpText('after', `
|
|
242
|
+
Examples:
|
|
243
|
+
purvey roast import ~/artisan/ethiopia-guji.alog --coffee-id 7 --pretty
|
|
244
|
+
purvey roast import roast.alog --coffee-id 42 --oz-in 16
|
|
245
|
+
purvey roast import roast.alog --coffee-id 7 --batch-name "Ethiopia Guji #3" --roast-notes "Faster development"
|
|
246
|
+
purvey roast import --form # interactive wizard (browse files + select bean)
|
|
247
|
+
|
|
248
|
+
Required: <file> path and --coffee-id (unless using --form)
|
|
249
|
+
.alog files are exported from Artisan roast logging software.
|
|
250
|
+
Imports temperature curve, roast events, and milestone timing.
|
|
251
|
+
oz-in is auto-extracted from the .alog file if present; --oz-in overrides it.
|
|
252
|
+
Use 'purvey inventory list' to find your --coffee-id.
|
|
253
|
+
Requires authentication (member role).
|
|
254
|
+
`)
|
|
210
255
|
.action(withErrorHandling(async (file, opts, cmd) => {
|
|
211
256
|
const globalOpts = cmd.optsWithGlobals();
|
|
212
257
|
// ── Interactive form mode ────────────────────────────────────────
|
|
@@ -233,12 +278,8 @@ export function buildRoastCommand() {
|
|
|
233
278
|
process.exit(1);
|
|
234
279
|
}
|
|
235
280
|
// Authenticate
|
|
236
|
-
const supabase = await
|
|
237
|
-
const
|
|
238
|
-
if (!user) {
|
|
239
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
240
|
-
}
|
|
241
|
-
const bean = await pickBean(supabase, user.id);
|
|
281
|
+
const { supabase, userId } = await requireAuth('member');
|
|
282
|
+
const bean = await pickBean(supabase, userId);
|
|
242
283
|
const today = todayIso();
|
|
243
284
|
const defaultBatch = `${bean.name} ${today}`;
|
|
244
285
|
const batchNameRaw = await p.text({
|
|
@@ -278,7 +319,7 @@ export function buildRoastCommand() {
|
|
|
278
319
|
const notesStr = String(roastNotesRaw).trim();
|
|
279
320
|
const spin = p.spinner();
|
|
280
321
|
spin.start('Importing roast data...');
|
|
281
|
-
const result = await importRoastFromFile(supabase,
|
|
322
|
+
const result = await importRoastFromFile(supabase, userId, {
|
|
282
323
|
fileContent,
|
|
283
324
|
fileName,
|
|
284
325
|
coffeeId: bean.id,
|
|
@@ -306,11 +347,7 @@ export function buildRoastCommand() {
|
|
|
306
347
|
const fileContent = await readFile(file, 'utf-8');
|
|
307
348
|
const fileName = basename(file);
|
|
308
349
|
// 3. Authenticate
|
|
309
|
-
const supabase = await
|
|
310
|
-
const { data: { user }, } = await supabase.auth.getUser();
|
|
311
|
-
if (!user) {
|
|
312
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
313
|
-
}
|
|
350
|
+
const { supabase, userId } = await requireAuth('member');
|
|
314
351
|
// 4. Parse --coffee-id
|
|
315
352
|
if (!opts.coffeeId) {
|
|
316
353
|
throw new PrvrsError('INVALID_ARGUMENT', 'Missing --coffee-id. Use --form for interactive mode.');
|
|
@@ -328,7 +365,7 @@ export function buildRoastCommand() {
|
|
|
328
365
|
}
|
|
329
366
|
}
|
|
330
367
|
// 6. Run the import
|
|
331
|
-
const result = await importRoastFromFile(supabase,
|
|
368
|
+
const result = await importRoastFromFile(supabase, userId, {
|
|
332
369
|
fileContent,
|
|
333
370
|
fileName,
|
|
334
371
|
coffeeId,
|
|
@@ -350,25 +387,37 @@ export function buildRoastCommand() {
|
|
|
350
387
|
.command('watch')
|
|
351
388
|
.description('Watch a directory for new .alog files and auto-import them')
|
|
352
389
|
.argument('[directory]', 'Directory to watch for .alog files')
|
|
353
|
-
.option('--coffee-id <id>', 'green_coffee_inv ID for all imports')
|
|
354
|
-
.option('--batch-prefix <name>', 'Batch name prefix (defaults to coffee name)')
|
|
355
|
-
.option('--prompt-each', 'Prompt for bean selection on each new file')
|
|
356
|
-
.option('--auto-match', 'Use AI to auto-match beans (
|
|
357
|
-
.option('--resume', 'Resume a previous watch session')
|
|
358
|
-
.option('--form', 'Interactive form mode')
|
|
390
|
+
.option('--coffee-id <id>', '[REQUIRED unless --auto-match] green_coffee_inv ID for all imports')
|
|
391
|
+
.option('--batch-prefix <name>', 'Batch name prefix for auto-named batches (defaults to coffee name)')
|
|
392
|
+
.option('--prompt-each', 'Prompt for bean selection on each new file (instead of using --coffee-id)')
|
|
393
|
+
.option('--auto-match', 'Use AI to auto-match beans per file (mutually exclusive with --coffee-id)')
|
|
394
|
+
.option('--resume', 'Resume a previous watch session from where it left off')
|
|
395
|
+
.option('--form', 'Interactive form mode (prompts for directory + bean selection)')
|
|
396
|
+
.addHelpText('after', `
|
|
397
|
+
Examples:
|
|
398
|
+
purvey roast watch ~/artisan/ --coffee-id 7
|
|
399
|
+
purvey roast watch ~/artisan/ --coffee-id 42 --batch-prefix "Colombia Huila"
|
|
400
|
+
purvey roast watch ~/artisan/ --auto-match
|
|
401
|
+
purvey roast watch ~/artisan/ --prompt-each
|
|
402
|
+
purvey roast watch --resume # continue a previous session
|
|
403
|
+
purvey roast watch --form # interactive setup wizard
|
|
404
|
+
|
|
405
|
+
Notes:
|
|
406
|
+
Runs continuously until Ctrl+C. New .alog files detected in the directory
|
|
407
|
+
are automatically imported as roast profiles.
|
|
408
|
+
--auto-match and --coffee-id are mutually exclusive.
|
|
409
|
+
Session state is saved for --resume.
|
|
410
|
+
Requires authentication (member role).
|
|
411
|
+
`)
|
|
359
412
|
.action(withErrorHandling(async (directory, opts) => {
|
|
360
|
-
const supabase = await
|
|
361
|
-
const { data: { user }, } = await supabase.auth.getUser();
|
|
362
|
-
if (!user) {
|
|
363
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
364
|
-
}
|
|
413
|
+
const { supabase, userId } = await requireAuth('member');
|
|
365
414
|
// ── Resume mode ──────────────────────────────────────────────────────
|
|
366
415
|
if (opts.resume) {
|
|
367
416
|
const saved = await loadWatchSession();
|
|
368
417
|
if (!saved) {
|
|
369
418
|
throw new PrvrsError('NOT_FOUND', 'No watch session to resume. Start a new one with: purvey roast watch <dir> --coffee-id <id>');
|
|
370
419
|
}
|
|
371
|
-
await startWatch(supabase,
|
|
420
|
+
await startWatch(supabase, userId, saved.directory, {
|
|
372
421
|
coffeeId: saved.coffeeId,
|
|
373
422
|
coffeeName: saved.coffeeName,
|
|
374
423
|
batchPrefix: saved.batchPrefix,
|
|
@@ -419,7 +468,7 @@ export function buildRoastCommand() {
|
|
|
419
468
|
batchPrefix = String(batchPrefixRaw).trim() || 'Roast';
|
|
420
469
|
}
|
|
421
470
|
else {
|
|
422
|
-
const bean = await pickBean(supabase,
|
|
471
|
+
const bean = await pickBean(supabase, userId);
|
|
423
472
|
watchCoffeeId = bean.id;
|
|
424
473
|
watchCoffeeName = bean.name;
|
|
425
474
|
const batchPrefixRaw = await p.text({
|
|
@@ -438,7 +487,7 @@ export function buildRoastCommand() {
|
|
|
438
487
|
});
|
|
439
488
|
if (typeof promptEachRaw !== 'boolean')
|
|
440
489
|
guardCancel(promptEachRaw);
|
|
441
|
-
await startWatch(supabase,
|
|
490
|
+
await startWatch(supabase, userId, watchDir, {
|
|
442
491
|
coffeeId: watchCoffeeId,
|
|
443
492
|
coffeeName: watchCoffeeName,
|
|
444
493
|
batchPrefix,
|
|
@@ -476,17 +525,17 @@ export function buildRoastCommand() {
|
|
|
476
525
|
.from('green_coffee_inv')
|
|
477
526
|
.select('id, coffee_catalog!catalog_id (name)')
|
|
478
527
|
.eq('id', coffeeId)
|
|
479
|
-
.eq('user',
|
|
528
|
+
.eq('user', userId)
|
|
480
529
|
.single();
|
|
481
530
|
if (invError || !invItem) {
|
|
482
|
-
throw new
|
|
531
|
+
throw new PrvrsError('NOT_FOUND', `Inventory item ${coffeeId} not found or does not belong to you.`);
|
|
483
532
|
}
|
|
484
533
|
const catalogRaw = invItem.coffee_catalog;
|
|
485
534
|
const catalog = Array.isArray(catalogRaw) ? (catalogRaw[0] ?? null) : catalogRaw;
|
|
486
535
|
coffeeName = catalog?.name ?? `Coffee #${coffeeId}`;
|
|
487
536
|
}
|
|
488
537
|
const batchPrefix = opts.batchPrefix ?? coffeeName;
|
|
489
|
-
await startWatch(supabase,
|
|
538
|
+
await startWatch(supabase, userId, directory, {
|
|
490
539
|
coffeeId,
|
|
491
540
|
coffeeName,
|
|
492
541
|
batchPrefix,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roast.js","sourceRoot":"","sources":["../../src/commands/roast.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"roast.js","sourceRoot":"","sources":["../../src/commands/roast.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/sales.d.ts
CHANGED
|
@@ -3,7 +3,7 @@ import type { Sale } from '../lib/sales.js';
|
|
|
3
3
|
export type { Sale };
|
|
4
4
|
/**
|
|
5
5
|
* `purvey sales` — Record and manage coffee sales.
|
|
6
|
-
* Requires authentication.
|
|
6
|
+
* Requires member+ authentication.
|
|
7
7
|
*/
|
|
8
8
|
export declare function buildSalesCommand(): Command;
|
|
9
9
|
//# sourceMappingURL=sales.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sales.d.ts","sourceRoot":"","sources":["../../src/commands/sales.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAM5C,YAAY,EAAE,IAAI,EAAE,CAAC;AAIrB;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"sales.d.ts","sourceRoot":"","sources":["../../src/commands/sales.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAM5C,YAAY,EAAE,IAAI,EAAE,CAAC;AAIrB;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CA0S3C"}
|
package/dist/commands/sales.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
2
|
import * as p from '@clack/prompts';
|
|
3
|
-
import { createAuthenticatedClient } from '../lib/supabase.js';
|
|
4
3
|
import { outputData, info, success } from '../lib/output.js';
|
|
5
|
-
import { withErrorHandling,
|
|
4
|
+
import { withErrorHandling, PrvrsError } from '../lib/errors.js';
|
|
5
|
+
import { requireAuth } from '../lib/auth-guard.js';
|
|
6
6
|
import { confirm, todayIso } from '../lib/prompts.js';
|
|
7
7
|
import { listSales, recordSale, updateSale, deleteSale } from '../lib/sales.js';
|
|
8
8
|
import { pickRoast, guardCancel } from '../lib/interactive/forms.js';
|
|
@@ -10,7 +10,7 @@ import { getConfigValue } from '../lib/config.js';
|
|
|
10
10
|
// ─── Command builder ──────────────────────────────────────────────────────────
|
|
11
11
|
/**
|
|
12
12
|
* `purvey sales` — Record and manage coffee sales.
|
|
13
|
-
* Requires authentication.
|
|
13
|
+
* Requires member+ authentication.
|
|
14
14
|
*/
|
|
15
15
|
export function buildSalesCommand() {
|
|
16
16
|
const sales = new Command('sales').description('Record and manage coffee sales');
|
|
@@ -19,14 +19,20 @@ export function buildSalesCommand() {
|
|
|
19
19
|
.command('list')
|
|
20
20
|
.description('List your sales, sorted by sell date (newest first)')
|
|
21
21
|
.option('--limit <n>', 'Maximum results to return', '20')
|
|
22
|
+
.addHelpText('after', `
|
|
23
|
+
Examples:
|
|
24
|
+
purvey sales list --pretty
|
|
25
|
+
purvey sales list --limit 50 | jq '.[].id'
|
|
26
|
+
purvey sales list --csv > sales.csv
|
|
27
|
+
|
|
28
|
+
Notes:
|
|
29
|
+
Returns all your sale records with roast_id, oz, price, buyer, and sell_date.
|
|
30
|
+
Requires authentication (member role).
|
|
31
|
+
`)
|
|
22
32
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
23
33
|
const globalOpts = cmd.optsWithGlobals();
|
|
24
|
-
const supabase = await
|
|
25
|
-
const
|
|
26
|
-
if (!user) {
|
|
27
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
28
|
-
}
|
|
29
|
-
const data = await listSales(supabase, user.id, {
|
|
34
|
+
const { supabase, userId } = await requireAuth('member');
|
|
35
|
+
const data = await listSales(supabase, userId, {
|
|
30
36
|
limit: Math.max(1, parseInt(opts.limit, 10)),
|
|
31
37
|
});
|
|
32
38
|
if (data.length === 0) {
|
|
@@ -39,20 +45,28 @@ export function buildSalesCommand() {
|
|
|
39
45
|
sales
|
|
40
46
|
.command('record')
|
|
41
47
|
.description('Record a new sale')
|
|
42
|
-
.option('--roast-id <id>', 'Roast profile ID')
|
|
43
|
-
.option('--oz <amount>', 'Ounces sold')
|
|
44
|
-
.option('--price <dollars>', 'Sale price in dollars')
|
|
45
|
-
.option('--buyer <name>', 'Buyer name or identifier')
|
|
48
|
+
.option('--roast-id <id>', '[REQUIRED] Roast profile ID (roast_data.roast_id)')
|
|
49
|
+
.option('--oz <amount>', '[REQUIRED] Ounces sold')
|
|
50
|
+
.option('--price <dollars>', '[REQUIRED] Sale price in dollars')
|
|
51
|
+
.option('--buyer <name>', 'Buyer name or identifier (optional)')
|
|
46
52
|
// NOTE: --notes omitted; sales table has no notes column yet. See phase3 plan doc.
|
|
47
53
|
.option('--sell-date <YYYY-MM-DD>', 'Sale date (defaults to today)')
|
|
48
|
-
.option('--form', 'Interactive form mode')
|
|
54
|
+
.option('--form', 'Interactive form mode (browse and select roast)')
|
|
55
|
+
.addHelpText('after', `
|
|
56
|
+
Examples:
|
|
57
|
+
purvey sales record --roast-id 123 --oz 12 --price 22.00 --pretty
|
|
58
|
+
purvey sales record --roast-id 123 --oz 8 --price 16.00 --buyer "Jane Smith"
|
|
59
|
+
purvey sales record --roast-id 45 --oz 16 --price 28.00 --sell-date 2026-03-10
|
|
60
|
+
purvey sales record --form # interactive wizard (browse roasts)
|
|
61
|
+
|
|
62
|
+
Required flags: --roast-id, --oz, --price
|
|
63
|
+
Use 'purvey roast list' to find your --roast-id.
|
|
64
|
+
--price is the total sale price (not per-oz).
|
|
65
|
+
Requires authentication (member role).
|
|
66
|
+
`)
|
|
49
67
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
50
68
|
const globalOpts = cmd.optsWithGlobals();
|
|
51
|
-
const supabase = await
|
|
52
|
-
const { data: { user }, } = await supabase.auth.getUser();
|
|
53
|
-
if (!user) {
|
|
54
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
55
|
-
}
|
|
69
|
+
const { supabase, userId } = await requireAuth('member');
|
|
56
70
|
// ── Interactive form mode ──────────────────────────────────────────
|
|
57
71
|
// Auto-enter form mode if config form-mode is true and required args are missing
|
|
58
72
|
const formMode = opts.form ||
|
|
@@ -93,10 +107,10 @@ export function buildSalesCommand() {
|
|
|
93
107
|
}
|
|
94
108
|
const buyerStr = String(buyerRaw).trim();
|
|
95
109
|
// Let user pick the specific roast batch to attribute this sale to.
|
|
96
|
-
const roast = await pickRoast(supabase,
|
|
110
|
+
const roast = await pickRoast(supabase, userId);
|
|
97
111
|
const spin = p.spinner();
|
|
98
112
|
spin.start('Recording sale...');
|
|
99
|
-
const data = await recordSale(supabase,
|
|
113
|
+
const data = await recordSale(supabase, userId, {
|
|
100
114
|
roastId: roast.id,
|
|
101
115
|
oz: parseFloat(String(ozRaw)),
|
|
102
116
|
price: parseFloat(String(priceRaw)),
|
|
@@ -130,7 +144,7 @@ export function buildSalesCommand() {
|
|
|
130
144
|
if (isNaN(price) || price < 0) {
|
|
131
145
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid --price: "${opts.price}". Must be a non-negative number.`);
|
|
132
146
|
}
|
|
133
|
-
const data = await recordSale(supabase,
|
|
147
|
+
const data = await recordSale(supabase, userId, {
|
|
134
148
|
roastId,
|
|
135
149
|
oz,
|
|
136
150
|
price,
|
|
@@ -148,13 +162,19 @@ export function buildSalesCommand() {
|
|
|
148
162
|
.option('--price <dollars>', 'Updated sale price')
|
|
149
163
|
.option('--buyer <name>', 'Updated buyer name')
|
|
150
164
|
.option('--sell-date <YYYY-MM-DD>', 'Updated sale date')
|
|
165
|
+
.addHelpText('after', `
|
|
166
|
+
Examples:
|
|
167
|
+
purvey sales update 5 --price 24.00
|
|
168
|
+
purvey sales update 5 --oz 10 --price 18.00
|
|
169
|
+
purvey sales update 5 --buyer "Coffee Shop A" --sell-date 2026-03-12
|
|
170
|
+
|
|
171
|
+
Notes:
|
|
172
|
+
At least one flag required. Pass only the fields you want to change.
|
|
173
|
+
Requires authentication (member role).
|
|
174
|
+
`)
|
|
151
175
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
152
176
|
const globalOpts = cmd.optsWithGlobals();
|
|
153
|
-
const supabase = await
|
|
154
|
-
const { data: { user }, } = await supabase.auth.getUser();
|
|
155
|
-
if (!user) {
|
|
156
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
157
|
-
}
|
|
177
|
+
const { supabase, userId } = await requireAuth('member');
|
|
158
178
|
const saleId = parseInt(id, 10);
|
|
159
179
|
if (isNaN(saleId)) {
|
|
160
180
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid sale ID: "${id}".`);
|
|
@@ -177,7 +197,7 @@ export function buildSalesCommand() {
|
|
|
177
197
|
opts.sellDate === undefined) {
|
|
178
198
|
throw new PrvrsError('INVALID_ARGUMENT', 'No update fields provided. Pass at least one of: --oz, --price, --buyer, --sell-date.');
|
|
179
199
|
}
|
|
180
|
-
const data = await updateSale(supabase,
|
|
200
|
+
const data = await updateSale(supabase, userId, saleId, {
|
|
181
201
|
oz,
|
|
182
202
|
price,
|
|
183
203
|
buyer: opts.buyer,
|
|
@@ -191,13 +211,18 @@ export function buildSalesCommand() {
|
|
|
191
211
|
.command('delete <id>')
|
|
192
212
|
.description('Delete a sale (must be yours)')
|
|
193
213
|
.option('-y, --yes', 'Skip confirmation prompt')
|
|
214
|
+
.addHelpText('after', `
|
|
215
|
+
Examples:
|
|
216
|
+
purvey sales delete 5 # prompts for confirmation
|
|
217
|
+
purvey sales delete 5 --yes # skip confirmation (use in scripts)
|
|
218
|
+
|
|
219
|
+
Notes:
|
|
220
|
+
Permanently deletes the sale record. Cannot be undone.
|
|
221
|
+
Requires authentication (member role).
|
|
222
|
+
`)
|
|
194
223
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
195
224
|
void cmd;
|
|
196
|
-
const supabase = await
|
|
197
|
-
const { data: { user }, } = await supabase.auth.getUser();
|
|
198
|
-
if (!user) {
|
|
199
|
-
throw new AuthError('Not logged in. Run `purvey auth login` first.');
|
|
200
|
-
}
|
|
225
|
+
const { supabase, userId } = await requireAuth('member');
|
|
201
226
|
const saleId = parseInt(id, 10);
|
|
202
227
|
if (isNaN(saleId)) {
|
|
203
228
|
throw new PrvrsError('INVALID_ARGUMENT', `Invalid sale ID: "${id}".`);
|
|
@@ -209,7 +234,7 @@ export function buildSalesCommand() {
|
|
|
209
234
|
return;
|
|
210
235
|
}
|
|
211
236
|
}
|
|
212
|
-
await deleteSale(supabase,
|
|
237
|
+
await deleteSale(supabase, userId, saleId);
|
|
213
238
|
success(`Sale ${saleId} deleted.`);
|
|
214
239
|
}));
|
|
215
240
|
return sales;
|