@purveyors/cli 0.24.0 → 0.27.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 (74) hide show
  1. package/README.md +87 -19
  2. package/dist/commands/catalog.d.ts.map +1 -1
  3. package/dist/commands/catalog.js +11 -47
  4. package/dist/commands/catalog.js.map +1 -1
  5. package/dist/commands/inventory.d.ts.map +1 -1
  6. package/dist/commands/inventory.js +17 -44
  7. package/dist/commands/inventory.js.map +1 -1
  8. package/dist/commands/market.d.ts +8 -0
  9. package/dist/commands/market.d.ts.map +1 -0
  10. package/dist/commands/market.js +190 -0
  11. package/dist/commands/market.js.map +1 -0
  12. package/dist/commands/roast.d.ts +3 -0
  13. package/dist/commands/roast.d.ts.map +1 -1
  14. package/dist/commands/roast.js +15 -11
  15. package/dist/commands/roast.js.map +1 -1
  16. package/dist/commands/sales.d.ts.map +1 -1
  17. package/dist/commands/sales.js +15 -11
  18. package/dist/commands/sales.js.map +1 -1
  19. package/dist/commands/tasting.d.ts.map +1 -1
  20. package/dist/commands/tasting.js +1 -2
  21. package/dist/commands/tasting.js.map +1 -1
  22. package/dist/lib/auth-guard.d.ts.map +1 -1
  23. package/dist/lib/auth-guard.js +14 -6
  24. package/dist/lib/auth-guard.js.map +1 -1
  25. package/dist/lib/catalog.d.ts +12 -14
  26. package/dist/lib/catalog.d.ts.map +1 -1
  27. package/dist/lib/catalog.js +177 -520
  28. package/dist/lib/catalog.js.map +1 -1
  29. package/dist/lib/index.d.ts +1 -0
  30. package/dist/lib/index.d.ts.map +1 -1
  31. package/dist/lib/index.js +1 -0
  32. package/dist/lib/index.js.map +1 -1
  33. package/dist/lib/interactive/forms.d.ts +1 -1
  34. package/dist/lib/interactive/forms.d.ts.map +1 -1
  35. package/dist/lib/interactive/forms.js +3 -10
  36. package/dist/lib/interactive/forms.js.map +1 -1
  37. package/dist/lib/inventory.d.ts +8 -16
  38. package/dist/lib/inventory.d.ts.map +1 -1
  39. package/dist/lib/inventory.js +44 -227
  40. package/dist/lib/inventory.js.map +1 -1
  41. package/dist/lib/manifest.d.ts.map +1 -1
  42. package/dist/lib/manifest.js +91 -16
  43. package/dist/lib/manifest.js.map +1 -1
  44. package/dist/lib/market.d.ts +239 -0
  45. package/dist/lib/market.d.ts.map +1 -0
  46. package/dist/lib/market.js +29 -0
  47. package/dist/lib/market.js.map +1 -0
  48. package/dist/lib/parchment-base.d.ts +3 -0
  49. package/dist/lib/parchment-base.d.ts.map +1 -0
  50. package/dist/lib/parchment-base.js +9 -0
  51. package/dist/lib/parchment-base.js.map +1 -0
  52. package/dist/lib/parchment.d.ts +10 -1
  53. package/dist/lib/parchment.d.ts.map +1 -1
  54. package/dist/lib/parchment.js +18 -7
  55. package/dist/lib/parchment.js.map +1 -1
  56. package/dist/lib/roast.d.ts +16 -24
  57. package/dist/lib/roast.d.ts.map +1 -1
  58. package/dist/lib/roast.js +33 -224
  59. package/dist/lib/roast.js.map +1 -1
  60. package/dist/lib/sales.d.ts +12 -6
  61. package/dist/lib/sales.d.ts.map +1 -1
  62. package/dist/lib/sales.js +13 -27
  63. package/dist/lib/sales.js.map +1 -1
  64. package/dist/lib/supabase.d.ts.map +1 -1
  65. package/dist/lib/supabase.js +14 -9
  66. package/dist/lib/supabase.js.map +1 -1
  67. package/dist/lib/tasting.d.ts +1 -1
  68. package/dist/lib/tasting.d.ts.map +1 -1
  69. package/dist/lib/tasting.js +5 -53
  70. package/dist/lib/tasting.js.map +1 -1
  71. package/dist/program.d.ts.map +1 -1
  72. package/dist/program.js +6 -1
  73. package/dist/program.js.map +1 -1
  74. package/package.json +3 -2
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Coffee intelligence from your terminal.
4
4
 
