@assethub/cli 0.1.10 → 0.1.12
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 +36 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +86 -17
- package/dist/setup.d.ts +4 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +5 -2
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -33,6 +33,29 @@ explicit overrides. `auth logout` removes the selected saved profile (or the
|
|
|
33
33
|
saved default); environment credentials remain under your shell’s control.
|
|
34
34
|
Diagnostics omit API keys and raw server error bodies.
|
|
35
35
|
|
|
36
|
+
## Historical meshes and artifact graphs
|
|
37
|
+
|
|
38
|
+
Internal preview: these reads require workspace feature access. Lists are scoped
|
|
39
|
+
to the selected workspace, including assets created in the UI. Mesh search
|
|
40
|
+
includes parts, revisions, and archived meshes, and excludes samples.
|
|
41
|
+
|
|
42
|
+
```sh
|
|
43
|
+
assethub mesh list --query "helmet" --limit 25
|
|
44
|
+
assethub mesh get mesh_123
|
|
45
|
+
assethub mesh download mesh_123 --out-dir ./meshes
|
|
46
|
+
assethub graph list --limit 25
|
|
47
|
+
assethub graph show --graph "$GRAPH_ID"
|
|
48
|
+
assethub graph export --graph "$GRAPH_ID" --out ./graph.json
|
|
49
|
+
assethub graph lineage --graph "$GRAPH_ID" --artifact "$NODE_ID" --direction ancestors
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Pass each `nextCursor` as `--cursor` until it is null; a graph page can be empty
|
|
53
|
+
while its cursor advances past duplicates. Graph catalogs include generated and
|
|
54
|
+
uploaded graphs. Use `--source upload` to read uploaded snapshots. Graph exports
|
|
55
|
+
contain the full saved graph and blob references; they do not download blob bytes.
|
|
56
|
+
`--canvas` keeps the existing CLI/API execution history view and cannot be combined
|
|
57
|
+
with `--graph`. Mesh IDs returned by search can be passed to `composer run`.
|
|
58
|
+
|
|
36
59
|
## Agent generation with canvas history
|
|
37
60
|
|
|
38
61
|
This release uses the Internal `api_canvas_execution` gate. Run `assethub capabilities`
|
|
@@ -440,3 +463,16 @@ assethub graph lineage --canvas <canvas-id> --artifact <asset-id> --direction an
|
|
|
440
463
|
The graph commands currently cover recorded CLI/API executions and evaluations.
|
|
441
464
|
They do not enumerate every historical UI artifact graph or provide a workspace-wide
|
|
442
465
|
mesh library search. A canvas with only older UI activity can return an empty graph.
|
|
466
|
+
|
|
467
|
+
## Inspect available MCP operations
|
|
468
|
+
|
|
469
|
+
```sh
|
|
470
|
+
assethub mcp tools --profile my-workspace
|
|
471
|
+
assethub mcp tools image_generate --profile my-workspace
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
The first command returns a compact list of tools and their action annotations.
|
|
475
|
+
The second returns the live description and input schema for one tool, including
|
|
476
|
+
required fields. Both use the selected profile and the same bounded checks as
|
|
477
|
+
`doctor --mcp`; they do not invoke tools or spend credits. Hosted MCP requires
|
|
478
|
+
Internal access. Discover names first because server capabilities can change.
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { type AnimationRetargetRequest, type Intervention, type RigRequest } from '@assethub/api-client';
|
|
3
3
|
import { buildRunUploadPlan } from './runsUpload/buildRunUpload.js';
|
|
4
4
|
type Flags = Record<string, string | boolean | string[]>;
|
|
5
|
-
export declare const usage = "AssetHub CLI\n\nInternal preview: canvas/context/layout and moodboards require workspace feature access.\n\nUsage:\n assethub --version\n assethub doctor [--mcp] [--profile <name>] [--timeout-ms <n>]\n assethub mcp config --client cursor|codex [--base-url <url>]\n assethub auth login --api-key <key> [--base-url <url>] [--profile <name>]\n assethub auth login --api-key-stdin [--base-url <url>] [--profile <name>]\n assethub auth login --access-token-stdin [--base-url <url>] [--profile <name>]\n assethub auth status [--profile <name>]\n assethub auth logout [--profile <name>]\n assethub workspace list|get\n assethub workspace create --name <name> [--operation-id <uuid>]\n assethub workspace use <workspace-id>\n assethub workspace prepare|sync|analyze|verify --internal --manifest <json> --state <json>\n assethub workspace self-check --internal\n assethub workspace context put --internal --org <uuid> --actor <uuid> --canvas <id> --file <json> [--if-version <n>] [--order <uuid>]\n assethub workspace context get --internal --org <uuid> --actor <uuid> --canvas <id> [--out <json>] [--order <uuid>]\n assethub project ingest <source-dir> --out-dir <directory> [--exclude-dir <relative-path>...]\n assethub language text|vision --input-json @<json> --operation-id <uuid> [--out <json>]\n assethub canvas import --canvas <id> --file <image> [--name <name>]\n assethub canvas context get --canvas <id> [--out <json>]\n assethub canvas context put --canvas <id> --file <json> [--if-version <n>]\n assethub canvas layout --canvas <id> --input-json @<json>\n assethub canvas compare --canvas <id> --source-id <asset-id> --asset-id <asset-id> --out <html>\n assethub moodboard create --input-json @<json> [--operation-id <uuid>]\n assethub moodboard list|get|update|archive [<board-id>] [--input-json @<json>]\n assethub moodboard analyze <board-id> [--revision <uuid>] [--wait]\n assethub image generate --canvas <id> --context <id> [--context-version <n>] [--context-source <key>] [--moodboard-revision <uuid>] --prompt <text> --wait\n assethub models list [--domain <domain>] [--ids-only] [--limit <n>]\n assethub models get <model-id>\n assethub files import <url> --media-type image|mesh\n assethub files upload <file> --media-type image|mesh\n assethub source create (--file <path> | --source-url <url> | --source-id <id> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard) --media-type image|mesh [--file-name <name>] [--content-type <type>]\n assethub capabilities\n assethub composer models\n assethub composer run --part <mesh-asset-id> [--part <mesh-asset-id>...] --reference <image-asset-id> [--model <id>] [--mode quick|quality] [--transforms-json <json|@file>] [--canvas <id>] [--wait]\n assethub composer run --input-json <json|@file> [--canvas <id>] [--operation-id <uuid>] [--wait] [--download --out-dir <dir>]\n assethub composer run --from-run <run-id> [--transforms-json <json|@file>] [--mode quick|quality] [--wait]\n assethub canvas create [--name <name>] [--operation-id <uuid>]\n assethub canvas list [--cursor <cursor>] [--limit <n>]\n assethub canvas get|use|open [<id>]\n assethub runs list [--canvas <id>] [--cursor <cursor>] [--limit <n>]\n assethub runs get|watch <run-id> [--timeout-ms <n>]\n assethub runs resume <operation-id> [--wait]\n assethub graph show|export [--canvas <id>] [--artifact <node-id>] [--out <path>] [--allow-truncated]\n assethub graph lineage --artifact <node-id> [--canvas <id>] [--direction ancestors|descendants|both] [--depth <n>]\n assethub evaluate list\n assethub evaluations submit --artifact <asset-id> --report <json|file|@file|@-> [--agent <name>] [--canvas <id>] [--reference <asset-id>...] [--run <run-id>] [--operation-id <uuid>] [--require-pass]\n assethub evaluations list [--canvas <id>] [--artifact <asset-id>]\n assethub evaluations get <evaluation-id>\n assethub image generate --input-json <json|@file|@-> [--canvas <id>] [--operation-id <uuid>] [--agent <name>] [--derived-from-run <run-id>] [--from-node <graphId/nodeId> --graph-revision <rev>] [--wait]\n assethub mesh generate --input-json <json|@file|@-> [--canvas <id>] [--operation-id <uuid>] [--agent <name>] [--derived-from-run <run-id>] [--from-node <graphId/nodeId> --graph-revision <rev>] [--wait]\n assethub image generate --prompt <text> [--file <path> | --source-url <url> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard] [--file-name <name>] [--content-type <type>] [--model-id <id>] [--batch-size <n>] [--wait] [--download --out-dir <dir>] [--canvas <id>] [--operation-id <uuid>] [--api-version v2]\n assethub image generate --prompt <text> --source-resource-id <id> --api-version v2 [--model-id <id>] [--batch-size <n>] [--wait]\n assethub mesh generate (--file <path> | --source-url <url> | --source-resource-id <id> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri>) [--file-name <name>] [--content-type <type>] [--model-id <id>] [--name <name>] [--wait] [--download --out-dir <dir>]\n assethub mesh retopo (--source-resource-id <id> | --source-url <url> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri>) --model-id <id> [--file-name <name>] [--content-type <type>] [--wait] [--download --out-dir <dir>]\n assethub rig check (--file <path> | --source-url <url> | --source-resource-id <id> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri>) [--name <name>] [--wait] [--download --out-dir <dir>]\n assethub rig create (--file <path> | --source-url <url> | --source-resource-id <id> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri>) [--model v1.0-20240301|v2.5-20260210] [--rig-type biped|quadruped|hexapod|octopod|avian|serpentine|aquatic] [--spec tripo|mixamo] [--out-format glb|fbx] [--name <name>] [--wait] [--download --out-dir <dir>]\n assethub animate presets [--model v1.0-20240301|v2.5-20260210] [--rig-type <type>]\n assethub animate retarget --resource-id <id> --animation <preset-id> [--animation <preset-id>... up to 5 total] [--out-format glb|fbx] [--bake-animation true|false] [--export-with-geometry true|false] [--animate-in-place true|false] [--name <name>] [--wait] [--download --out-dir <dir>]\n assethub jobs get <job-id> [--download --out-dir <dir>]\n assethub jobs watch <job-id> [--interval-ms <ms>] [--timeout-ms <ms>] [--download --out-dir <dir>]\n assethub production analyze (--file <path> | --source-url <url> | --source-id <id> | --image-url <url> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard) [--file-name <name>] [--content-type <type>] [--part-extractor <name>] [--name <name>] [--wait] [--download --out-dir <dir>]\n assethub production agents\n assethub production automation --input-json <json|@file|@-> [--canvas <id>] [--operation-id <uuid>] [--wait]\n assethub production status <order-id> [--wait] [--download --out-dir <dir>]\n assethub production execute --order-id <id> --mission-id <id> --task-id <id> [--task-id <id>...] [--part-extractor <name>] [--part-extraction-mode fast|high_quality] [--wait] [--download --out-dir <dir>]\n assethub production run --order-id <id> --mission-id <id> [--run-mode full_auto|approval] [--task-id <id>...] [--part-extractor <name>] [--part-extraction-mode fast|high_quality] [--allowed-model-id <id>...] [--max-iterations <n>] [--max-cost-credits <n>] [--wait] [--download --out-dir <dir>]\n assethub production watch <order-id> [--interval-ms <ms>] [--timeout-ms <ms>] [--download --out-dir <dir>]\n assethub production intervene <order-id> (--exclude <target-id> | --include <target-id> | --add-part <name> | --rename <target-id>=<name> | --reject <target-id>[=<reason>] | --regenerate <target-id>=<mode> | --set-param <key>=<value> | --ops-json <json|@file|@->)... [--idempotency-key <key>]\n assethub production interventions <order-id>\n assethub runs upload <path> [--graph-id <id>] [--stream-id <id>] [--rev <n>] [--description <text>] [--tag <tag>...] [--skip-register] [--dry-run]\n assethub parts split (--file <path> | --source-url <url> | --source-id <id> | --image-url <url> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard | --order-id <id>) [--file-name <name>] [--content-type <type>] [--part-extractor <name>] [--wait] [--task-id <id>...] [--mission-id <id>] [--all-ready] [--download --out-dir <dir>]\n assethub parts compare (--file <path> | --source-url <url> | --source-id <id> | --image-url <url> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard) [--file-name <name>] [--content-type <type>] [--preprocess-prompt <text>] [--preprocess-model-id <id>] [--fail-on-preprocess-error] [--part-extractor <name>] [--wait] [--task-id <id>...] [--mission-id <id>] [--all-ready] [--download --out-dir <dir>]\n assethub autopilot [<image>] --demo [--yolo] [--json] [--max-regen <n>] [--stall-rounds <n>] [--tie-epsilon <x>] [--multiview 2-view|4-view|6-view] [--ab-mode serial|cross] [--credit-budget <n>]\n\nGlobal options:\n --api-key <key> Overrides saved auth and ASSETHUB_API_KEY.\n --base-url <url> Override the selected API origin. Default: https://app.assethub.io.\n --profile <name> Select this saved profile ahead of environment credentials and origin.\n --config <path> Auth config path. Defaults to ~/.assethub/config.json.\n --version Show installed package version.\n --help Show help.\n\nExamples:\n ASSETHUB_API_KEY=ah_live_xxx assethub models list\n assethub auth login --api-key-stdin\n assethub models list --ids-only\n assethub files upload ./input.png --media-type image\n assethub source create --file ./input.png --media-type image\n pbpaste | assethub source create --stdin-data-uri --media-type image\n assethub source create --clipboard --media-type image --file-name clipboard.png\n printf '{\"image_url\":{\"url\":\"data:image/png;base64,...\"}}' | assethub parts split --stdin-json --part-extractor \"V1.5\" --wait\n base64 -i ./input.png | assethub parts split --stdin-base64 --file-name input.png --content-type image/png --part-extractor \"V1.5\" --wait\n cat ./input.png | assethub parts split --stdin --file-name input.png --part-extractor \"V1.5\" --wait\n assethub image generate --prompt \"stylized prop concept\" --wait\n assethub mesh generate --file ./input.png --wait\n assethub animate presets --rig-type biped\n assethub rig create --source-resource-id mesh_x --rig-type biped --wait\n assethub animate retarget --resource-id rig_x --animation preset:idle --wait\n assethub production analyze --file ./input.png --part-extractor \"V1.5\" --wait\n assethub production run --order-id ord_x --mission-id ms_x --run-mode full_auto --max-cost-credits 200 --wait\n assethub production watch ord_x\n assethub production intervene ord_x --exclude 7 --rename 3=\"left wing\" --idempotency-key review-2026-07-29\n assethub production interventions ord_x\n assethub runs upload ./out/pluffy-run-2026-07-30 --dry-run\n assethub runs upload ./out/pluffy-run-2026-07-30 --tag pluffy --description \"V3 humanoid, 18 parts\"\n assethub parts split --file ./input.png --part-extractor \"V1.5\" --wait --all-ready\n assethub parts compare --file ./input.png --preprocess-prompt \"clean white background, centered product photo\" --part-extractor \"V1.5\" --wait --all-ready\n";
|
|
5
|
+
export declare const usage = "AssetHub CLI\n\nInternal preview: canvas/context/layout and moodboards require workspace feature access.\n\nUsage:\n assethub --version\n assethub doctor [--mcp] [--profile <name>] [--timeout-ms <n>]\n assethub mcp tools [tool-name] [--profile <name>] [--timeout-ms <n>]\n assethub mcp config --client cursor|codex [--base-url <url>]\n assethub auth login --api-key <key> [--base-url <url>] [--profile <name>]\n assethub auth login --api-key-stdin [--base-url <url>] [--profile <name>]\n assethub auth login --access-token-stdin [--base-url <url>] [--profile <name>]\n assethub auth status [--profile <name>]\n assethub auth logout [--profile <name>]\n assethub workspace list|get\n assethub workspace create --name <name> [--operation-id <uuid>]\n assethub workspace use <workspace-id>\n assethub workspace prepare|sync|analyze|verify --internal --manifest <json> --state <json>\n assethub workspace self-check --internal\n assethub workspace context put --internal --org <uuid> --actor <uuid> --canvas <id> --file <json> [--if-version <n>] [--order <uuid>]\n assethub workspace context get --internal --org <uuid> --actor <uuid> --canvas <id> [--out <json>] [--order <uuid>]\n assethub project ingest <source-dir> --out-dir <directory> [--exclude-dir <relative-path>...]\n assethub language text|vision --input-json @<json> --operation-id <uuid> [--out <json>]\n assethub canvas import --canvas <id> --file <image> [--name <name>]\n assethub canvas context get --canvas <id> [--out <json>]\n assethub canvas context put --canvas <id> --file <json> [--if-version <n>]\n assethub canvas layout --canvas <id> --input-json @<json>\n assethub canvas compare --canvas <id> --source-id <asset-id> --asset-id <asset-id> --out <html>\n assethub moodboard create --input-json @<json> [--operation-id <uuid>]\n assethub moodboard list|get|update|archive [<board-id>] [--input-json @<json>]\n assethub moodboard analyze <board-id> [--revision <uuid>] [--wait]\n assethub image generate --canvas <id> --context <id> [--context-version <n>] [--context-source <key>] [--moodboard-revision <uuid>] --prompt <text> --wait\n assethub models list [--domain <domain>] [--ids-only] [--limit <n>]\n assethub models get <model-id>\n assethub files import <url> --media-type image|mesh\n assethub files upload <file> --media-type image|mesh\n assethub source create (--file <path> | --source-url <url> | --source-id <id> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard) --media-type image|mesh [--file-name <name>] [--content-type <type>]\n assethub capabilities\n assethub composer models\n assethub composer run --part <mesh-asset-id> [--part <mesh-asset-id>...] --reference <image-asset-id> [--model <id>] [--mode quick|quality] [--transforms-json <json|@file>] [--canvas <id>] [--wait]\n assethub composer run --input-json <json|@file> [--canvas <id>] [--operation-id <uuid>] [--wait] [--download --out-dir <dir>]\n assethub composer run --from-run <run-id> [--transforms-json <json|@file>] [--mode quick|quality] [--wait]\n assethub canvas create [--name <name>] [--operation-id <uuid>]\n assethub canvas list [--cursor <cursor>] [--limit <n>]\n assethub canvas get|use|open [<id>]\n assethub runs list [--canvas <id>] [--cursor <cursor>] [--limit <n>]\n assethub runs get|watch <run-id> [--timeout-ms <n>]\n assethub runs resume <operation-id> [--wait]\n assethub graph list [--cursor <cursor>] [--limit <n>]\n assethub graph show|export [--canvas <id> | --graph <id>] [--source generated|upload] [--artifact <node-id>] [--out <path>] [--allow-truncated]\n assethub graph lineage --artifact <node-id> [--canvas <id> | --graph <id>] [--source generated|upload] [--direction ancestors|descendants|both] [--depth <n>] [--out <path>]\n assethub evaluate list\n assethub evaluations submit --artifact <asset-id> --report <json|file|@file|@-> [--agent <name>] [--canvas <id>] [--reference <asset-id>...] [--run <run-id>] [--operation-id <uuid>] [--require-pass]\n assethub evaluations list [--canvas <id>] [--artifact <asset-id>]\n assethub evaluations get <evaluation-id>\n assethub image generate --input-json <json|@file|@-> [--canvas <id>] [--operation-id <uuid>] [--agent <name>] [--derived-from-run <run-id>] [--from-node <graphId/nodeId> --graph-revision <rev>] [--wait]\n assethub mesh generate --input-json <json|@file|@-> [--canvas <id>] [--operation-id <uuid>] [--agent <name>] [--derived-from-run <run-id>] [--from-node <graphId/nodeId> --graph-revision <rev>] [--wait]\n assethub mesh list [--query <text>] [--cursor <cursor>] [--limit <n>]\n assethub mesh get <mesh-asset-id>\n assethub mesh download <mesh-asset-id> --out-dir <directory>\n assethub image generate --prompt <text> [--file <path> | --source-url <url> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard] [--file-name <name>] [--content-type <type>] [--model-id <id>] [--batch-size <n>] [--wait] [--download --out-dir <dir>] [--canvas <id>] [--operation-id <uuid>] [--api-version v2]\n assethub image generate --prompt <text> --source-resource-id <id> --api-version v2 [--model-id <id>] [--batch-size <n>] [--wait]\n assethub mesh generate (--file <path> | --source-url <url> | --source-resource-id <id> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri>) [--file-name <name>] [--content-type <type>] [--model-id <id>] [--name <name>] [--wait] [--download --out-dir <dir>]\n assethub mesh retopo (--source-resource-id <id> | --source-url <url> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri>) --model-id <id> [--file-name <name>] [--content-type <type>] [--wait] [--download --out-dir <dir>]\n assethub rig check (--file <path> | --source-url <url> | --source-resource-id <id> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri>) [--name <name>] [--wait] [--download --out-dir <dir>]\n assethub rig create (--file <path> | --source-url <url> | --source-resource-id <id> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri>) [--model v1.0-20240301|v2.5-20260210] [--rig-type biped|quadruped|hexapod|octopod|avian|serpentine|aquatic] [--spec tripo|mixamo] [--out-format glb|fbx] [--name <name>] [--wait] [--download --out-dir <dir>]\n assethub animate presets [--model v1.0-20240301|v2.5-20260210] [--rig-type <type>]\n assethub animate retarget --resource-id <id> --animation <preset-id> [--animation <preset-id>... up to 5 total] [--out-format glb|fbx] [--bake-animation true|false] [--export-with-geometry true|false] [--animate-in-place true|false] [--name <name>] [--wait] [--download --out-dir <dir>]\n assethub jobs get <job-id> [--download --out-dir <dir>]\n assethub jobs watch <job-id> [--interval-ms <ms>] [--timeout-ms <ms>] [--download --out-dir <dir>]\n assethub production analyze (--file <path> | --source-url <url> | --source-id <id> | --image-url <url> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard) [--file-name <name>] [--content-type <type>] [--part-extractor <name>] [--name <name>] [--wait] [--download --out-dir <dir>]\n assethub production agents\n assethub production automation --input-json <json|@file|@-> [--canvas <id>] [--operation-id <uuid>] [--wait]\n assethub production status <order-id> [--wait] [--download --out-dir <dir>]\n assethub production execute --order-id <id> --mission-id <id> --task-id <id> [--task-id <id>...] [--part-extractor <name>] [--part-extraction-mode fast|high_quality] [--wait] [--download --out-dir <dir>]\n assethub production run --order-id <id> --mission-id <id> [--run-mode full_auto|approval] [--task-id <id>...] [--part-extractor <name>] [--part-extraction-mode fast|high_quality] [--allowed-model-id <id>...] [--max-iterations <n>] [--max-cost-credits <n>] [--wait] [--download --out-dir <dir>]\n assethub production watch <order-id> [--interval-ms <ms>] [--timeout-ms <ms>] [--download --out-dir <dir>]\n assethub production intervene <order-id> (--exclude <target-id> | --include <target-id> | --add-part <name> | --rename <target-id>=<name> | --reject <target-id>[=<reason>] | --regenerate <target-id>=<mode> | --set-param <key>=<value> | --ops-json <json|@file|@->)... [--idempotency-key <key>]\n assethub production interventions <order-id>\n assethub runs upload <path> [--graph-id <id>] [--stream-id <id>] [--rev <n>] [--description <text>] [--tag <tag>...] [--skip-register] [--dry-run]\n assethub parts split (--file <path> | --source-url <url> | --source-id <id> | --image-url <url> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard | --order-id <id>) [--file-name <name>] [--content-type <type>] [--part-extractor <name>] [--wait] [--task-id <id>...] [--mission-id <id>] [--all-ready] [--download --out-dir <dir>]\n assethub parts compare (--file <path> | --source-url <url> | --source-id <id> | --image-url <url> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard) [--file-name <name>] [--content-type <type>] [--preprocess-prompt <text>] [--preprocess-model-id <id>] [--fail-on-preprocess-error] [--part-extractor <name>] [--wait] [--task-id <id>...] [--mission-id <id>] [--all-ready] [--download --out-dir <dir>]\n assethub autopilot [<image>] --demo [--yolo] [--json] [--max-regen <n>] [--stall-rounds <n>] [--tie-epsilon <x>] [--multiview 2-view|4-view|6-view] [--ab-mode serial|cross] [--credit-budget <n>]\n\nGlobal options:\n --api-key <key> Overrides saved auth and ASSETHUB_API_KEY.\n --base-url <url> Override the selected API origin. Default: https://app.assethub.io.\n --profile <name> Select this saved profile ahead of environment credentials and origin.\n --config <path> Auth config path. Defaults to ~/.assethub/config.json.\n --version Show installed package version.\n --help Show help.\n\nExamples:\n ASSETHUB_API_KEY=ah_live_xxx assethub models list\n assethub auth login --api-key-stdin\n assethub models list --ids-only\n assethub files upload ./input.png --media-type image\n assethub source create --file ./input.png --media-type image\n pbpaste | assethub source create --stdin-data-uri --media-type image\n assethub source create --clipboard --media-type image --file-name clipboard.png\n printf '{\"image_url\":{\"url\":\"data:image/png;base64,...\"}}' | assethub parts split --stdin-json --part-extractor \"V1.5\" --wait\n base64 -i ./input.png | assethub parts split --stdin-base64 --file-name input.png --content-type image/png --part-extractor \"V1.5\" --wait\n cat ./input.png | assethub parts split --stdin --file-name input.png --part-extractor \"V1.5\" --wait\n assethub image generate --prompt \"stylized prop concept\" --wait\n assethub mesh generate --file ./input.png --wait\n assethub animate presets --rig-type biped\n assethub rig create --source-resource-id mesh_x --rig-type biped --wait\n assethub animate retarget --resource-id rig_x --animation preset:idle --wait\n assethub production analyze --file ./input.png --part-extractor \"V1.5\" --wait\n assethub production run --order-id ord_x --mission-id ms_x --run-mode full_auto --max-cost-credits 200 --wait\n assethub production watch ord_x\n assethub production intervene ord_x --exclude 7 --rename 3=\"left wing\" --idempotency-key review-2026-07-29\n assethub production interventions ord_x\n assethub runs upload ./out/pluffy-run-2026-07-30 --dry-run\n assethub runs upload ./out/pluffy-run-2026-07-30 --tag pluffy --description \"V3 humanoid, 18 parts\"\n assethub parts split --file ./input.png --part-extractor \"V1.5\" --wait --all-ready\n assethub parts compare --file ./input.png --preprocess-prompt \"clean white background, centered product photo\" --part-extractor \"V1.5\" --wait --all-ready\n";
|
|
6
6
|
/**
|
|
7
7
|
* The `animate retarget` request, built from flags alone.
|
|
8
8
|
*
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAsBA,OAAO,EAIL,KAAK,wBAAwB,EAO7B,KAAK,YAAY,EAEjB,KAAK,UAAU,EAYhB,MAAM,sBAAsB,CAAA;AAa7B,OAAO,EAAC,kBAAkB,EAAc,MAAM,gCAAgC,CAAA;AAI9E,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,CAAA;AA8HxD,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAsBA,OAAO,EAIL,KAAK,wBAAwB,EAO7B,KAAK,YAAY,EAEjB,KAAK,UAAU,EAYhB,MAAM,sBAAsB,CAAA;AAa7B,OAAO,EAAC,kBAAkB,EAAc,MAAM,gCAAgC,CAAA;AAI9E,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,CAAC,CAAA;AA8HxD,eAAO,MAAM,KAAK,qnYAqHjB,CAAA;AAkoED;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,GACxC,OAAO,KAAK,KACX,wBA0BF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAChC,OAAO,KAAK,KACX,IAAI,CAAC,UAAU,EAAE,QAAQ,CAM1B,CAAA;AA6fF;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,uBAAuB,GAClC,MAAM,SAAS,MAAM,EAAE,KACtB,YAAY,EAuGd,CAAA;AAkqCD,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAC3B,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;IAC5B,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IACvB,WAAW,EAAE,MAAM,CAAA;IACnB,IAAI,EAAE,MAAM,EAAE,CAAA;IACd,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,OAAO,CAAA;CACtB,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAC9B,YAAY,MAAM,GAAG,SAAS,EAC9B,aAAa,MAAM,EAAE,EACrB,OAAO,KAAK,KACX,cAoBF,CAAA;AAED,KAAK,iBAAiB,GAAG,IAAI,CAC3B,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,EAC5C,SAAS,GACT,UAAU,GACV,KAAK,GACL,WAAW,GACX,QAAQ,GACR,OAAO,GACP,OAAO,GACP,UAAU,CACb,CAAA;AAED,eAAO,MAAM,iBAAiB,GAC5B,WAAW,MAAM,EACjB,MAAM,iBAAiB;;;;;;;;;;;;;;CAUvB,CAAA;AAEF,eAAO,MAAM,sBAAsB,GACjC,SAAS,UAAU,CAAC,OAAO,iBAAiB,CAAC,EAC7C,MAAM,iBAAiB,EACvB,SAAS,MAAM;;;;;;;;;;;;;;;;;;;;;;;CAYf,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -69,6 +69,7 @@ Internal preview: canvas/context/layout and moodboards require workspace feature
|
|
|
69
69
|
Usage:
|
|
70
70
|
assethub --version
|
|
71
71
|
assethub doctor [--mcp] [--profile <name>] [--timeout-ms <n>]
|
|
72
|
+
assethub mcp tools [tool-name] [--profile <name>] [--timeout-ms <n>]
|
|
72
73
|
assethub mcp config --client cursor|codex [--base-url <url>]
|
|
73
74
|
assethub auth login --api-key <key> [--base-url <url>] [--profile <name>]
|
|
74
75
|
assethub auth login --api-key-stdin [--base-url <url>] [--profile <name>]
|
|
@@ -109,14 +110,18 @@ Usage:
|
|
|
109
110
|
assethub runs list [--canvas <id>] [--cursor <cursor>] [--limit <n>]
|
|
110
111
|
assethub runs get|watch <run-id> [--timeout-ms <n>]
|
|
111
112
|
assethub runs resume <operation-id> [--wait]
|
|
112
|
-
assethub graph
|
|
113
|
-
assethub graph
|
|
113
|
+
assethub graph list [--cursor <cursor>] [--limit <n>]
|
|
114
|
+
assethub graph show|export [--canvas <id> | --graph <id>] [--source generated|upload] [--artifact <node-id>] [--out <path>] [--allow-truncated]
|
|
115
|
+
assethub graph lineage --artifact <node-id> [--canvas <id> | --graph <id>] [--source generated|upload] [--direction ancestors|descendants|both] [--depth <n>] [--out <path>]
|
|
114
116
|
assethub evaluate list
|
|
115
117
|
assethub evaluations submit --artifact <asset-id> --report <json|file|@file|@-> [--agent <name>] [--canvas <id>] [--reference <asset-id>...] [--run <run-id>] [--operation-id <uuid>] [--require-pass]
|
|
116
118
|
assethub evaluations list [--canvas <id>] [--artifact <asset-id>]
|
|
117
119
|
assethub evaluations get <evaluation-id>
|
|
118
120
|
assethub image generate --input-json <json|@file|@-> [--canvas <id>] [--operation-id <uuid>] [--agent <name>] [--derived-from-run <run-id>] [--from-node <graphId/nodeId> --graph-revision <rev>] [--wait]
|
|
119
121
|
assethub mesh generate --input-json <json|@file|@-> [--canvas <id>] [--operation-id <uuid>] [--agent <name>] [--derived-from-run <run-id>] [--from-node <graphId/nodeId> --graph-revision <rev>] [--wait]
|
|
122
|
+
assethub mesh list [--query <text>] [--cursor <cursor>] [--limit <n>]
|
|
123
|
+
assethub mesh get <mesh-asset-id>
|
|
124
|
+
assethub mesh download <mesh-asset-id> --out-dir <directory>
|
|
120
125
|
assethub image generate --prompt <text> [--file <path> | --source-url <url> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri> | --clipboard] [--file-name <name>] [--content-type <type>] [--model-id <id>] [--batch-size <n>] [--wait] [--download --out-dir <dir>] [--canvas <id>] [--operation-id <uuid>] [--api-version v2]
|
|
121
126
|
assethub image generate --prompt <text> --source-resource-id <id> --api-version v2 [--model-id <id>] [--batch-size <n>] [--wait]
|
|
122
127
|
assethub mesh generate (--file <path> | --source-url <url> | --source-resource-id <id> | --file-ref-json <json> | --stdin | --stdin-base64 | --stdin-data-uri | --stdin-json | --source-json <json|@file|@-> | --data-uri <uri>) [--file-name <name>] [--content-type <type>] [--model-id <id>] [--name <name>] [--wait] [--download --out-dir <dir>]
|
|
@@ -1717,7 +1722,25 @@ const commandComposer = async (subcommand, ctx) => {
|
|
|
1717
1722
|
});
|
|
1718
1723
|
await printRecorded(ctx, queued);
|
|
1719
1724
|
};
|
|
1720
|
-
const commandMesh = async (subcommand, ctx) => {
|
|
1725
|
+
const commandMesh = async (subcommand, positionals, ctx) => {
|
|
1726
|
+
if (subcommand === 'list') {
|
|
1727
|
+
print(await ctx.client.v2.listMeshes({
|
|
1728
|
+
query: getFlag(ctx.flags, 'query'),
|
|
1729
|
+
...pageOptions(ctx.flags),
|
|
1730
|
+
}));
|
|
1731
|
+
return;
|
|
1732
|
+
}
|
|
1733
|
+
if (subcommand === 'get') {
|
|
1734
|
+
print(await ctx.client.v2.getAsset(requirePositional(positionals, 2, 'mesh-asset-id')));
|
|
1735
|
+
return;
|
|
1736
|
+
}
|
|
1737
|
+
if (subcommand === 'download') {
|
|
1738
|
+
const assetId = requirePositional(positionals, 2, 'mesh-asset-id');
|
|
1739
|
+
const asset = await ctx.client.v2.getAsset(assetId);
|
|
1740
|
+
const downloads = await maybeDownloadUrls({ ...ctx.flags, download: true }, asset);
|
|
1741
|
+
print({ asset, downloads });
|
|
1742
|
+
return;
|
|
1743
|
+
}
|
|
1721
1744
|
if (subcommand === 'generate') {
|
|
1722
1745
|
const inputJson = getFlag(ctx.flags, 'input-json');
|
|
1723
1746
|
const input = inputJson
|
|
@@ -1770,7 +1793,7 @@ const commandMesh = async (subcommand, ctx) => {
|
|
|
1770
1793
|
print(await withOptionalDownloads(ctx.flags, { queued, job }));
|
|
1771
1794
|
return;
|
|
1772
1795
|
}
|
|
1773
|
-
throw new Error('Unknown mesh command. Use "mesh generate
|
|
1796
|
+
throw new Error('Unknown mesh command. Use "mesh list|get|download|generate|retopo".');
|
|
1774
1797
|
};
|
|
1775
1798
|
/**
|
|
1776
1799
|
* Accepted values for the rig/animate enum flags, kept next to the commands
|
|
@@ -2993,25 +3016,44 @@ const commandMoodboard = async (subcommand, positionals, ctx) => {
|
|
|
2993
3016
|
process.exitCode = 1;
|
|
2994
3017
|
};
|
|
2995
3018
|
const commandGraph = async (subcommand, ctx) => {
|
|
3019
|
+
const graphId = getFlag(ctx.flags, 'graph');
|
|
3020
|
+
if (getFlag(ctx.flags, 'source') && !graphId)
|
|
3021
|
+
throw new Error('--source requires --graph');
|
|
3022
|
+
if (graphId && getFlag(ctx.flags, 'canvas'))
|
|
3023
|
+
throw new Error('cannot combine --graph and --canvas');
|
|
3024
|
+
if (subcommand === 'list') {
|
|
3025
|
+
print(await ctx.client.v2.listGraphs(pageOptions(ctx.flags)));
|
|
3026
|
+
return;
|
|
3027
|
+
}
|
|
2996
3028
|
if (!['show', 'lineage', 'export'].includes(subcommand ?? ''))
|
|
2997
|
-
throw new Error('Use graph show|lineage|export');
|
|
2998
|
-
const { canvas } = await canvasForRead(ctx);
|
|
3029
|
+
throw new Error('Use graph list|show|lineage|export');
|
|
2999
3030
|
const direction = getFlag(ctx.flags, 'direction') ?? 'both';
|
|
3000
3031
|
if (!['ancestors', 'descendants', 'both'].includes(direction))
|
|
3001
3032
|
throw new Error('--direction must be ancestors, descendants, or both');
|
|
3002
|
-
const
|
|
3003
|
-
|
|
3004
|
-
|
|
3005
|
-
|
|
3006
|
-
|
|
3007
|
-
|
|
3008
|
-
|
|
3009
|
-
|
|
3033
|
+
const artifactId = subcommand === 'lineage'
|
|
3034
|
+
? requireFlag(ctx.flags, 'artifact')
|
|
3035
|
+
: getFlag(ctx.flags, 'artifact');
|
|
3036
|
+
const graph = graphId
|
|
3037
|
+
? await ctx.client.v2.getGraph(graphId, {
|
|
3038
|
+
source: parseEnumFlag(ctx.flags, 'source', ['generated', 'upload']),
|
|
3039
|
+
artifactId,
|
|
3040
|
+
direction: direction,
|
|
3041
|
+
depth: parsePositiveIntegerFlag(ctx.flags, 'depth', 5),
|
|
3042
|
+
})
|
|
3043
|
+
: await (async () => {
|
|
3044
|
+
const { canvas } = await canvasForRead(ctx);
|
|
3045
|
+
return ctx.client.v2.getCanvasGraph(canvas.id, {
|
|
3046
|
+
artifactId,
|
|
3047
|
+
direction: direction,
|
|
3048
|
+
depth: parsePositiveIntegerFlag(ctx.flags, 'depth', 5),
|
|
3049
|
+
});
|
|
3050
|
+
})();
|
|
3051
|
+
if ((subcommand === 'export' || getFlag(ctx.flags, 'out')) &&
|
|
3010
3052
|
graph.truncated &&
|
|
3011
3053
|
!hasFlag(ctx.flags, 'allow-truncated'))
|
|
3012
3054
|
throw new Error('Graph exceeds export bounds; narrow with --artifact or explicitly use --allow-truncated');
|
|
3013
3055
|
const out = getFlag(ctx.flags, 'out');
|
|
3014
|
-
if (
|
|
3056
|
+
if (out) {
|
|
3015
3057
|
await writeFile(resolve(out), JSON.stringify(graph, null, 2) + '\n', {
|
|
3016
3058
|
mode: 0o600,
|
|
3017
3059
|
});
|
|
@@ -3215,9 +3257,36 @@ const run = async () => {
|
|
|
3215
3257
|
return;
|
|
3216
3258
|
}
|
|
3217
3259
|
const [command, subcommand] = parsed.positionals;
|
|
3260
|
+
if (command === 'mcp' && subcommand === 'tools') {
|
|
3261
|
+
stderr.write('Discovering AssetHub MCP tools…\n');
|
|
3262
|
+
const report = await diagnose({
|
|
3263
|
+
resolveAuth: () => resolveAuth(parsed.flags),
|
|
3264
|
+
includeMcp: true,
|
|
3265
|
+
includeTools: true,
|
|
3266
|
+
timeoutMs: parsePositiveIntegerFlag(parsed.flags, 'timeout-ms', 15000),
|
|
3267
|
+
});
|
|
3268
|
+
if (!report.ok) {
|
|
3269
|
+
print(report);
|
|
3270
|
+
process.exitCode = 2;
|
|
3271
|
+
return;
|
|
3272
|
+
}
|
|
3273
|
+
const check = report.checks.find(check => check.name === 'mcp');
|
|
3274
|
+
const tools = check && 'tools' in check ? check.tools ?? [] : [];
|
|
3275
|
+
const name = parsed.positionals[2];
|
|
3276
|
+
if (name) {
|
|
3277
|
+
const tool = tools.find(tool => tool.name === name);
|
|
3278
|
+
if (!tool)
|
|
3279
|
+
throw new Error(`Unknown MCP tool: ${name}. Use mcp tools to list available names.`);
|
|
3280
|
+
print({ tool });
|
|
3281
|
+
}
|
|
3282
|
+
else {
|
|
3283
|
+
print({ total: tools.length, tools: tools.map(({ name, title, annotations }) => ({ name, title, annotations })) });
|
|
3284
|
+
}
|
|
3285
|
+
return;
|
|
3286
|
+
}
|
|
3218
3287
|
if (command === 'mcp') {
|
|
3219
3288
|
if (subcommand !== 'config')
|
|
3220
|
-
throw new Error('Use mcp config --client cursor|codex');
|
|
3289
|
+
throw new Error('Use mcp tools [tool-name] or mcp config --client cursor|codex');
|
|
3221
3290
|
stdout.write(mcpConfig(requireFlag(parsed.flags, 'client'), getFlag(parsed.flags, 'base-url') ?? env.ASSETHUB_API_BASE_URL ?? defaultBaseUrl));
|
|
3222
3291
|
return;
|
|
3223
3292
|
}
|
|
@@ -3331,7 +3400,7 @@ const run = async () => {
|
|
|
3331
3400
|
await commandImage(subcommand, ctx);
|
|
3332
3401
|
return;
|
|
3333
3402
|
case 'mesh':
|
|
3334
|
-
await commandMesh(subcommand, ctx);
|
|
3403
|
+
await commandMesh(subcommand, parsed.positionals, ctx);
|
|
3335
3404
|
return;
|
|
3336
3405
|
case 'rig':
|
|
3337
3406
|
await commandRig(subcommand, ctx);
|
package/dist/setup.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Tool } from '@modelcontextprotocol/sdk/types.js';
|
|
1
2
|
export declare const cliVersion: () => Promise<string>;
|
|
2
3
|
export declare const mcpConfig: (client: string, baseUrl: string) => string;
|
|
3
4
|
type Check = {
|
|
@@ -9,6 +10,7 @@ type Check = {
|
|
|
9
10
|
workspaceId?: string;
|
|
10
11
|
executionStatus?: string;
|
|
11
12
|
toolCount?: number;
|
|
13
|
+
tools?: Tool[];
|
|
12
14
|
};
|
|
13
15
|
type Auth = {
|
|
14
16
|
apiKey: string;
|
|
@@ -16,10 +18,11 @@ type Auth = {
|
|
|
16
18
|
profile: string;
|
|
17
19
|
source: string;
|
|
18
20
|
};
|
|
19
|
-
export declare const diagnose: ({ resolveAuth, includeMcp, timeoutMs, }: {
|
|
21
|
+
export declare const diagnose: ({ resolveAuth, includeMcp, timeoutMs, includeTools, }: {
|
|
20
22
|
resolveAuth: () => Promise<Auth>;
|
|
21
23
|
includeMcp: boolean;
|
|
22
24
|
timeoutMs: number;
|
|
25
|
+
includeTools?: boolean;
|
|
23
26
|
}) => Promise<{
|
|
24
27
|
ok: boolean;
|
|
25
28
|
version: string;
|
package/dist/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,IAAI,EAAC,MAAM,oCAAoC,CAAA;AAE5D,eAAO,MAAM,UAAU,QAAa,OAAO,CAAC,MAAM,CAKvC,CAAA;AAmBX,eAAO,MAAM,SAAS,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAoB3D,CAAA;AAED,KAAK,KAAK,GAAG;IACX,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,eAAe,CAAA;IACrC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAA;IACvB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,IAAI,EAAE,CAAA;CACf,CAAA;AAED,KAAK,IAAI,GAAG;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAC,CAAA;AA0D9E,eAAO,MAAM,QAAQ,GAAU,uDAK5B;IACD,WAAW,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAChC,UAAU,EAAE,OAAO,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;;;;;;;;;;;;;;;;;;;;;;EA2GA,CAAA"}
|
package/dist/setup.js
CHANGED
|
@@ -77,7 +77,7 @@ const failedCheck = (name, status, timedOut) => {
|
|
|
77
77
|
hint: 'Check the API origin, network, and service status; then retry.',
|
|
78
78
|
};
|
|
79
79
|
};
|
|
80
|
-
export const diagnose = async ({ resolveAuth, includeMcp, timeoutMs, }) => {
|
|
80
|
+
export const diagnose = async ({ resolveAuth, includeMcp, timeoutMs, includeTools = false, }) => {
|
|
81
81
|
const version = await cliVersion();
|
|
82
82
|
let auth;
|
|
83
83
|
try {
|
|
@@ -138,6 +138,7 @@ export const diagnose = async ({ resolveAuth, includeMcp, timeoutMs, }) => {
|
|
|
138
138
|
requestInit: { headers: { Authorization: `Bearer ${auth.apiKey}` } },
|
|
139
139
|
}), { signal, timeout: timeoutMs });
|
|
140
140
|
let toolCount = 0;
|
|
141
|
+
const tools = [];
|
|
141
142
|
let cursor;
|
|
142
143
|
const cursors = new Set();
|
|
143
144
|
do {
|
|
@@ -146,6 +147,8 @@ export const diagnose = async ({ resolveAuth, includeMcp, timeoutMs, }) => {
|
|
|
146
147
|
timeout: timeoutMs,
|
|
147
148
|
});
|
|
148
149
|
toolCount += page.tools.length;
|
|
150
|
+
if (includeTools)
|
|
151
|
+
tools.push(...page.tools);
|
|
149
152
|
cursor = page.nextCursor;
|
|
150
153
|
if (cursor && cursors.has(cursor))
|
|
151
154
|
throw new Error('Repeated tool cursor');
|
|
@@ -154,7 +157,7 @@ export const diagnose = async ({ resolveAuth, includeMcp, timeoutMs, }) => {
|
|
|
154
157
|
} while (cursor);
|
|
155
158
|
if (!toolCount)
|
|
156
159
|
throw new Error('No MCP tools');
|
|
157
|
-
return { name: 'mcp', status: 'pass', toolCount };
|
|
160
|
+
return { name: 'mcp', status: 'pass', toolCount, ...(includeTools ? { tools } : {}) };
|
|
158
161
|
}
|
|
159
162
|
catch (error) {
|
|
160
163
|
return failedCheck('mcp', error instanceof StreamableHTTPError ? error.code : undefined, signal.aborted);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@assethub/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"description": "Command line interface for AssetHub.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"access": "public"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@assethub/api-client": "^0.1.
|
|
33
|
+
"@assethub/api-client": "^0.1.5",
|
|
34
34
|
"@modelcontextprotocol/sdk": "^1.30.0"
|
|
35
35
|
},
|
|
36
36
|
"repository": {
|