@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.
- package/README.md +72 -15
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +15 -2
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/price-index.d.ts +7 -0
- package/dist/commands/price-index.d.ts.map +1 -0
- package/dist/commands/price-index.js +71 -0
- package/dist/commands/price-index.js.map +1 -0
- package/dist/commands/procurement.d.ts +8 -0
- package/dist/commands/procurement.d.ts.map +1 -0
- package/dist/commands/procurement.js +72 -0
- package/dist/commands/procurement.js.map +1 -0
- package/dist/lib/catalog.d.ts +4 -0
- package/dist/lib/catalog.d.ts.map +1 -1
- package/dist/lib/catalog.js +14 -0
- package/dist/lib/catalog.js.map +1 -1
- package/dist/lib/manifest.d.ts.map +1 -1
- package/dist/lib/manifest.js +97 -2
- package/dist/lib/manifest.js.map +1 -1
- package/dist/lib/parchment.d.ts +32 -0
- package/dist/lib/parchment.d.ts.map +1 -0
- package/dist/lib/parchment.js +91 -0
- package/dist/lib/parchment.js.map +1 -0
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +10 -0
- package/dist/program.js.map +1 -1
- package/package.json +2 -1
|
@@ -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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"}
|
package/dist/program.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.d.ts","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,WAAW,CAAC;
|
|
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());
|
package/dist/program.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"program.js","sourceRoot":"","sources":["../src/program.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAuB,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;AAEtC,SAAS,4BAA4B,CAAC,OAAgB;IACpD,OAAO,CAAC,eAAe,CAAC;QACtB,WAAW,EAAE,GAAG,EAAE;YAChB,wEAAwE;YACxE,6DAA6D;QAC/D,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CAAC,YAAY,CAAC,CAAC,KAAqB,EAAE,EAAE;QAC7C,IAAI,KAAK,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,KAAK,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC1C,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,IAAI,OAAO,GAAG,OAAO,CAAC;IAEtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAElF,CAAC;QACF,OAAO,GAAG,GAAG,CAAC,OAAO,IAAI,OAAO,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,gCAAgC;IAClC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,OAAO,GAAG,aAAa,EAAE;IACrD,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,OAAO;SACJ,IAAI,CAAC,QAAQ,CAAC;SACd,WAAW,CAAC,2EAA2E,CAAC;SACxF,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,eAAe,CAAC;SAClD,MAAM,CAAC,QAAQ,EAAE,sDAAsD,CAAC;SACxE,MAAM,CAAC,UAAU,EAAE,sCAAsC,CAAC;SAC1D,MAAM,CAAC,OAAO,EAAE,uCAAuC,CAAC;SACxD,WAAW,CACV,OAAO,EACP
|
|
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.
|
|
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",
|