@purveyors/cli 0.20.0 → 0.21.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.
@@ -0,0 +1,91 @@
1
+ import { createParchmentClient as createSdkClient } from '@purveyors/sdk';
2
+ import { requireAuth } from './auth-guard.js';
3
+ import { AuthError, PrvrsError } from './errors.js';
4
+ const DEFAULT_PARCHMENT_BASE_URL = 'https://api.purveyors.io';
5
+ /**
6
+ * Resolve the canonical Parchment API base URL.
7
+ *
8
+ * Unlike the legacy hand-rolled catalog fetch paths (which default to the
9
+ * coffee-app BFF at www.purveyors.io), SDK-backed commands talk to the
10
+ * canonical API directly. `PARCHMENT_API_BASE_URL` takes precedence, then the
11
+ * shared `PURVEYORS_BASE_URL` override, then the canonical default.
12
+ */
13
+ export function getParchmentBaseUrl() {
14
+ const raw = process.env.PARCHMENT_API_BASE_URL ??
15
+ process.env.PURVEYORS_BASE_URL ??
16
+ DEFAULT_PARCHMENT_BASE_URL;
17
+ return raw.replace(/\/+$/, '');
18
+ }
19
+ /**
20
+ * Resolve the bearer token for Parchment requests, mirroring the existing CLI
21
+ * catalog auth pattern: an explicit API key wins, otherwise the stored Supabase
22
+ * session JWT is used. Auth is resolved server-side against the token.
23
+ */
24
+ export async function resolveParchmentToken(requiredRole = 'viewer') {
25
+ // Prefer the first non-empty key: an empty PARCHMENT_API_KEY (a common
26
+ // optional-secret shape in CI) must not mask a real PURVEYORS_API_KEY.
27
+ const apiKey = process.env.PARCHMENT_API_KEY || process.env.PURVEYORS_API_KEY;
28
+ if (apiKey) {
29
+ return apiKey;
30
+ }
31
+ const { supabase } = await requireAuth(requiredRole);
32
+ const { data: { session }, } = await supabase.auth.getSession();
33
+ if (!session?.access_token) {
34
+ throw new AuthError('Parchment API reads require a Purveyors session or API key. Run `purvey auth login`, or set PARCHMENT_API_KEY/PURVEYORS_API_KEY.');
35
+ }
36
+ return session.access_token;
37
+ }
38
+ /** Build an authenticated Parchment SDK client for the canonical API. */
39
+ export async function createParchmentClient(requiredRole = 'viewer') {
40
+ const token = await resolveParchmentToken(requiredRole);
41
+ return createSdkClient({ baseUrl: getParchmentBaseUrl(), token });
42
+ }
43
+ function messageFromErrorBody(body, fallback) {
44
+ if (body && typeof body === 'object') {
45
+ const record = body;
46
+ const nested = record.error;
47
+ if (nested && typeof nested === 'object') {
48
+ const message = nested.message;
49
+ if (typeof message === 'string' && message.trim().length > 0) {
50
+ return message;
51
+ }
52
+ }
53
+ if (typeof record.message === 'string' && record.message.trim().length > 0) {
54
+ return record.message;
55
+ }
56
+ }
57
+ return fallback;
58
+ }
59
+ /**
60
+ * Unwrap an SDK/openapi-fetch result, translating HTTP failures into the CLI's
61
+ * structured error contract so exit codes and machine-mode envelopes stay
62
+ * consistent with the rest of the CLI.
63
+ */
64
+ export function unwrapParchment(result, context) {
65
+ if (result.response.ok && result.error === undefined) {
66
+ return result.data;
67
+ }
68
+ const status = result.response.status;
69
+ const body = result.error;
70
+ if (status === 400) {
71
+ // Mirror the catalog API wrapper: a 400 means the server rejected
72
+ // user-supplied query params (bad date, over-limit, etc.), so it maps to
73
+ // INVALID_ARGUMENT/exit 2, not the generic GENERAL_ERROR fallback below.
74
+ // This keeps bad-input failures distinguishable from real server errors.
75
+ throw new PrvrsError('INVALID_ARGUMENT', messageFromErrorBody(body, `${context}: invalid request. Check the provided arguments.`), body);
76
+ }
77
+ if (status === 401) {
78
+ throw new AuthError(messageFromErrorBody(body, `${context} requires a valid Purveyors session or API key. Run \`purvey auth login\`, or set PARCHMENT_API_KEY/PURVEYORS_API_KEY.`));
79
+ }
80
+ if (status === 403) {
81
+ throw new AuthError(messageFromErrorBody(body, `${context} is not available for your plan. Your Purveyors account or API key lacks the required entitlement.`));
82
+ }
83
+ if (status === 404) {
84
+ throw new PrvrsError('NOT_FOUND', messageFromErrorBody(body, `${context}: not found.`), body);
85
+ }
86
+ if (status === 429) {
87
+ throw new PrvrsError('GENERAL_ERROR', messageFromErrorBody(body, `${context}: rate limit exceeded. Try again later.`), body);
88
+ }
89
+ throw new PrvrsError('GENERAL_ERROR', messageFromErrorBody(body, `${context} failed with HTTP ${status}.`), body);
90
+ }
91
+ //# sourceMappingURL=parchment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parchment.js","sourceRoot":"","sources":["../../src/lib/parchment.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,WAAW,CAAC;AAsCzD,wBAAgB,aAAa,IAAI,MAAM,CAatC;AAED,wBAAgB,aAAa,CAAC,OAAO,SAAkB,GAAG,OAAO,CAqGhE"}
1
+ {"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,WAAW,CAAC;AAwCzD,wBAAgB,aAAa,IAAI,MAAM,CAatC;AAED,wBAAgB,aAAa,CAAC,OAAO,SAAkB,GAAG,OAAO,CA6GhE"}
package/dist/program.js CHANGED
@@ -8,6 +8,8 @@ import { buildConfigCommand } from './commands/config.js';
8
8
  import { buildContextCommand } from './commands/context.js';