5
- `purvey` is the official CLI for [purveyors.io](https://purveyors.io). It gives coffee professionals, developers, and AI agents direct access to the Purveyors platform from the terminal: catalog search, price-index snapshots, procurement brief reads, inventory tracking, roast logging, sales records, tasting notes, and Artisan `.alog` import.
5
+ `purvey` is the official CLI for [purveyors.io](https://purveyors.io). It gives coffee professionals, developers, and AI agents direct access to the Purveyors platform from the terminal: catalog search, Market Index intelligence, price-index snapshots, procurement brief reads, inventory tracking, roast logging, sales records, tasting notes, and Artisan `.alog` import.
6
6
 
7
7
  Use `purvey --help` for quick command discovery, `purvey context` for the dense human-readable operator reference, `purvey manifest` for the preferred machine-readable contract, or `@purveyors/cli/manifest` in-process.
8
8
 
@@ -14,6 +14,7 @@ Use `purvey --help` for quick command discovery, `purvey context` for the dense
14
14
  - No pre-existing session required: `auth`, `config`, `context`, `manifest`
15
15
  - Viewer role required: `catalog` (excluding structured process filters on `catalog search`)
16
16
  - Member role required: `price-index`, `procurement`, `inventory`, `roast`, `sales`, `tasting`
17
+ - Mixed public and entitled access: `market` public teaser slices are unauthenticated; filtered slices require Parchment Intelligence access
17
18
  - Preferred machine-readable contract: `purvey manifest`
18
19
  - Dense human-readable reference: `purvey context`
19
20
  - Compatibility JSON alias: `purvey context --json`
@@ -79,16 +80,19 @@ purvey catalog search --origin "Ethiopia" --stocked --pretty
79
80
  # Example with structured process filters and proof output
80
81
  purvey catalog search --origin "Ethiopia" --processing-base-method "Washed" --include-proof --pretty
81
82
 
82
- # 4. Check inventory (requires member role)
83
+ # 4. Read a public Market Index teaser slice
84
+ purvey market signals --summary --pretty
85
+
86
+ # 5. Check inventory (requires member role)
83
87
  purvey inventory list --stocked --pretty
84
88
 
85
- # 5. Import a roast from Artisan
89
+ # 6. Import a roast from Artisan
86
90
  purvey roast import ~/artisan/my-roast.alog --coffee-id 7 --pretty
87
91
 
88
- # 6. Get the machine-readable CLI contract
92
+ # 7. Get the machine-readable CLI contract
89
93
  purvey manifest
90
94
 
91
- # 7. Get the dense readable CLI reference
95
+ # 8. Get the dense readable CLI reference
92
96
  purvey context
93
97
  ```
94
98
 
@@ -109,6 +113,7 @@ The npm package is both a binary and a shared TypeScript product surface. `coffe
109
113
  | -------------------------- | ------------------------------------------------------------------------------------ |
110
114
  | `@purveyors/cli` | CLI entrypoint package root |
111
115
  | `@purveyors/cli/catalog` | Catalog search, lookup, stats, premium ranking, supplier aggregates, similar coffees |
116
+ | `@purveyors/cli/market` | Market Index value signals, movement stats, and metadata trends |
112
117
  | `@purveyors/cli/inventory` | Green coffee inventory operations |
113
118
  | `@purveyors/cli/roast` | Roast profile operations |
114
119
  | `@purveyors/cli/sales` | Sales record operations |
@@ -130,14 +135,21 @@ Export discipline:
130
135
 
131
136
  No pre-existing session is required for `auth`, `config`, `context`, or `manifest`.
132
137
 
133
- All remote data commands require a valid authenticated session:
138
+ Remote data commands require either a valid authenticated session or, for canonical
139
+ Parchment API surfaces, an owner-bound API key with the required scope:
134
140
 
135
141
  - `catalog` requires the `viewer` role by default
136
142
  - `catalog search` structured process filters require the `member` role under the current session-authenticated CLI path
143
+ - `market` has public teaser slices for `signals --summary`, unfiltered retail `stats`, and process/retail/month `metadata`; all filtered or non-public slices require Parchment Intelligence access enforced server-side
137
144
  - `price-index`, `procurement`, `inventory`, `roast`, `sales`, and `tasting` require the `member` role under the session-authenticated CLI path
138
145
 
139
146
  `purvey` uses Google OAuth through purveyors.io.
140
147
 
148
+ Set `PARCHMENT_API_KEY` (or `PURVEYORS_API_KEY`) to authenticate SDK-backed catalog,
149
+ inventory, tasting-read, market, price-index, and procurement operations without using
150
+ the stored session JWT. API-key credentials take precedence. Roast, sales, and
151
+ `tasting rate` still use the session-backed migration path in this release.
152
+
141
153
  Interactive login:
142
154
 
143
155
  ```bash
@@ -178,6 +190,8 @@ Credentials are stored at `~/.config/purvey/credentials.json`.
178
190
  | `viewer` | `catalog search`, `catalog get`, `catalog stats`, excluding structured process filters |
179
191
  | `member` | All viewer commands, `catalog similar`, structured process filters on `catalog search`, plus `price-index`, `procurement`, `inventory`, `roast`, `sales`, `tasting` under the session-authenticated CLI path |
180
192
 
193
+ Market Index teaser slices are public. Filtered `market signals`, origin/process/wholesale `market stats`, and non-public `market metadata` slices require Parchment Intelligence access; API-key and session-token denial is enforced by the canonical API.
194
+
181
195
  `auth`, `config`, `context`, and `manifest` remain available without a pre-existing session.
182
196
 
183
197
  Commands that require a higher role exit with code `3` on auth failure. That includes not being signed in, an expired session, or an insufficient role.
@@ -334,7 +348,6 @@ Notes:
334
348
 
335
349
  - Fields: `supplier`, `country`, `processing_base_method`, `fermentation_type`, `drying_method`, `grade`, `wholesale`
336
350
  - `--all`; use all visible catalog rows instead of the default stocked-only scope.
337
- - `--sample-size <n>`; catalog rows to sample before counting, default `5000`, max `5000`
338
351
  - `--limit <n>`; default `60`, max `100`
339
352
 
340
353
  `catalog rank` options:
@@ -402,7 +415,7 @@ Notes:
402
415
  - If you want proof output against an API-key deployment, set `PARCHMENT_API_KEY` or `PURVEYORS_API_KEY` before running the command. Otherwise the CLI uses your logged-in Purveyors session token.
403
416
  - `catalog get` and `catalog similar` both take `coffee_catalog.catalog_id`.
404
417
  - `catalog rank` and `catalog rank-premium` read `coffee_catalog.purveyor_score` as the canonical quality signal; the CLI does not recompute the upstream Purveyor Score model.
405
- - `catalog facets` and `catalog rank` are generic agent/client intelligence surfaces. Their responses include `stocked_only`/`scope` and sample metadata so callers do not mistake all-visible scope, sampled rarity, or sampled counts for whole-catalog guarantees.
418
+ - `catalog facets` and `catalog rank` are generic agent/client intelligence surfaces. Facet counts come from the canonical API across the selected stocked/all-visible scope; ranking responses include sample metadata so callers do not mistake sampled rarity for whole-catalog guarantees.
406
419
  - Catalog intelligence responses include `meta.sample_limited`, `meta.sample_order`, `meta.truncated`, and rows-examined style metadata where relevant so agents can distinguish ranked samples from full supplier aggregates. Supplier aggregate responses also include `meta.rows_examined`.
407
420
  - Supplier aggregate commands summarize catalog row counts, stocked counts, Purveyor Score coverage, average score, average confidence, price range, origin/process coverage, and representative top coffees with score qualifiers.
408
421
  - `catalog similar` uses the beta canonical `/v1/catalog/{id}/similar` API contract, not the legacy direct RPC path.
@@ -440,6 +453,58 @@ Notes:
440
453
  - Session-token use requires the local `member` role; API-key use is accepted via `PARCHMENT_API_KEY` or `PURVEYORS_API_KEY` and PPI entitlement is enforced server-side.
441
454
  - `PARCHMENT_API_BASE_URL` overrides the canonical API base for this SDK-backed command. `PURVEYORS_BASE_URL` is also accepted for shared environment compatibility.
442
455
 
456
+ ### market
457
+
458
+ - `purvey market signals`
459
+ - `purvey market stats`
460
+ - `purvey market metadata`
461
+
462
+ `market signals` filters:
463
+
464
+ - `--summary`; public counts-only teaser slice
465
+ - `--type <price_drop|below_market|value_quality>`; repeatable or comma-separated
466
+ - `--origin <origin>`
467
+ - `--process <method>`
468
+ - `--market <retail|wholesale|all>`
469
+ - `--min-discount <n>`
470
+ - `--min-score <n>`
471
+ - `--window <7d|30d>`
472
+ - `--limit <n>`
473
+
474
+ `market stats` filters:
475
+
476
+ - `--origin <origin>`
477
+ - `--process <method>`
478
+ - `--market <retail|wholesale|all>`
479
+ - `--window <7d|30d>`
480
+ - `--baseline-weeks <n>`; 8-52
481
+
482
+ `market metadata` filters:
483
+
484
+ - `--dimension <process|disclosure|score>`
485
+ - `--origin <origin>`
486
+ - `--market <retail|wholesale|all>`
487
+ - `--grain <week|month>`
488
+ - `--from <YYYY-MM-DD>`
489
+ - `--to <YYYY-MM-DD>`
490
+
491
+ Examples:
492
+
493
+ ```bash
494
+ purvey market signals --summary --pretty
495
+ purvey market signals --type price_drop --origin "Ethiopia" --json
496
+ purvey market stats --pretty
497
+ purvey market metadata --dimension score --origin "Ethiopia" --grain month --json
498
+ PARCHMENT_API_KEY="$PURVEYORS_API_KEY" purvey market signals --market wholesale --json
499
+ ```
500
+
501
+ Notes:
502
+
503
+ - `market` commands are backed by canonical Parchment API endpoints through `@purveyors/sdk`; the CLI does not compute Market Index intelligence locally.
504
+ - Public teaser slices: `signals --summary`, `stats` with no origin/process and `market=retail`, and `metadata` at dimension=process/no-origin/market=retail/grain=month.
505
+ - Any filtered or non-public market slice requires Parchment Intelligence access, enforced server-side for both API-key and session-token calls.
506
+ - `--json` returns the API response verbatim.
507
+
443
508
  ### procurement
444
509
 
445
510
  - `purvey procurement list`
@@ -504,7 +569,6 @@ Notes:
504
569
 
505
570
  `inventory delete <id>` options:
506
571
 
507
- - `--force`; cascade dependent roasts and sales
508
572
  - `--yes`; skip confirmation prompt
509
573
 
510
574
  Examples:
@@ -519,9 +583,10 @@ purvey inventory delete 7 --yes
519
583
 
520
584
  Notes:
521
585
 
522
- - Inventory commands require an authenticated `member` role.
586
+ - Inventory commands require a member session or an owner-bound API key with the
587
+ corresponding inventory scope.
523
588
  - Inventory `id` is `green_coffee_inv.id`, not `catalog_id`.
524
- - `inventory delete` may require `--force` if dependent roasts or sales exist.
589
+ - `inventory delete` refuses to cascade. Delete dependent roasts or sales explicitly first.
525
590
 
526
591
  ### roast
527
592
 
@@ -617,7 +682,7 @@ Notes:
617
682
 
618
683
  `sales list` filters:
619
684
 
620
- - `--roast-id <id>`
685
+ - `--coffee-id <id>`; green coffee inventory ID
621
686
  - `--date-start <YYYY-MM-DD>`
622
687
  - `--date-end <YYYY-MM-DD>`
623
688
  - `--buyer <name>`
@@ -699,9 +764,10 @@ purvey tasting rate --form
699
764
 
700
765
  Notes:
701
766
 
702
- - Tasting commands require an authenticated `member` role.
767
+ - Tasting reads accept a member session or an owner-bound `tasting:read` API key.
703
768
  - `tasting get` combines supplier notes with your own notes when available.
704
- - `tasting rate` writes scores back to your inventory row.
769
+ - `tasting rate` writes scores back to your inventory row through the remaining direct
770
+ Supabase path until the canonical tasting-write endpoint ships.
705
771
 
706
772
  ### config
707
773
 
@@ -814,7 +880,7 @@ Use the right ID for the right command.
814
880
 
815
881
  - `catalog_id`: `coffee_catalog` rows; used by `catalog get`, `catalog similar`, `inventory add --catalog-id`, `tasting get`, `roast list --catalog-id`
816
882
  - `inventory id`: `green_coffee_inv` rows; used by `inventory get/update/delete`, `roast --coffee-id`, `tasting rate`, `roast list --coffee-id`
817
- - `roast_id`: `roast_data` rows; used by `roast get/delete`, `sales --roast-id`, `roast list --roast-id`
883
+ - `roast_id`: `roast_data` rows; used by `roast get/delete`, `sales record --roast-id`, `roast list --roast-id`
818
884
  - `sales record` also supports resolving a roast from `inventory id` plus `--batch-name`; if that selector is ambiguous, use exact `roast_id`
819
885
  - `sale id`: `coffee_sales` rows; used by `sales update/delete`
820
886
 
@@ -825,7 +891,7 @@ Use the right ID for the right command.
825
891
  - `PURVEYORS_BASE_URL`: override the Purveyors web base URL
826
892
  - `PURVEYORS_API_KEY`: API-key token used by API-backed catalog proof reads, paid-tier similarity reads, and SDK-backed Parchment commands when you want to call canonical API contracts without relying on the local OAuth session
827
893
  - `PARCHMENT_API_KEY`: preferred API-key variable for SDK-backed Parchment commands; also accepted for API-backed proof and paid-tier similarity paths
828
- - `PARCHMENT_API_BASE_URL`: override the SDK-backed Parchment API base URL for `price-index` and `procurement` commands
894
+ - `PARCHMENT_API_BASE_URL`: override the SDK-backed Parchment API base URL for `market`, `price-index`, and `procurement` commands
829
895
  - `PURVEY_DEBUG`: enable verbose error output
830
896
 
831
897
  ## For AI agents
@@ -858,10 +924,10 @@ Agent integration rules of thumb:
858
924
 
859
925
  - Discover first with `purvey manifest`, then call the narrowest command or package subpath that fits the job.
860
926
  - Use `purvey context` when a human-readable operator summary is useful before tool selection.
861
- - Prefer OAuth session tokens for normal user workflows; use `PURVEYORS_API_KEY` or `PARCHMENT_API_KEY` only when you intentionally need an API-key-backed Parchment path such as catalog proof, paid-tier similarity, price-index, or procurement reads.
927
+ - Prefer OAuth session tokens for normal user workflows; use `PURVEYORS_API_KEY` or `PARCHMENT_API_KEY` only when you intentionally need an API-key-backed Parchment path such as catalog proof, paid-tier similarity, market intelligence, price-index, or procurement reads.
862
928
  - Treat `--include-proof` as API output, not a local scoring feature. If a filter cannot round-trip through `/v1/catalog?include=proof`, the CLI rejects that invocation instead of returning misleading proof data.
863
929
  - Treat `catalog similar` as the canonical `/v1/catalog/{id}/similar` contract. Preserve the distinction between `canonical_candidates` and `similar_recommendations`; do not flatten or re-sort grouped results unless you have a specific downstream reason.
864
- - Treat `price-index` and `procurement` as SDK-backed canonical API reads. Do not add procurement create/write behavior to this command group until the Phase 2 write contract ships.
930
+ - Treat `market`, `price-index`, and `procurement` as SDK-backed canonical API reads. Do not add procurement create/write behavior to this command group until the Phase 2 write contract ships.
865
931
 
866
932
  ## Troubleshooting
867
933
 
@@ -894,7 +960,9 @@ purvey inventory list --limit 20 --offset 40
894
960
  **`inventory delete` fails with dependency conflict**
895
961
 
896
962
  ```bash
897
- purvey inventory delete 7 --force --yes
963
+ purvey roast delete <roast-id> --yes
964
+ purvey sales delete <sale-id> --yes
965
+ purvey inventory delete 7 --yes
898
966
  ```
899
967
 
900
968
  **Enable verbose error output**
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAWL,mBAAmB,EACnB,mBAAmB,EAKpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAKrF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AAiFpD;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAqsB7C"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,OAAO,EAWL,mBAAmB,EACnB,mBAAmB,EAKpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAIrF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AAyDpD;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAyqB7C"}
@@ -1,26 +1,8 @@
1
1
  import { Command } from 'commander';
2
2
  import { outputData, info } from '../lib/output.js';
3
3
  import { withErrorHandling, PrvrsError } from '../lib/errors.js';
4
- import { requireAuth } from '../lib/auth-guard.js';
5
4
  import { searchCatalog, getCatalog, getCatalogStats, getCatalogSimilarity, listCatalogFacets, rankCatalog, catalogRankPremium, supplierList, supplierDetail, supplierRank, computeCatalogStats, sanitizeFilterValue, catalogSortFields, catalogFacetFields, catalogRankObjectives, catalogSimilarityModes, } from '../lib/catalog.js';
6
5
  export { sanitizeFilterValue, computeCatalogStats };
7
- function hasCatalogApiKeyEnv() {
8
- return Boolean(process.env.PARCHMENT_API_KEY || process.env.PURVEYORS_API_KEY);
9
- }
10
- function createApiKeyOnlyCatalogClient() {
11
- return {
12
- auth: {
13
- getSession: async () => ({ data: { session: null }, error: null }),
14
- },
15
- };
16
- }
17
- async function resolveCatalogReadClient(requiredRole, useApiKeyWithoutSession) {
18
- if (useApiKeyWithoutSession && hasCatalogApiKeyEnv()) {
19
- return createApiKeyOnlyCatalogClient();
20
- }
21
- const { supabase } = await requireAuth(requiredRole);
22
- return supabase;
23
- }
24
6
  function parseFiniteNumberArg(rawValue, message) {
25
7
  const trimmed = rawValue.trim();
26
8
  if (trimmed.length === 0) {
@@ -176,15 +158,8 @@ Notes:
176
158
  ? parseNonNegativeIntegerArg(opts.offset, `Invalid --offset: "${opts.offset}". Must be a non-negative integer.`)
177
159
  : undefined;
178
160
  const limit = parsePositiveIntegerArg(opts.limit, `Invalid --limit: "${opts.limit}". Must be a positive integer.`);
179
- const hasStructuredProcessFilters = opts.processingBaseMethod !== undefined ||
180
- opts.fermentationType !== undefined ||
181
- opts.processAdditive !== undefined ||
182
- opts.processingDisclosureLevel !== undefined ||
183
- opts.processingConfidenceMin !== undefined;
184
- const requiredRole = hasStructuredProcessFilters ? 'member' : 'viewer';
185
161
  const includeProof = opts.includeProof ? true : undefined;
186
- const supabase = await resolveCatalogReadClient(requiredRole, Boolean(includeProof));
187
- const data = await searchCatalog(supabase, {
162
+ const data = await searchCatalog({
188
163
  origin: opts.origin,
189
164
  process: opts.process,
190
165
  priceMin,
@@ -236,8 +211,7 @@ Notes:
236
211
  const globalOpts = cmd.optsWithGlobals();
237
212
  const catalogId = parsePositiveIntegerArg(id, `Invalid ID: "${id}". Please provide a numeric coffee_catalog ID.`);
238
213
  const includeProof = opts.includeProof ? true : undefined;
239
- const supabase = await resolveCatalogReadClient('viewer', Boolean(includeProof));
240
- const data = await getCatalog(supabase, catalogId, {
214
+ const data = await getCatalog(catalogId, {
241
215
  includeProof,
242
216
  });
243
217
  outputData(data, globalOpts);
@@ -259,8 +233,7 @@ Notes:
259
233
  `)
260
234
  .action(withErrorHandling(async (_opts, cmd) => {
261
235
  const globalOpts = cmd.optsWithGlobals();
262
- const { supabase } = await requireAuth('viewer');
263
- const stats = await getCatalogStats(supabase);
236
+ const stats = await getCatalogStats();
264
237
  outputData(stats, globalOpts);
265
238
  }));
266
239
  // ── catalog facets ───────────────────────────────────────────────────────
@@ -268,7 +241,6 @@ Notes:
268
241
  .command('facets <field>')
269
242
  .description('List distinct catalog facet values with counts')
270
243
  .option('--all', 'Use all visible catalog rows instead of default stocked-only scope')
271
- .option('--sample-size <n>', 'Catalog rows to sample before counting (1-5000)', '5000')
272
244
  .option('--limit <n>', 'Maximum facet values to return (1-100)', '60')
273
245
  .addHelpText('after', `
274
246
  Examples:
@@ -282,7 +254,7 @@ Fields:
282
254
  Notes:
283
255
  Facet counts are computed from catalog rows visible to the current client.
284
256
  By default only currently stocked catalog rows are included; use --all for all visible rows.
285
- meta.stocked_only/scope, meta.rows_examined, and meta.truncated describe sample semantics.
257
+ meta.stocked_only/scope, meta.rows_examined, and meta.truncated describe the canonical counted scope.
286
258
  Requires an authenticated viewer session.
287
259
  `)
288
260
  .action(withErrorHandling(async (field, opts, cmd) => {
@@ -293,11 +265,9 @@ Notes:
293
265
  const input = {
294
266
  field: field,
295
267
  stockedOnly: opts.all ? false : true,
296
- sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
297
268
  limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 100),
298
269
  };
299
- const { supabase } = await requireAuth('viewer');
300
- const data = await listCatalogFacets(supabase, input);
270
+ const data = await listCatalogFacets(input);
301
271
  outputData(data, globalOpts);
302
272
  }));
