@purveyors/cli 0.36.0 → 0.36.2
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 +17 -17
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +6 -6
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/catalog.d.ts +3 -3
- package/dist/commands/catalog.d.ts.map +1 -1
- package/dist/commands/catalog.js +96 -105
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/context.js +2 -2
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/inventory.js +32 -32
- package/dist/commands/inventory.js.map +1 -1
- package/dist/commands/manifest.js +3 -3
- package/dist/commands/manifest.js.map +1 -1
- package/dist/commands/market.d.ts.map +1 -1
- package/dist/commands/market.js +24 -24
- package/dist/commands/market.js.map +1 -1
- package/dist/commands/price-index.d.ts.map +1 -1
- package/dist/commands/price-index.js +17 -17
- package/dist/commands/price-index.js.map +1 -1
- package/dist/commands/procurement.d.ts.map +1 -1
- package/dist/commands/procurement.js +3 -3
- package/dist/commands/procurement.js.map +1 -1
- package/dist/commands/reference-profile.d.ts.map +1 -1
- package/dist/commands/reference-profile.js +15 -15
- package/dist/commands/reference-profile.js.map +1 -1
- package/dist/commands/roast.d.ts.map +1 -1
- package/dist/commands/roast.js +50 -50
- package/dist/commands/roast.js.map +1 -1
- package/dist/commands/sales.js +21 -21
- package/dist/commands/sales.js.map +1 -1
- package/dist/commands/skill.d.ts.map +1 -1
- package/dist/commands/skill.js +7 -7
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/tasting.d.ts.map +1 -1
- package/dist/commands/tasting.js +16 -16
- package/dist/commands/tasting.js.map +1 -1
- package/dist/lib/agent-skill.d.ts.map +1 -1
- package/dist/lib/agent-skill.js +1 -5
- package/dist/lib/agent-skill.js.map +1 -1
- package/dist/lib/catalog.d.ts.map +1 -1
- package/dist/lib/catalog.js +11 -16
- package/dist/lib/catalog.js.map +1 -1
- package/dist/lib/manifest.d.ts.map +1 -1
- package/dist/lib/manifest.js +890 -364
- package/dist/lib/manifest.js.map +1 -1
- package/dist/lib/parchment.d.ts +5 -0
- package/dist/lib/parchment.d.ts.map +1 -1
- package/dist/lib/parchment.js +5 -1
- package/dist/lib/parchment.js.map +1 -1
- package/dist/program.d.ts.map +1 -1
- package/dist/program.js +66 -15
- package/dist/program.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ Use `purvey --help` for quick command discovery, `purvey context` for the dense
|
|
|
12
12
|
- Package: `@purveyors/cli`
|
|
13
13
|
- Runtime: Node.js 20+
|
|
14
14
|
- No pre-existing credentials required: `auth`, `config`, `context`, `manifest`, `skill`
|
|
15
|
-
- Viewer role required: `catalog
|
|
15
|
+
- Viewer role required: `catalog`, including structured process filters and `catalog similar`
|
|
16
16
|
- Member role required: `procurement`, `inventory`, `roast`, `sales`, `tasting`
|
|
17
17
|
- Mixed public and entitled access: `market` and `price-index` public teaser slices are unauthenticated; filtered, non-public, and evidence slices require a credential and, where entitled, Parchment Intelligence access
|
|
18
18
|
- Preferred machine-readable contract: `purvey manifest`
|
|
@@ -76,7 +76,7 @@ purvey auth login
|
|
|
76
76
|
# 2. Confirm the stored API key and role
|
|
77
77
|
purvey auth status
|
|
78
78
|
|
|
79
|
-
# 3. Search the catalog (
|
|
79
|
+
# 3. Search the catalog (any signed-in account)
|
|
80
80
|
purvey catalog search --origin "Ethiopia" --stocked --pretty
|
|
81
81
|
|
|
82
82
|
# Example with structured process filters and proof output
|
|
@@ -148,8 +148,7 @@ No pre-existing credentials are required for `auth`, `config`, `context`, `manif
|
|
|
148
148
|
|
|
149
149
|
Remote data commands require a valid owner-bound API key with the required scope:
|
|
150
150
|
|
|
151
|
-
- `catalog` requires the `viewer` role
|
|
152
|
-
- `catalog search` structured process filters require the `member` role
|
|
151
|
+
- `catalog` requires the `viewer` role, which any sign-in provides; Parchment decides access to structured process filters and `catalog similar`, and admits any API key with `catalog:read`
|
|
153
152
|
- `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
|
|
154
153
|
- `market overview` requires any signed-in session or API key; `market evidence` requires Parchment Intelligence access
|
|
155
154
|
- `price-index history` is public for windows up to 90 days; longer windows require Parchment Intelligence access
|
|
@@ -197,13 +196,15 @@ Credentials are stored at `~/.config/purvey/credentials.json`.
|
|
|
197
196
|
|
|
198
197
|
### Auth roles
|
|
199
198
|
|
|
200
|
-
| Role | Access
|
|
201
|
-
| -------- |
|
|
202
|
-
| `viewer` | `catalog
|
|
203
|
-
| `member` | All viewer commands,
|
|
199
|
+
| Role | Access |
|
|
200
|
+
| -------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
201
|
+
| `viewer` | Every `catalog` command, including structured process filters on `catalog search` and `catalog similar` |
|
|
202
|
+
| `member` | All viewer commands, plus `price-index`, `procurement`, `inventory`, `roast`, `sales`, and `tasting` through the scoped key created by `purvey auth login` |
|
|
204
203
|
|
|
205
204
|
The `reference-profile` commands also require Studio access; the API enforces this entitlement.
|
|
206
205
|
|
|
206
|
+
`catalog similar` needs a sign-in (`purvey auth login`) or any API key with `catalog:read`. The free Green API plan includes it within its monthly quota. Parchment decides access and the CLI maps its 401 and 403 responses to exit code 3 with Parchment's message.
|
|
207
|
+
|
|
207
208
|
Market Index teaser slices are public. Filtered `market signals`, origin/process/wholesale `market stats`, non-public `market metadata`, `market evidence`, `price-index comparisons`, `price-index comparison`, and `price-index history` windows over 90 days require Parchment Intelligence access; API-key denial is enforced by the canonical API. The stored login key carries `catalog:read`, which is also the canonical read scope for Market Index, Price Index, and procurement.
|
|
208
209
|
|
|
209
210
|
`auth`, `config`, `context`, `manifest`, and `skill` remain available without pre-existing credentials.
|
|
@@ -315,7 +316,7 @@ Notes:
|
|
|
315
316
|
- `auth login --headless` prints the approval URL without trying to open a local browser. Approve it from any browser; nothing is pasted back.
|
|
316
317
|
- `auth status --json` is the safest mode for scripts.
|
|
317
318
|
- `auth status --csv` is supported for spreadsheet-style checks, but JSON remains the better integration format.
|
|
318
|
-
- `auth whoami` prints Parchment's `GET /v1/me` response unchanged for the credential the CLI would send: roles, API plan, scopes, Price Index access, and capabilities such as `capabilities.profileStudio`. Like the rest of `auth`, it needs no existing credential; without one it prints
|
|
319
|
+
- `auth whoami` prints Parchment's `GET /v1/me` response unchanged for the credential the CLI would send: roles, API plan, scopes, Price Index access, and capabilities such as `capabilities.profileStudio`. Like the rest of `auth`, it needs no existing credential; without one it prints a signed-out result (`authenticated: false`).
|
|
319
320
|
|
|
320
321
|
### catalog
|
|
321
322
|
|
|
@@ -356,7 +357,7 @@ Notes:
|
|
|
356
357
|
|
|
357
358
|
`catalog similar <id>` options:
|
|
358
359
|
|
|
359
|
-
- `--threshold <score>`; canonical similarity threshold `0.5` to `0.99`, default `0.
|
|
360
|
+
- `--threshold <score>`; canonical similarity threshold `0.5` to `0.99`, default `0.7`
|
|
360
361
|
- `--limit <count>`; default `10`, max `25`
|
|
361
362
|
- `--stocked-only`; request only currently stocked coffees
|
|
362
363
|
- `--mode <all|likely_same|similar_profile>`; default `all`
|
|
@@ -426,8 +427,7 @@ purvey catalog get 1182 --include-proof --json
|
|
|
426
427
|
|
|
427
428
|
Notes:
|
|
428
429
|
|
|
429
|
-
- Catalog commands require an authenticated `viewer` role
|
|
430
|
-
- Structured process filters on `catalog search` require an authenticated `member` role.
|
|
430
|
+
- Catalog commands require an authenticated `viewer` role. Parchment decides access to structured process filters and admits any API key with `catalog:read`, including the key `purvey auth login` stores.
|
|
431
431
|
- Structured process filters use the canonical `/v1/catalog` query contract names while preserving the legacy `--process` label filter.
|
|
432
432
|
- `--supplier`, `--drying-method`, and `--flavor` pass through to the canonical `/v1/catalog` `supplier`, `dryingMethod`, and `flavorKeywords` parameters; Parchment applies them, not the CLI.
|
|
433
433
|
- `--include-proof` is an opt-in API-backed catalog read. It consumes the canonical proof summary returned by `/v1/catalog?include=proof`; the CLI does not compute proof fields locally or duplicate web/API proof logic.
|
|
@@ -438,7 +438,7 @@ Notes:
|
|
|
438
438
|
- 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`.
|
|
439
439
|
- 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.
|
|
440
440
|
- `catalog similar` uses the beta canonical `/v1/catalog/{id}/similar` API contract, not the legacy direct RPC path.
|
|
441
|
-
- `catalog similar --json`
|
|
441
|
+
- `catalog similar --json` works with the `purvey auth login` key or any API key with `catalog:read`, on any API plan, and returns the grouped canonical response object: `data.target`, `data.groups.canonical_candidates`, `data.groups.similar_recommendations`, optional `data.matches`, and `meta`.
|
|
442
442
|
- `canonical_candidates` are likely same-lot candidates; `similar_recommendations` are substitutes/profile matches and include blocker reasons when identity gates disagree.
|
|
443
443
|
- The command preserves `classification_version`, `query_strategy`, score dimensions, proof summaries, pricing metadata, and classification/blocker details supplied by the API.
|
|
444
444
|
- `catalog stats` returns aggregate catalog metrics, not your personal inventory metrics.
|
|
@@ -608,7 +608,7 @@ Notes:
|
|
|
608
608
|
- `--catalog-id <id>`; the catalog lot to add
|
|
609
609
|
- `--manual-name <name>`; name for a coffee that is not in the catalog (flag mode needs exactly one of `--catalog-id` or `--manual-name`)
|
|
610
610
|
- `--qty <lbs>`; required in flag mode
|
|
611
|
-
- `--cost <dollars
|
|
611
|
+
- `--cost <dollars>`; total amount paid for the beans, not the price per pound
|
|
612
612
|
- `--tax-ship <dollars>`
|
|
613
613
|
- `--notes <text>`
|
|
614
614
|
- `--purchase-date <YYYY-MM-DD>`
|
|
@@ -631,7 +631,7 @@ Examples:
|
|
|
631
631
|
|
|
632
632
|
```bash
|
|
633
633
|
purvey inventory list --stocked --pretty
|
|
634
|
-
purvey inventory add --catalog-id 128 --qty 10 --cost
|
|
634
|
+
purvey inventory add --catalog-id 128 --qty 10 --cost 85.00
|
|
635
635
|
purvey inventory add --manual-name "Farm-gate Ethiopia lot 7" --qty 12 --cost 96
|
|
636
636
|
purvey inventory add --form
|
|
637
637
|
purvey inventory update 7 --stocked false
|
|
@@ -1017,7 +1017,7 @@ const manifest = getCliManifest();
|
|
|
1017
1017
|
|
|
1018
1018
|
```bash
|
|
1019
1019
|
purvey catalog search --origin "Ethiopia" --process "natural" --stocked --pretty
|
|
1020
|
-
purvey inventory add --catalog-id 128 --qty 10 --cost
|
|
1020
|
+
purvey inventory add --catalog-id 128 --qty 10 --cost 85.00
|
|
1021
1021
|
purvey roast import ~/artisan/guji-light.alog --coffee-id 7 --pretty
|
|
1022
1022
|
purvey tasting rate 7 --aroma 5 --body 3 --acidity 5 --sweetness 4 --aftertaste 4
|
|
1023
1023
|
purvey sales record --coffee-id 7 --batch-name "Ethiopia Guji Light" --oz 12 --price 22.00 --buyer "Jane Smith"
|
|
@@ -1081,7 +1081,7 @@ Use the right ID for the right command.
|
|
|
1081
1081
|
|
|
1082
1082
|
- `PURVEYORS_BASE_URL`: override the Purveyors web base URL
|
|
1083
1083
|
- `PURVEYORS_API_KEY`: explicit API-key override for canonical Parchment commands
|
|
1084
|
-
- `PARCHMENT_API_KEY`: preferred API-key variable for SDK-backed Parchment commands; also accepted for API-backed proof and
|
|
1084
|
+
- `PARCHMENT_API_KEY`: preferred API-key variable for SDK-backed Parchment commands; also accepted for API-backed proof and API-key similarity requests
|
|
1085
1085
|
- `PARCHMENT_API_BASE_URL`: override the SDK-backed Parchment API base URL, including `market`, `price-index`, `procurement`, `reference-profile`, and roast auto-classification requests
|
|
1086
1086
|
- `PURVEY_DEBUG`: enable verbose error output
|
|
1087
1087
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAS7E,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAK1E,KAAK,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAEtD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;CACzC;AAWD,4DAA4D;AAC5D,wBAAgB,cAAc,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAIxE;AAUD,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS1D;AAuFD,wFAAwF;AACxF,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBxE;AAeD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiGhG;AAiFD,wBAAgB,gBAAgB,IAAI,OAAO,
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAyB,KAAK,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAS7E,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAK1E,KAAK,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;AAEtD,UAAU,kBAAkB;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAChD,KAAK,CAAC,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtE,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,0BAA0B,CAAC,EAAE,MAAM,IAAI,CAAC;CACzC;AAWD,4DAA4D;AAC5D,wBAAgB,cAAc,IAAI;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,CAIxE;AAUD,uFAAuF;AACvF,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAS1D;AAuFD,wFAAwF;AACxF,wBAAsB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBxE;AAeD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiGhG;AAiFD,wBAAgB,gBAAgB,IAAI,OAAO,CAoG1C"}
|
package/dist/commands/auth.js
CHANGED
|
@@ -303,7 +303,7 @@ export function buildAuthCommand() {
|
|
|
303
303
|
auth
|
|
304
304
|
.command('login')
|
|
305
305
|
.description('Log in to purveyors.io')
|
|
306
|
-
.option('--headless'
|
|
306
|
+
.option('--headless')
|
|
307
307
|
.action(async (opts) => login(Boolean(opts.headless)))
|
|
308
308
|
.addHelpText('after', `
|
|
309
309
|
Examples:
|
|
@@ -323,8 +323,8 @@ Notes:
|
|
|
323
323
|
auth
|
|
324
324
|
.command('status')
|
|
325
325
|
.description('Show current authentication status')
|
|
326
|
-
.option('--pretty'
|
|
327
|
-
.option('--csv'
|
|
326
|
+
.option('--pretty')
|
|
327
|
+
.option('--csv')
|
|
328
328
|
.addHelpText('after', `
|
|
329
329
|
Examples:
|
|
330
330
|
purvey auth status # human-readable in terminal, JSON when piped
|
|
@@ -348,18 +348,18 @@ Notes:
|
|
|
348
348
|
.action(statusAction);
|
|
349
349
|
auth
|
|
350
350
|
.command('whoami')
|
|
351
|
-
.description('Show the
|
|
351
|
+
.description('Show the identity, plan, scopes, and capabilities of the active credential')
|
|
352
352
|
.addHelpText('after', `
|
|
353
353
|
Examples:
|
|
354
354
|
purvey auth whoami --pretty
|
|
355
355
|
purvey auth whoami | jq '.capabilities.profileStudio'
|
|
356
356
|
|
|
357
357
|
Notes:
|
|
358
|
-
Prints
|
|
358
|
+
Prints your account details unchanged: authenticated, userId, appRoles,
|
|
359
359
|
primaryAppRole, apiPlan, ppiAccess, apiScopes, and capabilities (for example
|
|
360
360
|
capabilities.profileStudio for Studio reference-profile access).
|
|
361
361
|
Uses PARCHMENT_API_KEY or PURVEYORS_API_KEY when set, otherwise the key stored by
|
|
362
|
-
'purvey auth login'. With no credential it prints
|
|
362
|
+
'purvey auth login'. With no credential it prints a signed-out result
|
|
363
363
|
(authenticated: false). Use 'purvey auth status' for a local check.
|
|
364
364
|
`)
|
|
365
365
|
.action(withErrorHandling(async (_, cmd) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAwB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,0BAA0B,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/F,OAAO,EAAE,iBAAiB,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGlF,MAAM,6BAA6B,GAAG,CAAC,CAAC;AACxC,MAAM,gCAAgC,GAAG,MAAM,CAAC;AAwBhD,4DAA4D;AAC5D,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC5E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,QAAQ,CAAC,MAA2B;IAC3C,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IACjE,MAAM,QAAQ,GAAG,MAAM,CAAC,KAAyB,CAAC;IAClD,IAAI,QAAQ,CAAC,KAAK,IAAI,OAAO,QAAQ,CAAC,KAAK,KAAK,QAAQ;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC;IAChF,gFAAgF;IAChF,OAAO,MAAM,CAAC,KAAqB,CAAC;AACtC,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,UAAU,GAAG,KAAK;SACrB,IAAI,EAAE;SACN,OAAO,CAAC,oBAAoB,EAAE,GAAG,CAAC;SAClC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;SACZ,IAAI,EAAE;SACN,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,UAAU,IAAI,iBAAiB,CAAC;AACzC,CAAC;AAED,SAAS,IAAI,CAAC,YAAoB,EAAE,MAAoB;IACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,MAAM,EAAE,OAAO,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;YAC1C,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,YAAY,CAAC,CAAC;QACjB,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAI,OAAmB,EAAE,MAAoB;IAClE,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IAC5B,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAE7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,MAAM,CAAC,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAC5C,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CACV,CAAC,KAAK,EAAE,EAAE;YACR,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC,EACD,CAAC,KAAc,EAAE,EAAE;YACjB,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,uBAAuB,CAC9B,OAAmB,EACnB,OAGC;IAED,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;IAC3B,IAAI,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IAE5B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,iBAA4D,CAAC;QAEjE,MAAM,MAAM,GAAG,CAAC,QAAoB,EAAE,EAAE;YACtC,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC7C,IAAI,iBAAiB;gBAAE,YAAY,CAAC,iBAAiB,CAAC,CAAC;YACvD,QAAQ,EAAE,CAAC;QACb,CAAC,CAAC;QACF,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,IAAI,OAAO,IAAI,iBAAiB;gBAAE,OAAO;YACzC,OAAO,CAAC,0BAA0B,EAAE,EAAE,CAAC;YACvC,iBAAiB,GAAG,UAAU,CAAC,GAAG,EAAE;gBAClC,MAAM,CAAC,GAAG,EAAE,CACV,MAAM,CACJ,IAAI,SAAS,CACX,6EAA6E;oBAC3E,sEAAsE,CACzE,CACF,CACF,CAAC;YACJ,CAAC,EAAE,OAAO,CAAC,6BAA6B,IAAI,gCAAgC,CAAC,CAAC;QAChF,CAAC,CAAC;QAEF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CACV,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EACvC,CAAC,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAChD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,GAAW;IACpD,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC;IAC7F,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAE7E,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACxE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;gBACvB,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,IAI5B;IACC,OAAO;QACL,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;QAClB,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACzD,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA2B;IAClE,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;QAAE,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,qBAAqB,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC;IAC3F,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,cAAc,EAAE,CAAC;IAEjD,IAAI,OAAgE,CAAC;IACrE,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,cAAc,CAC5B,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,oBAAoB,CAAC,OAAO,CAAC,WAAW,IAAI,QAAQ,EAAE,CAAC;YACpE,aAAa,EAAE,SAAS;SACzB,CAAC,EACF,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,SAAS;YAAE,MAAM,KAAK,CAAC;QAC5C,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACrE,MAAM,IAAI,SAAS,CAAC,6CAA6C,EAAE,KAAK,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC;QACzC,MAAM,IAAI,SAAS,CAAC,MAAM,IAAI,8CAA8C,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAClE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAC9B,CAAC,EACD,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC;QAC3C,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe;QAC9B,CAAC,CAAC,6BAA6B,CAClC,CAAC;IAEF,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;QAChD,OAAO,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC;QAClE,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC,CAAC;QACpE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC,CAAC,eAAe,CAAC,CAAC;QACpF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,sDAAsD,CAAC,CAAC;YAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QACpD,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4CAA4C,eAAe,IAAI,CAAC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC1C,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;IACpC,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,WAAW,GAAG,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7C,IAAI,WAAW,IAAI,CAAC,EAAE,CAAC;YACrB,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;QACtF,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,EAAE,CAAC;YAC9B,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAErE,IAAI,SAAoE,CAAC;QACzE,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,uBAAuB,CACvC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;gBACtB,YAAY;gBACZ,YAAY,EAAE,QAAQ;aACvB,CAAC,EACF,OAAO,CACR,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,SAAS;gBAAE,MAAM,KAAK,CAAC;YAC5C,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;gBAAE,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;YACrE,MAAM,IAAI,SAAS,CAAC,yDAAyD,EAAE,KAAK,CAAC,CAAC;QACxF,CAAC;QAED,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;YAChE,OAAO,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,IAAI,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAErE,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC;QAClC,IAAI,KAAK,CAAC,IAAI,KAAK,uBAAuB;YAAE,SAAS;QACrD,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;YACrC,MAAM,IAAI,SAAS,CAAC,8DAA8D,CAAC,CAAC;QACtF,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YACtC,MAAM,IAAI,SAAS,CAAC,uEAAuE,CAAC,CAAC;QAC/F,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,iBAAiB,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC1E,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,uCAAuC,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,IAAI,qCAAqC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;AACH,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,QAAiB;IACpC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,EAAE,IAAI,EAAE,iCAAiC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzF,IAAI,CAAC;QACH,MAAM,kBAAkB,GAAG,kBAAkB,CAAC;YAC5C,QAAQ;YACR,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,0BAA0B,EAAE,GAAG,EAAE;gBAC/B,OAAO,CAAC,IAAI;oBACV,yHAAyH,CAAC;YAC9H,CAAC;SACF,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC;QAC7C,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACpC,OAAO,CAAC,OAAO,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACxE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,EAAE,CAAC;QACf,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC;AAED,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,EAAE,CAAU,EAAE,GAAY,EAAE,EAAE;IACxE,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;IACpD,MAAM,aAAa,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE,mCAAmC;QACzC,MAAM,EAAE,OAAO,CAAC,MAAM;KACvB,CAAC,CAAC,KAAK,EAAE,CAAC;IACX,MAAM,OAAO,GAAG,MAAM,eAAe,EAAE,CAAC;IACxC,OAAO,CAAC,IAAI,EAAE,CAAC;IAEf,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,MAAM,GAAG;YACb,aAAa,EAAE,KAAK;YACpB,OAAO,EAAE,yDAAyD;SACnE,CAAC;QACF,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE5C,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACrB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,MAAM,GAAG;QACb,aAAa,EAAE,IAAI;QACnB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,eAAe;QACrC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,OAAO,CAAC,SAAS;KAC9B,CAAC;IAEF,IAAI,aAAa,EAAE,CAAC;QAClB,OAAO,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,SAAS,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACtC,OAAO;IACT,CAAC;IAED,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,MAAM,YAAY,GAAG,iBAAiB,CAAC,KAAK,IAAI,EAAE;IAChD,MAAM,iBAAiB,EAAE,CAAC;IAC1B,IAAI,CACF,0JAA0J,CAC3J,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,MAAM,UAAU,gBAAgB;IAC9B,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,yCAAyC,CAAC,CAAC;IAExF,IAAI;SACD,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,wBAAwB,CAAC;SACrC,MAAM,CAAC,YAAY,CAAC;SACpB,MAAM,CAAC,KAAK,EAAE,IAA4B,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC7E,WAAW,CACV,OAAO,EACP;;IAEF,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC;;;IAGhE,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC;;IAExE,KAAK,CAAC,GAAG,CAAC,4DAA4D,CAAC;IACvE,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC;;;;;;CAM3E,CACI,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,oCAAoC,CAAC;SACjD,MAAM,CAAC,UAAU,CAAC;SAClB,MAAM,CAAC,OAAO,CAAC;SACf,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;;;;;;;;CAmBL,CACI;SACA,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,4EAA4E,CAAC;SACzF,WAAW,CACV,OAAO,EACP;;;;;;;;;;;;CAYL,CACI;SACA,MAAM,CACL,iBAAiB,CAAC,KAAK,EAAE,CAAU,EAAE,GAAY,EAAE,EAAE;QACnD,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,EAAmB,CAAC;QACpD,UAAU,CAAC,MAAM,oBAAoB,EAAE,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC,CAAC,CACH,CAAC;IAEJ,IAAI;SACD,OAAO,CAAC,QAAQ,CAAC;SACjB,WAAW,CAAC,0BAA0B,CAAC;SACvC,WAAW,CACV,OAAO,EACP;;;;;;;CAOL,CACI;SACA,MAAM,CAAC,YAAY,CAAC,CAAC;IAExB,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -5,9 +5,9 @@ export type { CatalogItem, CatalogStats };
|
|
|
5
5
|
export { sanitizeFilterValue, computeCatalogStats };
|
|
6
6
|
/**
|
|
7
7
|
* `purvey catalog` — Browse the coffee catalog.
|
|
8
|
-
* Requires an authenticated viewer session
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Requires an authenticated viewer session or an API key. Parchment decides
|
|
9
|
+
* access to structured process filters and similarity; the CLI does not pre-check
|
|
10
|
+
* roles for them.
|
|
11
11
|
*/
|
|
12
12
|
export declare function buildCatalogCommand(): Command;
|
|
13
13
|
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -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;AAGpC,OAAO,EAYL,mBAAmB,EACnB,mBAAmB,EAOpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAUrF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AAkEpD;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,
|
|
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,EAYL,mBAAmB,EACnB,mBAAmB,EAOpB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAoB,MAAM,mBAAmB,CAAC;AAUrF,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,CAAC;AAkEpD;;;;;GAKG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CA4pB7C"}
|
package/dist/commands/catalog.js
CHANGED
|
@@ -47,9 +47,9 @@ function parseNonNegativeIntegerArg(rawValue, message) {
|
|
|
47
47
|
// ─── Command builder ──────────────────────────────────────────────────────────
|
|
48
48
|
/**
|
|
49
49
|
* `purvey catalog` — Browse the coffee catalog.
|
|
50
|
-
* Requires an authenticated viewer session
|
|
51
|
-
*
|
|
52
|
-
*
|
|
50
|
+
* Requires an authenticated viewer session or an API key. Parchment decides
|
|
51
|
+
* access to structured process filters and similarity; the CLI does not pre-check
|
|
52
|
+
* roles for them.
|
|
53
53
|
*/
|
|
54
54
|
export function buildCatalogCommand() {
|
|
55
55
|
const catalog = new Command('catalog').description('Browse the coffee catalog');
|
|
@@ -57,27 +57,27 @@ export function buildCatalogCommand() {
|
|
|
57
57
|
catalog
|
|
58
58
|
.command('search')
|
|
59
59
|
.description('Search coffees by origin, process, price, or catalog metadata')
|
|
60
|
-
.option('--origin <origin>'
|
|
61
|
-
.option('--process <method>'
|
|
62
|
-
.option('--processing-base-method <method>'
|
|
63
|
-
.option('--fermentation-type <type>'
|
|
64
|
-
.option('--process-additive <additive>'
|
|
65
|
-
.option('--processing-disclosure-level <level>'
|
|
66
|
-
.option('--processing-confidence-min <n>'
|
|
67
|
-
.option('--price-min <n>'
|
|
68
|
-
.option('--price-max <n>'
|
|
69
|
-
.option('--name <text>'
|
|
70
|
-
.option('--ids <n,n,...>'
|
|
71
|
-
.option('--variety <text>'
|
|
72
|
-
.option('--stocked-days <n>'
|
|
73
|
-
.option('--supplier <name>'
|
|
74
|
-
.option('--drying-method <method>'
|
|
75
|
-
.option('--flavor <keywords>'
|
|
76
|
-
.option('--stocked'
|
|
77
|
-
.option('--sort <field>'
|
|
78
|
-
.option('--offset <n>', '
|
|
79
|
-
.option('--limit <n>',
|
|
80
|
-
.option('--include-proof'
|
|
60
|
+
.option('--origin <origin>')
|
|
61
|
+
.option('--process <method>')
|
|
62
|
+
.option('--processing-base-method <method>')
|
|
63
|
+
.option('--fermentation-type <type>')
|
|
64
|
+
.option('--process-additive <additive>')
|
|
65
|
+
.option('--processing-disclosure-level <level>')
|
|
66
|
+
.option('--processing-confidence-min <n>')
|
|
67
|
+
.option('--price-min <n>')
|
|
68
|
+
.option('--price-max <n>')
|
|
69
|
+
.option('--name <text>')
|
|
70
|
+
.option('--ids <n,n,...>')
|
|
71
|
+
.option('--variety <text>')
|
|
72
|
+
.option('--stocked-days <n>')
|
|
73
|
+
.option('--supplier <name>')
|
|
74
|
+
.option('--drying-method <method>')
|
|
75
|
+
.option('--flavor <keywords>')
|
|
76
|
+
.option('--stocked')
|
|
77
|
+
.option('--sort <field>')
|
|
78
|
+
.option('--offset <n>', '', '0')
|
|
79
|
+
.option('--limit <n>', '', '10')
|
|
80
|
+
.option('--include-proof')
|
|
81
81
|
.addHelpText('after', `
|
|
82
82
|
Examples:
|
|
83
83
|
purvey catalog search --origin "Ethiopia" --pretty
|
|
@@ -106,23 +106,17 @@ Sort fields:
|
|
|
106
106
|
Notes:
|
|
107
107
|
All filters are optional. Without flags, returns up to --limit results.
|
|
108
108
|
--origin accepts partial matches (e.g. "Ethiopia" matches "Ethiopia Guji").
|
|
109
|
-
|
|
110
|
-
--process remains the legacy broad processing-label filter.
|
|
111
|
-
--processing-base-method, --fermentation-type, --process-additive,
|
|
112
|
-
--processing-disclosure-level, and --processing-confidence-min require member
|
|
113
|
-
access under the current session-authenticated CLI path.
|
|
109
|
+
--process matches the broad processing label.
|
|
114
110
|
--processing-base-method, --fermentation-type, --process-additive, and
|
|
115
111
|
--processing-disclosure-level require exact structured metadata matches.
|
|
116
112
|
--processing-confidence-min accepts a decimal from 0 to 1.
|
|
117
113
|
--variety filters on cultivar_detail (partial match, case-insensitive).
|
|
118
114
|
--stocked-days N shows only coffees stocked within the last N days.
|
|
119
|
-
--supplier, --drying-method, and --flavor map to the canonical /v1/catalog
|
|
120
|
-
supplier, dryingMethod, and flavorKeywords parameters; Parchment applies them.
|
|
121
115
|
--ids fetches specific catalog items by ID, ignoring --limit and --offset.
|
|
122
116
|
--offset + --limit enables pagination through large result sets.
|
|
123
|
-
--include-proof
|
|
124
|
-
|
|
125
|
-
Requires an
|
|
117
|
+
--include-proof adds a proof summary to each coffee; without it the output shape
|
|
118
|
+
is unchanged.
|
|
119
|
+
Requires a sign-in ('purvey auth login') or an API key with catalog:read.
|
|
126
120
|
`)
|
|
127
121
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
128
122
|
const globalOpts = cmd.optsWithGlobals();
|
|
@@ -208,7 +202,7 @@ Notes:
|
|
|
208
202
|
catalog
|
|
209
203
|
.command('get <id>')
|
|
210
204
|
.description('Fetch a single coffee by ID')
|
|
211
|
-
.option('--include-proof'
|
|
205
|
+
.option('--include-proof')
|
|
212
206
|
.addHelpText('after', `
|
|
213
207
|
Examples:
|
|
214
208
|
purvey catalog get 128 --pretty
|
|
@@ -217,15 +211,14 @@ Examples:
|
|
|
217
211
|
purvey catalog get 77 --csv
|
|
218
212
|
|
|
219
213
|
Notes:
|
|
220
|
-
<id> is the
|
|
214
|
+
<id> is the catalog ID (integer).
|
|
221
215
|
Use 'purvey catalog search' to find IDs.
|
|
222
|
-
--include-proof
|
|
223
|
-
|
|
224
|
-
Requires an authenticated viewer session.
|
|
216
|
+
--include-proof adds the coffee's proof summary.
|
|
217
|
+
Requires a sign-in ('purvey auth login') or an API key with catalog:read.
|
|
225
218
|
`)
|
|
226
219
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
227
220
|
const globalOpts = cmd.optsWithGlobals();
|
|
228
|
-
const catalogId = parseInt4IdArg(id, `Invalid ID: "${id}". Please provide a numeric
|
|
221
|
+
const catalogId = parseInt4IdArg(id, `Invalid ID: "${id}". Please provide a numeric catalog ID.`);
|
|
229
222
|
const includeProof = opts.includeProof ? true : undefined;
|
|
230
223
|
const data = await getCatalog(catalogId, {
|
|
231
224
|
includeProof,
|
|
@@ -245,7 +238,7 @@ Examples:
|
|
|
245
238
|
Notes:
|
|
246
239
|
Returns aggregated data: total count, average price, unique origins,
|
|
247
240
|
processing method breakdown, and stocked count.
|
|
248
|
-
Requires an
|
|
241
|
+
Requires a sign-in ('purvey auth login') or an API key with catalog:read.
|
|
249
242
|
`)
|
|
250
243
|
.action(withErrorHandling(async (_opts, cmd) => {
|
|
251
244
|
const globalOpts = cmd.optsWithGlobals();
|
|
@@ -256,7 +249,7 @@ Notes:
|
|
|
256
249
|
catalog
|
|
257
250
|
.command('facets [field]')
|
|
258
251
|
.description('List counted catalog facet values for filter discovery')
|
|
259
|
-
.option('--all'
|
|
252
|
+
.option('--all')
|
|
260
253
|
.addHelpText('after', `
|
|
261
254
|
Examples:
|
|
262
255
|
purvey catalog facets supplier --pretty
|
|
@@ -267,12 +260,12 @@ Fields:
|
|
|
267
260
|
supplier, country, processing_base_method, fermentation_type, drying_method, grade, wholesale
|
|
268
261
|
|
|
269
262
|
Notes:
|
|
270
|
-
Without a field, prints
|
|
271
|
-
With a field, prints { field, facet, data, meta }: that facet's counted values and
|
|
272
|
-
Counts
|
|
273
|
-
|
|
263
|
+
Without a field, prints every facet with its counted values and meta (values, facets, meta).
|
|
264
|
+
With a field, prints { field, facet, data, meta }: that facet's counted values and meta.
|
|
265
|
+
Counts include only coffees you can see; counts for multi-valued dimensions can
|
|
266
|
+
overlap, so do not sum them.
|
|
274
267
|
By default only currently stocked catalog rows are included; use --all for all visible rows.
|
|
275
|
-
Requires an
|
|
268
|
+
Requires a sign-in ('purvey auth login') or an API key with catalog:read.
|
|
276
269
|
`)
|
|
277
270
|
.action(withErrorHandling(async (field, opts, cmd) => {
|
|
278
271
|
const globalOpts = cmd.optsWithGlobals();
|
|
@@ -293,18 +286,18 @@ Notes:
|
|
|
293
286
|
// ── catalog rank ─────────────────────────────────────────────────────────
|
|
294
287
|
catalog
|
|
295
288
|
.command('rank')
|
|
296
|
-
.description('Rank catalog
|
|
297
|
-
.option('--objective <objective>',
|
|
298
|
-
.option('--supplier <name>'
|
|
299
|
-
.option('--country <country>'
|
|
300
|
-
.option('--process <method>'
|
|
301
|
-
.option('--stocked'
|
|
302
|
-
.option('--all'
|
|
303
|
-
.option('--price-max <n>'
|
|
304
|
-
.option('--min-score <n>'
|
|
305
|
-
.option('--non-wholesale-only'
|
|
306
|
-
.option('--sample-size <n>', '
|
|
307
|
-
.option('--limit <n>', '
|
|
289
|
+
.description('Rank catalog coffees for a goal: premium, value, fresh arrivals, or rare origins')
|
|
290
|
+
.option('--objective <objective>', '', 'premium')
|
|
291
|
+
.option('--supplier <name>')
|
|
292
|
+
.option('--country <country>')
|
|
293
|
+
.option('--process <method>')
|
|
294
|
+
.option('--stocked')
|
|
295
|
+
.option('--all')
|
|
296
|
+
.option('--price-max <n>')
|
|
297
|
+
.option('--min-score <n>')
|
|
298
|
+
.option('--non-wholesale-only')
|
|
299
|
+
.option('--sample-size <n>', '', '5000')
|
|
300
|
+
.option('--limit <n>', '', '10')
|
|
308
301
|
.addHelpText('after', `
|
|
309
302
|
Examples:
|
|
310
303
|
purvey catalog rank --objective premium --stocked --limit 10 --pretty
|
|
@@ -314,10 +307,10 @@ Examples:
|
|
|
314
307
|
|
|
315
308
|
Notes:
|
|
316
309
|
Objectives: premium, value, fresh_arrival, rare_origin.
|
|
317
|
-
Uses
|
|
310
|
+
Uses the Purveyor Score as the quality signal.
|
|
318
311
|
Generic ranking samples catalog rows ordered by id before deterministic ranking;
|
|
319
312
|
meta.stocked_only/scope, sample_size, and truncated describe that scope, which matters for rare_origin.
|
|
320
|
-
Requires an
|
|
313
|
+
Requires a sign-in ('purvey auth login') or an API key with catalog:read.
|
|
321
314
|
`)
|
|
322
315
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
323
316
|
const globalOpts = cmd.optsWithGlobals();
|
|
@@ -348,24 +341,23 @@ Notes:
|
|
|
348
341
|
catalog
|
|
349
342
|
.command('rank-premium')
|
|
350
343
|
.description('Rank premium catalog candidates by Purveyor Score')
|
|
351
|
-
.option('--origin <origin>'
|
|
352
|
-
.option('--process <method>'
|
|
353
|
-
.option('--stocked'
|
|
354
|
-
.option('--price-max <n>'
|
|
355
|
-
.option('--min-score <n>'
|
|
356
|
-
.option('--include-unscored'
|
|
357
|
-
.option('--sample-size <n>', '
|
|
358
|
-
.option('--limit <n>', '
|
|
344
|
+
.option('--origin <origin>')
|
|
345
|
+
.option('--process <method>')
|
|
346
|
+
.option('--stocked')
|
|
347
|
+
.option('--price-max <n>')
|
|
348
|
+
.option('--min-score <n>')
|
|
349
|
+
.option('--include-unscored')
|
|
350
|
+
.option('--sample-size <n>', '', '250')
|
|
351
|
+
.option('--limit <n>', '', '10')
|
|
359
352
|
.addHelpText('after', `
|
|
360
353
|
Examples:
|
|
361
354
|
purvey catalog rank-premium --stocked --limit 10 --pretty
|
|
362
355
|
purvey catalog rank-premium --origin Ethiopia --min-score 88 --json
|
|
363
356
|
|
|
364
357
|
Notes:
|
|
365
|
-
Ranks by
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
Requires an authenticated viewer session.
|
|
358
|
+
Ranks by Purveyor Score (purveyor_score in output) and adds transparent ranking
|
|
359
|
+
signals for agents.
|
|
360
|
+
Requires a sign-in ('purvey auth login') or an API key with catalog:read.
|
|
369
361
|
`)
|
|
370
362
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
371
363
|
const globalOpts = cmd.optsWithGlobals();
|
|
@@ -389,12 +381,12 @@ Notes:
|
|
|
389
381
|
// ── catalog supplier aggregates ──────────────────────────────────────────
|
|
390
382
|
catalog
|
|
391
383
|
.command('supplier-list')
|
|
392
|
-
.description('
|
|
393
|
-
.option('--country <country>'
|
|
394
|
-
.option('--stocked'
|
|
395
|
-
.option('--non-wholesale-only'
|
|
396
|
-
.option('--sample-size <n>', '
|
|
397
|
-
.option('--limit <n>', '
|
|
384
|
+
.description('Summarize suppliers from the catalog coffees they list')
|
|
385
|
+
.option('--country <country>')
|
|
386
|
+
.option('--stocked')
|
|
387
|
+
.option('--non-wholesale-only')
|
|
388
|
+
.option('--sample-size <n>', '', '5000')
|
|
389
|
+
.option('--limit <n>', '', '25')
|
|
398
390
|
.addHelpText('after', `
|
|
399
391
|
Examples:
|
|
400
392
|
purvey catalog supplier-list --stocked --pretty
|
|
@@ -404,7 +396,7 @@ Examples:
|
|
|
404
396
|
Notes:
|
|
405
397
|
Aggregates supplier count, stocked count, Purveyor Score coverage, average score,
|
|
406
398
|
price range, origin coverage, process coverage, and representative top coffees.
|
|
407
|
-
Requires an
|
|
399
|
+
Requires a sign-in ('purvey auth login') or an API key with catalog:read.
|
|
408
400
|
`)
|
|
409
401
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
410
402
|
const globalOpts = cmd.optsWithGlobals();
|
|
@@ -421,11 +413,11 @@ Notes:
|
|
|
421
413
|
catalog
|
|
422
414
|
.command('supplier-detail <supplier>')
|
|
423
415
|
.description('Show aggregate detail for a supplier query')
|
|
424
|
-
.option('--country <country>'
|
|
425
|
-
.option('--stocked'
|
|
426
|
-
.option('--non-wholesale-only'
|
|
427
|
-
.option('--top-coffees <n>', '
|
|
428
|
-
.option('--sample-size <n>', '
|
|
416
|
+
.option('--country <country>')
|
|
417
|
+
.option('--stocked')
|
|
418
|
+
.option('--non-wholesale-only')
|
|
419
|
+
.option('--top-coffees <n>', '', '5')
|
|
420
|
+
.option('--sample-size <n>', '', '5000')
|
|
429
421
|
.addHelpText('after', `
|
|
430
422
|
Examples:
|
|
431
423
|
purvey catalog supplier-detail "Royal Coffee" --pretty
|
|
@@ -433,7 +425,7 @@ Examples:
|
|
|
433
425
|
|
|
434
426
|
Notes:
|
|
435
427
|
Supplier matching is case-insensitive and partial, mirroring catalog search.
|
|
436
|
-
Requires an
|
|
428
|
+
Requires a sign-in ('purvey auth login') or an API key with catalog:read.
|
|
437
429
|
`)
|
|
438
430
|
.action(withErrorHandling(async (supplier, opts, cmd) => {
|
|
439
431
|
const globalOpts = cmd.optsWithGlobals();
|
|
@@ -451,12 +443,12 @@ Notes:
|
|
|
451
443
|
catalog
|
|
452
444
|
.command('supplier-rank')
|
|
453
445
|
.description('Rank suppliers by average Purveyor Score and stocked coverage')
|
|
454
|
-
.option('--country <country>'
|
|
455
|
-
.option('--stocked'
|
|
456
|
-
.option('--non-wholesale-only'
|
|
457
|
-
.option('--min-coffees <n>',
|
|
458
|
-
.option('--sample-size <n>', '
|
|
459
|
-
.option('--limit <n>', '
|
|
446
|
+
.option('--country <country>')
|
|
447
|
+
.option('--stocked')
|
|
448
|
+
.option('--non-wholesale-only')
|
|
449
|
+
.option('--min-coffees <n>', '', '1')
|
|
450
|
+
.option('--sample-size <n>', '', '5000')
|
|
451
|
+
.option('--limit <n>', '', '25')
|
|
460
452
|
.addHelpText('after', `
|
|
461
453
|
Examples:
|
|
462
454
|
purvey catalog supplier-rank --stocked --min-coffees 3 --pretty
|
|
@@ -464,7 +456,7 @@ Examples:
|
|
|
464
456
|
|
|
465
457
|
Notes:
|
|
466
458
|
Ranks suppliers by average Purveyor Score, then currently stocked count.
|
|
467
|
-
Requires an
|
|
459
|
+
Requires a sign-in ('purvey auth login') or an API key with catalog:read.
|
|
468
460
|
`)
|
|
469
461
|
.action(withErrorHandling(async (opts, cmd) => {
|
|
470
462
|
const globalOpts = cmd.optsWithGlobals();
|
|
@@ -482,11 +474,11 @@ Notes:
|
|
|
482
474
|
// ── catalog similar <id> ──────────────────────────────────────────────────
|
|
483
475
|
catalog
|
|
484
476
|
.command('similar <id>')
|
|
485
|
-
.description('
|
|
486
|
-
.option('--threshold <score>', '
|
|
487
|
-
.option('--limit <count>', '
|
|
488
|
-
.option('--stocked-only'
|
|
489
|
-
.option('--mode <mode>',
|
|
477
|
+
.description('Beta: find likely same-lot candidates and similar coffees for a catalog coffee')
|
|
478
|
+
.option('--threshold <score>', '', '0.7')
|
|
479
|
+
.option('--limit <count>', '', '10')
|
|
480
|
+
.option('--stocked-only')
|
|
481
|
+
.option('--mode <mode>', '', 'all')
|
|
490
482
|
.addHelpText('after', `
|
|
491
483
|
Examples:
|
|
492
484
|
purvey catalog similar 1182
|
|
@@ -495,20 +487,19 @@ Examples:
|
|
|
495
487
|
purvey catalog similar 1182 --json | jq '.data.groups.similar_recommendations[0].match.classification.blockers'
|
|
496
488
|
|
|
497
489
|
Notes:
|
|
498
|
-
|
|
499
|
-
JSON output
|
|
490
|
+
Results are beta candidates to review, not confirmed matches.
|
|
491
|
+
JSON output groups matches under data.target and data.groups.
|
|
500
492
|
data.groups.canonical_candidates are likely same-lot candidates.
|
|
501
493
|
data.groups.similar_recommendations are useful substitutes or profile matches.
|
|
502
494
|
Blockers, proof summaries, score dimensions, classification_version,
|
|
503
|
-
query_strategy, and pricing metadata are
|
|
504
|
-
--threshold controls sensitivity (higher = more strict match, 0.5-0.99).
|
|
505
|
-
--mode can be all, likely_same, or similar_profile.
|
|
495
|
+
query_strategy, and pricing metadata are kept as returned.
|
|
506
496
|
Default output is compact JSON. Use --pretty for formatted JSON.
|
|
507
|
-
|
|
497
|
+
Needs a sign-in ('purvey auth login') or any API key with catalog:read. The free
|
|
498
|
+
Green API plan includes it within its monthly quota.
|
|
508
499
|
`)
|
|
509
500
|
.action(withErrorHandling(async (id, opts, cmd) => {
|
|
510
501
|
const globalOpts = cmd.optsWithGlobals();
|
|
511
|
-
const coffeeId = parseInt4IdArg(id, `Invalid ID: "${id}". Please provide a numeric
|
|
502
|
+
const coffeeId = parseInt4IdArg(id, `Invalid ID: "${id}". Please provide a numeric catalog ID.`);
|
|
512
503
|
const threshold = parseFiniteNumberArg(opts.threshold, `Invalid --threshold: "${opts.threshold}". Must be a number between 0 and 1.`);
|
|
513
504
|
const limit = parseBoundedPositiveIntegerArg(opts.limit, '--limit', 1, 25);
|
|
514
505
|
if (threshold < 0.5 || threshold > 0.99) {
|