@hyper3d/cli 0.0.1 → 0.1.0-beta.2.1
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 +167 -4
- package/dist/account.d.ts +26 -0
- package/dist/account.js +136 -0
- package/dist/account.js.map +1 -0
- package/dist/auth.d.ts +63 -0
- package/dist/auth.js +316 -0
- package/dist/auth.js.map +1 -0
- package/dist/base_schema.json +599 -0
- package/dist/endpoints.d.ts +15 -0
- package/dist/endpoints.js +29 -0
- package/dist/endpoints.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +106 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp.d.ts +99 -0
- package/dist/mcp.js +116 -0
- package/dist/mcp.js.map +1 -0
- package/dist/operations.d.ts +12 -0
- package/dist/operations.js +139 -0
- package/dist/operations.js.map +1 -0
- package/dist/output.d.ts +5 -0
- package/dist/output.js +123 -0
- package/dist/output.js.map +1 -0
- package/dist/schema.d.ts +10 -0
- package/dist/schema.js +33 -0
- package/dist/schema.js.map +1 -0
- package/dist/types.d.ts +22 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/update.d.ts +26 -0
- package/dist/update.js +151 -0
- package/dist/update.js.map +1 -0
- package/dist/utils.d.ts +4 -0
- package/dist/utils.js +9 -0
- package/dist/utils.js.map +1 -0
- package/package.json +25 -5
package/dist/schema.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { Ajv } from 'ajv';
|
|
3
|
+
import { Ajv2020 } from 'ajv/dist/2020.js';
|
|
4
|
+
import addFormats from 'ajv-formats';
|
|
5
|
+
export const baseSchema = JSON.parse(await readFile(new URL('./base_schema.json', import.meta.url), 'utf8'));
|
|
6
|
+
export function validateInput(schema, value) {
|
|
7
|
+
const Constructor = schema.$schema?.includes('2020-12') ? Ajv2020 : Ajv;
|
|
8
|
+
const ajv = new Constructor({
|
|
9
|
+
strict: false,
|
|
10
|
+
allErrors: true,
|
|
11
|
+
validateFormats: true,
|
|
12
|
+
});
|
|
13
|
+
addFormats(ajv);
|
|
14
|
+
const validate = ajv.compile(schema);
|
|
15
|
+
if (!validate(value))
|
|
16
|
+
throw new Error(`Invalid tool input: ${ajv.errorsText(validate.errors)}`);
|
|
17
|
+
}
|
|
18
|
+
export function prepareCall(name, input, remote, warn = (message) => process.stderr.write(`warning: ${message}\n`)) {
|
|
19
|
+
const tool = baseSchema.tools.find((tool) => tool.name === name);
|
|
20
|
+
if (!tool)
|
|
21
|
+
throw new Error(`Unsupported tool: ${name}`);
|
|
22
|
+
if (!remote)
|
|
23
|
+
throw new Error(`Tool unavailable: ${name}`);
|
|
24
|
+
validateInput(remote.inputSchema, input);
|
|
25
|
+
try {
|
|
26
|
+
validateInput(tool.inputSchema, input);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
warn(`${name}: input differs from bundled base schema but is accepted by the server`);
|
|
30
|
+
}
|
|
31
|
+
return { name, arguments: input };
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC1B,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC3C,OAAO,UAAU,MAAM,aAAa,CAAC;AAKrC,MAAM,CAAC,MAAM,UAAU,GAAsB,IAAI,CAAC,KAAK,CACrD,MAAM,QAAQ,CAAC,IAAI,GAAG,CAAC,oBAAoB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CACvE,CAAC;AAEF,MAAM,UAAU,aAAa,CAAC,MAAe,EAAE,KAAc;IAC3D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACxE,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC;QAC1B,MAAM,EAAE,KAAK;QACb,SAAS,EAAE,IAAI;QACf,eAAe,EAAE,IAAI;KACtB,CAAC,CAAC;IACF,UAAiD,CAAC,GAAG,CAAC,CAAC;IACxD,MAAM,QAAQ,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,IAAY,EACZ,KAAc,EACd,MAAwB,EACxB,OAAkC,CAAC,OAAO,EAAE,EAAE,CAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,OAAO,IAAI,CAAC;IAE/C,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACjE,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,IAAI,EAAE,CAAC,CAAC;IAC1D,aAAa,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACzC,IAAI,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CACF,GAAG,IAAI,wEAAwE,CAChF,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;AACpC,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
2
|
+
import type { OAuthTokens } from '@modelcontextprotocol/sdk/shared/auth.js';
|
|
3
|
+
export type Payload = Record<string, any>;
|
|
4
|
+
export interface PackageInfo {
|
|
5
|
+
name: string;
|
|
6
|
+
version: string;
|
|
7
|
+
private?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface Credentials {
|
|
10
|
+
clientId?: string;
|
|
11
|
+
tokens?: OAuthTokens;
|
|
12
|
+
expiresAt?: number;
|
|
13
|
+
}
|
|
14
|
+
export type ToolClient = Pick<Client, 'callTool'>;
|
|
15
|
+
export interface GenerateOptions {
|
|
16
|
+
image?: string[];
|
|
17
|
+
prompt?: string;
|
|
18
|
+
tier?: string;
|
|
19
|
+
meshMode?: string;
|
|
20
|
+
format?: string;
|
|
21
|
+
quality?: number;
|
|
22
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
|
package/dist/update.d.ts
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { PackageInfo } from './types.js';
|
|
2
|
+
export type Runner = (args: string[]) => Promise<string>;
|
|
3
|
+
export declare function npm(args: string[]): Promise<string>;
|
|
4
|
+
export declare function updateChannel(pkg: PackageInfo): string;
|
|
5
|
+
export declare function checkUpdate(pkg: PackageInfo, channel: string, run?: Runner): Promise<{
|
|
6
|
+
current: string;
|
|
7
|
+
target: string;
|
|
8
|
+
available: boolean;
|
|
9
|
+
}>;
|
|
10
|
+
export declare function isGlobalInstall(pkg: PackageInfo, directory: string, run?: Runner): Promise<boolean>;
|
|
11
|
+
export declare function update(pkg: PackageInfo, directory: string, channel: string, run?: Runner): Promise<{
|
|
12
|
+
updated: boolean;
|
|
13
|
+
current: string;
|
|
14
|
+
target: string;
|
|
15
|
+
available: boolean;
|
|
16
|
+
}>;
|
|
17
|
+
interface StartupOptions {
|
|
18
|
+
directory?: string;
|
|
19
|
+
run?: Runner;
|
|
20
|
+
cacheDir: string;
|
|
21
|
+
autoUpdate?: boolean;
|
|
22
|
+
now?: () => number;
|
|
23
|
+
write?: (message: string) => unknown;
|
|
24
|
+
}
|
|
25
|
+
export declare function startupUpdate(pkg: PackageInfo, { directory, run, cacheDir, autoUpdate, now, write, }: StartupOptions): Promise<boolean>;
|
|
26
|
+
export {};
|
package/dist/update.js
ADDED
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { lstat, realpath, readFile, mkdir, writeFile, access, rm, } from 'node:fs/promises';
|
|
3
|
+
import { join, dirname, delimiter } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { promisify } from 'node:util';
|
|
6
|
+
import semver from 'semver';
|
|
7
|
+
const exec = promisify(execFile);
|
|
8
|
+
export async function npm(args) {
|
|
9
|
+
if (process.platform === 'win32') {
|
|
10
|
+
// Execute npm's JS entry point directly, without a shell or npm.cmd quoting.
|
|
11
|
+
const candidates = [
|
|
12
|
+
process.env.npm_execpath,
|
|
13
|
+
...[
|
|
14
|
+
dirname(process.execPath),
|
|
15
|
+
...(process.env.PATH ?? '').split(delimiter),
|
|
16
|
+
].map((path) => join(path, 'node_modules', 'npm', 'bin', 'npm-cli.js')),
|
|
17
|
+
];
|
|
18
|
+
for (const path of candidates) {
|
|
19
|
+
if (!path?.endsWith('npm-cli.js'))
|
|
20
|
+
continue;
|
|
21
|
+
try {
|
|
22
|
+
await access(path);
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
return (await exec(process.execPath, [path, ...args], { timeout: 120000 })).stdout;
|
|
28
|
+
}
|
|
29
|
+
throw new Error('Cannot find npm. Install Node.js with npm, then run npm install -g @hyper3d/cli@latest.');
|
|
30
|
+
}
|
|
31
|
+
return (await exec('npm', args, { timeout: 120000 })).stdout;
|
|
32
|
+
}
|
|
33
|
+
export function updateChannel(pkg) {
|
|
34
|
+
return String(semver.prerelease(pkg.version)?.[0] ?? 'latest');
|
|
35
|
+
}
|
|
36
|
+
function validateChannel(channel) {
|
|
37
|
+
if (!['latest', 'next', 'beta'].includes(channel))
|
|
38
|
+
throw new Error('Channel must be latest, next or beta');
|
|
39
|
+
}
|
|
40
|
+
export async function checkUpdate(pkg, channel, run = npm) {
|
|
41
|
+
validateChannel(channel);
|
|
42
|
+
const target = JSON.parse(await run([
|
|
43
|
+
'view',
|
|
44
|
+
`${pkg.name}@${channel}`,
|
|
45
|
+
'version',
|
|
46
|
+
'--json',
|
|
47
|
+
'--fetch-retries=0',
|
|
48
|
+
'--fetch-timeout=5000',
|
|
49
|
+
]));
|
|
50
|
+
if (typeof target !== 'string' || !semver.valid(target))
|
|
51
|
+
throw new Error('npm returned an invalid version');
|
|
52
|
+
return {
|
|
53
|
+
current: pkg.version,
|
|
54
|
+
target,
|
|
55
|
+
available: semver.gt(target, pkg.version),
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export async function isGlobalInstall(pkg, directory, run = npm) {
|
|
59
|
+
const root = (await run(['root', '-g'])).trim();
|
|
60
|
+
try {
|
|
61
|
+
if ((await lstat(join(root, pkg.name))).isSymbolicLink())
|
|
62
|
+
return false;
|
|
63
|
+
return ((await realpath(join(root, pkg.name))) === (await realpath(directory)));
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function installVersion(name, version, run) {
|
|
70
|
+
await run([
|
|
71
|
+
'install',
|
|
72
|
+
'--global',
|
|
73
|
+
`${name}@${version}`,
|
|
74
|
+
'--no-fund',
|
|
75
|
+
'--no-audit',
|
|
76
|
+
]);
|
|
77
|
+
}
|
|
78
|
+
export async function update(pkg, directory, channel, run = npm) {
|
|
79
|
+
validateChannel(channel);
|
|
80
|
+
if (pkg.private)
|
|
81
|
+
throw new Error('This development package is private; npm publishing is not configured yet.');
|
|
82
|
+
if (!(await isGlobalInstall(pkg, directory, run)))
|
|
83
|
+
throw new Error(`Not a global npm installation. Use your package manager to update ${pkg.name}@${channel}; for one-off use run npx ${pkg.name}@${channel}.`);
|
|
84
|
+
const result = await checkUpdate(pkg, channel, run);
|
|
85
|
+
if (result.available)
|
|
86
|
+
await installVersion(pkg.name, result.target, run);
|
|
87
|
+
return { ...result, updated: result.available };
|
|
88
|
+
}
|
|
89
|
+
export async function startupUpdate(pkg, { directory = fileURLToPath(new URL('..', import.meta.url)), run = npm, cacheDir, autoUpdate = false, now = Date.now, write = (message) => process.stderr.write(message), }) {
|
|
90
|
+
if (pkg.private)
|
|
91
|
+
return false;
|
|
92
|
+
const channel = updateChannel(pkg);
|
|
93
|
+
const cachePath = join(cacheDir, 'update-check.json');
|
|
94
|
+
const lockPath = join(cacheDir, 'update.lock');
|
|
95
|
+
let locked = false;
|
|
96
|
+
try {
|
|
97
|
+
// Never change workspace, npx, pnpm or Yarn installations with npm.
|
|
98
|
+
if (!(await isGlobalInstall(pkg, directory, run)))
|
|
99
|
+
return false;
|
|
100
|
+
await mkdir(cacheDir, { recursive: true, mode: 0o700 });
|
|
101
|
+
try {
|
|
102
|
+
await mkdir(lockPath, { mode: 0o700 });
|
|
103
|
+
locked = true;
|
|
104
|
+
}
|
|
105
|
+
catch (error) {
|
|
106
|
+
if (error.code === 'EEXIST')
|
|
107
|
+
return false;
|
|
108
|
+
throw error;
|
|
109
|
+
}
|
|
110
|
+
let cached = {};
|
|
111
|
+
try {
|
|
112
|
+
cached = JSON.parse(await readFile(cachePath, 'utf8'));
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
/* first run */
|
|
116
|
+
}
|
|
117
|
+
const checkedAt = now();
|
|
118
|
+
if (cached?.name === pkg.name &&
|
|
119
|
+
cached?.version === pkg.version &&
|
|
120
|
+
cached?.channel === channel &&
|
|
121
|
+
typeof cached.checkedAt === 'number' &&
|
|
122
|
+
checkedAt - cached.checkedAt >= 0 &&
|
|
123
|
+
checkedAt - cached.checkedAt < 86400000)
|
|
124
|
+
return false;
|
|
125
|
+
// Cache failures too: offline operation must not repeatedly wait on the registry.
|
|
126
|
+
await writeFile(cachePath, JSON.stringify({
|
|
127
|
+
name: pkg.name,
|
|
128
|
+
version: pkg.version,
|
|
129
|
+
channel,
|
|
130
|
+
checkedAt,
|
|
131
|
+
}), { mode: 0o600 });
|
|
132
|
+
const result = await checkUpdate(pkg, channel, run);
|
|
133
|
+
if (!result.available)
|
|
134
|
+
return false;
|
|
135
|
+
if (autoUpdate) {
|
|
136
|
+
await installVersion(pkg.name, result.target, run);
|
|
137
|
+
write(`Updated to ${result.target}. Run your command again; it has not been executed.\n`);
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
write(`Update available: ${result.target}. Run hyper3d update.\n`);
|
|
141
|
+
}
|
|
142
|
+
catch {
|
|
143
|
+
write('warning: Automatic update check/install failed. Use hyper3d update to inspect.\n');
|
|
144
|
+
}
|
|
145
|
+
finally {
|
|
146
|
+
if (locked)
|
|
147
|
+
await rm(lockPath, { recursive: true, force: true }).catch(() => { });
|
|
148
|
+
}
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../src/update.ts"],"names":[],"mappings":"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"}
|
package/dist/utils.d.ts
ADDED
package/dist/utils.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { homedir } from 'node:os';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
export function getConfigDir() {
|
|
4
|
+
return process.env.HYPER3D_CONFIG_DIR ?? join(homedir(), '.hyper3d');
|
|
5
|
+
}
|
|
6
|
+
export function omitUndefined(value) {
|
|
7
|
+
return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,UAAU,YAAY;IAC1B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,UAAU,CAAC,CAAC;AACvE,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,KAA8B;IAC1D,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC,CACjE,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,16 +1,36 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyper3d/cli",
|
|
3
|
-
"version": "0.0.1",
|
|
4
|
-
"description": "
|
|
3
|
+
"version": "0.1.0-beta.2.1",
|
|
4
|
+
"description": "Hyper3D CLI backed by MCP",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/DeemosTech/hyper3d-cli.git",
|
|
8
8
|
"directory": "packages/cli"
|
|
9
9
|
},
|
|
10
|
-
"
|
|
10
|
+
"type": "module",
|
|
11
|
+
"bin": {
|
|
12
|
+
"hyper3d": "dist/index.js"
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist",
|
|
16
|
+
"README.md"
|
|
17
|
+
],
|
|
18
|
+
"engines": {
|
|
19
|
+
"node": ">=22"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
23
|
+
"ajv": "^8.17.1",
|
|
24
|
+
"ajv-formats": "^3.0.1",
|
|
25
|
+
"commander": "^14.0.0",
|
|
26
|
+
"semver": "^7.7.0",
|
|
27
|
+
"zod": "^4.6.5"
|
|
28
|
+
},
|
|
11
29
|
"publishConfig": {
|
|
12
30
|
"access": "public",
|
|
13
|
-
"registry": "https://registry.npmjs.org/"
|
|
14
|
-
|
|
31
|
+
"registry": "https://registry.npmjs.org/"
|
|
32
|
+
},
|
|
33
|
+
"scripts": {
|
|
34
|
+
"prepack": "npm run build --prefix ../.."
|
|
15
35
|
}
|
|
16
36
|
}
|