@meterapp/car-image 1.10.0 → 1.11.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 +22 -3
- package/dist/agent-config.js +1 -1
- package/dist/agent-config.js.map +1 -1
- package/dist/commands/check.js +99 -0
- package/dist/commands/check.js.map +1 -0
- package/dist/commands/index.js +2 -0
- package/dist/commands/index.js.map +1 -1
- package/dist/mcp/server.js +5 -1
- package/dist/mcp/server.js.map +1 -1
- package/dist/vehicle-list.js +198 -0
- package/dist/vehicle-list.js.map +1 -0
- package/dist/version.js +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -27,6 +27,7 @@ car-image get --make Audi --model RS6 --year 2023 --width 600 --height 400 --tri
|
|
|
27
27
|
car-image get --vehicle veh_395yw8tn73ff8 --color 1a2b3c # by stable vehicle id, in any hex paint
|
|
28
28
|
car-image url --make BMW --model M3 --year 2022 --ttl 86400 # signed, key-free URL for a web page
|
|
29
29
|
car-image resolve red 2024 porsche 911 side view # free text → parameters + ready command
|
|
30
|
+
car-image check inventory.csv --out inventory-checked.csv # which of a whole list the catalog carries, with ids (free)
|
|
30
31
|
car-image vin 1HGCM82633A004352 # decode a VIN (free) → the catalog vehicle and its id
|
|
31
32
|
car-image 3d create --make Porsche --model 911 --year 2024 --color red --wait --out ./models # 100 credits
|
|
32
33
|
car-image agent-config --host claude-code # MCP setup for agents
|
|
@@ -50,6 +51,7 @@ car-image request vehicle Toyota Sienna --year 2024 # catalog missing
|
|
|
50
51
|
| `3d download <id> [--format glb\|usdz\|fbx\|thumbnail] [--out <file> \| --out -]` | Saves one file of a ready model (default `glb`, named after the vehicle and paint). Follows the signed storage redirect itself, without the key. Free. |
|
|
51
52
|
| `search <query…> [--limit] [--year]` | Fuzzy catalog search (free, no key). `--json` shows each model hit's vehicle ids per year. |
|
|
52
53
|
| `resolve <free text…>` | Free text → exact parameters (with the vehicle id), candidates, confidence (`high`, `medium` or `low`) and a ready-to-run `car-image get …`. |
|
|
54
|
+
| `check <file.csv\|file.json\|-> [--out <file>] [--format csv\|json] [--json]` (alias `coverage`) | Checks which vehicles of a list the catalog carries, each read the way `get` reads it: a CSV with `make`, `model` and `year` columns (or `vehicle` for stored ids, plus an optional `ref`), a JSON array, or `-` for stdin. Prints the counts and what did not match; `--out` writes the file back with `status`, `vehicle_id`, the catalog spelling, `match`, `reason` and `suggested_vehicle_id` beside each row. Any length, 2,000 vehicles per request. Free, key required. See [Backfill a catalog](#backfill-a-catalog). |
|
|
53
55
|
| `vin <VIN> [--year <year>] [--json]` | Decodes a full or partial VIN (`*` for unknown positions) with NHTSA data: year, make, model, trim, body, engine, transmission, plant, and the catalog vehicle it maps to with a ready `car-image get --vehicle …`. Free, key required. |
|
|
54
56
|
| `options` | Views (with yaw), colors (hex swatches, plus how custom hex paint is spelled), sizes, fit modes, backgrounds, trim limits, formats, pricing, catalog coverage, vehicle ids. |
|
|
55
57
|
| `describe [operationId\|path\|all] [--json]` | Explains the REST API from `/openapi.json`: parameters with enums/defaults, response headers, error codes, agent notes. |
|
|
@@ -61,7 +63,7 @@ car-image request vehicle Toyota Sienna --year 2024 # catalog missing
|
|
|
61
63
|
| `about building "<what you are building>"` | Tells the team what you are building. Private: only the Car Image team sees it. |
|
|
62
64
|
| `about referral <search\|ai_assistant\|github\|npm\|twitter_x\|linkedin\|reddit\|hacker_news\|youtube\|friend_or_colleague\|blog_or_article\|other> [--detail "…"]` | Tells the team how you found the API. Private. |
|
|
63
65
|
| `billing [--plan pro\|business [--yearly]] [--credits 100\|500\|1000\|2500\|10000] [--portal] [--no-browser]` | Opens hosted Stripe Checkout for a plan or extra credits, or the billing portal. An account already on a plan is switched in place. The CLI never touches card data. |
|
|
64
|
-
| `mcp [--toolset core\|all]` | Runs the stdio MCP server (see below). `core` (default) is the
|
|
66
|
+
| `mcp [--toolset core\|all]` | Runs the stdio MCP server (see below). `core` (default) is the eighteen image, catalog, VIN and 3D tools; `all` adds the request board. |
|
|
65
67
|
| `agent-config [--host claude-code\|claude-desktop\|cursor\|chatgpt\|generic] [--remote] [--json]` | Ready-to-paste MCP configuration. |
|
|
66
68
|
| `update [--check]` | Compares with the npm registry and updates via npm/pnpm/bun (detected). |
|
|
67
69
|
| `config path \| get <key> \| set <key> <value> \| list` | Keys: `autoUpdate` (`ask`\|`always`\|`never`), `telemetry` (`on`\|`off`), `baseUrl`. |
|
|
@@ -114,6 +116,23 @@ car-image vin 1HGCM82633A004352
|
|
|
114
116
|
car-image vin "1HGCM826*3A" --year 2003 --json
|
|
115
117
|
```
|
|
116
118
|
|
|
119
|
+
## Backfill a catalog
|
|
120
|
+
|
|
121
|
+
Check a catalog once instead of discovering its gaps one 404 at a time in every view and color:
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
car-image check inventory.csv --out inventory-checked.csv
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
`inventory.csv` needs `make`, `model` and `year` columns in any order (`brand` and `model_year` work too, and your other columns ride along), or a `vehicle` column of ids you stored before; a `ref` column is echoed back. Every row is read exactly as `get` would read it. `inventory-checked.csv` is the same file with the answer beside each row:
|
|
128
|
+
|
|
129
|
+
- `match`: store `vehicle_id` and render by it, in every view and color (`car-image get --vehicle <id> --view side`). `match` names the rule that read your spelling (`exact`, `alias`, `trim`, `fuzzy`…); the loose ones are worth a glance.
|
|
130
|
+
- `suggestion`: the catalog lacks the vehicle as named, and `suggested_vehicle_id` is the closest real one, often the same model in its nearest year. It is another vehicle: use it only if it is the car you mean.
|
|
131
|
+
- `miss`: nothing close. Skip it in every view and color; `car-image request vehicle <make> <model>` asks for it.
|
|
132
|
+
- `invalid`: the row cannot be read, and `error` says why.
|
|
133
|
+
|
|
134
|
+
The check is free: up to 2,000 vehicles a request (the CLI splits longer files) and 10 checks a minute per account. Matches never change, so check again only the misses and suggestions, after a catalog release. The same check is `client.checkVehicles(list)` in the SDK and `POST /api/v1/vehicles/check` over HTTP ([docs](https://carimage.dev/docs/vehicles?ref=npm-cli#backfill)).
|
|
135
|
+
|
|
117
136
|
## 3D models
|
|
118
137
|
|
|
119
138
|
`car-image 3d create` builds a textured 3D model of any catalog vehicle in any paint — GLB, USDZ, FBX, a PNG thumbnail and a browser build (`glb_web`) — from the same renders the images use. It costs 100 credits when the request is made, whether the model is cached, in progress or new, and nothing for a vehicle and color you already own (a failed model is refunded); polling, downloads and publishing are free. The first model of a vehicle takes 10–20 minutes; further colors take 1–2 minutes.
|
|
@@ -145,8 +164,8 @@ car-image url --batch listing-4711.json --ttl 604800 --idempotency-key listing-4
|
|
|
145
164
|
|
|
146
165
|
Two servers expose the same tools, in two sets:
|
|
147
166
|
|
|
148
|
-
- **Core (default),
|
|
149
|
-
- **All, twenty-
|
|
167
|
+
- **Core (default), eighteen tools:** `get_make_logo`, `get_car_image`, `create_car_image_urls`, `search_vehicles`, `resolve_vehicle`, `decode_vin`, `check_vehicles`, `list_image_options`, `get_account`, `rate_image`, `create_3d_model`, `get_3d_model`, `publish_3d_model`, `describe_api`, `get_pricing`, `search_help`, `create_checkout_link`, `get_billing_link`. Only `get_make_logo` (1 credit per logo), `get_car_image`, `create_car_image_urls` (1 credit per image) and `create_3d_model` (100 credits per model, free once the account owns the vehicle and color) cost credits.
|
|
168
|
+
- **All, twenty-six tools:** the core eighteen plus the free request board — `list_requests`, `request_vehicle`, `request_feature`, `get_request`, `upvote_request`, `comment_on_request`, `share_building` and `share_referral`.
|
|
150
169
|
|
|
151
170
|
`get_car_image`, each `create_car_image_urls` entry, `rate_image` and `create_3d_model` name the car by make, model and year or by `vehicle` (a stable id from `search_vehicles`, `resolve_vehicle` or `decode_vin`) and take `color` as one of the presets or any hex such as `#1a2b3c`; the image tools also take `fit`, `background`, `trim` and `padding` alongside view, size and format (`auto` included: a signed URL negotiates per viewer, an inline `get_car_image` delivers PNG for it), and `create_car_image_urls` honors `renew` and `renew_days` and takes `idempotency_key`, forwarded as the `Idempotency-Key` header so a retried tool call replays the first result (`idempotent_replayed: true`) instead of billing again. Agents are told to call `resolve_vehicle` first and render by the `vehicle` id it returns; it reports a confidence of `high`, `medium` or `low` and reads a make and model by the rules the image tools use, so it names the vehicle they would render. `create_3d_model` returns the request at once; agents poll `get_3d_model` until `status` is `ready` and hand over `files.<kind>.url`.
|
|
152
171
|
|
package/dist/agent-config.js
CHANGED
|
@@ -23,7 +23,7 @@ function json(value) {
|
|
|
23
23
|
return JSON.stringify(value, null, 2);
|
|
24
24
|
}
|
|
25
25
|
const KEY_NOTE = `Set CAR_IMAGE_API_KEY in the environment that launches the agent (or replace ${KEY_PLACEHOLDER} with the key in a file that is not committed). Never paste a key into a URL, prompt or repository.`;
|
|
26
|
-
/** The
|
|
26
|
+
/** The eighteen core tools every configuration above exposes; the request board is opt-in. Read off the SDK so it cannot drift. */
|
|
27
27
|
export const CORE_TOOLS_NOTE = `Tools (core): ${MCP_TOOLSETS.core.join(", ")}`;
|
|
28
28
|
/**
|
|
29
29
|
* How to opt into the request-board tools. The configurations printed here
|
package/dist/agent-config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-config.js","sourceRoot":"","sources":["../src/agent-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE5C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAU,CAAC;AAGtG,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAStD,MAAM,UAAU,MAAM,CAAC,OAAe;IACpC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,CAAC;AAClD,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,IAAa;IAC9D,MAAM,GAAG,GAA2B,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC;IAC3E,IAAI,IAAI;QAAE,GAAG,CAAC,cAAc,GAAG,IAAI,CAAC;IACpC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,gBAAgB;QAAE,GAAG,CAAC,iBAAiB,GAAG,OAAO,CAAC;IACtF,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC;AACpE,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,kBAAkB,CAAC,OAAe,EAAE,IAAa;IAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,eAAe,EAAE,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;AACvJ,CAAC;AAED,SAAS,IAAI,CAAC,KAAc;IAC1B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACxC,CAAC;AAED,MAAM,QAAQ,GAAG,gFAAgF,eAAe,qGAAqG,CAAC;AAEtN,
|
|
1
|
+
{"version":3,"file":"agent-config.js","sourceRoot":"","sources":["../src/agent-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { readFile, writeFile } from "node:fs/promises";
|
|
2
|
+
import { extname } from "node:path";
|
|
3
|
+
import { MAX_CHECK_VEHICLES } from "@meterapp/car-image-sdk";
|
|
4
|
+
import { flagChoice, flagString } from "../args.js";
|
|
5
|
+
import { CliError } from "../errors.js";
|
|
6
|
+
import { formatInteger, paint, printJson, table } from "../output.js";
|
|
7
|
+
import { answerColumns, checkedJson, parseVehicleList, writeCheckedCsv } from "../vehicle-list.js";
|
|
8
|
+
/** Rows of the not-matched table a terminal shows; the output file has them all. */
|
|
9
|
+
const SHOWN = 20;
|
|
10
|
+
/** Rules that read a name more loosely than its spelling: worth a glance before a backfill renders them. */
|
|
11
|
+
const LOOSE = new Set(["trim", "badge", "fuzzy"]);
|
|
12
|
+
async function readStdin() {
|
|
13
|
+
const chunks = [];
|
|
14
|
+
for await (const chunk of process.stdin)
|
|
15
|
+
chunks.push(typeof chunk === "string" ? Buffer.from(chunk) : chunk);
|
|
16
|
+
return Buffer.concat(chunks).toString("utf8");
|
|
17
|
+
}
|
|
18
|
+
async function readList(path, format) {
|
|
19
|
+
let text;
|
|
20
|
+
try {
|
|
21
|
+
text = path === "-" ? await readStdin() : await readFile(path, "utf8");
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
throw new CliError(`Cannot read ${path}: ${error instanceof Error ? error.message : String(error)}`, 2);
|
|
25
|
+
}
|
|
26
|
+
const byExtension = extname(path).toLowerCase() === ".json" ? "json" : extname(path).toLowerCase() === ".csv" ? "csv" : undefined;
|
|
27
|
+
return parseVehicleList(text, format ?? byExtension);
|
|
28
|
+
}
|
|
29
|
+
function inputLabel(list, index) {
|
|
30
|
+
const entry = list.entries[index] ?? {};
|
|
31
|
+
if (typeof entry.vehicle === "string")
|
|
32
|
+
return entry.vehicle;
|
|
33
|
+
return [entry.year, entry.make, entry.model].filter((part) => part !== undefined && part !== "").join(" ") || "(empty)";
|
|
34
|
+
}
|
|
35
|
+
function closest(result) {
|
|
36
|
+
if (result.status === "invalid")
|
|
37
|
+
return result.error ?? "";
|
|
38
|
+
const first = result.suggestions?.find((suggestion) => suggestion.id);
|
|
39
|
+
if (first)
|
|
40
|
+
return `${first.make}/${first.model} ${first.year} ${first.id}`;
|
|
41
|
+
return result.search ? `try GET ${result.search}` : "";
|
|
42
|
+
}
|
|
43
|
+
export const checkCommand = {
|
|
44
|
+
name: "check",
|
|
45
|
+
aliases: ["coverage"],
|
|
46
|
+
summary: "Check which vehicles of a CSV or JSON list the catalog carries, and get their ids (free)",
|
|
47
|
+
usage: "car-image check <file.csv|file.json|-> [--out checked.csv|checked.json] [--format csv|json] [--json]\n e.g. car-image check inventory.csv --out inventory-checked.csv",
|
|
48
|
+
async run(ctx) {
|
|
49
|
+
const [path] = ctx.args.positionals;
|
|
50
|
+
if (!path) {
|
|
51
|
+
throw new CliError("Missing the list to check", 2, "Example: car-image check vehicles.csv --out checked.csv (columns make,model,year[,ref], or vehicle for stored ids; - reads stdin)");
|
|
52
|
+
}
|
|
53
|
+
if (!ctx.clientContext.apiKey)
|
|
54
|
+
throw new CliError("Not signed in.", 1, "Run `car-image login` or set CAR_IMAGE_API_KEY.");
|
|
55
|
+
const format = flagChoice(ctx.args.flags, "format", ["csv", "json"]);
|
|
56
|
+
const outPath = flagString(ctx.args.flags, "out");
|
|
57
|
+
const list = await readList(path, format);
|
|
58
|
+
const total = list.entries.length;
|
|
59
|
+
const progress = !ctx.io.json && !ctx.io.quiet && total > MAX_CHECK_VEHICLES;
|
|
60
|
+
const response = await ctx.clientContext.client.checkVehicles(list.entries, {
|
|
61
|
+
onProgress: progress ? (checked) => ctx.io.stderr(`${paint(ctx.io, "dim", `Checked ${formatInteger(checked)} of ${formatInteger(total)}…`)}\n`) : undefined,
|
|
62
|
+
});
|
|
63
|
+
// A CSV comes back as the CSV it was, with the answers beside each row; JSON (or --out *.json) as JSON.
|
|
64
|
+
const writesJson = list.format === "json" || (outPath !== undefined && extname(outPath).toLowerCase() === ".json");
|
|
65
|
+
if (outPath) {
|
|
66
|
+
const body = writesJson ? `${JSON.stringify(checkedJson(list, response), null, 2)}\n` : writeCheckedCsv(list, response.data.results);
|
|
67
|
+
try {
|
|
68
|
+
await writeFile(outPath, body);
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw new CliError(`Cannot write ${outPath}: ${error instanceof Error ? error.message : String(error)}`, 1);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
if (ctx.io.json) {
|
|
75
|
+
printJson(ctx.io, checkedJson(list, response));
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
78
|
+
const { summary, results } = response.data;
|
|
79
|
+
const lines = [
|
|
80
|
+
`Checked ${formatInteger(summary.total)} vehicle${summary.total === 1 ? "" : "s"}: ${paint(ctx.io, "green", `${formatInteger(summary.match)} match${summary.match === 1 ? "" : "es"}`)}, ${formatInteger(summary.suggestion)} with suggestions, ${formatInteger(summary.miss)} missing${summary.invalid ? `, ${paint(ctx.io, "yellow", `${formatInteger(summary.invalid)} invalid`)}` : ""}.`,
|
|
81
|
+
];
|
|
82
|
+
if (summary.match)
|
|
83
|
+
lines.push(`${formatInteger(summary.distinct_vehicles)} distinct vehicle${summary.distinct_vehicles === 1 ? "" : "s"} to render: store each vehicle_id and render by it (car-image get --vehicle <id>).`);
|
|
84
|
+
const loose = results.filter((result) => result.vehicle && LOOSE.has(result.vehicle.match)).length;
|
|
85
|
+
if (loose)
|
|
86
|
+
lines.push(paint(ctx.io, "dim", `${formatInteger(loose)} matched by a looser reading of the name (trim words, a badge or a typo): worth a glance.`));
|
|
87
|
+
const unmatched = results.filter((result) => result.status !== "match");
|
|
88
|
+
if (unmatched.length) {
|
|
89
|
+
const rows = unmatched.slice(0, SHOWN).map((result) => [String(result.index + 1), inputLabel(list, result.index), result.status, result.reason ?? "", closest(result)]);
|
|
90
|
+
lines.push("", `${paint(ctx.io, "bold", "Not matched")}${unmatched.length > SHOWN ? ` (first ${SHOWN} of ${formatInteger(unmatched.length)})` : ""}`, table(rows, ["#", "entry", "status", "reason", "closest or fix"]), paint(ctx.io, "dim", "A suggestion is another vehicle (the model in its nearest year, a related model): use it only if it is the car you mean. Skip a miss in every view and color."));
|
|
91
|
+
}
|
|
92
|
+
lines.push("", outPath
|
|
93
|
+
? `Wrote ${outPath}: every entry with its answer${writesJson ? " (vehicle.id is the id to store)" : ` (the ${answerColumns(list)[1]} column is the id to store)`}.`
|
|
94
|
+
: paint(ctx.io, "dim", `Add --out checked.${list.format === "json" ? "json" : "csv"} to save every entry with its vehicle id.`));
|
|
95
|
+
ctx.io.stdout(`${lines.join("\n")}\n`);
|
|
96
|
+
return 0;
|
|
97
|
+
},
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../src/commands/check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,kBAAkB,EAA2B,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,eAAe,EAAoB,MAAM,oBAAoB,CAAC;AAErH,oFAAoF;AACpF,MAAM,KAAK,GAAG,EAAE,CAAC;AACjB,4GAA4G;AAC5G,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAElD,KAAK,UAAU,SAAS;IACtB,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC7G,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,KAAK,UAAU,QAAQ,CAAC,IAAY,EAAE,MAAkC;IACtE,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACzE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,QAAQ,CAAC,eAAe,IAAI,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;IAClI,OAAO,gBAAgB,CAAC,IAAI,EAAE,MAAM,IAAI,WAAW,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,UAAU,CAAC,IAAiB,EAAE,KAAa;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC,OAAO,CAAC;IAC5D,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;AAC1H,CAAC;AAED,SAAS,OAAO,CAAC,MAA0B;IACzC,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACtE,IAAI,KAAK;QAAE,OAAO,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;IAC3E,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAsB;IAC7C,IAAI,EAAE,OAAO;IACb,OAAO,EAAE,CAAC,UAAU,CAAC;IACrB,OAAO,EAAE,0FAA0F;IACnG,KAAK,EACH,wKAAwK;IAC1K,KAAK,CAAC,GAAG,CAAC,GAAmB;QAC3B,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,QAAQ,CAAC,2BAA2B,EAAE,CAAC,EAAE,mIAAmI,CAAC,CAAC;QAC1L,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM;YAAE,MAAM,IAAI,QAAQ,CAAC,gBAAgB,EAAE,CAAC,EAAE,iDAAiD,CAAC,CAAC;QAC1H,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,CAAU,CAAC,CAAC;QAC9E,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,IAAI,KAAK,GAAG,kBAAkB,CAAC;QAC7E,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1E,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,WAAW,aAAa,CAAC,OAAO,CAAC,OAAO,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC5J,CAAC,CAAC;QAEH,wGAAwG;QACxG,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC;QACnH,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACrI,IAAI,CAAC;gBACH,MAAM,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,IAAI,QAAQ,CAAC,gBAAgB,OAAO,KAAK,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;YAC9G,CAAC;QACH,CAAC;QACD,IAAI,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAChB,SAAS,CAAC,GAAG,CAAC,EAAE,EAAE,WAAW,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,CAAC;QACX,CAAC;QAED,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC;QAC3C,MAAM,KAAK,GAAG;YACZ,WAAW,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG;SAC9X,CAAC;QACF,IAAI,OAAO,CAAC,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,OAAO,CAAC,iBAAiB,CAAC,oBAAoB,OAAO,CAAC,iBAAiB,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,oFAAoF,CAAC,CAAC;QAC7N,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACnG,IAAI,KAAK;YAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,2FAA2F,CAAC,CAAC,CAAC;QAChK,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,OAAO,CAAC,CAAC;QACxE,IAAI,SAAS,CAAC,MAAM,EAAE,CAAC;YACrB,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACxK,KAAK,CAAC,IAAI,CACR,EAAE,EACF,GAAG,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,KAAK,OAAO,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EACrI,KAAK,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC,EACjE,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,+JAA+J,CAAC,CACtL,CAAC;QACJ,CAAC;QACD,KAAK,CAAC,IAAI,CACR,EAAE,EACF,OAAO;YACL,CAAC,CAAC,SAAS,OAAO,gCAAgC,UAAU,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,SAAS,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,6BAA6B,GAAG;YACnK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,qBAAqB,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,2CAA2C,CAAC,CAClI,CAAC;QACF,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,CAAC,CAAC;IACX,CAAC;CACF,CAAC"}
|
package/dist/commands/index.js
CHANGED
|
@@ -3,6 +3,7 @@ import { aboutCommand } from "./about.js";
|
|
|
3
3
|
import { agentConfigCommand, mcpCommand } from "./agents.js";
|
|
4
4
|
import { billingCommand } from "./billing.js";
|
|
5
5
|
import { feedbackCommand, optionsCommand, resolveCommand, searchCommand } from "./catalog.js";
|
|
6
|
+
import { checkCommand } from "./check.js";
|
|
6
7
|
import { describeCommand } from "./describe.js";
|
|
7
8
|
import { doctorCommand } from "./doctor.js";
|
|
8
9
|
import { helpCommand } from "./help.js";
|
|
@@ -25,6 +26,7 @@ export const COMMANDS = [
|
|
|
25
26
|
model3dCommand,
|
|
26
27
|
searchCommand,
|
|
27
28
|
resolveCommand,
|
|
29
|
+
checkCommand,
|
|
28
30
|
vinCommand,
|
|
29
31
|
optionsCommand,
|
|
30
32
|
describeCommand,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAkB,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAwB;IAC3C,YAAY;IACZ,aAAa;IACb,aAAa;IACb,aAAa;IACb,UAAU;IACV,WAAW;IACX,UAAU;IACV,cAAc;IACd,aAAa;IACb,cAAc;IACd,UAAU;IACV,cAAc;IACd,eAAe;IACf,eAAe;IACf,cAAc;IACd,YAAY;IACZ,cAAc;IACd,cAAc;IACd,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,cAAc;IACd,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,UAAU,WAAW;IACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1G,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QAChE,OAAO;QACP,KAAK;KACN,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAClG,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9D,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC9F,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAkB,MAAM,WAAW,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,CAAC,MAAM,QAAQ,GAAwB;IAC3C,YAAY;IACZ,aAAa;IACb,aAAa;IACb,aAAa;IACb,UAAU;IACV,WAAW;IACX,UAAU;IACV,cAAc;IACd,aAAa;IACb,cAAc;IACd,YAAY;IACZ,UAAU;IACV,cAAc;IACd,eAAe;IACf,eAAe;IACf,cAAc;IACd,YAAY;IACZ,cAAc;IACd,cAAc;IACd,cAAc;IACd,UAAU;IACV,kBAAkB;IAClB,aAAa;IACb,aAAa;IACb,gBAAgB;IAChB,cAAc;IACd,WAAW,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC;CACjC,CAAC;AAEF,MAAM,UAAU,WAAW;IACzB,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;QAC1G,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI;QAChE,OAAO;QACP,KAAK;KACN,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAClC,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;AAClG,CAAC"}
|
package/dist/mcp/server.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { McpServer } from "@modelcontextprotocol/server";
|
|
2
2
|
import { serveStdio } from "@modelcontextprotocol/server/stdio";
|
|
3
3
|
import { CREDITS_PER_DOLLAR, colorParam, isCarImageError, isHexColor } from "@meterapp/car-image-sdk";
|
|
4
|
-
import { DEFAULT_MCP_TOOLSET, MCP_SERVER_INFO, MAKE_LOGO_NOTICE, MCP_TOOLS, MCP_TOOLSETS, accountSummary, errorToolResult, formatApiReference, imageUrlsSummary, withImageMarkdown, inlineImageFormat, jsonToolResult, mcpInstructions, model3dSummary, nextStepFor, readingTextArguments, resolveSummary, searchSummary, toImageOptions, toVehicleMatch, vinNextStepFor, vinSummary, } from "@meterapp/car-image-sdk/mcp";
|
|
4
|
+
import { DEFAULT_MCP_TOOLSET, MCP_SERVER_INFO, MAKE_LOGO_NOTICE, MCP_TOOLS, MCP_TOOLSETS, accountSummary, checkSummary, errorToolResult, formatApiReference, imageUrlsSummary, withImageMarkdown, inlineImageFormat, jsonToolResult, mcpInstructions, model3dSummary, nextStepFor, readingTextArguments, resolveSummary, searchSummary, toImageOptions, toVehicleMatch, vinNextStepFor, vinSummary, } from "@meterapp/car-image-sdk/mcp";
|
|
5
5
|
import { votesLabel } from "../commands/request.js";
|
|
6
6
|
/** `{ vehicle }` or `{ make, model, year }` from a tool input; the schema guarantees one of the two is complete. */
|
|
7
7
|
export function toVehicleSelector(input) {
|
|
@@ -222,6 +222,10 @@ export function buildStdioMcpServer(client, toolset = DEFAULT_MCP_TOOLSET) {
|
|
|
222
222
|
return toolErrorResult(error, vinNextStepFor);
|
|
223
223
|
}
|
|
224
224
|
});
|
|
225
|
+
register(server, "check_vehicles", async (input) => {
|
|
226
|
+
const result = await client.checkVehicles(input.vehicles);
|
|
227
|
+
return jsonToolResult({ ...result }, checkSummary(result.data.summary));
|
|
228
|
+
});
|
|
225
229
|
register(server, "list_image_options", async () => {
|
|
226
230
|
const result = await client.options();
|
|
227
231
|
return jsonToolResult({ ...result, data: toImageOptions(result.data) });
|
package/dist/mcp/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import { CliError } from "./errors.js";
|
|
2
|
+
/** Header spellings of each field, after lowercasing and turning spaces and hyphens into underscores. */
|
|
3
|
+
const COLUMNS = {
|
|
4
|
+
make: ["make", "brand", "manufacturer"],
|
|
5
|
+
model: ["model"],
|
|
6
|
+
year: ["year", "model_year"],
|
|
7
|
+
vehicle: ["vehicle", "vehicle_id"],
|
|
8
|
+
ref: ["ref"],
|
|
9
|
+
};
|
|
10
|
+
const YEAR = /^\s*(?:19|20)\d{2}\s*$/;
|
|
11
|
+
function columnKey(name) {
|
|
12
|
+
return name.trim().toLowerCase().replace(/[\s-]+/g, "_");
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* RFC 4180 fields: quotes around a field that holds the separator, a quote
|
|
16
|
+
* or a line break, `""` for a quote inside one. Blank lines are skipped and a
|
|
17
|
+
* byte order mark is dropped.
|
|
18
|
+
*/
|
|
19
|
+
export function parseCsv(text, delimiter = ",") {
|
|
20
|
+
const rows = [];
|
|
21
|
+
let row = [];
|
|
22
|
+
let field = "";
|
|
23
|
+
let quoted = false;
|
|
24
|
+
let started = false;
|
|
25
|
+
const source = text.replace(/^/, "");
|
|
26
|
+
const endRow = () => {
|
|
27
|
+
row.push(field);
|
|
28
|
+
if (row.length > 1 || row[0] !== "")
|
|
29
|
+
rows.push(row);
|
|
30
|
+
row = [];
|
|
31
|
+
field = "";
|
|
32
|
+
started = false;
|
|
33
|
+
};
|
|
34
|
+
for (let index = 0; index < source.length; index += 1) {
|
|
35
|
+
const char = source[index];
|
|
36
|
+
if (quoted) {
|
|
37
|
+
if (char !== '"')
|
|
38
|
+
field += char;
|
|
39
|
+
else if (source[index + 1] === '"') {
|
|
40
|
+
field += '"';
|
|
41
|
+
index += 1;
|
|
42
|
+
}
|
|
43
|
+
else
|
|
44
|
+
quoted = false;
|
|
45
|
+
}
|
|
46
|
+
else if (char === '"' && !started) {
|
|
47
|
+
quoted = true;
|
|
48
|
+
started = true;
|
|
49
|
+
}
|
|
50
|
+
else if (char === delimiter) {
|
|
51
|
+
row.push(field);
|
|
52
|
+
field = "";
|
|
53
|
+
started = false;
|
|
54
|
+
}
|
|
55
|
+
else if (char === "\n" || char === "\r") {
|
|
56
|
+
if (char === "\r" && source[index + 1] === "\n")
|
|
57
|
+
index += 1;
|
|
58
|
+
endRow();
|
|
59
|
+
}
|
|
60
|
+
else {
|
|
61
|
+
field += char;
|
|
62
|
+
started = true;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (quoted)
|
|
66
|
+
throw new CliError("The CSV ends inside a quoted field", 2, 'Close every quote: a field with a comma is written "like, this".');
|
|
67
|
+
if (field !== "" || row.length > 0)
|
|
68
|
+
endRow();
|
|
69
|
+
return rows;
|
|
70
|
+
}
|
|
71
|
+
/** The separator a header line uses: whichever of comma, tab and semicolon it holds most of. */
|
|
72
|
+
export function detectDelimiter(firstLine) {
|
|
73
|
+
const counts = [",", "\t", ";"].map((delimiter) => ({ delimiter, count: firstLine.split(delimiter).length - 1 }));
|
|
74
|
+
return counts.reduce((best, entry) => (entry.count > best.count ? entry : best)).delimiter;
|
|
75
|
+
}
|
|
76
|
+
function fromJson(text) {
|
|
77
|
+
let parsed;
|
|
78
|
+
try {
|
|
79
|
+
parsed = JSON.parse(text);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
throw new CliError("The file is not valid JSON", 2, 'Expected an array of {"make","model","year"} or {"vehicle"} objects, or {"vehicles": [...]}.');
|
|
83
|
+
}
|
|
84
|
+
const list = Array.isArray(parsed)
|
|
85
|
+
? parsed
|
|
86
|
+
: parsed && typeof parsed === "object" && Array.isArray(parsed.vehicles)
|
|
87
|
+
? parsed.vehicles
|
|
88
|
+
: null;
|
|
89
|
+
if (!list)
|
|
90
|
+
throw new CliError('The JSON must be an array of vehicles or {"vehicles": [...]}', 2);
|
|
91
|
+
// Entries go to the API as they are: it answers one it cannot read as invalid, on its own.
|
|
92
|
+
return { format: "json", entries: list };
|
|
93
|
+
}
|
|
94
|
+
function fromCsv(text) {
|
|
95
|
+
const firstLine = text.replace(/^\uFEFF/, "").split(/\r?\n/, 1)[0] ?? "";
|
|
96
|
+
const delimiter = detectDelimiter(firstLine);
|
|
97
|
+
const table = parseCsv(text, delimiter);
|
|
98
|
+
const [first] = table;
|
|
99
|
+
if (!first)
|
|
100
|
+
throw new CliError("The file has no rows", 2);
|
|
101
|
+
const named = first.map(columnKey);
|
|
102
|
+
const find = (field) => named.findIndex((name) => COLUMNS[field].includes(name));
|
|
103
|
+
let columns = { make: find("make"), model: find("model"), year: find("year"), vehicle: find("vehicle"), ref: find("ref") };
|
|
104
|
+
let header = first;
|
|
105
|
+
let rows = table.slice(1);
|
|
106
|
+
if (columns.make < 0 && columns.model < 0 && columns.vehicle < 0) {
|
|
107
|
+
// No header: "Toyota,Corolla,2019" rows are make, model and year, then a ref.
|
|
108
|
+
if (first.length < 3 || !YEAR.test(first[2] ?? "")) {
|
|
109
|
+
throw new CliError("The first row must name the columns: make, model and year, or vehicle for stored ids", 2, "For example: make,model,year,ref. A ref column (your row id or SKU) is echoed back beside each answer.");
|
|
110
|
+
}
|
|
111
|
+
columns = { make: 0, model: 1, year: 2, vehicle: -1, ref: first.length > 3 ? 3 : -1 };
|
|
112
|
+
header = ["make", "model", "year", ...(first.length > 3 ? ["ref"] : [])];
|
|
113
|
+
rows = table;
|
|
114
|
+
}
|
|
115
|
+
const cell = (row, index) => (index >= 0 ? row[index]?.trim() || undefined : undefined);
|
|
116
|
+
const entries = rows.map((row) => {
|
|
117
|
+
const entry = {};
|
|
118
|
+
const vehicle = cell(row, columns.vehicle);
|
|
119
|
+
// A row with a stored id and names too is checked by the id, the value that never changes.
|
|
120
|
+
if (vehicle)
|
|
121
|
+
entry.vehicle = vehicle;
|
|
122
|
+
else {
|
|
123
|
+
const make = cell(row, columns.make);
|
|
124
|
+
const model = cell(row, columns.model);
|
|
125
|
+
const year = cell(row, columns.year);
|
|
126
|
+
if (make !== undefined)
|
|
127
|
+
entry.make = make;
|
|
128
|
+
if (model !== undefined)
|
|
129
|
+
entry.model = model;
|
|
130
|
+
if (year !== undefined)
|
|
131
|
+
entry.year = year;
|
|
132
|
+
}
|
|
133
|
+
const ref = cell(row, columns.ref);
|
|
134
|
+
if (ref !== undefined)
|
|
135
|
+
entry.ref = ref;
|
|
136
|
+
return entry;
|
|
137
|
+
});
|
|
138
|
+
return { format: "csv", entries, header, rows, delimiter };
|
|
139
|
+
}
|
|
140
|
+
/** A list from the text of a file: JSON when it opens with `[` or `{` (or `format` says so), CSV otherwise. */
|
|
141
|
+
export function parseVehicleList(text, format) {
|
|
142
|
+
const json = format ? format === "json" : /^\s*[[{]/.test(text.replace(/^/, ""));
|
|
143
|
+
const list = json ? fromJson(text) : fromCsv(text);
|
|
144
|
+
if (list.entries.length === 0)
|
|
145
|
+
throw new CliError("The list has no vehicles", 2);
|
|
146
|
+
return list;
|
|
147
|
+
}
|
|
148
|
+
/** Answer columns a CSV gains, after the file's own; one the file already has is prefixed with `check_`. */
|
|
149
|
+
const ANSWER_COLUMNS = ["status", "vehicle_id", "catalog_make", "catalog_model", "catalog_year", "match", "reason", "suggested_vehicle_id", "suggestions", "error"];
|
|
150
|
+
function csvField(value, delimiter) {
|
|
151
|
+
return value.includes(delimiter) || /["\r\n]/.test(value) ? `"${value.replace(/"/g, '""')}"` : value;
|
|
152
|
+
}
|
|
153
|
+
function answerCells(result) {
|
|
154
|
+
const suggestions = result.suggestions ?? [];
|
|
155
|
+
const suggested = suggestions.find((suggestion) => suggestion.id);
|
|
156
|
+
return [
|
|
157
|
+
result.status,
|
|
158
|
+
result.vehicle?.id ?? "",
|
|
159
|
+
result.vehicle?.make ?? "",
|
|
160
|
+
result.vehicle?.model ?? "",
|
|
161
|
+
result.vehicle ? String(result.vehicle.year) : "",
|
|
162
|
+
result.vehicle?.match ?? "",
|
|
163
|
+
result.reason ?? "",
|
|
164
|
+
suggested?.id ?? "",
|
|
165
|
+
suggestions.map((suggestion) => `${suggestion.make}/${suggestion.model ?? ""} ${suggestion.year}${suggestion.id ? ` ${suggestion.id}` : ""}`).join(" | "),
|
|
166
|
+
result.error ?? "",
|
|
167
|
+
];
|
|
168
|
+
}
|
|
169
|
+
/** The answer columns a CSV gains, named clear of the file's own. */
|
|
170
|
+
export function answerColumns(list) {
|
|
171
|
+
const taken = new Set((list.header ?? []).map(columnKey));
|
|
172
|
+
return ANSWER_COLUMNS.map((name) => (taken.has(name) ? `check_${name}` : name));
|
|
173
|
+
}
|
|
174
|
+
/** The CSV a list came from, every row followed by its answer (`vehicle_id` is the id to store). */
|
|
175
|
+
export function writeCheckedCsv(list, results) {
|
|
176
|
+
const header = list.header ?? [];
|
|
177
|
+
const delimiter = list.delimiter ?? ",";
|
|
178
|
+
const answers = answerColumns(list);
|
|
179
|
+
const byIndex = new Map(results.map((result) => [result.index, result]));
|
|
180
|
+
const lines = [[...header, ...answers]];
|
|
181
|
+
for (const [index, row] of (list.rows ?? []).entries()) {
|
|
182
|
+
const result = byIndex.get(index);
|
|
183
|
+
const padded = header.map((_, column) => row[column] ?? "");
|
|
184
|
+
lines.push([...padded, ...(result ? answerCells(result) : ANSWER_COLUMNS.map(() => ""))]);
|
|
185
|
+
}
|
|
186
|
+
return `${lines.map((line) => line.map((value) => csvField(value, delimiter)).join(delimiter)).join("\n")}\n`;
|
|
187
|
+
}
|
|
188
|
+
/** The check as JSON, each answer carrying the entry it answers as `input`. */
|
|
189
|
+
export function checkedJson(list, response) {
|
|
190
|
+
return {
|
|
191
|
+
...response,
|
|
192
|
+
data: {
|
|
193
|
+
...response.data,
|
|
194
|
+
results: response.data.results.map((result) => ({ ...result, input: list.entries[result.index] })),
|
|
195
|
+
},
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=vehicle-list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vehicle-list.js","sourceRoot":"","sources":["../src/vehicle-list.ts"],"names":[],"mappings":"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"}
|
package/dist/version.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/** Kept in sync with package.json by `src/version.test.ts`. */
|
|
2
|
-
export const CLI_VERSION = "1.
|
|
2
|
+
export const CLI_VERSION = "1.11.0";
|
|
3
3
|
export const PACKAGE_NAME = "@meterapp/car-image";
|
|
4
4
|
export const BIN_NAME = "car-image";
|
|
5
5
|
//# sourceMappingURL=version.js.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@meterapp/car-image",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.11.0",
|
|
4
4
|
"description": "CLI and MCP server for the Car Image API by Meter: studio-quality, transparent-background vehicle renders for agents, apps and browsers. Login, fetch images in any paint color and make logos, mint signed URLs, decode VINs, build 3D models, request missing vehicles, run diagnostics, configure agents.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Meter <support@carimage.dev> (https://meterapp.co)",
|
|
@@ -43,7 +43,7 @@
|
|
|
43
43
|
"test": "vitest run"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@meterapp/car-image-sdk": "^1.
|
|
46
|
+
"@meterapp/car-image-sdk": "^1.17.0",
|
|
47
47
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
48
48
|
"zod": "^4.5.4"
|
|
49
49
|
},
|