303
273
  // ── catalog rank ─────────────────────────────────────────────────────────
@@ -350,8 +320,7 @@ Notes:
350
320
  sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
351
321
  limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 50),
352
322
  };
353
- const { supabase } = await requireAuth('viewer');
354
- const data = await rankCatalog(supabase, input);
323
+ const data = await rankCatalog(input);
355
324
  outputData(data, globalOpts);
356
325
  }));
357
326
  // ── catalog rank-premium ─────────────────────────────────────────────────
@@ -396,8 +365,7 @@ Notes:
396
365
  sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
397
366
  limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 50),
398
367
  };
399
- const { supabase } = await requireAuth('viewer');
400
- const data = await catalogRankPremium(supabase, input);
368
+ const data = await catalogRankPremium(input);
401
369
  outputData(data, globalOpts);
402
370
  }));
403
371
  // ── catalog supplier aggregates ──────────────────────────────────────────
@@ -429,8 +397,7 @@ Notes:
429
397
  sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
430
398
  limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 100),
431
399
  };
432
- const { supabase } = await requireAuth('viewer');
433
- const data = await supplierList(supabase, input);
400
+ const data = await supplierList(input);
434
401
  outputData(data, globalOpts);
435
402
  }));
436
403
  catalog
@@ -460,8 +427,7 @@ Notes:
460
427
  topCoffees: parseBoundedPositiveIntegerArg(opts.topCoffees, '--top-coffees', 1, 25),
