@lobehub/market-cli 0.0.3 → 0.0.5
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/dist/cli.js +13 -13
- package/package.json +3 -7
- package/dist/cli.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
3
|
// src/cli.ts
|
|
4
|
-
import { createRequire } from "module";
|
|
5
4
|
import { Command } from "commander";
|
|
6
5
|
|
|
7
6
|
// src/commands/auth.ts
|
|
@@ -156,13 +155,6 @@ import { MarketSDK as MarketSDK2 } from "@lobehub/market-sdk";
|
|
|
156
155
|
// src/utils/deviceId.ts
|
|
157
156
|
import { createHash } from "crypto";
|
|
158
157
|
import { hostname, networkInterfaces } from "os";
|
|
159
|
-
function generateDeviceId() {
|
|
160
|
-
const host = hostname();
|
|
161
|
-
const mac = getPrimaryMacAddress();
|
|
162
|
-
const input = mac ? `${host}:${mac}` : host;
|
|
163
|
-
const hash = createHash("sha256").update(input).digest("hex").slice(0, 16);
|
|
164
|
-
return `device-${hash}`;
|
|
165
|
-
}
|
|
166
158
|
function getPrimaryMacAddress() {
|
|
167
159
|
const interfaces = networkInterfaces();
|
|
168
160
|
for (const name of Object.keys(interfaces).sort()) {
|
|
@@ -176,6 +168,13 @@ function getPrimaryMacAddress() {
|
|
|
176
168
|
}
|
|
177
169
|
return void 0;
|
|
178
170
|
}
|
|
171
|
+
function generateDeviceId() {
|
|
172
|
+
const host = hostname();
|
|
173
|
+
const mac = getPrimaryMacAddress();
|
|
174
|
+
const input = mac ? `${host}:${mac}` : host;
|
|
175
|
+
const hash = createHash("sha256").update(input).digest("hex").slice(0, 16);
|
|
176
|
+
return `device-${hash}`;
|
|
177
|
+
}
|
|
179
178
|
|
|
180
179
|
// src/commands/register.ts
|
|
181
180
|
function registerRegisterCommand(program2) {
|
|
@@ -194,8 +193,12 @@ function registerRegisterCommand(program2) {
|
|
|
194
193
|
clientType: "cli",
|
|
195
194
|
description: description || void 0,
|
|
196
195
|
deviceId,
|
|
196
|
+
metadata: {
|
|
197
|
+
nodeVersion: process.version
|
|
198
|
+
},
|
|
197
199
|
platform: process.arch,
|
|
198
|
-
|
|
200
|
+
source,
|
|
201
|
+
version: "0.0.5"
|
|
199
202
|
});
|
|
200
203
|
await saveCredentials({
|
|
201
204
|
baseUrl: baseURL,
|
|
@@ -219,11 +222,8 @@ function registerRegisterCommand(program2) {
|
|
|
219
222
|
}
|
|
220
223
|
|
|
221
224
|
// src/cli.ts
|
|
222
|
-
var require2 = createRequire(import.meta.url);
|
|
223
|
-
var pkg = require2("../package.json");
|
|
224
225
|
var program = new Command();
|
|
225
|
-
program.name("lobehub-market").description("LobeHub Market CLI - Device registration and auth management").version(
|
|
226
|
+
program.name("lobehub-market").description("LobeHub Market CLI - Device registration and auth management").version("0.0.5");
|
|
226
227
|
registerRegisterCommand(program);
|
|
227
228
|
registerAuthCommand(program);
|
|
228
229
|
program.parse();
|
|
229
|
-
//# sourceMappingURL=cli.js.map
|
package/package.json
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/market-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "LobeHub Market CLI - Device registration and auth management",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"lobehub",
|
|
7
7
|
"market",
|
|
8
8
|
"cli"
|
|
9
9
|
],
|
|
10
|
-
"homepage": "https://
|
|
10
|
+
"homepage": "https://lobehub.com",
|
|
11
11
|
"bugs": {
|
|
12
|
-
"url": "https://github.com/lobehub/lobehub
|
|
13
|
-
},
|
|
14
|
-
"repository": {
|
|
15
|
-
"type": "git",
|
|
16
|
-
"url": "https://github.com/lobehub/lobehub-market.git"
|
|
12
|
+
"url": "https://github.com/lobehub/lobehub/issues/new/choose"
|
|
17
13
|
},
|
|
18
14
|
"license": "MIT",
|
|
19
15
|
"author": "LobeHub <i@lobehub.com>",
|
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/cli.ts","../src/commands/auth.ts","../src/utils/config.ts","../src/utils/credentials.ts","../src/utils/output.ts","../src/commands/register.ts","../src/utils/deviceId.ts"],"sourcesContent":["import { createRequire } from 'node:module';\n\nimport { Command } from 'commander';\n\nimport { registerAuthCommand } from './commands/auth';\nimport { registerRegisterCommand } from './commands/register';\n\nconst require = createRequire(import.meta.url);\nconst pkg = require('../package.json');\n\nconst program = new Command();\n\nprogram\n .name('lobehub-market')\n .description('LobeHub Market CLI - Device registration and auth management')\n .version(pkg.version);\n\nregisterRegisterCommand(program);\nregisterAuthCommand(program);\n\nprogram.parse();\n","import type { Command } from 'commander';\nimport { MarketSDK } from '@lobehub/market-sdk';\n\nimport { resolveConfig } from '../utils/config';\nimport { deleteCredentials } from '../utils/credentials';\nimport { formatOutput } from '../utils/output';\n\nexport function registerAuthCommand(program: Command): void {\n const auth = program\n .command('auth')\n .description('Manage authentication credentials and tokens');\n\n auth\n .command('status')\n .description('Show credential and token status')\n .option('--output <format>', 'Output format (text|json)', 'text')\n .action(async (options) => {\n try {\n const config = resolveConfig();\n\n if (!config.clientId || !config.clientSecret) {\n console.error(\n 'No credentials found. Run `lobehub-market register` first or set MARKET_CLIENT_ID and MARKET_CLIENT_SECRET.',\n );\n process.exit(1);\n }\n\n const sdk = new MarketSDK({\n baseURL: config.baseUrl,\n clientId: config.clientId,\n clientSecret: config.clientSecret,\n });\n\n const tokenInfo = await sdk.fetchM2MToken();\n\n formatOutput(options.output, {\n baseUrl: config.baseUrl,\n clientId: config.clientId,\n expiresIn: `${tokenInfo.expiresIn}s`,\n source: config.source,\n status: 'authenticated',\n tokenPreview: `${tokenInfo.accessToken.slice(0, 12)}...`,\n });\n } catch (error: any) {\n console.error(`Auth status check failed: ${error.message}`);\n process.exit(1);\n }\n });\n\n auth\n .command('refresh')\n .description('Force refresh the M2M access token')\n .option('--output <format>', 'Output format (text|json)', 'text')\n .action(async (options) => {\n try {\n const config = resolveConfig();\n\n if (!config.clientId || !config.clientSecret) {\n console.error(\n 'No credentials found. Run `lobehub-market register` first or set MARKET_CLIENT_ID and MARKET_CLIENT_SECRET.',\n );\n process.exit(1);\n }\n\n const sdk = new MarketSDK({\n baseURL: config.baseUrl,\n clientId: config.clientId,\n clientSecret: config.clientSecret,\n });\n\n const tokenInfo = await sdk.fetchM2MToken();\n\n formatOutput(options.output, {\n accessToken: tokenInfo.accessToken,\n expiresIn: tokenInfo.expiresIn,\n message: 'Token refreshed successfully',\n });\n } catch (error: any) {\n console.error(`Token refresh failed: ${error.message}`);\n process.exit(1);\n }\n });\n\n auth\n .command('logout')\n .description('Clear local credentials')\n .action(async () => {\n try {\n const deleted = await deleteCredentials();\n if (deleted) {\n console.log('Credentials cleared successfully.');\n } else {\n console.log('No credentials file found.');\n }\n } catch (error: any) {\n console.error(`Logout failed: ${error.message}`);\n process.exit(1);\n }\n });\n}\n","import { existsSync, readFileSync } from 'node:fs';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\n\nexport interface ResolvedConfig {\n baseUrl: string;\n clientId: string | undefined;\n clientSecret: string | undefined;\n source: 'env' | 'file' | 'mixed' | 'none';\n}\n\nexport function resolveConfig(): ResolvedConfig {\n const envClientId = process.env.MARKET_CLIENT_ID;\n const envClientSecret = process.env.MARKET_CLIENT_SECRET;\n const envBaseUrl = process.env.MARKET_BASE_URL;\n\n let fileCredentials: { baseUrl?: string; clientId?: string; clientSecret?: string } | null = null;\n\n try {\n const filePath = join(homedir(), '.lobehub-market', 'credentials.json');\n if (existsSync(filePath)) {\n const content = readFileSync(filePath, 'utf-8');\n fileCredentials = JSON.parse(content);\n }\n } catch {\n // Ignore file read errors\n }\n\n const clientId = envClientId || fileCredentials?.clientId;\n const clientSecret = envClientSecret || fileCredentials?.clientSecret;\n const baseUrl = envBaseUrl || fileCredentials?.baseUrl || 'https://market.lobehub.com';\n\n let source: ResolvedConfig['source'] = 'none';\n if (clientId && clientSecret) {\n const idFromEnv = !!envClientId;\n const secretFromEnv = !!envClientSecret;\n\n if (idFromEnv && secretFromEnv) {\n source = 'env';\n } else if (!idFromEnv && !secretFromEnv) {\n source = 'file';\n } else {\n source = 'mixed';\n }\n }\n\n return { baseUrl, clientId, clientSecret, source };\n}\n","import { existsSync } from 'node:fs';\nimport { mkdir, readFile, rm, writeFile } from 'node:fs/promises';\nimport { homedir } from 'node:os';\nimport { join } from 'node:path';\n\nexport interface StoredCredentials {\n baseUrl: string;\n clientId: string;\n clientSecret: string;\n deviceId: string;\n name: string;\n registeredAt: string;\n source?: string;\n}\n\nconst CREDENTIALS_DIR = join(homedir(), '.lobehub-market');\nconst CREDENTIALS_FILE = join(CREDENTIALS_DIR, 'credentials.json');\n\nexport async function saveCredentials(credentials: StoredCredentials): Promise<void> {\n if (!existsSync(CREDENTIALS_DIR)) {\n await mkdir(CREDENTIALS_DIR, { mode: 0o700, recursive: true });\n }\n\n const content = JSON.stringify(credentials, null, 2);\n await writeFile(CREDENTIALS_FILE, content, { encoding: 'utf-8', mode: 0o600 });\n}\n\nexport async function loadCredentials(): Promise<StoredCredentials | null> {\n if (!existsSync(CREDENTIALS_FILE)) {\n return null;\n }\n\n const content = await readFile(CREDENTIALS_FILE, 'utf-8');\n return JSON.parse(content) as StoredCredentials;\n}\n\nexport async function deleteCredentials(): Promise<boolean> {\n if (!existsSync(CREDENTIALS_FILE)) {\n return false;\n }\n\n await rm(CREDENTIALS_FILE);\n return true;\n}\n\nexport function getCredentialsPath(): string {\n return CREDENTIALS_FILE;\n}\n","export function formatOutput(format: string, data: Record<string, unknown>): void {\n if (format === 'json') {\n console.log(JSON.stringify(data, null, 2));\n return;\n }\n\n for (const [key, value] of Object.entries(data)) {\n const label = key\n .replaceAll(/([A-Z])/g, ' $1')\n .replace(/^./, (s) => s.toUpperCase())\n .trim();\n console.log(` ${label}: ${value}`);\n }\n}\n","import { MarketSDK } from '@lobehub/market-sdk';\nimport type { Command } from 'commander';\n\nimport { getCredentialsPath, saveCredentials } from '../utils/credentials';\nimport { generateDeviceId } from '../utils/deviceId';\nimport { formatOutput } from '../utils/output';\n\nexport function registerRegisterCommand(program: Command): void {\n program\n .command('register')\n .description('Register this device as an M2M client and save credentials locally')\n .requiredOption('--name <name>', 'Client name for registration')\n .option('--description <desc>', 'Description of the client')\n .option(\n '--source <source>',\n 'Agent source, lowercase with hyphens (e.g. claude-code, open-claw, codex, cursor)',\n )\n .option('--device-id <id>', 'Device identifier (auto-generated if omitted)')\n .option('--base-url <url>', 'Market API base URL', 'https://market.lobehub.com')\n .option('--output <format>', 'Output format (text|json)', 'text')\n .action(async (options) => {\n try {\n const deviceId = options.deviceId || generateDeviceId();\n const baseURL = process.env.MARKET_BASE_URL || options.baseUrl;\n const source = options.source;\n\n const description = [options.description, source && `source: ${source}`]\n .filter(Boolean)\n .join('. ');\n\n const sdk = new MarketSDK({ baseURL });\n\n const result = await sdk.auth.registerClient({\n clientName: options.name,\n clientType: 'cli',\n description: description || undefined,\n deviceId,\n platform: process.arch,\n version: process.version,\n });\n\n await saveCredentials({\n baseUrl: baseURL,\n clientId: result.client_id,\n clientSecret: result.client_secret,\n deviceId,\n name: options.name,\n registeredAt: new Date().toISOString(),\n source,\n });\n\n formatOutput(options.output, {\n clientId: result.client_id,\n credentialsPath: getCredentialsPath(),\n message: result.message || 'Client registered successfully',\n });\n } catch (error: any) {\n console.error(`Registration failed: ${error.message}`);\n process.exit(1);\n }\n });\n}\n","import { createHash } from 'node:crypto';\nimport { hostname, networkInterfaces } from 'node:os';\n\nexport function generateDeviceId(): string {\n const host = hostname();\n const mac = getPrimaryMacAddress();\n\n const input = mac ? `${host}:${mac}` : host;\n const hash = createHash('sha256').update(input).digest('hex').slice(0, 16);\n\n return `device-${hash}`;\n}\n\nfunction getPrimaryMacAddress(): string | undefined {\n const interfaces = networkInterfaces();\n\n for (const name of Object.keys(interfaces).sort()) {\n const entries = interfaces[name];\n if (!entries) continue;\n\n for (const entry of entries) {\n if (entry.internal) continue;\n if (entry.mac === '00:00:00:00:00:00') continue;\n\n return entry.mac;\n }\n }\n\n return undefined;\n}\n"],"mappings":"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","names":["existsSync","homedir","join","existsSync","program","MarketSDK","program","MarketSDK","require"]}
|