9
9
  import { buildInventoryCommand } from './commands/inventory.js';
10
10
  import { buildManifestCommand } from './commands/manifest.js';
11
+ import { buildPriceIndexCommand } from './commands/price-index.js';
12
+ import { buildProcurementCommand } from './commands/procurement.js';
11
13
  import { buildRoastCommand } from './commands/roast.js';
12
14
  import { buildSalesCommand } from './commands/sales.js';
13
15
  import { buildTastingCommand } from './commands/tasting.js';
@@ -84,6 +86,12 @@ Personal Data (member role required):
84
86
  tasting get Get tasting notes for a coffee
85
87
  tasting rate Rate a coffee bean with cupping scores
86
88
 
89
+ Market intelligence (canonical API; price-index requires PPI access):
90
+ price-index Parchment Price Index aggregate snapshots
91
+ procurement list List your saved sourcing briefs
92
+ procurement get Get a saved sourcing brief by id
93
+ procurement matches Page through catalog matches for a brief
94
+
87
95
  Local and reference commands (no pre-existing session required):
88
96
  config list Show all config values
89
97
  config get Get a config value
@@ -130,6 +138,8 @@ Module import: @purveyors/cli/manifest
130
138
  program.addCommand(buildContextCommand());
131
139
  program.addCommand(buildInventoryCommand());
132
140
  program.addCommand(buildManifestCommand());
141
+ program.addCommand(buildPriceIndexCommand());
142
+ program.addCommand(buildProcurementCommand());
133
143
  program.addCommand(buildRoastCommand());
134
144
  program.addCommand(buildSalesCommand());
135
145
  program.addCommand(buildTastingCommand());
@@ -1 +1 @@
1
- {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@purveyors/cli",
3
- "version": "0.20.0",
3
+ "version": "0.21.0",
4
4
  "description": "The official CLI for purveyors.io — coffee intelligence from your terminal",
5
5
  "type": "module",
6
6
  "bin": {
@@ -57,6 +57,7 @@
57
57
  },
58
58
  "dependencies": {
59
59
  "@clack/prompts": "^1.1.0",
60
+ "@purveyors/sdk": "^0.4.0",
60
61
  "@supabase/supabase-js": "^2.49.1",
61
62
  "chalk": "^5.4.1",
62
63
  "commander": "^13.1.0",