461
428
  sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
462
429
  };
463
- const { supabase } = await requireAuth('viewer');
464
- const data = await supplierDetail(supabase, input);
430
+ const data = await supplierDetail(input);
465
431
  outputData(data, globalOpts);
466
432
  }));
467
433
  catalog
@@ -492,8 +458,7 @@ Notes:
492
458
  sampleSize: parseBoundedPositiveIntegerArg(opts.sampleSize, '--sample-size', 1, 5000),
493
459
  limit: parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 100),
494
460
  };
495
- const { supabase } = await requireAuth('viewer');
496
- const data = await supplierRank(supabase, input);
461
+ const data = await supplierRank(input);
497
462
  outputData(data, globalOpts);
498
463
  }));
499
464
  // ── catalog similar <id> ──────────────────────────────────────────────────
@@ -539,8 +504,7 @@ Notes:
539
504
  throw new PrvrsError('INVALID_ARGUMENT', `Invalid --mode: "${mode}". Must be one of: ${catalogSimilarityModes.join(', ')}.`);
540
505
  }
541
506
  const stockedOnly = Boolean(opts.stockedOnly);
542
- const supabase = await resolveCatalogReadClient('member', true);
543
- const response = await getCatalogSimilarity(supabase, {
507
+ const response = await getCatalogSimilarity({
544
508
  coffee_id: coffeeId,
545
509
  threshold,
546
510
  limit,
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/commands/catalog.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../../src/commands/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,OAAO,KAAK,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAC;AAKhF,YAAY,EAAE,aAAa,EAAE,CAAC;AAI9B;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CA0Z/C"}
1
+ {"version":3,"file":"inventory.d.ts","sourceRoot":"","sources":["../../src/commands/inventory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAcpC,OAAO,KAAK,EAAE,aAAa,EAAyB,MAAM,qBAAqB,CAAC;AAKhF,YAAY,EAAE,aAAa,EAAE,CAAC;AAI9B;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CA2X/C"}
@@ -2,7 +2,7 @@ import { Command } from 'commander';
2
2
  import * as p from '@clack/prompts';
3
3
  import { getConfigValue } from '../lib/config.js';
4
4
  import { outputData, info, success } from '../lib/output.js';
5
- import { withErrorHandling, PrvrsError } from '../lib/errors.js';
5
+ import { withErrorHandling, AuthError, PrvrsError } from '../lib/errors.js';
6
6
  import { requireAuth } from '../lib/auth-guard.js';
7
7
  import { confirm, todayIso } from '../lib/prompts.js';
8
8
  import { listInventory, getInventory, addInventory, updateInventory, deleteInventory, } from '../lib/inventory.js';
@@ -46,7 +46,6 @@ Notes:
46
46
  `)
47
47
  .action(withErrorHandling(async (opts, cmd) => {
48
48
  const globalOpts = cmd.optsWithGlobals();
49
- const { supabase, userId } = await requireAuth('member');
50
49
  let catalogId;
51
50
  if (opts.catalogId !== undefined) {
52
51
  catalogId = parseInt(opts.catalogId, 10);
@@ -55,7 +54,7 @@ Notes:
55
54
  }
56
55
  }
57
56
  const offsetVal = parseInt(opts.offset, 10);
58
- const data = await listInventory(supabase, userId, {
57
+ const data = await listInventory({
59
58
  stocked_only: opts.stocked ? true : undefined,
60
59
  limit: Math.max(1, parseInt(opts.limit, 10)),
61
60
  offset: isNaN(offsetVal) || offsetVal < 0 ? 0 : offsetVal,
@@ -86,8 +85,7 @@ Notes:
86
85
  `)
87
86
  .action(withErrorHandling(async (id, _opts, cmd) => {
88
87
  const globalOpts = cmd.optsWithGlobals();
89
- const { supabase, userId } = await requireAuth('member');
90
- const data = await getInventory(supabase, userId, parseInt(id, 10));
88
+ const data = await getInventory(parseInt(id, 10));
91
89
  outputData(data, globalOpts);
92
90
  }));
93
91
  // ── inventory add ─────────────────────────────────────────────────────────
@@ -115,12 +113,12 @@ Required flags: --catalog-id, --qty
115
113
  `)
116
114
  .action(withErrorHandling(async (opts, cmd) => {
117
115
  const globalOpts = cmd.optsWithGlobals();
118
- const { supabase, userId } = await requireAuth('member');
119
116
  // ── Interactive form mode ──────────────────────────────────────────
120
117
  // Auto-enter form mode if config form-mode is true and required args are missing
121
118
  const formMode = opts.form ||
122
119
  (!(opts.catalogId && opts.qty) && (await getConfigValue('form-mode')) === 'true');
123
120
  if (formMode) {
121
+ const { supabase } = await requireAuth('member');
124
122
  p.intro('Add Bean to Inventory');
125
123
  const catalogItem = await pickCatalogItem(supabase);
126
124
  const qtyRaw = await p.text({
@@ -156,13 +154,17 @@ Required flags: --catalog-id, --qty
156
154
  const qtyStr = String(qtyRaw);
157
155
  const spin = p.spinner();
158
156
  spin.start('Adding bean to inventory...');
159
- const data = await addInventory(supabase, userId, {
157
+ const { data: { session: formSession }, } = await supabase.auth.getSession();
158
+ if (!formSession?.access_token) {
159
+ throw new AuthError('Session expired mid-form. Run `purvey auth login` and retry.');
160
+ }
161
+ const data = await addInventory({
160
162
  catalogId: catalogItem.id,
161
163
  qty: parseFloat(qtyStr),
162
164
  cost,
163
165
  notes,
164
166
  purchaseDate: todayIso(),
165
- });
167
+ }, formSession.access_token);
166
168
  spin.stop('Done');
167
169
  p.outro(`Bean added! Inventory item #${data.id} created.`);
168
170
  outputData(data, globalOpts);
@@ -191,7 +193,7 @@ Required flags: --catalog-id, --qty
191
193
  if (taxShip !== undefined && isNaN(taxShip)) {
192
194
  throw new PrvrsError('INVALID_ARGUMENT', `Invalid --tax-ship: "${opts.taxShip}".`);
193
195
  }
194
- const data = await addInventory(supabase, userId, {
196
+ const data = await addInventory({
195
197
  catalogId,
196
198
  qty,
197
199
  cost,
@@ -225,7 +227,6 @@ Notes:
225
227
  `)
226
228
  .action(withErrorHandling(async (id, opts, cmd) => {
227
229
  const globalOpts = cmd.optsWithGlobals();
228
- const { supabase, userId } = await requireAuth('member');
229
230
  const itemId = parseInt(id, 10);
230
231
  if (isNaN(itemId)) {
231
232
  throw new PrvrsError('INVALID_ARGUMENT', `Invalid inventory ID: "${id}".`);
@@ -264,7 +265,7 @@ Notes:
264
265
  stocked === undefined) {
265
266
  throw new PrvrsError('INVALID_ARGUMENT', 'No update fields provided. Pass at least one of: --qty, --cost, --tax-ship, --notes, --stocked.');
266
267
  }
267
- const data = await updateInventory(supabase, userId, itemId, {
268
+ const data = await updateInventory(itemId, {
268
269
  qty,
269
270
  cost,
270
271
  taxShip,
@@ -279,61 +280,33 @@ Notes:
279
280
  .command('delete <id>')
280
281
  .description('Delete an inventory item (must be yours)')
281
282
  .option('-y, --yes', 'Skip confirmation prompt')
282
- .option('-f, --force', 'Cascade delete dependent roast profiles and sales records')
283
283
  .addHelpText('after', `
284
284
  Examples:
285
285
  purvey inventory delete 7 # prompts for confirmation
286
286
  purvey inventory delete 7 --yes # skip confirmation (use in scripts)
287
- purvey inventory delete 7 --force # cascade delete dependents, prompts for confirmation
288
- purvey inventory delete 7 --force --yes # cascade delete, no prompt (agent/script use)
289
287
 
290
288
  Notes:
291
289
  Permanently deletes the inventory row. Cannot be undone.
292
- If the item has dependent roast profiles or sales records, the command will
293
- fail with a DEPENDENCY_CONFLICT error unless --force is passed.
294
- With --force, all dependent sales and roast profiles are deleted first, then
295
- the inventory item is removed. A summary of what was deleted is shown.
290
+ If the item has dependent roast profiles or sales records, the canonical API
291
+ returns DEPENDENCY_CONFLICT. Delete those records explicitly before retrying.
296
292
  Row-level security: only items belonging to you can be deleted.
297
293
  Requires authentication (member role).
298
294
  `)
299
295
  .action(withErrorHandling(async (id, opts, cmd) => {
300
296
  const globalOpts = cmd.optsWithGlobals();
301
- const { supabase, userId } = await requireAuth('member');
302
297
  const itemId = parseInt(id, 10);
303
298
  if (isNaN(itemId)) {
304
299
  throw new PrvrsError('INVALID_ARGUMENT', `Invalid inventory ID: "${id}".`);
305
300
  }
306
- const force = Boolean(opts.force);
307
- // When --force is requested, show a pre-delete dependency summary if
308
- // the user hasn't suppressed prompts via --yes.
309
- if (force && !opts.yes) {
310
- const ok = await confirm(`Delete inventory item ${itemId} and all its dependent roast profiles and sales records?`);
311
- if (!ok) {
312
- info('Aborted.');
313
- return;
314
- }
315
- }
316
- else if (!opts.yes) {
301
+ if (!opts.yes) {
317
302
  const ok = await confirm(`Delete inventory item ${itemId}?`);
318
303
  if (!ok) {
319
304
  info('Aborted.');
320
305
  return;
321
306
  }
322
307
  }
323
- const result = await deleteInventory(supabase, userId, itemId, {
324
- force,
325
- });
326
- if (force && (result.deletedRoasts > 0 || result.deletedSales > 0)) {
327
- const parts = [];
328
- if (result.deletedRoasts > 0)
329
- parts.push(`${result.deletedRoasts} roast profile${result.deletedRoasts === 1 ? '' : 's'}`);
330
- if (result.deletedSales > 0)
331
- parts.push(`${result.deletedSales} sale record${result.deletedSales === 1 ? '' : 's'}`);
332
- success(`Inventory item ${itemId} deleted (also removed: ${parts.join(', ')}).`);
333
- }
334
- else {
335
- success(`Inventory item ${itemId} deleted.`);
336
- }
308
+ const result = await deleteInventory(itemId);
309
+ success(`Inventory item ${itemId} deleted.`);
337
310
  if (globalOpts.json || globalOpts.pretty) {
338
311
  outputData(result, globalOpts);
339
312
  }