@meshy-ai/cli 0.2.0 → 0.3.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/.env.example +8 -2
- package/README.md +342 -108
- package/dist/client/endpoints/animation-catalog.d.ts +37 -0
- package/dist/client/endpoints/animation-catalog.d.ts.map +1 -0
- package/dist/client/endpoints/animation-catalog.js +55 -0
- package/dist/client/endpoints/animation-catalog.js.map +1 -0
- package/dist/client/endpoints/balance.d.ts +5 -0
- package/dist/client/endpoints/balance.d.ts.map +1 -1
- package/dist/client/endpoints/balance.js +5 -1
- package/dist/client/endpoints/balance.js.map +1 -1
- package/dist/client/endpoints/base.d.ts +41 -7
- package/dist/client/endpoints/base.d.ts.map +1 -1
- package/dist/client/endpoints/base.js +61 -40
- package/dist/client/endpoints/base.js.map +1 -1
- package/dist/client/endpoints/showcases.d.ts +31 -0
- package/dist/client/endpoints/showcases.d.ts.map +1 -0
- package/dist/client/endpoints/showcases.js +49 -0
- package/dist/client/endpoints/showcases.js.map +1 -0
- package/dist/client/errors.d.ts +1 -0
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +1 -1
- package/dist/client/errors.js.map +1 -1
- package/dist/client/index.d.ts +47 -38
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +89 -120
- package/dist/client/index.js.map +1 -1
- package/dist/client/resource-registry.d.ts +97 -0
- package/dist/client/resource-registry.d.ts.map +1 -0
- package/dist/client/resource-registry.js +157 -0
- package/dist/client/resource-registry.js.map +1 -0
- package/dist/client/transport.d.ts +99 -0
- package/dist/client/transport.d.ts.map +1 -0
- package/dist/client/transport.js +320 -0
- package/dist/client/transport.js.map +1 -0
- package/dist/client/types.d.ts +17 -6
- package/dist/client/types.d.ts.map +1 -1
- package/dist/client/types.js +28 -6
- package/dist/client/types.js.map +1 -1
- package/dist/cmd/animation-catalog.d.ts +26 -0
- package/dist/cmd/animation-catalog.d.ts.map +1 -0
- package/dist/cmd/animation-catalog.js +80 -0
- package/dist/cmd/animation-catalog.js.map +1 -0
- package/dist/cmd/api.d.ts +3 -2
- package/dist/cmd/api.d.ts.map +1 -1
- package/dist/cmd/api.js +22 -8
- package/dist/cmd/api.js.map +1 -1
- package/dist/cmd/auth.d.ts.map +1 -1
- package/dist/cmd/auth.js +5 -0
- package/dist/cmd/auth.js.map +1 -1
- package/dist/cmd/balance.d.ts.map +1 -1
- package/dist/cmd/balance.js +10 -6
- package/dist/cmd/balance.js.map +1 -1
- package/dist/cmd/creative-lab.d.ts +26 -0
- package/dist/cmd/creative-lab.d.ts.map +1 -0
- package/dist/cmd/creative-lab.js +256 -0
- package/dist/cmd/creative-lab.js.map +1 -0
- package/dist/cmd/delete.d.ts.map +1 -1
- package/dist/cmd/delete.js +6 -7
- package/dist/cmd/delete.js.map +1 -1
- package/dist/cmd/doctor.d.ts +23 -0
- package/dist/cmd/doctor.d.ts.map +1 -0
- package/dist/cmd/doctor.js +61 -0
- package/dist/cmd/doctor.js.map +1 -0
- package/dist/cmd/download.d.ts +17 -0
- package/dist/cmd/download.d.ts.map +1 -0
- package/dist/cmd/download.js +436 -0
- package/dist/cmd/download.js.map +1 -0
- package/dist/cmd/inspect.d.ts +63 -0
- package/dist/cmd/inspect.d.ts.map +1 -0
- package/dist/cmd/inspect.js +179 -0
- package/dist/cmd/inspect.js.map +1 -0
- package/dist/cmd/make.d.ts +13 -3
- package/dist/cmd/make.d.ts.map +1 -1
- package/dist/cmd/make.js +240 -36
- package/dist/cmd/make.js.map +1 -1
- package/dist/cmd/mesh.d.ts +13 -0
- package/dist/cmd/mesh.d.ts.map +1 -0
- package/dist/cmd/mesh.js +67 -0
- package/dist/cmd/mesh.js.map +1 -0
- package/dist/cmd/project.d.ts +16 -0
- package/dist/cmd/project.d.ts.map +1 -0
- package/dist/cmd/project.js +136 -0
- package/dist/cmd/project.js.map +1 -0
- package/dist/cmd/resources.d.ts +5 -0
- package/dist/cmd/resources.d.ts.map +1 -1
- package/dist/cmd/resources.js +38 -10
- package/dist/cmd/resources.js.map +1 -1
- package/dist/cmd/showcases.d.ts +10 -0
- package/dist/cmd/showcases.d.ts.map +1 -0
- package/dist/cmd/showcases.js +63 -0
- package/dist/cmd/showcases.js.map +1 -0
- package/dist/cmd/slicer.d.ts +12 -0
- package/dist/cmd/slicer.d.ts.map +1 -0
- package/dist/cmd/slicer.js +46 -0
- package/dist/cmd/slicer.js.map +1 -0
- package/dist/cmd/uv-unwrap.d.ts +16 -0
- package/dist/cmd/uv-unwrap.d.ts.map +1 -0
- package/dist/cmd/uv-unwrap.js +52 -0
- package/dist/cmd/uv-unwrap.js.map +1 -0
- package/dist/index.d.ts +13 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +141 -8
- package/dist/index.js.map +1 -1
- package/dist/internal/artifacts.d.ts +97 -0
- package/dist/internal/artifacts.d.ts.map +1 -0
- package/dist/internal/artifacts.js +280 -0
- package/dist/internal/artifacts.js.map +1 -0
- package/dist/internal/atomic-file.d.ts +39 -0
- package/dist/internal/atomic-file.d.ts.map +1 -0
- package/dist/internal/atomic-file.js +160 -0
- package/dist/internal/atomic-file.js.map +1 -0
- package/dist/internal/command-helpers.d.ts +46 -0
- package/dist/internal/command-helpers.d.ts.map +1 -0
- package/dist/internal/command-helpers.js +61 -0
- package/dist/internal/command-helpers.js.map +1 -0
- package/dist/internal/config.d.ts +48 -5
- package/dist/internal/config.d.ts.map +1 -1
- package/dist/internal/config.js +95 -6
- package/dist/internal/config.js.map +1 -1
- package/dist/internal/context.d.ts +25 -0
- package/dist/internal/context.d.ts.map +1 -0
- package/dist/internal/context.js +37 -0
- package/dist/internal/context.js.map +1 -0
- package/dist/internal/credentials.d.ts +11 -0
- package/dist/internal/credentials.d.ts.map +1 -1
- package/dist/internal/credentials.js +2 -0
- package/dist/internal/credentials.js.map +1 -1
- package/dist/internal/doctor.d.ts +94 -0
- package/dist/internal/doctor.d.ts.map +1 -0
- package/dist/internal/doctor.js +280 -0
- package/dist/internal/doctor.js.map +1 -0
- package/dist/internal/download.d.ts +147 -13
- package/dist/internal/download.d.ts.map +1 -1
- package/dist/internal/download.js +735 -142
- package/dist/internal/download.js.map +1 -1
- package/dist/internal/env-file.d.ts +29 -0
- package/dist/internal/env-file.d.ts.map +1 -0
- package/dist/internal/env-file.js +95 -0
- package/dist/internal/env-file.js.map +1 -0
- package/dist/internal/errors.d.ts +74 -1
- package/dist/internal/errors.d.ts.map +1 -1
- package/dist/internal/errors.js +173 -1
- package/dist/internal/errors.js.map +1 -1
- package/dist/internal/file-input.d.ts +52 -12
- package/dist/internal/file-input.d.ts.map +1 -1
- package/dist/internal/file-input.js +162 -33
- package/dist/internal/file-input.js.map +1 -1
- package/dist/internal/global-options.d.ts +6 -4
- package/dist/internal/global-options.d.ts.map +1 -1
- package/dist/internal/global-options.js +19 -4
- package/dist/internal/global-options.js.map +1 -1
- package/dist/internal/inspect.d.ts +67 -0
- package/dist/internal/inspect.d.ts.map +1 -0
- package/dist/internal/inspect.js +111 -0
- package/dist/internal/inspect.js.map +1 -0
- package/dist/internal/lock.d.ts +19 -0
- package/dist/internal/lock.d.ts.map +1 -0
- package/dist/internal/lock.js +66 -0
- package/dist/internal/lock.js.map +1 -0
- package/dist/internal/material-links.d.ts +115 -0
- package/dist/internal/material-links.d.ts.map +1 -0
- package/dist/internal/material-links.js +577 -0
- package/dist/internal/material-links.js.map +1 -0
- package/dist/internal/obj-transform.d.ts +115 -0
- package/dist/internal/obj-transform.d.ts.map +1 -0
- package/dist/internal/obj-transform.js +649 -0
- package/dist/internal/obj-transform.js.map +1 -0
- package/dist/internal/operation-store.d.ts +123 -0
- package/dist/internal/operation-store.d.ts.map +1 -0
- package/dist/internal/operation-store.js +229 -0
- package/dist/internal/operation-store.js.map +1 -0
- package/dist/internal/output.d.ts +20 -2
- package/dist/internal/output.d.ts.map +1 -1
- package/dist/internal/output.js +32 -4
- package/dist/internal/output.js.map +1 -1
- package/dist/internal/paths.d.ts +89 -0
- package/dist/internal/paths.d.ts.map +1 -0
- package/dist/internal/paths.js +168 -0
- package/dist/internal/paths.js.map +1 -0
- package/dist/internal/payload.d.ts +15 -0
- package/dist/internal/payload.d.ts.map +1 -1
- package/dist/internal/payload.js +50 -3
- package/dist/internal/payload.js.map +1 -1
- package/dist/internal/poll.d.ts +30 -4
- package/dist/internal/poll.d.ts.map +1 -1
- package/dist/internal/poll.js +99 -16
- package/dist/internal/poll.js.map +1 -1
- package/dist/internal/project-store.d.ts +197 -0
- package/dist/internal/project-store.d.ts.map +1 -0
- package/dist/internal/project-store.js +467 -0
- package/dist/internal/project-store.js.map +1 -0
- package/dist/internal/result.d.ts +50 -0
- package/dist/internal/result.d.ts.map +1 -0
- package/dist/internal/result.js +41 -0
- package/dist/internal/result.js.map +1 -0
- package/dist/internal/runtime.d.ts +35 -5
- package/dist/internal/runtime.d.ts.map +1 -1
- package/dist/internal/runtime.js +68 -18
- package/dist/internal/runtime.js.map +1 -1
- package/dist/internal/slicers.d.ts +117 -0
- package/dist/internal/slicers.d.ts.map +1 -0
- package/dist/internal/slicers.js +314 -0
- package/dist/internal/slicers.js.map +1 -0
- package/dist/internal/stream.d.ts +58 -0
- package/dist/internal/stream.d.ts.map +1 -0
- package/dist/internal/stream.js +280 -0
- package/dist/internal/stream.js.map +1 -0
- package/dist/internal/task-command.d.ts +128 -11
- package/dist/internal/task-command.d.ts.map +1 -1
- package/dist/internal/task-command.js +991 -111
- package/dist/internal/task-command.js.map +1 -1
- package/dist/internal/task-view.d.ts +56 -0
- package/dist/internal/task-view.d.ts.map +1 -0
- package/dist/internal/task-view.js +95 -0
- package/dist/internal/task-view.js.map +1 -0
- package/dist/internal/update-notifier.d.ts +5 -1
- package/dist/internal/update-notifier.d.ts.map +1 -1
- package/dist/internal/update-notifier.js +7 -3
- package/dist/internal/update-notifier.js.map +1 -1
- package/dist/root.d.ts +10 -0
- package/dist/root.d.ts.map +1 -1
- package/dist/root.js +75 -10
- package/dist/root.js.map +1 -1
- package/package.json +3 -2
- package/skills/meshy-cli/SKILL.md +140 -59
- package/dist/client/endpoints/analyze-printability.d.ts +0 -5
- package/dist/client/endpoints/analyze-printability.d.ts.map +0 -1
- package/dist/client/endpoints/analyze-printability.js +0 -7
- package/dist/client/endpoints/analyze-printability.js.map +0 -1
- package/dist/client/endpoints/animate.d.ts +0 -6
- package/dist/client/endpoints/animate.d.ts.map +0 -1
- package/dist/client/endpoints/animate.js +0 -8
- package/dist/client/endpoints/animate.js.map +0 -1
- package/dist/client/endpoints/convert.d.ts +0 -5
- package/dist/client/endpoints/convert.d.ts.map +0 -1
- package/dist/client/endpoints/convert.js +0 -7
- package/dist/client/endpoints/convert.js.map +0 -1
- package/dist/client/endpoints/image-to-3d.d.ts +0 -5
- package/dist/client/endpoints/image-to-3d.d.ts.map +0 -1
- package/dist/client/endpoints/image-to-3d.js +0 -7
- package/dist/client/endpoints/image-to-3d.js.map +0 -1
- package/dist/client/endpoints/image-to-image.d.ts +0 -5
- package/dist/client/endpoints/image-to-image.d.ts.map +0 -1
- package/dist/client/endpoints/image-to-image.js +0 -7
- package/dist/client/endpoints/image-to-image.js.map +0 -1
- package/dist/client/endpoints/multi-color-print.d.ts +0 -5
- package/dist/client/endpoints/multi-color-print.d.ts.map +0 -1
- package/dist/client/endpoints/multi-color-print.js +0 -7
- package/dist/client/endpoints/multi-color-print.js.map +0 -1
- package/dist/client/endpoints/multi-image-to-3d.d.ts +0 -5
- package/dist/client/endpoints/multi-image-to-3d.d.ts.map +0 -1
- package/dist/client/endpoints/multi-image-to-3d.js +0 -7
- package/dist/client/endpoints/multi-image-to-3d.js.map +0 -1
- package/dist/client/endpoints/remesh.d.ts +0 -5
- package/dist/client/endpoints/remesh.d.ts.map +0 -1
- package/dist/client/endpoints/remesh.js +0 -7
- package/dist/client/endpoints/remesh.js.map +0 -1
- package/dist/client/endpoints/repair-printability.d.ts +0 -5
- package/dist/client/endpoints/repair-printability.d.ts.map +0 -1
- package/dist/client/endpoints/repair-printability.js +0 -7
- package/dist/client/endpoints/repair-printability.js.map +0 -1
- package/dist/client/endpoints/resize.d.ts +0 -5
- package/dist/client/endpoints/resize.d.ts.map +0 -1
- package/dist/client/endpoints/resize.js +0 -7
- package/dist/client/endpoints/resize.js.map +0 -1
- package/dist/client/endpoints/retexture.d.ts +0 -5
- package/dist/client/endpoints/retexture.d.ts.map +0 -1
- package/dist/client/endpoints/retexture.js +0 -7
- package/dist/client/endpoints/retexture.js.map +0 -1
- package/dist/client/endpoints/rigging.d.ts +0 -6
- package/dist/client/endpoints/rigging.d.ts.map +0 -1
- package/dist/client/endpoints/rigging.js +0 -8
- package/dist/client/endpoints/rigging.js.map +0 -1
- package/dist/client/endpoints/text-to-3d.d.ts +0 -6
- package/dist/client/endpoints/text-to-3d.d.ts.map +0 -1
- package/dist/client/endpoints/text-to-3d.js +0 -8
- package/dist/client/endpoints/text-to-3d.js.map +0 -1
- package/dist/client/endpoints/text-to-image.d.ts +0 -5
- package/dist/client/endpoints/text-to-image.d.ts.map +0 -1
- package/dist/client/endpoints/text-to-image.js +0 -7
- package/dist/client/endpoints/text-to-image.js.map +0 -1
- package/dist/client/endpoints/text-to-motion.d.ts +0 -6
- package/dist/client/endpoints/text-to-motion.d.ts.map +0 -1
- package/dist/client/endpoints/text-to-motion.js +0 -8
- package/dist/client/endpoints/text-to-motion.js.map +0 -1
|
@@ -1,25 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Resolve config in this priority order:
|
|
3
|
-
* 1. CLI flags (--api-key, --base-url-v1, --base-url-v2, --verbose)
|
|
3
|
+
* 1. CLI flags (--api-key, --base-url-v1, --base-url-v2, --base-url-creative-lab, --verbose)
|
|
4
4
|
* 2. Environment variables (MESHY_*)
|
|
5
|
-
* 3.
|
|
6
|
-
* 4.
|
|
5
|
+
* 3. An explicit --api-key-file (only MESHY_API_KEY is read from it)
|
|
6
|
+
* 4. The active profile in the credentials file (written by `meshy auth login`)
|
|
7
|
+
* 5. Built-in defaults
|
|
7
8
|
*
|
|
8
9
|
* The env var keeps priority over the stored credential on purpose: CI and
|
|
9
10
|
* containers export MESHY_API_KEY and must not be silently overridden by
|
|
10
11
|
* whatever a developer once logged into on that machine.
|
|
11
12
|
*
|
|
13
|
+
* An empty or placeholder --api-key / MESHY_API_KEY counts as "unset" (0.2.0
|
|
14
|
+
* behaviour; CI and the runtime tests rely on `MESHY_API_KEY=""` meaning
|
|
15
|
+
* "fall through to the stored profile"). An explicit --api-key-file is different:
|
|
16
|
+
* naming a file is an instruction, so an unreadable, malformed or key-less
|
|
17
|
+
* file is an error, never a fall-through to another account.
|
|
18
|
+
*
|
|
12
19
|
* Fail-fast on a missing/placeholder credential — with the command that fixes
|
|
13
20
|
* it attached, not just a complaint.
|
|
14
21
|
*/
|
|
15
22
|
import { type CredentialKind } from "./credentials.js";
|
|
16
23
|
import { type LogLevel } from "./logger.js";
|
|
24
|
+
export declare const DEFAULT_BASE_URL_V1 = "https://api.meshy.ai/openapi/v1";
|
|
25
|
+
export declare const DEFAULT_BASE_URL_V2 = "https://api.meshy.ai/openapi/v2";
|
|
17
26
|
/** Where the credential in use came from — surfaced by `meshy auth status`. */
|
|
18
|
-
export type CredentialSource = "flag" | "env" | "file";
|
|
27
|
+
export type CredentialSource = "flag" | "env" | "env-file" | "file";
|
|
19
28
|
export interface MeshyConfig {
|
|
20
29
|
apiKey: string;
|
|
21
30
|
baseUrlV1: string;
|
|
22
31
|
baseUrlV2: string;
|
|
32
|
+
/**
|
|
33
|
+
* Creative Lab base. Derived from the v1 origin when v1 uses the standard
|
|
34
|
+
* `/openapi/v1` path; null when it cannot be derived and no explicit
|
|
35
|
+
* override was given (commands that need it then ask for one).
|
|
36
|
+
*/
|
|
37
|
+
baseUrlCreativeLab: string | null;
|
|
38
|
+
/** Public, unauthenticated catalog base: `<v1 origin>/web/public`. */
|
|
39
|
+
publicWebBase: string;
|
|
23
40
|
connectTimeoutMs: number;
|
|
24
41
|
readTimeoutMs: number;
|
|
25
42
|
pollIntervalMs: number;
|
|
@@ -27,20 +44,46 @@ export interface MeshyConfig {
|
|
|
27
44
|
credentialSource: CredentialSource;
|
|
28
45
|
/** Set only when credentialSource === "file". */
|
|
29
46
|
credentialProfile?: string;
|
|
47
|
+
/** Set only when credentialSource === "env-file" (the --api-key-file path). */
|
|
48
|
+
envFilePath?: string;
|
|
30
49
|
/** The credentials file consulted for this invocation, whether or not it exists. */
|
|
31
50
|
credentialsFile: string;
|
|
32
51
|
/**
|
|
33
52
|
* The kind of credential in use — "oauth" for browser-login tokens, "api_key" for static keys.
|
|
34
|
-
* "api_key" when credentialSource is "flag" or "env" (those paths only accept static keys).
|
|
53
|
+
* "api_key" when credentialSource is "flag", "env" or "env-file" (those paths only accept static keys).
|
|
35
54
|
* Derived from the stored profile kind when credentialSource is "file".
|
|
36
55
|
*/
|
|
37
56
|
credentialKind: CredentialKind;
|
|
57
|
+
/**
|
|
58
|
+
* Stable account subject for an OAuth profile (user id), used to bind the
|
|
59
|
+
* operation journal to the account rather than to a rotating token. Unset for
|
|
60
|
+
* API keys (the key itself is digested) and for profiles without a user id.
|
|
61
|
+
*/
|
|
62
|
+
credentialSubject?: string;
|
|
63
|
+
/** Per-login identifier of an OAuth profile (minted at `auth login`), the fallback identity when no user id exists. */
|
|
64
|
+
credentialLoginId?: string;
|
|
38
65
|
}
|
|
39
66
|
export interface ConfigOverrides {
|
|
40
67
|
apiKey?: string;
|
|
41
68
|
baseUrlV1?: string;
|
|
42
69
|
baseUrlV2?: string;
|
|
70
|
+
baseUrlCreativeLab?: string;
|
|
71
|
+
envFile?: string;
|
|
43
72
|
logLevel?: LogLevel;
|
|
44
73
|
}
|
|
74
|
+
/** Origin (scheme://host[:port]) of a base URL, or null when it does not parse. */
|
|
75
|
+
export declare function originOf(baseUrl: string): string | null;
|
|
76
|
+
/**
|
|
77
|
+
* Derive the Creative Lab base from the v1 base. Only the standard
|
|
78
|
+
* `<origin>/openapi/v1` layout is derivable; a custom proxy path makes the
|
|
79
|
+
* derivation a guess, and a guessed base must never fall back to production.
|
|
80
|
+
*/
|
|
81
|
+
export declare function deriveCreativeLabBase(baseUrlV1: string): string | null;
|
|
82
|
+
export declare function derivePublicWebBase(baseUrlV1: string): string;
|
|
45
83
|
export declare function loadConfig(overrides?: ConfigOverrides): MeshyConfig;
|
|
84
|
+
/**
|
|
85
|
+
* Stored profiles were issued for the v1 origin they were resolved against.
|
|
86
|
+
* A different Creative Lab origin only receives an explicitly supplied key.
|
|
87
|
+
*/
|
|
88
|
+
export declare function assertCredentialAllowedForOrigin(cfg: MeshyConfig, targetBase: string, label: string): void;
|
|
46
89
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/internal/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/internal/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAA4C,KAAK,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAGjG,OAAO,EAAe,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAIzD,eAAO,MAAM,mBAAmB,oCAAoC,CAAC;AACrE,eAAO,MAAM,mBAAmB,oCAAoC,CAAC;AAErE,+EAA+E;AAC/E,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,GAAG,UAAU,GAAG,MAAM,CAAC;AAEpE,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,sEAAsE;IACtE,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oFAAoF;IACpF,eAAe,EAAE,MAAM,CAAC;IACxB;;;;OAIG;IACH,cAAc,EAAE,cAAc,CAAC;IAC/B;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uHAAuH;IACvH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAyBD,mFAAmF;AACnF,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMvD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQtE;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG7D;AAED,wBAAgB,UAAU,CAAC,SAAS,GAAE,eAAoB,GAAG,WAAW,CA6FvE;AAED;;;GAGG;AACH,wBAAgB,gCAAgC,CAAC,GAAG,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAW1G"}
|
package/dist/internal/config.js
CHANGED
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Resolve config in this priority order:
|
|
3
|
-
* 1. CLI flags (--api-key, --base-url-v1, --base-url-v2, --verbose)
|
|
3
|
+
* 1. CLI flags (--api-key, --base-url-v1, --base-url-v2, --base-url-creative-lab, --verbose)
|
|
4
4
|
* 2. Environment variables (MESHY_*)
|
|
5
|
-
* 3.
|
|
6
|
-
* 4.
|
|
5
|
+
* 3. An explicit --api-key-file (only MESHY_API_KEY is read from it)
|
|
6
|
+
* 4. The active profile in the credentials file (written by `meshy auth login`)
|
|
7
|
+
* 5. Built-in defaults
|
|
7
8
|
*
|
|
8
9
|
* The env var keeps priority over the stored credential on purpose: CI and
|
|
9
10
|
* containers export MESHY_API_KEY and must not be silently overridden by
|
|
10
11
|
* whatever a developer once logged into on that machine.
|
|
11
12
|
*
|
|
13
|
+
* An empty or placeholder --api-key / MESHY_API_KEY counts as "unset" (0.2.0
|
|
14
|
+
* behaviour; CI and the runtime tests rely on `MESHY_API_KEY=""` meaning
|
|
15
|
+
* "fall through to the stored profile"). An explicit --api-key-file is different:
|
|
16
|
+
* naming a file is an instruction, so an unreadable, malformed or key-less
|
|
17
|
+
* file is an error, never a fall-through to another account.
|
|
18
|
+
*
|
|
12
19
|
* Fail-fast on a missing/placeholder credential — with the command that fixes
|
|
13
20
|
* it attached, not just a complaint.
|
|
14
21
|
*/
|
|
15
22
|
import { credentialsPath, resolveStoredCredential } from "./credentials.js";
|
|
16
|
-
import {
|
|
23
|
+
import { loadEnvFile } from "./env-file.js";
|
|
24
|
+
import { authRequiredError, CliError } from "./errors.js";
|
|
17
25
|
import { setLogLevel } from "./logger.js";
|
|
18
26
|
const PLACEHOLDER_KEYS = new Set(["", "YOUR_MESHY_API_KEY_HERE"]);
|
|
27
|
+
export const DEFAULT_BASE_URL_V1 = "https://api.meshy.ai/openapi/v1";
|
|
28
|
+
export const DEFAULT_BASE_URL_V2 = "https://api.meshy.ai/openapi/v2";
|
|
19
29
|
function readNumber(name, fallback) {
|
|
20
30
|
const raw = process.env[name];
|
|
21
31
|
if (raw === undefined || raw === "")
|
|
@@ -38,18 +48,62 @@ function readLogLevel(fallback) {
|
|
|
38
48
|
function stripTrail(s) {
|
|
39
49
|
return s.replace(/\/+$/, "");
|
|
40
50
|
}
|
|
51
|
+
/** Origin (scheme://host[:port]) of a base URL, or null when it does not parse. */
|
|
52
|
+
export function originOf(baseUrl) {
|
|
53
|
+
try {
|
|
54
|
+
return new URL(baseUrl).origin;
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Derive the Creative Lab base from the v1 base. Only the standard
|
|
62
|
+
* `<origin>/openapi/v1` layout is derivable; a custom proxy path makes the
|
|
63
|
+
* derivation a guess, and a guessed base must never fall back to production.
|
|
64
|
+
*/
|
|
65
|
+
export function deriveCreativeLabBase(baseUrlV1) {
|
|
66
|
+
try {
|
|
67
|
+
const u = new URL(baseUrlV1);
|
|
68
|
+
if (u.pathname.replace(/\/+$/, "") !== "/openapi/v1")
|
|
69
|
+
return null;
|
|
70
|
+
return `${u.origin}/openapi/creative-lab`;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export function derivePublicWebBase(baseUrlV1) {
|
|
77
|
+
const origin = originOf(baseUrlV1) ?? "https://api.meshy.ai";
|
|
78
|
+
return `${origin}/web/public`;
|
|
79
|
+
}
|
|
41
80
|
export function loadConfig(overrides = {}) {
|
|
42
81
|
// Base URLs resolve first: they decide which credentials file applies
|
|
43
82
|
// (production vs. a staging override).
|
|
44
|
-
const baseUrlV1 = stripTrail(overrides.baseUrlV1 ?? process.env.MESHY_BASE_URL_V1 ??
|
|
45
|
-
const baseUrlV2 = stripTrail(overrides.baseUrlV2 ?? process.env.MESHY_BASE_URL_V2 ??
|
|
83
|
+
const baseUrlV1 = stripTrail(overrides.baseUrlV1 ?? process.env.MESHY_BASE_URL_V1 ?? DEFAULT_BASE_URL_V1);
|
|
84
|
+
const baseUrlV2 = stripTrail(overrides.baseUrlV2 ?? process.env.MESHY_BASE_URL_V2 ?? DEFAULT_BASE_URL_V2);
|
|
85
|
+
const explicitCreativeLab = overrides.baseUrlCreativeLab ?? process.env.MESHY_BASE_URL_CREATIVE_LAB;
|
|
86
|
+
const baseUrlCreativeLab = explicitCreativeLab
|
|
87
|
+
? stripTrail(explicitCreativeLab)
|
|
88
|
+
: deriveCreativeLabBase(baseUrlV1);
|
|
46
89
|
const credFile = credentialsPath(baseUrlV1);
|
|
47
90
|
const flagKey = overrides.apiKey?.trim() ?? "";
|
|
48
91
|
const envKey = process.env.MESHY_API_KEY?.trim() ?? "";
|
|
92
|
+
// An explicit env file is validated even when a higher-priority key wins:
|
|
93
|
+
// the user named it, so a broken file is a mistake worth reporting now.
|
|
94
|
+
let envFileKey = "";
|
|
95
|
+
let envFilePath;
|
|
96
|
+
if (overrides.envFile) {
|
|
97
|
+
const loaded = loadEnvFile(overrides.envFile);
|
|
98
|
+
envFilePath = loaded.path;
|
|
99
|
+
envFileKey = loaded.apiKey?.trim() ?? "";
|
|
100
|
+
}
|
|
49
101
|
let apiKey = "";
|
|
50
102
|
let credentialSource = "flag";
|
|
51
103
|
let credentialProfile;
|
|
52
104
|
let credentialKind = "api_key";
|
|
105
|
+
let credentialSubject;
|
|
106
|
+
let credentialLoginId;
|
|
53
107
|
if (!PLACEHOLDER_KEYS.has(flagKey)) {
|
|
54
108
|
apiKey = flagKey;
|
|
55
109
|
credentialSource = "flag";
|
|
@@ -60,6 +114,17 @@ export function loadConfig(overrides = {}) {
|
|
|
60
114
|
credentialSource = "env";
|
|
61
115
|
credentialKind = "api_key";
|
|
62
116
|
}
|
|
117
|
+
else if (overrides.envFile) {
|
|
118
|
+
if (PLACEHOLDER_KEYS.has(envFileKey)) {
|
|
119
|
+
throw new CliError({
|
|
120
|
+
code: "auth",
|
|
121
|
+
message: `--api-key-file ${overrides.envFile} does not define a usable MESHY_API_KEY (missing, empty or placeholder). Fix the file or drop --api-key-file to use another credential source.`,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
apiKey = envFileKey;
|
|
125
|
+
credentialSource = "env-file";
|
|
126
|
+
credentialKind = "api_key";
|
|
127
|
+
}
|
|
63
128
|
else {
|
|
64
129
|
// A corrupt credentials file throws out of resolveStoredCredential rather
|
|
65
130
|
// than being swallowed into "not logged in" — see credentials.ts.
|
|
@@ -70,6 +135,8 @@ export function loadConfig(overrides = {}) {
|
|
|
70
135
|
credentialSource = "file";
|
|
71
136
|
credentialProfile = stored.profile;
|
|
72
137
|
credentialKind = stored.kind;
|
|
138
|
+
credentialSubject = stored.userId;
|
|
139
|
+
credentialLoginId = stored.loginId;
|
|
73
140
|
}
|
|
74
141
|
else {
|
|
75
142
|
throw authRequiredError("No credentials found. Pass --api-key, export MESHY_API_KEY, or log in.");
|
|
@@ -79,16 +146,38 @@ export function loadConfig(overrides = {}) {
|
|
|
79
146
|
apiKey,
|
|
80
147
|
baseUrlV1,
|
|
81
148
|
baseUrlV2,
|
|
149
|
+
baseUrlCreativeLab,
|
|
150
|
+
publicWebBase: derivePublicWebBase(baseUrlV1),
|
|
82
151
|
connectTimeoutMs: readNumber("MESHY_CONNECT_TIMEOUT_MS", 10_000),
|
|
83
152
|
readTimeoutMs: readNumber("MESHY_READ_TIMEOUT_MS", 120_000),
|
|
84
153
|
pollIntervalMs: readNumber("MESHY_POLL_INTERVAL_MS", 3_000),
|
|
85
154
|
logLevel: overrides.logLevel ?? readLogLevel("warn"),
|
|
86
155
|
credentialSource,
|
|
87
156
|
credentialProfile,
|
|
157
|
+
envFilePath,
|
|
88
158
|
credentialsFile: credFile,
|
|
89
159
|
credentialKind,
|
|
160
|
+
credentialSubject,
|
|
161
|
+
credentialLoginId,
|
|
90
162
|
};
|
|
91
163
|
setLogLevel(cfg.logLevel);
|
|
92
164
|
return cfg;
|
|
93
165
|
}
|
|
166
|
+
/**
|
|
167
|
+
* Stored profiles were issued for the v1 origin they were resolved against.
|
|
168
|
+
* A different Creative Lab origin only receives an explicitly supplied key.
|
|
169
|
+
*/
|
|
170
|
+
export function assertCredentialAllowedForOrigin(cfg, targetBase, label) {
|
|
171
|
+
if (cfg.credentialSource !== "file")
|
|
172
|
+
return;
|
|
173
|
+
const v1Origin = originOf(cfg.baseUrlV1);
|
|
174
|
+
const targetOrigin = originOf(targetBase);
|
|
175
|
+
if (v1Origin && targetOrigin && v1Origin === targetOrigin)
|
|
176
|
+
return;
|
|
177
|
+
throw new CliError({
|
|
178
|
+
code: "auth",
|
|
179
|
+
message: `${label} base ${targetBase} is on a different origin than the v1 API (${cfg.baseUrlV1}); ` +
|
|
180
|
+
"the stored profile is not sent there. Pass --api-key, MESHY_API_KEY or --api-key-file for that origin.",
|
|
181
|
+
});
|
|
182
|
+
}
|
|
94
183
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/internal/config.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/internal/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-invocation command context. The CLI runs one command per process; the
|
|
3
|
+
* action that owns the command registers its name, output schema and format
|
|
4
|
+
* here so the top-level error exit can render the failure in the same shape
|
|
5
|
+
* the success path would have used. Parse errors happen before any action
|
|
6
|
+
* runs, so the entry point falls back to argv heuristics when this is unset.
|
|
7
|
+
*
|
|
8
|
+
* The shared AbortController is what SIGINT trips; long operations (wait,
|
|
9
|
+
* stream, download) observe `signal` and convert an abort into exit 130.
|
|
10
|
+
*/
|
|
11
|
+
import type { OutputFormat } from "./output.js";
|
|
12
|
+
import type { OutputSchema } from "./result.js";
|
|
13
|
+
export interface CommandContext {
|
|
14
|
+
command: string;
|
|
15
|
+
schema: OutputSchema;
|
|
16
|
+
format: OutputFormat;
|
|
17
|
+
}
|
|
18
|
+
export declare function beginCommand(ctx: CommandContext): CommandContext;
|
|
19
|
+
export declare function currentCommand(): CommandContext | null;
|
|
20
|
+
export declare function abortSignal(): AbortSignal;
|
|
21
|
+
export declare function markInterrupted(): void;
|
|
22
|
+
export declare function wasInterrupted(): boolean;
|
|
23
|
+
/** Test hook: reset module state between in-process runs. */
|
|
24
|
+
export declare function resetCommandContextForTests(): void;
|
|
25
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/internal/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE,YAAY,CAAC;CACtB;AAMD,wBAAgB,YAAY,CAAC,GAAG,EAAE,cAAc,GAAG,cAAc,CAGhE;AAED,wBAAgB,cAAc,IAAI,cAAc,GAAG,IAAI,CAEtD;AAED,wBAAgB,WAAW,IAAI,WAAW,CAEzC;AAED,wBAAgB,eAAe,IAAI,IAAI,CAItC;AAED,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED,6DAA6D;AAC7D,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-invocation command context. The CLI runs one command per process; the
|
|
3
|
+
* action that owns the command registers its name, output schema and format
|
|
4
|
+
* here so the top-level error exit can render the failure in the same shape
|
|
5
|
+
* the success path would have used. Parse errors happen before any action
|
|
6
|
+
* runs, so the entry point falls back to argv heuristics when this is unset.
|
|
7
|
+
*
|
|
8
|
+
* The shared AbortController is what SIGINT trips; long operations (wait,
|
|
9
|
+
* stream, download) observe `signal` and convert an abort into exit 130.
|
|
10
|
+
*/
|
|
11
|
+
let current = null;
|
|
12
|
+
const controller = new AbortController();
|
|
13
|
+
let interrupted = false;
|
|
14
|
+
export function beginCommand(ctx) {
|
|
15
|
+
current = ctx;
|
|
16
|
+
return ctx;
|
|
17
|
+
}
|
|
18
|
+
export function currentCommand() {
|
|
19
|
+
return current;
|
|
20
|
+
}
|
|
21
|
+
export function abortSignal() {
|
|
22
|
+
return controller.signal;
|
|
23
|
+
}
|
|
24
|
+
export function markInterrupted() {
|
|
25
|
+
if (interrupted)
|
|
26
|
+
return;
|
|
27
|
+
interrupted = true;
|
|
28
|
+
controller.abort(new Error("interrupted by SIGINT"));
|
|
29
|
+
}
|
|
30
|
+
export function wasInterrupted() {
|
|
31
|
+
return interrupted;
|
|
32
|
+
}
|
|
33
|
+
/** Test hook: reset module state between in-process runs. */
|
|
34
|
+
export function resetCommandContextForTests() {
|
|
35
|
+
current = null;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/internal/context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,IAAI,OAAO,GAA0B,IAAI,CAAC;AAC1C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;AACzC,IAAI,WAAW,GAAG,KAAK,CAAC;AAExB,MAAM,UAAU,YAAY,CAAC,GAAmB;IAC9C,OAAO,GAAG,GAAG,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,IAAI,WAAW;QAAE,OAAO;IACxB,WAAW,GAAG,IAAI,CAAC;IACnB,UAAU,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,2BAA2B;IACzC,OAAO,GAAG,IAAI,CAAC;AACjB,CAAC"}
|
|
@@ -31,6 +31,13 @@ export interface CredentialProfile {
|
|
|
31
31
|
/** Unix epoch millis. */
|
|
32
32
|
expires_at?: number;
|
|
33
33
|
user_id?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Random identifier minted by `meshy auth login` for OAuth profiles. It
|
|
36
|
+
* survives token refreshes and is replaced by a new login, so the operation
|
|
37
|
+
* journal can bind a submission to *this* login even when the token endpoint
|
|
38
|
+
* reports no user_id.
|
|
39
|
+
*/
|
|
40
|
+
login_id?: string;
|
|
34
41
|
created_at?: number;
|
|
35
42
|
}
|
|
36
43
|
export interface CredentialsFile {
|
|
@@ -95,6 +102,10 @@ export interface ResolvedStoredCredential {
|
|
|
95
102
|
apiKey?: string;
|
|
96
103
|
accessToken?: string;
|
|
97
104
|
expiresAt?: number;
|
|
105
|
+
/** Stable account subject of an OAuth profile, when the token endpoint reported one. */
|
|
106
|
+
userId?: string;
|
|
107
|
+
/** Per-login identifier of an OAuth profile (see CredentialProfile.login_id). */
|
|
108
|
+
loginId?: string;
|
|
98
109
|
}
|
|
99
110
|
/**
|
|
100
111
|
* Returns the usable secret from the active profile, or null when there is no
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/internal/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAgBH,eAAO,MAAM,YAAY,IAAI,CAAC;AAC9B,eAAO,MAAM,eAAe,YAAY,CAAC;AACzC,eAAO,MAAM,aAAa,iBAAiB,CAAC;AAM5C,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;AAEjD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,cAAc,CAAC;IACrB,uCAAuC;IACvC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,yBAAyB;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;CAC7C;AAED,sFAAsF;AACtF,qBAAa,oBAAqB,SAAQ,KAAK;IAC7C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,YAAY,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAIvC;CACF;AAMD,6DAA6D;AAC7D,wBAAgB,SAAS,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAItE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAOvE;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,SAAS,CAAC,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,UAAwB,GACnC,MAAM,CAKR;AAoBD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAuCnE;AAUD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CA6BpE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAiB3E;AAED,+FAA+F;AAC/F,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,eAAe,GAAG,IAAI,GACzD,eAAe,CAOjB;AAMD,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,iBAAiB,EAC1B,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAO,GAClC,eAAe,CAKjB;AAED,8EAA8E;AAC9E,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAOjE;AAED,8EAA8E;AAC9E,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAU3D;AAED,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../src/internal/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -286,6 +286,8 @@ export function resolveStoredCredential(file) {
|
|
|
286
286
|
kind: "oauth",
|
|
287
287
|
accessToken: profile.access_token,
|
|
288
288
|
expiresAt: profile.expires_at,
|
|
289
|
+
...(profile.user_id ? { userId: profile.user_id } : {}),
|
|
290
|
+
...(profile.login_id ? { loginId: profile.login_id } : {}),
|
|
289
291
|
};
|
|
290
292
|
}
|
|
291
293
|
/** `msy_abcd…wxyz` — enough to tell two keys apart, not enough to use one. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/internal/credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,EACL,SAAS,EACT,SAAS,EACT,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,UAAU,EACV,QAAQ,EACR,UAAU,EACV,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC;AAC9B,MAAM,CAAC,MAAM,eAAe,GAAG,SAAS,CAAC;AACzC,MAAM,CAAC,MAAM,aAAa,GAAG,cAAc,CAAC;AAE5C,MAAM,eAAe,GAAG,MAAM,CAAC;AAC/B,4EAA4E;AAC5E,MAAM,aAAa,GAAG,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"credentials.js","sourceRoot":"","sources":["../../src/internal/credentials.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* doctor — read-only environment diagnosis.
|
|
3
|
+
*
|
|
4
|
+
* The default run is fully local and must complete with no credential, no
|
|
5
|
+
* network and an empty config directory. It reports versions, which credential
|
|
6
|
+
* sources are *present* — never their values: the stored profile is stat'ed
|
|
7
|
+
* and not parsed, the flag and env var become booleans, and an explicit
|
|
8
|
+
* `--api-key-file` is run through the same parser API commands use with only
|
|
9
|
+
* its verdict kept — the effective base URLs, workspace writability and
|
|
10
|
+
* whether the cwd holds a `.env` candidate (named, never read: there is no
|
|
11
|
+
* auto-discovery, D-016). Nothing here refreshes an OAuth token or writes.
|
|
12
|
+
*
|
|
13
|
+
* `--check-api` resolves the credential exactly like an API command (flags →
|
|
14
|
+
* env → key file → stored profile) and makes one GET /balance — the only free
|
|
15
|
+
* authenticated endpoint. `--check-slicers` runs the local slicer detection.
|
|
16
|
+
* Neither is implied by the other (D-024). Everything else stays offline.
|
|
17
|
+
*/
|
|
18
|
+
import { type GlobalFlags } from "./runtime.js";
|
|
19
|
+
import { type DetectionEnv, type SlicerDetection } from "./slicers.js";
|
|
20
|
+
export type DoctorCheckStatus = "ok" | "warn" | "fail" | "skipped";
|
|
21
|
+
export interface DoctorCheck {
|
|
22
|
+
id: string;
|
|
23
|
+
status: DoctorCheckStatus;
|
|
24
|
+
detail: string;
|
|
25
|
+
}
|
|
26
|
+
export interface DoctorReport {
|
|
27
|
+
cli: {
|
|
28
|
+
version: string;
|
|
29
|
+
node: string;
|
|
30
|
+
platform: string;
|
|
31
|
+
arch: string;
|
|
32
|
+
};
|
|
33
|
+
/** Node satisfies the engine range and the CLI loaded: local commands can run. */
|
|
34
|
+
local_ready: boolean;
|
|
35
|
+
/** null unless --check-api was requested. */
|
|
36
|
+
api_ready: boolean | null;
|
|
37
|
+
checks: DoctorCheck[];
|
|
38
|
+
credential_sources: {
|
|
39
|
+
flag: boolean;
|
|
40
|
+
env: boolean;
|
|
41
|
+
/** Absolute path of --api-key-file when given (its verdict is a check), else null. */
|
|
42
|
+
api_key_file: string | null;
|
|
43
|
+
stored_profile: {
|
|
44
|
+
path: string;
|
|
45
|
+
exists: boolean;
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
base_urls: {
|
|
49
|
+
v1: string;
|
|
50
|
+
v2: string;
|
|
51
|
+
creative_lab: string | null;
|
|
52
|
+
public_web: string;
|
|
53
|
+
};
|
|
54
|
+
workspace: {
|
|
55
|
+
path: string | null;
|
|
56
|
+
writable: boolean | null;
|
|
57
|
+
};
|
|
58
|
+
/** Names among .env / .env.local present in cwd — never read. */
|
|
59
|
+
cwd_env_candidates: string[];
|
|
60
|
+
slicers?: unknown;
|
|
61
|
+
api?: {
|
|
62
|
+
balance: number;
|
|
63
|
+
} | {
|
|
64
|
+
error: string;
|
|
65
|
+
} | null;
|
|
66
|
+
}
|
|
67
|
+
export type { SlicerDetection } from "./slicers.js";
|
|
68
|
+
/** Injectable slicer detection (tests pass a fake); the default is internal/slicers.ts. */
|
|
69
|
+
export type SlicerDetector = (env?: Partial<DetectionEnv>) => SlicerDetection | unknown;
|
|
70
|
+
export interface DoctorOptions {
|
|
71
|
+
flags: GlobalFlags;
|
|
72
|
+
checkApi: boolean;
|
|
73
|
+
checkSlicers: boolean;
|
|
74
|
+
/** Drives the local checks (default process.env). `--check-api` resolves through loadConfig, which reads process.env like every API command. */
|
|
75
|
+
env?: NodeJS.ProcessEnv;
|
|
76
|
+
cwd?: string;
|
|
77
|
+
detectSlicers?: SlicerDetector;
|
|
78
|
+
probeBalance?: () => Promise<number>;
|
|
79
|
+
}
|
|
80
|
+
export interface DoctorApiFailure {
|
|
81
|
+
/** `credentials`: no usable credential could be resolved; `balance`: the single GET failed. */
|
|
82
|
+
stage: "credentials" | "balance";
|
|
83
|
+
error: unknown;
|
|
84
|
+
}
|
|
85
|
+
export interface DoctorOutcome {
|
|
86
|
+
report: DoctorReport;
|
|
87
|
+
/** Set when --check-api did not end with api_ready true; the command maps it to an exit code. */
|
|
88
|
+
apiFailure: DoctorApiFailure | null;
|
|
89
|
+
}
|
|
90
|
+
/** Run the diagnosis and also return the raw API failure for exit-code mapping. */
|
|
91
|
+
export declare function runDoctorDetailed(opts: DoctorOptions): Promise<DoctorOutcome>;
|
|
92
|
+
/** Run the diagnosis; never throws for a missing credential or a failed check. */
|
|
93
|
+
export declare function runDoctor(opts: DoctorOptions): Promise<DoctorReport>;
|
|
94
|
+
//# sourceMappingURL=doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/internal/doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAeH,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAsC,KAAK,YAAY,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAG3G,MAAM,MAAM,iBAAiB,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACvE,kFAAkF;IAClF,WAAW,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,SAAS,EAAE,OAAO,GAAG,IAAI,CAAC;IAC1B,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,kBAAkB,EAAE;QAClB,IAAI,EAAE,OAAO,CAAC;QACd,GAAG,EAAE,OAAO,CAAC;QACb,sFAAsF;QACtF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,cAAc,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,OAAO,CAAA;SAAE,CAAC;KACnD,CAAC;IACF,SAAS,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;IACvF,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC;IAC7D,iEAAiE;IACjE,kBAAkB,EAAE,MAAM,EAAE,CAAC;IAC7B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACtD;AAED,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,2FAA2F;AAC3F,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,KAAK,eAAe,GAAG,OAAO,CAAC;AAExF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,gJAAgJ;IAChJ,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,EAAE,cAAc,CAAC;IAC/B,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,gBAAgB;IAC/B,+FAA+F;IAC/F,KAAK,EAAE,aAAa,GAAG,SAAS,CAAC;IACjC,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,YAAY,CAAC;IACrB,iGAAiG;IACjG,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;CACrC;AAmDD,mFAAmF;AACnF,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAoMnF;AAED,kFAAkF;AAClF,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAE1E"}
|