@amaster.ai/runtime-cli 1.0.0-beta.72
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/LICENSE +21 -0
- package/README.md +274 -0
- package/dist/cli.cjs +1028 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.cts +7 -0
- package/dist/cli.d.ts +7 -0
- package/dist/cli.js +1018 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.cjs +1045 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +77 -0
- package/dist/index.d.ts +77 -0
- package/dist/index.js +1020 -0
- package/dist/index.js.map +1 -0
- package/dist/scripts/preuninstall.cjs +69 -0
- package/dist/scripts/preuninstall.cjs.map +1 -0
- package/dist/scripts/preuninstall.d.cts +2 -0
- package/dist/scripts/preuninstall.d.ts +2 -0
- package/dist/scripts/preuninstall.js +67 -0
- package/dist/scripts/preuninstall.js.map +1 -0
- package/dist/skill/SKILL.md +286 -0
- package/package.json +67 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/index.ts","../src/cli.ts","../src/commands/auth.ts","../src/commands/entity.ts","../src/commands/bpm.ts","../src/commands/workflow.ts","../src/commands/s3.ts","../src/commands/openclaw.ts"],"names":["ora","chalk","getAccessToken","existsSync","join","homedir","readFileSync","writeFileSync","rmSync","createClient"],"mappings":"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","file":"index.js","sourcesContent":["import { existsSync, readFileSync, writeFileSync, rmSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\n\nconst AMASTER_CONFIG_DIR = join(homedir(), \".amaster\");\nconst CONFIG_FILE = join(AMASTER_CONFIG_DIR, \"config.json\");\n\nexport interface AppConfig {\n baseURL: string;\n ossEndpoint?: string;\n initializedAt: string;\n}\n\nexport interface AuthSession {\n accessToken: string;\n refreshToken?: string;\n expiresAt?: string;\n user?: {\n uid: string;\n email: string;\n name?: string;\n };\n loggedInAt: string;\n}\n\nexport interface RuntimeConfig {\n apps: Record<string, AppConfig>;\n currentApp?: string;\n}\n\nexport function getConfig(): RuntimeConfig {\n if (!existsSync(CONFIG_FILE)) {\n return { apps: {} };\n }\n try {\n return JSON.parse(readFileSync(CONFIG_FILE, \"utf-8\")) as RuntimeConfig;\n } catch {\n return { apps: {} };\n }\n}\n\nexport function saveConfig(config: RuntimeConfig): void {\n if (!existsSync(AMASTER_CONFIG_DIR)) {\n const fs = require(\"fs\");\n fs.mkdirSync(AMASTER_CONFIG_DIR, { recursive: true });\n }\n writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));\n}\n\nexport function getAppConfig(appCode: string): AppConfig | null {\n const config = getConfig();\n return config.apps[appCode] || null;\n}\n\nexport function addApp(appCode: string, appConfig: AppConfig): void {\n const config = getConfig();\n config.apps[appCode] = appConfig;\n if (!config.currentApp) {\n config.currentApp = appCode;\n }\n saveConfig(config);\n}\n\nexport function removeApp(appCode: string): void {\n const config = getConfig();\n if (config.apps[appCode]) {\n delete config.apps[appCode];\n // Remove auth file\n const authFile = join(AMASTER_CONFIG_DIR, `auth-${appCode}.json`);\n if (existsSync(authFile)) {\n rmSync(authFile, { force: true });\n }\n // Update current app if needed\n if (config.currentApp === appCode) {\n const remainingApps = Object.keys(config.apps);\n config.currentApp = remainingApps.length > 0 ? remainingApps[0] : undefined;\n }\n saveConfig(config);\n }\n}\n\nexport function setCurrentApp(appCode: string): boolean {\n const config = getConfig();\n if (!config.apps[appCode]) {\n return false;\n }\n config.currentApp = appCode;\n saveConfig(config);\n return true;\n}\n\nexport function getCurrentApp(): string | null {\n const config = getConfig();\n return config.currentApp || null;\n}\n\nexport function listApps(): string[] {\n const config = getConfig();\n return Object.keys(config.apps);\n}\n\nexport function getBaseURL(appCode?: string): string | null {\n const code = appCode || getCurrentApp();\n if (!code) return null;\n const appConfig = getAppConfig(code);\n return appConfig?.baseURL || null;\n}\n\nexport function getAuthSession(appCode: string): AuthSession | null {\n const authFile = join(AMASTER_CONFIG_DIR, `auth-${appCode}.json`);\n if (!existsSync(authFile)) {\n return null;\n }\n try {\n const content = readFileSync(authFile, \"utf-8\");\n return JSON.parse(content) as AuthSession;\n } catch {\n return null;\n }\n}\n\nexport function saveAuthSession(appCode: string, session: AuthSession): void {\n if (!existsSync(AMASTER_CONFIG_DIR)) {\n const fs = require(\"fs\");\n fs.mkdirSync(AMASTER_CONFIG_DIR, { recursive: true });\n }\n const authFile = join(AMASTER_CONFIG_DIR, `auth-${appCode}.json`);\n writeFileSync(authFile, JSON.stringify(session, null, 2), { mode: 0o600 });\n}\n\nexport function clearAuthSession(appCode: string): void {\n const authFile = join(AMASTER_CONFIG_DIR, `auth-${appCode}.json`);\n if (existsSync(authFile)) {\n rmSync(authFile, { force: true });\n }\n}\n\nexport function isAuthenticated(appCode: string): boolean {\n const session = getAuthSession(appCode);\n if (!session) return false;\n \n if (session.expiresAt) {\n const expiresAt = new Date(session.expiresAt);\n if (expiresAt < new Date()) {\n return false;\n }\n }\n \n return true;\n}\n\nexport function getAccessToken(appCode: string): string | null {\n const session = getAuthSession(appCode);\n return session?.accessToken || null;\n}\n\nexport function shouldRefreshToken(appCode: string): boolean {\n const session = getAuthSession(appCode);\n if (!session?.expiresAt) return false;\n \n const expiresAt = new Date(session.expiresAt);\n const now = new Date();\n const fiveMinutes = 5 * 60 * 1000;\n \n return expiresAt.getTime() - now.getTime() < fiveMinutes;\n}\n","export * from \"./types.js\";\nexport * from \"./config.js\";\nexport { createAmasterClient, resolveAppCode } from \"./cli.js\";\n","#!/usr/bin/env node\nimport { Command } from \"commander\";\nimport chalk from \"chalk\";\nimport { createClient, type AmasterClient } from \"@amaster.ai/client\";\nimport { \n getAccessToken, \n getAppConfig,\n shouldRefreshToken,\n isAuthenticated,\n listApps,\n setCurrentApp,\n getCurrentApp\n} from \"./config.js\";\nimport * as auth from \"./commands/auth.js\";\nimport * as entity from \"./commands/entity.js\";\nimport * as bpm from \"./commands/bpm.js\";\nimport * as workflow from \"./commands/workflow.js\";\nimport * as s3 from \"./commands/s3.js\";\nimport * as openclaw from \"./commands/openclaw.js\";\n\nexport function resolveAppCode(optionsApp: string | undefined): string {\n if (optionsApp) {\n return optionsApp;\n }\n \n const defaultApp = getCurrentApp();\n if (defaultApp) {\n return defaultApp;\n }\n \n console.error(chalk.red(\"❌ No app specified.\"));\n console.log(chalk.yellow(\"Use one of:\"));\n console.log(chalk.gray(\" 1. Add --app <app-code> to the command\"));\n console.log(chalk.gray(\" 2. Set a default app: amaster use <app-code>\"));\n process.exit(1);\n}\n\nexport function createAmasterClient(appCode: string): AmasterClient {\n const appConfig = getAppConfig(appCode);\n \n if (!appConfig) {\n console.error(chalk.red(`❌ App not configured: ${appCode}`));\n console.log(chalk.yellow(`Initialize it first: amaster init --app-code ${appCode} --url <url>`));\n process.exit(1);\n }\n\n const token = getAccessToken(appCode);\n\n if (!token) {\n console.error(chalk.red(`❌ Not authenticated for app: ${appCode}`));\n console.log(chalk.yellow(`Login first: amaster login --app ${appCode}`));\n process.exit(1);\n }\n\n if (shouldRefreshToken(appCode)) {\n console.log(chalk.yellow(\"⚠️ Session expiring soon. Please login again.\"));\n }\n\n return createClient({\n baseURL: appConfig.baseURL,\n headers: { \n Authorization: `Bearer ${token}`,\n },\n onUnauthorized: () => {\n console.error(chalk.red(\"\\n❌ Session expired. Please login again.\"));\n console.log(chalk.yellow(`Run: amaster login --app ${appCode}`));\n process.exit(1);\n },\n });\n}\n\nconst program = new Command();\n\nprogram\n .name(\"amaster\")\n .description(\"CLI for Amaster SDK - Multi-app support for OpenClaw\")\n .version(\"1.0.0\");\n\nprogram\n .command(\"apps\")\n .description(\"List all configured apps\")\n .action(() => {\n const apps = listApps();\n const current = getCurrentApp();\n \n console.log(chalk.blue(\"\\n📱 Configured Apps\\n\"));\n \n if (apps.length === 0) {\n console.log(chalk.gray(\" No apps configured\"));\n console.log(chalk.gray(\" Run: amaster init --app-code <code> --url <url>\"));\n } else {\n for (const appCode of apps) {\n const config = getAppConfig(appCode);\n const isAuth = isAuthenticated(appCode);\n const isCurrent = appCode === current;\n \n let prefix = isCurrent ? chalk.green(\"→ \") : \" \";\n console.log(`${prefix}${chalk.bold(appCode)}${isCurrent ? chalk.green(\" (current)\") : \"\"}`);\n console.log(` ${chalk.gray(config?.baseURL || \"No URL\")}`);\n console.log(` ${isAuth ? chalk.green(\"● Authenticated\") : chalk.yellow(\"○ Not authenticated\")}`);\n console.log();\n }\n }\n console.log();\n });\n\nprogram\n .command(\"use <app-code>\")\n .description(\"Set the default app for subsequent commands\")\n .action((appCode: string) => {\n if (setCurrentApp(appCode)) {\n console.log(chalk.green(`✅ Now using app: ${appCode}`));\n } else {\n console.error(chalk.red(`❌ App not found: ${appCode}`));\n process.exit(1);\n }\n });\n\nprogram\n .command(\"init\")\n .description(\"Initialize an app for OpenClaw integration\")\n .requiredOption(\"--app-code <code>\", \"Application code (e.g., fhv94bto1)\")\n .requiredOption(\"--url <url>\", \"Base URL (e.g., https://fhv94bto1.helige.cn)\")\n .option(\"--api-key <key>\", \"API Key for OSS access\")\n .option(\"--oss-endpoint <endpoint>\", \"OSS endpoint\")\n .action(async (options) => {\n await openclaw.initOpenClaw({\n appCode: options.appCode,\n baseURL: options.url,\n apiKey: options.apiKey,\n ossEndpoint: options.ossEndpoint,\n });\n });\n\nprogram\n .command(\"login\")\n .description(\"Authenticate with an app\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-e, --email <email>\", \"Email address\")\n .option(\"-p, --password <password>\", \"Password\")\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await auth.login(appCode, { email: options.email, password: options.password });\n });\n\nprogram\n .command(\"logout\")\n .description(\"Logout from an app\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await auth.logout(appCode);\n });\n\nprogram\n .command(\"whoami\")\n .description(\"Show current user information\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await auth.getMe(() => createAmasterClient(appCode));\n });\n\nconst entityCmd = program\n .command(\"entity\")\n .description(\"Manage entities\");\n\nentityCmd\n .command(\"list <namespace> <entity>\")\n .description(\"List entities\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--page <page>\", \"Page number\", \"1\")\n .option(\"--page-size <size>\", \"Page size\", \"10\")\n .action(async (namespace: string, entityName: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.listEntities(createAmasterClient(appCode), {\n namespace,\n entity: entityName,\n page: parseInt(options.page),\n pageSize: parseInt(options.pageSize),\n });\n });\n\nentityCmd\n .command(\"get <namespace> <entity> <id>\")\n .description(\"Get entity by ID\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .action(async (namespace: string, entityName: string, id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.getEntity(createAmasterClient(appCode), { namespace, entity: entityName, id });\n });\n\nentityCmd\n .command(\"create <namespace> <entity>\")\n .description(\"Create new entity\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-d, --data <json>\", \"Entity data as JSON\")\n .action(async (namespace: string, entityName: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.createEntity(createAmasterClient(appCode), { \n namespace, \n entity: entityName, \n data: options.data \n });\n });\n\nentityCmd\n .command(\"update <namespace> <entity> <id>\")\n .description(\"Update entity\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-d, --data <json>\", \"Entity data as JSON\")\n .action(async (namespace: string, entityName: string, id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.updateEntity(createAmasterClient(appCode), { \n namespace, \n entity: entityName, \n id, \n data: options.data \n });\n });\n\nentityCmd\n .command(\"delete <namespace> <entity> <id>\")\n .description(\"Delete entity\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .action(async (namespace: string, entityName: string, id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.deleteEntity(createAmasterClient(appCode), { \n namespace, \n entity: entityName, \n id \n });\n });\n\nconst bpmCmd = program\n .command(\"bpm\")\n .description(\"Manage BPM processes and tasks\");\n\nbpmCmd\n .command(\"processes\")\n .description(\"List process definitions\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listProcesses(createAmasterClient(appCode));\n });\n\nbpmCmd\n .command(\"start <key>\")\n .description(\"Start a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-v, --variables <json>\", \"Process variables as JSON\")\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.startProcess(createAmasterClient(appCode), { \n key, \n variables: options.variables \n });\n });\n\nbpmCmd\n .command(\"tasks\")\n .description(\"List tasks\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-a, --assignee <assignee>\", \"Filter by assignee\")\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listTasks(createAmasterClient(appCode), { assignee: options.assignee });\n });\n\nbpmCmd\n .command(\"complete <id>\")\n .description(\"Complete a task\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-v, --variables <json>\", \"Task variables as JSON\")\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.completeTask(createAmasterClient(appCode), { \n id, \n variables: options.variables \n });\n });\n\nconst workflowCmd = program\n .command(\"workflow\")\n .description(\"Manage workflows\");\n\nworkflowCmd\n .command(\"list\")\n .description(\"List workflows\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await workflow.listWorkflows(createAmasterClient(appCode));\n });\n\nworkflowCmd\n .command(\"execute <id>\")\n .description(\"Execute a workflow\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-i, --input <json>\", \"Workflow input as JSON\")\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await workflow.executeWorkflow(createAmasterClient(appCode), {\n id,\n input: options.input,\n });\n });\n\nconst s3Cmd = program\n .command(\"s3\")\n .description(\"Manage S3 files\");\n\ns3Cmd\n .command(\"list\")\n .description(\"List files\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-b, --bucket <bucket>\", \"Bucket name\")\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await s3.listFiles(createAmasterClient(appCode), {\n bucket: options.bucket,\n });\n });\n\ns3Cmd\n .command(\"upload <file>\")\n .description(\"Upload a file\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-b, --bucket <bucket>\", \"Bucket name\")\n .option(\"-k, --key <key>\", \"Object key\")\n .action(async (file: string, options) => {\n const appCode = resolveAppCode(options.app);\n await s3.uploadFile(createAmasterClient(appCode), {\n file,\n bucket: options.bucket,\n key: options.key,\n });\n });\n\n// Only parse when run directly (not when imported for testing)\nconst isMainModule = import.meta.url === new URL(process.argv[1] || '', import.meta.url).href ||\n import.meta.url.endsWith(process.argv[1] || '') ||\n process.argv[1]?.includes('cli.js') ||\n false;\n\nif (isMainModule) {\n program.parse();\n}\n","import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { createClient } from \"@amaster.ai/client\";\nimport { \n getAppConfig, \n saveAuthSession, \n clearAuthSession,\n} from \"../config.js\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\n\nexport async function login(\n appCode: string, \n options: { email?: string; password?: string }\n) {\n const spinner = ora(`Logging in to ${appCode}...`).start();\n\n try {\n const appConfig = getAppConfig(appCode);\n if (!appConfig) {\n spinner.fail(`App not configured: ${appCode}`);\n console.error(chalk.red(`\\n❌ App not found: ${appCode}`));\n console.log(chalk.yellow(`Initialize it first: amaster init --app-code ${appCode} --url <url>`));\n process.exit(1);\n }\n\n let email = options.email;\n let password = options.password;\n\n if (!email || !password) {\n const { default: inquirer } = await import(\"inquirer\");\n const answers = await inquirer.prompt([\n {\n type: \"input\",\n name: \"email\",\n message: \"Email:\",\n when: !email,\n },\n {\n type: \"password\",\n name: \"password\",\n message: \"Password:\",\n when: !password,\n },\n ]);\n email = email || answers.email;\n password = password || answers.password;\n }\n\n const client = createClient({ baseURL: appConfig.baseURL });\n\n const result = await client.auth.login({ email: email!, password: password! });\n\n if (result.error) {\n spinner.fail(\"Login failed\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const loginData = result.data;\n if (!loginData?.accessToken) {\n spinner.fail(\"Login failed: No access token received\");\n process.exit(1);\n }\n\n saveAuthSession(appCode, {\n accessToken: loginData.accessToken,\n refreshToken: loginData.refreshToken,\n expiresAt: loginData.expiresAt,\n user: loginData.user,\n loggedInAt: new Date().toISOString(),\n });\n\n spinner.succeed(`Login successful: ${appCode}`);\n console.log(chalk.green(`\\nWelcome, ${loginData.user?.name || loginData.user?.email || email}!`));\n console.log(chalk.gray(`App: ${appCode}`));\n console.log(chalk.gray(`URL: ${appConfig.baseURL}`));\n \n if (loginData.expiresAt) {\n const expires = new Date(loginData.expiresAt);\n console.log(chalk.gray(`Session expires: ${expires.toLocaleString()}`));\n }\n } catch (error) {\n spinner.fail(\"Login failed\");\n throw error;\n }\n}\n\nexport async function logout(appCode: string) {\n const spinner = ora(`Logging out from ${appCode}...`).start();\n\n try {\n const appConfig = getAppConfig(appCode);\n if (appConfig) {\n const { getAccessToken } = await import(\"../config.js\");\n const token = getAccessToken(appCode);\n if (token) {\n const client = createClient({ \n baseURL: appConfig.baseURL,\n headers: { Authorization: `Bearer ${token}` }\n });\n await client.auth.logout().catch(() => {});\n }\n }\n \n clearAuthSession(appCode);\n spinner.succeed(`Logout successful: ${appCode}`);\n } catch (error) {\n spinner.fail(\"Logout failed\");\n throw error;\n }\n}\n\nexport async function getMe(getClient: () => AmasterClient) {\n const spinner = ora(\"Fetching user info...\").start();\n\n try {\n const client = getClient();\n \n const result = await client.auth.getMe();\n\n if (result.error) {\n spinner.fail(\"Failed to fetch user info\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"User info retrieved\");\n\n const user = result.data;\n console.log(chalk.blue(\"\\n👤 User Profile\\n\"));\n console.log(` ${chalk.bold(\"UID:\")} ${user?.uid}`);\n console.log(` ${chalk.bold(\"Email:\")} ${user?.email}`);\n console.log(` ${chalk.bold(\"Name:\")} ${user?.name || \"N/A\"}`);\n console.log(` ${chalk.bold(\"Status:\")} ${user?.status || \"N/A\"}`);\n } catch (error) {\n spinner.fail(\"Failed to fetch user info\");\n throw error;\n }\n}\n","import chalk from \"chalk\";\nimport ora from \"ora\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\n\nexport async function listEntities(\n client: AmasterClient,\n options: { namespace: string; entity: string; page?: number; pageSize?: number }\n) {\n const spinner = ora(`Fetching ${options.entity}...`).start();\n\n try {\n const result = await client.entity.list(options.namespace, options.entity, {\n page: options.page || 1,\n pageSize: options.pageSize || 10,\n });\n\n if (result.error) {\n spinner.fail(\"Failed to fetch entities\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.total || 0} ${options.entity}`);\n\n const items = result.data?.list || [];\n console.log(chalk.blue(`\\n📦 ${options.entity} in ${options.namespace}\\n`));\n\n for (const item of items.slice(0, 10)) {\n const id = item.id || item.uid || item._id;\n console.log(` ${chalk.green(\"•\")} ${chalk.bold(id)}`);\n const entries = Object.entries(item).slice(0, 5);\n for (const [key, value] of entries) {\n if (key !== \"id\" && key !== \"uid\" && key !== \"_id\") {\n const displayValue = typeof value === \"object\" ? JSON.stringify(value).slice(0, 50) : String(value).slice(0, 50);\n console.log(` ${chalk.gray(key + \":\")} ${displayValue}`);\n }\n }\n if (Object.keys(item).length > 6) {\n console.log(` ${chalk.gray(\"...\")}`);\n }\n console.log();\n }\n\n if (items.length > 10) {\n console.log(chalk.gray(` ... and ${items.length - 10} more`));\n }\n } catch (error) {\n spinner.fail(\"Failed to fetch entities\");\n throw error;\n }\n}\n\nexport async function getEntity(client: AmasterClient, options: { namespace: string; entity: string; id: string }) {\n const spinner = ora(`Fetching ${options.entity}...`).start();\n\n try {\n const result = await client.entity.get(options.namespace, options.entity, options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch entity\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Entity retrieved\");\n\n console.log(chalk.blue(`\\n📄 ${options.entity}\\n`));\n console.log(JSON.stringify(result.data, null, 2));\n } catch (error) {\n spinner.fail(\"Failed to fetch entity\");\n throw error;\n }\n}\n\nexport async function createEntity(\n client: AmasterClient,\n options: { namespace: string; entity: string; data?: string }\n) {\n const spinner = ora(`Creating ${options.entity}...`).start();\n\n try {\n let data: Record<string, unknown> = {};\n\n if (options.data) {\n data = JSON.parse(options.data);\n } else {\n const { default: inquirer } = await import(\"inquirer\");\n const { jsonData } = await inquirer.prompt([\n {\n type: \"editor\",\n name: \"jsonData\",\n message: \"Enter JSON data:\",\n default: \"{}\",\n },\n ]);\n data = JSON.parse(jsonData);\n }\n\n const result = await client.entity.create(options.namespace, options.entity, data);\n\n if (result.error) {\n spinner.fail(\"Failed to create entity\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Entity created\");\n console.log(chalk.green(\"\\nCreated entity:\"));\n console.log(JSON.stringify(result.data, null, 2));\n } catch (error) {\n spinner.fail(\"Failed to create entity\");\n throw error;\n }\n}\n\nexport async function updateEntity(\n client: AmasterClient,\n options: { namespace: string; entity: string; id: string; data?: string }\n) {\n const spinner = ora(`Updating ${options.entity}...`).start();\n\n try {\n let data: Record<string, unknown> = {};\n\n if (options.data) {\n data = JSON.parse(options.data);\n } else {\n const { default: inquirer } = await import(\"inquirer\");\n const { jsonData } = await inquirer.prompt([\n {\n type: \"editor\",\n name: \"jsonData\",\n message: \"Enter JSON data:\",\n default: \"{}\",\n },\n ]);\n data = JSON.parse(jsonData);\n }\n\n const result = await client.entity.update(options.namespace, options.entity, options.id, data);\n\n if (result.error) {\n spinner.fail(\"Failed to update entity\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Entity updated\");\n console.log(chalk.green(\"\\nUpdated entity:\"));\n console.log(JSON.stringify(result.data, null, 2));\n } catch (error) {\n spinner.fail(\"Failed to update entity\");\n throw error;\n }\n}\n\nexport async function deleteEntity(client: AmasterClient, options: { namespace: string; entity: string; id: string }) {\n const spinner = ora(`Deleting ${options.entity}...`).start();\n\n try {\n const result = await client.entity.delete(options.namespace, options.entity, options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to delete entity\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Entity deleted\");\n console.log(chalk.green(`\\nDeleted ${options.entity} with ID: ${options.id}`));\n } catch (error) {\n spinner.fail(\"Failed to delete entity\");\n throw error;\n }\n}\n\nexport async function listEntityTypes(client: AmasterClient, options: { namespace: string }) {\n const spinner = ora(\"Fetching entity types...\").start();\n\n try {\n const result = await client.entity.getEntityTypes(options.namespace);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch entity types\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.length || 0} entity types`);\n\n const types = result.data || [];\n console.log(chalk.blue(`\\n📋 Entity Types in ${options.namespace}\\n`));\n\n for (const type of types) {\n console.log(` ${chalk.green(\"•\")} ${chalk.bold(type.code)}`);\n console.log(` ${chalk.gray(\"Name:\")} ${type.name || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Description:\")} ${type.description || \"N/A\"}`);\n console.log();\n }\n } catch (error) {\n spinner.fail(\"Failed to fetch entity types\");\n throw error;\n }\n}\n","import chalk from \"chalk\";\nimport ora from \"ora\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\n\nexport async function listProcesses(client: AmasterClient) {\n const spinner = ora(\"Fetching process definitions...\").start();\n\n try {\n const result = await client.bpm.getProcessDefinitions();\n\n if (result.error) {\n spinner.fail(\"Failed to fetch processes\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.length || 0} process definitions`);\n\n const processes = result.data || [];\n console.log(chalk.blue(\"\\n📊 Process Definitions\\n\"));\n\n for (const proc of processes) {\n console.log(` ${chalk.green(\"•\")} ${chalk.bold(proc.key)}`);\n console.log(` ${chalk.gray(\"Name:\")} ${proc.name || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Version:\")} ${proc.version || \"N/A\"}`);\n console.log();\n }\n } catch (error) {\n spinner.fail(\"Failed to fetch processes\");\n throw error;\n }\n}\n\nexport async function startProcess(\n client: AmasterClient,\n options: { key: string; variables?: string }\n) {\n const spinner = ora(`Starting process: ${options.key}...`).start();\n\n try {\n const variables = options.variables ? JSON.parse(options.variables) : {};\n\n const result = await client.bpm.startProcess({\n processKey: options.key,\n variables,\n });\n\n if (result.error) {\n spinner.fail(\"Failed to start process\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process started\");\n console.log(chalk.green(\"\\nProcess Instance:\"));\n console.log(` ${chalk.bold(\"ID:\")} ${result.data?.id}`);\n console.log(` ${chalk.bold(\"Definition ID:\")} ${result.data?.definitionId}`);\n console.log(` ${chalk.bold(\"Business Key:\")} ${result.data?.businessKey || \"N/A\"}`);\n console.log(` ${chalk.bold(\"Status:\")} ${result.data?.suspended ? \"Suspended\" : \"Active\"}`);\n } catch (error) {\n spinner.fail(\"Failed to start process\");\n throw error;\n }\n}\n\nexport async function listTasks(client: AmasterClient, options: { assignee?: string }) {\n const spinner = ora(\"Fetching tasks...\").start();\n\n try {\n const params: { assignee?: string } = {};\n if (options.assignee) {\n params.assignee = options.assignee;\n }\n\n const result = await client.bpm.getMyTasks(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch tasks\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.length || 0} tasks`);\n\n const tasks = result.data || [];\n console.log(chalk.blue(\"\\n📝 Tasks\\n\"));\n\n for (const task of tasks) {\n console.log(` ${chalk.green(\"•\")} ${chalk.bold(task.name || task.id)}`);\n console.log(` ${chalk.gray(\"ID:\")} ${task.id}`);\n console.log(` ${chalk.gray(\"Assignee:\")} ${task.assignee || \"Unassigned\"}`);\n console.log(` ${chalk.gray(\"Created:\")} ${task.created || \"N/A\"}`);\n console.log();\n }\n } catch (error) {\n spinner.fail(\"Failed to fetch tasks\");\n throw error;\n }\n}\n\nexport async function completeTask(\n client: AmasterClient,\n options: { id: string; variables?: string }\n) {\n const spinner = ora(`Completing task: ${options.id}...`).start();\n\n try {\n const variables = options.variables ? JSON.parse(options.variables) : {};\n\n const result = await client.bpm.completeTask(options.id, { variables });\n\n if (result.error) {\n spinner.fail(\"Failed to complete task\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task completed\");\n } catch (error) {\n spinner.fail(\"Failed to complete task\");\n throw error;\n }\n}\n\nexport async function claimTask(client: AmasterClient, options: { id: string; assignee: string }) {\n const spinner = ora(`Claiming task: ${options.id}...`).start();\n\n try {\n const result = await client.bpm.claimTask(options.id, options.assignee);\n\n if (result.error) {\n spinner.fail(\"Failed to claim task\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task claimed\");\n } catch (error) {\n spinner.fail(\"Failed to claim task\");\n throw error;\n }\n}\n\nexport async function getProcessInstance(client: AmasterClient, options: { id: string }) {\n const spinner = ora(\"Fetching process instance...\").start();\n\n try {\n const result = await client.bpm.getProcessInstance(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process instance retrieved\");\n\n console.log(chalk.blue(\"\\n📊 Process Instance\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n } catch (error) {\n spinner.fail(\"Failed to fetch process instance\");\n throw error;\n }\n}\n\nexport async function listProcessInstances(client: AmasterClient) {\n const spinner = ora(\"Fetching process instances...\").start();\n\n try {\n const result = await client.bpm.getProcessInstances();\n\n if (result.error) {\n spinner.fail(\"Failed to fetch process instances\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.length || 0} process instances`);\n\n const instances = result.data || [];\n console.log(chalk.blue(\"\\n🔄 Process Instances\\n\"));\n\n for (const instance of instances) {\n console.log(` ${chalk.green(\"•\")} ${chalk.bold(instance.id)}`);\n console.log(` ${chalk.gray(\"Definition:\")} ${instance.definitionId}`);\n console.log(` ${chalk.gray(\"Status:\")} ${instance.ended ? \"Ended\" : instance.suspended ? \"Suspended\" : \"Active\"}`);\n console.log();\n }\n } catch (error) {\n spinner.fail(\"Failed to fetch process instances\");\n throw error;\n }\n}\n","import chalk from \"chalk\";\nimport ora from \"ora\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\n\nexport async function listWorkflows(client: AmasterClient) {\n const spinner = ora(\"Fetching workflows...\").start();\n\n try {\n const result = await client.workflow.listWorkflows();\n\n if (result.error) {\n spinner.fail(\"Failed to fetch workflows\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.length || 0} workflows`);\n\n const workflows = result.data || [];\n console.log(chalk.blue(\"\\n⚡ Workflows\\n\"));\n\n for (const workflow of workflows) {\n console.log(` ${chalk.green(\"•\")} ${chalk.bold(workflow.code || workflow.id)}`);\n console.log(` ${chalk.gray(\"Name:\")} ${workflow.name || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Description:\")} ${workflow.description || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Status:\")} ${workflow.status || \"N/A\"}`);\n console.log();\n }\n } catch (error) {\n spinner.fail(\"Failed to fetch workflows\");\n throw error;\n }\n}\n\nexport async function executeWorkflow(\n client: AmasterClient,\n options: { id: string; input?: string; version?: string }\n) {\n const spinner = ora(`Executing workflow: ${options.id}...`).start();\n\n try {\n const input = options.input ? JSON.parse(options.input) : {};\n\n const result = await client.workflow.execute(options.id, {\n input,\n version: options.version,\n });\n\n if (result.error) {\n spinner.fail(\"Failed to execute workflow\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Workflow executed\");\n console.log(chalk.green(\"\\nExecution Result:\"));\n console.log(JSON.stringify(result.data, null, 2));\n } catch (error) {\n spinner.fail(\"Failed to execute workflow\");\n throw error;\n }\n}\n\nexport async function getWorkflow(client: AmasterClient, options: { id: string }) {\n const spinner = ora(\"Fetching workflow...\").start();\n\n try {\n const result = await client.workflow.getWorkflow(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch workflow\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Workflow retrieved\");\n\n console.log(chalk.blue(\"\\n⚡ Workflow\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n } catch (error) {\n spinner.fail(\"Failed to fetch workflow\");\n throw error;\n }\n}\n\nexport async function listWorkflowExecutions(\n client: AmasterClient,\n options: { workflowId?: string; page?: number; pageSize?: number }\n) {\n const spinner = ora(\"Fetching workflow executions...\").start();\n\n try {\n const result = await client.workflow.listExecutions({\n workflowId: options.workflowId,\n page: options.page || 1,\n pageSize: options.pageSize || 10,\n });\n\n if (result.error) {\n spinner.fail(\"Failed to fetch executions\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.total || 0} executions`);\n\n const executions = result.data?.list || [];\n console.log(chalk.blue(\"\\n🔄 Workflow Executions\\n\"));\n\n for (const execution of executions) {\n console.log(` ${chalk.green(\"•\")} ${chalk.bold(execution.id)}`);\n console.log(` ${chalk.gray(\"Workflow:\")} ${execution.workflowId}`);\n console.log(` ${chalk.gray(\"Status:\")} ${execution.status || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Started:\")} ${execution.startedAt || \"N/A\"}`);\n console.log();\n }\n } catch (error) {\n spinner.fail(\"Failed to fetch executions\");\n throw error;\n }\n}\n\nexport async function getExecution(client: AmasterClient, options: { id: string }) {\n const spinner = ora(\"Fetching execution...\").start();\n\n try {\n const result = await client.workflow.getExecution(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch execution\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Execution retrieved\");\n\n console.log(chalk.blue(\"\\n🔄 Execution\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n } catch (error) {\n spinner.fail(\"Failed to fetch execution\");\n throw error;\n }\n}\n","import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { createReadStream, existsSync } from \"fs\";\nimport { resolve } from \"path\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\n\nexport async function uploadFile(\n client: AmasterClient,\n options: { file: string; key?: string; bucket?: string; public?: boolean }\n) {\n const spinner = ora(\"Uploading file...\").start();\n\n try {\n const filePath = resolve(options.file);\n\n if (!existsSync(filePath)) {\n spinner.fail(`File not found: ${options.file}`);\n process.exit(1);\n }\n\n const result = await client.s3.uploadFile(filePath, {\n key: options.key,\n bucket: options.bucket,\n isPublic: options.public,\n });\n\n if (result.error) {\n spinner.fail(\"Upload failed\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Upload complete\");\n console.log(chalk.green(\"\\nFile uploaded:\"));\n console.log(` ${chalk.bold(\"Key:\")} ${result.data?.key}`);\n console.log(` ${chalk.bold(\"URL:\")} ${result.data?.url || \"N/A\"}`);\n console.log(` ${chalk.bold(\"Bucket:\")} ${result.data?.bucket || options.bucket || \"default\"}`);\n } catch (error) {\n spinner.fail(\"Upload failed\");\n throw error;\n }\n}\n\nexport async function downloadFile(\n client: AmasterClient,\n options: { key: string; output: string; bucket?: string }\n) {\n const spinner = ora(\"Downloading file...\").start();\n\n try {\n const result = await client.s3.downloadFile(options.key, options.output, {\n bucket: options.bucket,\n });\n\n if (result.error) {\n spinner.fail(\"Download failed\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Download complete\");\n console.log(chalk.green(`\\nFile saved to: ${options.output}`));\n } catch (error) {\n spinner.fail(\"Download failed\");\n throw error;\n }\n}\n\nexport async function listFiles(\n client: AmasterClient,\n options: { bucket?: string; prefix?: string; page?: number; pageSize?: number }\n) {\n const spinner = ora(\"Fetching files...\").start();\n\n try {\n const result = await client.s3.listFiles({\n bucket: options.bucket,\n prefix: options.prefix,\n page: options.page || 1,\n pageSize: options.pageSize || 10,\n });\n\n if (result.error) {\n spinner.fail(\"Failed to fetch files\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.total || 0} files`);\n\n const files = result.data?.list || [];\n console.log(chalk.blue(`\\n📁 Files${options.bucket ? ` in ${options.bucket}` : \"\"}\\n`));\n\n for (const file of files) {\n console.log(` ${chalk.green(\"•\")} ${chalk.bold(file.key)}`);\n console.log(` ${chalk.gray(\"Size:\")} ${formatBytes(file.size || 0)}`);\n console.log(` ${chalk.gray(\"Modified:\")} ${file.lastModified || \"N/A\"}`);\n console.log();\n }\n } catch (error) {\n spinner.fail(\"Failed to fetch files\");\n throw error;\n }\n}\n\nexport async function deleteFile(client: AmasterClient, options: { key: string; bucket?: string }) {\n const spinner = ora(\"Deleting file...\").start();\n\n try {\n const result = await client.s3.deleteFile(options.key, {\n bucket: options.bucket,\n });\n\n if (result.error) {\n spinner.fail(\"Delete failed\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"File deleted\");\n console.log(chalk.green(`\\nDeleted: ${options.key}`));\n } catch (error) {\n spinner.fail(\"Delete failed\");\n throw error;\n }\n}\n\nexport async function getFileUrl(\n client: AmasterClient,\n options: { key: string; bucket?: string; expires?: number }\n) {\n const spinner = ora(\"Generating URL...\").start();\n\n try {\n const result = await client.s3.getFileUrl(options.key, {\n bucket: options.bucket,\n expires: options.expires,\n });\n\n if (result.error) {\n spinner.fail(\"Failed to generate URL\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"URL generated\");\n console.log(chalk.green(\"\\nFile URL:\"));\n console.log(` ${result.data?.url}`);\n if (result.data?.expires) {\n console.log(chalk.gray(` Expires: ${new Date(result.data.expires).toLocaleString()}`));\n }\n } catch (error) {\n spinner.fail(\"Failed to generate URL\");\n throw error;\n }\n}\n\nfunction formatBytes(bytes: number): string {\n if (bytes === 0) return \"0 B\";\n const k = 1024;\n const sizes = [\"B\", \"KB\", \"MB\", \"GB\", \"TB\"];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + \" \" + sizes[i];\n}\n","import { existsSync, mkdirSync, readFileSync, writeFileSync, rmSync, readdirSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport chalk from \"chalk\";\nimport ora from \"ora\";\nimport yaml from \"yaml\";\nimport { addApp, getAppConfig, listApps } from \"../config.js\";\n\nconst OPENCLAW_CONFIG_DIR = join(homedir(), \".openclaw\");\nconst OPENCLAW_CONFIG_FILE = join(OPENCLAW_CONFIG_DIR, \"config.json\");\nconst OPENCLAW_SKILLS_DIR = join(OPENCLAW_CONFIG_DIR, \"skills\");\nconst DEFAULT_OSS_ENDPOINT = \"https://amaster.oss-cn-hangzhou.aliyuncs.com\";\n\ninterface SkillManifest {\n id: string;\n name: string;\n description: string;\n version: string;\n content?: string;\n}\n\ninterface McpServerConfig {\n command: string;\n args?: string[];\n env?: Record<string, string>;\n}\n\nfunction getOpenClawConfig(): { mcpServers?: Record<string, McpServerConfig> } {\n if (existsSync(OPENCLAW_CONFIG_FILE)) {\n return JSON.parse(readFileSync(OPENCLAW_CONFIG_FILE, \"utf-8\"));\n }\n return {};\n}\n\nfunction saveOpenClawConfig(config: { mcpServers?: Record<string, McpServerConfig> }): void {\n if (!existsSync(OPENCLAW_CONFIG_DIR)) {\n mkdirSync(OPENCLAW_CONFIG_DIR, { recursive: true });\n }\n writeFileSync(OPENCLAW_CONFIG_FILE, JSON.stringify(config, null, 2));\n}\n\nfunction getAppSkillsPath(appCode: string): string {\n return `/openclaw/apps/${appCode}/skills`;\n}\n\nfunction getAppMcpConfigPath(appCode: string): string {\n return `/openclaw/apps/${appCode}/mcp-config.yaml`;\n}\n\nexport async function initOpenClaw(options: {\n appCode: string;\n baseURL: string;\n apiKey?: string;\n ossEndpoint?: string;\n force?: boolean;\n}): Promise<void> {\n const spinner = ora(`Initializing app: ${options.appCode}...`).start();\n\n try {\n // Check if app already exists\n const existingConfig = getAppConfig(options.appCode);\n if (existingConfig && !options.force) {\n spinner.fail(`App already exists: ${options.appCode}`);\n console.log(chalk.yellow(`Use --force to reinitialize`));\n console.log(chalk.gray(`Current URL: ${existingConfig.baseURL}`));\n process.exit(1);\n }\n\n if (!existsSync(OPENCLAW_CONFIG_DIR)) {\n spinner.fail(\"OpenClaw not detected\");\n console.log(chalk.yellow(\"\\n⚠️ Please install OpenClaw first:\"));\n console.log(chalk.gray(\" npm install -g openclaw\"));\n process.exit(1);\n }\n\n // Save app config\n addApp(options.appCode, {\n baseURL: options.baseURL,\n ossEndpoint: options.ossEndpoint || DEFAULT_OSS_ENDPOINT,\n initializedAt: new Date().toISOString(),\n });\n\n spinner.succeed(`App initialized: ${options.appCode}`);\n \n console.log(chalk.blue(\"\\n📋 Configuration:\\n\"));\n console.log(` App Code: ${chalk.green(options.appCode)}`);\n console.log(` Base URL: ${chalk.gray(options.baseURL)}`);\n console.log();\n\n // Download and install skills\n const ossEndpoint = options.ossEndpoint || DEFAULT_OSS_ENDPOINT;\n spinner.start(\"Downloading skills...\");\n \n try {\n const skills = await downloadSkillManifest(ossEndpoint, options.appCode);\n\n if (skills.length === 0) {\n spinner.warn(\"No skills found\");\n } else {\n spinner.text = `Installing ${skills.length} skills...`;\n const appSkillsDir = join(OPENCLAW_SKILLS_DIR, options.appCode);\n\n if (options.force && existsSync(appSkillsDir)) {\n rmSync(appSkillsDir, { recursive: true, force: true });\n }\n\n if (!existsSync(appSkillsDir)) {\n mkdirSync(appSkillsDir, { recursive: true });\n }\n\n for (const skill of skills) {\n spinner.text = `Installing: ${skill.name}...`;\n await downloadSkill(skill, ossEndpoint, options.appCode, appSkillsDir);\n }\n spinner.succeed(`Installed ${skills.length} skills`);\n }\n } catch (error) {\n spinner.warn(\"Skills download failed (optional)\");\n }\n\n // Configure MCP servers\n spinner.start(\"Configuring MCP servers...\");\n try {\n const mcpServers = await downloadMcpConfig(ossEndpoint, options.appCode);\n\n if (Object.keys(mcpServers).length > 0) {\n const openClawConfig = getOpenClawConfig();\n\n if (!openClawConfig.mcpServers) {\n openClawConfig.mcpServers = {};\n }\n\n for (const [name, config] of Object.entries(mcpServers)) {\n openClawConfig.mcpServers[`${options.appCode}-${name}`] = config;\n }\n\n saveOpenClawConfig(openClawConfig);\n spinner.succeed(`Configured ${Object.keys(mcpServers).length} MCP servers`);\n } else {\n spinner.succeed(\"No MCP servers to configure\");\n }\n } catch (error) {\n spinner.warn(\"MCP configuration failed (optional)\");\n }\n\n console.log();\n console.log(chalk.green(\"✅ Initialization complete!\"));\n console.log();\n console.log(`Next step: Login to your app`);\n console.log(chalk.gray(` amaster login --app ${options.appCode}`));\n console.log();\n\n // Show all configured apps\n const apps = listApps();\n if (apps.length > 1) {\n console.log(chalk.blue(\"Configured apps:\"));\n for (const app of apps) {\n const config = getAppConfig(app);\n console.log(` ${chalk.gray(\"•\")} ${app} - ${config?.baseURL}`);\n }\n console.log();\n }\n } catch (error) {\n spinner.fail(\"Initialization failed\");\n throw error;\n }\n}\n\nasync function downloadSkillManifest(ossEndpoint: string, appCode: string): Promise<SkillManifest[]> {\n const manifestUrl = `${ossEndpoint}${getAppSkillsPath(appCode)}/manifest.json`;\n\n try {\n const response = await fetch(manifestUrl);\n if (!response.ok) {\n if (response.status === 404) {\n return [];\n }\n throw new Error(`Failed to download manifest: ${response.statusText}`);\n }\n return (await response.json()) as SkillManifest[];\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"404\")) {\n return [];\n }\n throw error;\n }\n}\n\nasync function downloadSkill(\n skill: SkillManifest, \n ossEndpoint: string, \n appCode: string, \n targetDir: string\n): Promise<void> {\n const skillUrl = `${ossEndpoint}${getAppSkillsPath(appCode)}/${skill.id}.zip`;\n\n try {\n const response = await fetch(skillUrl);\n if (!response.ok) {\n throw new Error(`Failed to download skill ${skill.id}: ${response.statusText}`);\n }\n\n const skillDir = join(targetDir, skill.id);\n if (!existsSync(skillDir)) {\n mkdirSync(skillDir, { recursive: true });\n }\n\n await response.arrayBuffer();\n\n // Create SKILL.md\n const skillContent = skill.content || generateSkillContent(skill, appCode);\n writeFileSync(join(skillDir, \"SKILL.md\"), skillContent);\n\n // Create metadata\n writeFileSync(\n join(skillDir, \".amaster-meta.json\"),\n JSON.stringify(\n {\n id: skill.id,\n name: skill.name,\n version: skill.version,\n appCode,\n installedAt: new Date().toISOString(),\n },\n null,\n 2\n )\n );\n } catch (error) {\n throw new Error(`Failed to download skill ${skill.id}: ${error instanceof Error ? error.message : error}`);\n }\n}\n\nfunction generateSkillContent(skill: SkillManifest, appCode: string): string {\n return `---\nname: ${skill.name}\ndescription: ${skill.description}\nmetadata:\n appCode: ${appCode}\n---\n\n# ${skill.name}\n\n${skill.description}\n\n## Usage\n\nThis skill is configured for application: **${appCode}**\n`;\n}\n\nasync function downloadMcpConfig(\n ossEndpoint: string, \n appCode: string\n): Promise<Record<string, McpServerConfig>> {\n const configUrl = `${ossEndpoint}${getAppMcpConfigPath(appCode)}`;\n\n try {\n const response = await fetch(configUrl);\n if (!response.ok) {\n if (response.status === 404) {\n return {};\n }\n throw new Error(`Failed to download MCP config: ${response.statusText}`);\n }\n const content = await response.text();\n const parsed = yaml.parse(content);\n return parsed.mcpServers || {};\n } catch (error) {\n if (error instanceof Error && error.message.includes(\"404\")) {\n return {};\n }\n throw error;\n }\n}\n"]}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var fs = require('fs');
|
|
4
|
+
var path = require('path');
|
|
5
|
+
var os = require('os');
|
|
6
|
+
|
|
7
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
8
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
9
|
+
}) : x)(function(x) {
|
|
10
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
11
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
12
|
+
});
|
|
13
|
+
var AMASTER_CONFIG_DIR = path.join(os.homedir(), ".amaster");
|
|
14
|
+
var CONFIG_FILE = path.join(AMASTER_CONFIG_DIR, "config.json");
|
|
15
|
+
var OPENCLAW_SKILLS_DIR = path.join(os.homedir(), ".openclaw", "skills");
|
|
16
|
+
function isAutomatedUninstall() {
|
|
17
|
+
return !!(process.env.npm_config_ignore_scripts || process.env.NODE_ENV === "test");
|
|
18
|
+
}
|
|
19
|
+
function getConfig() {
|
|
20
|
+
if (!fs.existsSync(CONFIG_FILE)) return {};
|
|
21
|
+
try {
|
|
22
|
+
const fs = __require("fs");
|
|
23
|
+
return JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
|
|
24
|
+
} catch {
|
|
25
|
+
return {};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function cleanup() {
|
|
29
|
+
const config = getConfig();
|
|
30
|
+
const apps = Object.keys(config.apps || {});
|
|
31
|
+
if (apps.length === 0) {
|
|
32
|
+
console.log("\n\u2139\uFE0F No apps configured, nothing to clean up.\n");
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
console.log(`
|
|
36
|
+
\u{1F9F9} Cleaning up ${apps.length} app(s)...
|
|
37
|
+
`);
|
|
38
|
+
for (const appCode of apps) {
|
|
39
|
+
const authFile = path.join(AMASTER_CONFIG_DIR, `auth-${appCode}.json`);
|
|
40
|
+
if (fs.existsSync(authFile)) {
|
|
41
|
+
fs.rmSync(authFile, { force: true });
|
|
42
|
+
console.log(`\u2705 Removed auth for: ${appCode}`);
|
|
43
|
+
}
|
|
44
|
+
const appSkillsDir = path.join(OPENCLAW_SKILLS_DIR, appCode);
|
|
45
|
+
if (fs.existsSync(appSkillsDir)) {
|
|
46
|
+
fs.rmSync(appSkillsDir, { recursive: true, force: true });
|
|
47
|
+
console.log(`\u2705 Removed skills for: ${appCode}`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
if (fs.existsSync(CONFIG_FILE)) {
|
|
51
|
+
fs.rmSync(CONFIG_FILE, { force: true });
|
|
52
|
+
console.log("\u2705 Removed configuration file");
|
|
53
|
+
}
|
|
54
|
+
console.log("\n\u2705 Cleanup complete\n");
|
|
55
|
+
}
|
|
56
|
+
async function main() {
|
|
57
|
+
if (isAutomatedUninstall()) {
|
|
58
|
+
console.log("Automated uninstall detected, skipping cleanup.");
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
await cleanup();
|
|
63
|
+
} catch (error) {
|
|
64
|
+
console.error("Cleanup failed:", error instanceof Error ? error.message : error);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
main();
|
|
68
|
+
//# sourceMappingURL=preuninstall.cjs.map
|
|
69
|
+
//# sourceMappingURL=preuninstall.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/scripts/preuninstall.ts"],"names":["join","homedir","existsSync","rmSync"],"mappings":";;;;;;;;;;;;AAIA,IAAM,kBAAA,GAAqBA,SAAA,CAAKC,UAAA,EAAQ,EAAG,UAAU,CAAA;AACrD,IAAM,WAAA,GAAcD,SAAA,CAAK,kBAAA,EAAoB,aAAa,CAAA;AAC1D,IAAM,mBAAA,GAAsBA,SAAA,CAAKC,UAAA,EAAQ,EAAG,aAAa,QAAQ,CAAA;AAMjE,SAAS,oBAAA,GAAgC;AACvC,EAAA,OAAO,CAAC,EAAE,OAAA,CAAQ,IAAI,yBAAA,IAA6B,OAAA,CAAQ,IAAI,QAAA,KAAa,MAAA,CAAA;AAC9E;AAEA,SAAS,SAAA,GAA2B;AAClC,EAAA,IAAI,CAACC,aAAA,CAAW,WAAW,CAAA,SAAU,EAAC;AACtC,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,GAAK,UAAQ,IAAI,CAAA;AACvB,IAAA,OAAO,KAAK,KAAA,CAAM,EAAA,CAAG,YAAA,CAAa,WAAA,EAAa,OAAO,CAAC,CAAA;AAAA,EACzD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAC;AAAA,EACV;AACF;AAEA,eAAe,OAAA,GAAyB;AACtC,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,OAAO,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,IAAA,IAAQ,EAAE,CAAA;AAE1C,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAA,CAAQ,IAAI,4DAAkD,CAAA;AAC9D,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,sBAAA,EAAoB,KAAK,MAAM,CAAA;AAAA,CAAc,CAAA;AAEzD,EAAA,KAAA,MAAW,WAAW,IAAA,EAAM;AAE1B,IAAA,MAAM,QAAA,GAAWF,SAAA,CAAK,kBAAA,EAAoB,CAAA,KAAA,EAAQ,OAAO,CAAA,KAAA,CAAO,CAAA;AAChE,IAAA,IAAIE,aAAA,CAAW,QAAQ,CAAA,EAAG;AACxB,MAAAC,SAAA,CAAO,QAAA,EAAU,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA;AAChC,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,yBAAA,EAAuB,OAAO,CAAA,CAAE,CAAA;AAAA,IAC9C;AAGA,IAAA,MAAM,YAAA,GAAeH,SAAA,CAAK,mBAAA,EAAqB,OAAO,CAAA;AACtD,IAAA,IAAIE,aAAA,CAAW,YAAY,CAAA,EAAG;AAC5B,MAAAC,SAAA,CAAO,cAAc,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA;AACrD,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,2BAAA,EAAyB,OAAO,CAAA,CAAE,CAAA;AAAA,IAChD;AAAA,EACF;AAGA,EAAA,IAAID,aAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,IAAAC,SAAA,CAAO,WAAA,EAAa,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA;AACnC,IAAA,OAAA,CAAQ,IAAI,mCAA8B,CAAA;AAAA,EAC5C;AAEA,EAAA,OAAA,CAAQ,IAAI,6BAAwB,CAAA;AACtC;AAEA,eAAe,IAAA,GAAsB;AACnC,EAAA,IAAI,sBAAqB,EAAG;AAC1B,IAAA,OAAA,CAAQ,IAAI,iDAAiD,CAAA;AAC7D,IAAA;AAAA,EACF;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,EAAQ;AAAA,EAChB,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,MAAM,iBAAA,EAAmB,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,UAAU,KAAK,CAAA;AAAA,EACjF;AACF;AAEA,IAAA,EAAK","file":"preuninstall.cjs","sourcesContent":["import { existsSync, rmSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\n\nconst AMASTER_CONFIG_DIR = join(homedir(), \".amaster\");\nconst CONFIG_FILE = join(AMASTER_CONFIG_DIR, \"config.json\");\nconst OPENCLAW_SKILLS_DIR = join(homedir(), \".openclaw\", \"skills\");\n\ninterface RuntimeConfig {\n apps?: Record<string, unknown>;\n}\n\nfunction isAutomatedUninstall(): boolean {\n return !!(process.env.npm_config_ignore_scripts || process.env.NODE_ENV === \"test\");\n}\n\nfunction getConfig(): RuntimeConfig {\n if (!existsSync(CONFIG_FILE)) return {};\n try {\n const fs = require(\"fs\");\n return JSON.parse(fs.readFileSync(CONFIG_FILE, \"utf-8\")) as RuntimeConfig;\n } catch {\n return {};\n }\n}\n\nasync function cleanup(): Promise<void> {\n const config = getConfig();\n const apps = Object.keys(config.apps || {});\n\n if (apps.length === 0) {\n console.log(\"\\nℹ️ No apps configured, nothing to clean up.\\n\");\n return;\n }\n\n console.log(`\\n🧹 Cleaning up ${apps.length} app(s)...\\n`);\n\n for (const appCode of apps) {\n // Remove auth file\n const authFile = join(AMASTER_CONFIG_DIR, `auth-${appCode}.json`);\n if (existsSync(authFile)) {\n rmSync(authFile, { force: true });\n console.log(`✅ Removed auth for: ${appCode}`);\n }\n\n // Remove skills\n const appSkillsDir = join(OPENCLAW_SKILLS_DIR, appCode);\n if (existsSync(appSkillsDir)) {\n rmSync(appSkillsDir, { recursive: true, force: true });\n console.log(`✅ Removed skills for: ${appCode}`);\n }\n }\n\n // Remove config file\n if (existsSync(CONFIG_FILE)) {\n rmSync(CONFIG_FILE, { force: true });\n console.log(\"✅ Removed configuration file\");\n }\n\n console.log(\"\\n✅ Cleanup complete\\n\");\n}\n\nasync function main(): Promise<void> {\n if (isAutomatedUninstall()) {\n console.log(\"Automated uninstall detected, skipping cleanup.\");\n return;\n }\n\n try {\n await cleanup();\n } catch (error) {\n console.error(\"Cleanup failed:\", error instanceof Error ? error.message : error);\n }\n}\n\nmain();\n"]}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { existsSync, rmSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
|
|
5
|
+
var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
|
|
6
|
+
get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
|
|
7
|
+
}) : x)(function(x) {
|
|
8
|
+
if (typeof require !== "undefined") return require.apply(this, arguments);
|
|
9
|
+
throw Error('Dynamic require of "' + x + '" is not supported');
|
|
10
|
+
});
|
|
11
|
+
var AMASTER_CONFIG_DIR = join(homedir(), ".amaster");
|
|
12
|
+
var CONFIG_FILE = join(AMASTER_CONFIG_DIR, "config.json");
|
|
13
|
+
var OPENCLAW_SKILLS_DIR = join(homedir(), ".openclaw", "skills");
|
|
14
|
+
function isAutomatedUninstall() {
|
|
15
|
+
return !!(process.env.npm_config_ignore_scripts || process.env.NODE_ENV === "test");
|
|
16
|
+
}
|
|
17
|
+
function getConfig() {
|
|
18
|
+
if (!existsSync(CONFIG_FILE)) return {};
|
|
19
|
+
try {
|
|
20
|
+
const fs = __require("fs");
|
|
21
|
+
return JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
|
|
22
|
+
} catch {
|
|
23
|
+
return {};
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
async function cleanup() {
|
|
27
|
+
const config = getConfig();
|
|
28
|
+
const apps = Object.keys(config.apps || {});
|
|
29
|
+
if (apps.length === 0) {
|
|
30
|
+
console.log("\n\u2139\uFE0F No apps configured, nothing to clean up.\n");
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
console.log(`
|
|
34
|
+
\u{1F9F9} Cleaning up ${apps.length} app(s)...
|
|
35
|
+
`);
|
|
36
|
+
for (const appCode of apps) {
|
|
37
|
+
const authFile = join(AMASTER_CONFIG_DIR, `auth-${appCode}.json`);
|
|
38
|
+
if (existsSync(authFile)) {
|
|
39
|
+
rmSync(authFile, { force: true });
|
|
40
|
+
console.log(`\u2705 Removed auth for: ${appCode}`);
|
|
41
|
+
}
|
|
42
|
+
const appSkillsDir = join(OPENCLAW_SKILLS_DIR, appCode);
|
|
43
|
+
if (existsSync(appSkillsDir)) {
|
|
44
|
+
rmSync(appSkillsDir, { recursive: true, force: true });
|
|
45
|
+
console.log(`\u2705 Removed skills for: ${appCode}`);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
if (existsSync(CONFIG_FILE)) {
|
|
49
|
+
rmSync(CONFIG_FILE, { force: true });
|
|
50
|
+
console.log("\u2705 Removed configuration file");
|
|
51
|
+
}
|
|
52
|
+
console.log("\n\u2705 Cleanup complete\n");
|
|
53
|
+
}
|
|
54
|
+
async function main() {
|
|
55
|
+
if (isAutomatedUninstall()) {
|
|
56
|
+
console.log("Automated uninstall detected, skipping cleanup.");
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
await cleanup();
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error("Cleanup failed:", error instanceof Error ? error.message : error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
main();
|
|
66
|
+
//# sourceMappingURL=preuninstall.js.map
|
|
67
|
+
//# sourceMappingURL=preuninstall.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/scripts/preuninstall.ts"],"names":[],"mappings":";;;;;;;;;;AAIA,IAAM,kBAAA,GAAqB,IAAA,CAAK,OAAA,EAAQ,EAAG,UAAU,CAAA;AACrD,IAAM,WAAA,GAAc,IAAA,CAAK,kBAAA,EAAoB,aAAa,CAAA;AAC1D,IAAM,mBAAA,GAAsB,IAAA,CAAK,OAAA,EAAQ,EAAG,aAAa,QAAQ,CAAA;AAMjE,SAAS,oBAAA,GAAgC;AACvC,EAAA,OAAO,CAAC,EAAE,OAAA,CAAQ,IAAI,yBAAA,IAA6B,OAAA,CAAQ,IAAI,QAAA,KAAa,MAAA,CAAA;AAC9E;AAEA,SAAS,SAAA,GAA2B;AAClC,EAAA,IAAI,CAAC,UAAA,CAAW,WAAW,CAAA,SAAU,EAAC;AACtC,EAAA,IAAI;AACF,IAAA,MAAM,EAAA,GAAK,UAAQ,IAAI,CAAA;AACvB,IAAA,OAAO,KAAK,KAAA,CAAM,EAAA,CAAG,YAAA,CAAa,WAAA,EAAa,OAAO,CAAC,CAAA;AAAA,EACzD,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAC;AAAA,EACV;AACF;AAEA,eAAe,OAAA,GAAyB;AACtC,EAAA,MAAM,SAAS,SAAA,EAAU;AACzB,EAAA,MAAM,OAAO,MAAA,CAAO,IAAA,CAAK,MAAA,CAAO,IAAA,IAAQ,EAAE,CAAA;AAE1C,EAAA,IAAI,IAAA,CAAK,WAAW,CAAA,EAAG;AACrB,IAAA,OAAA,CAAQ,IAAI,4DAAkD,CAAA;AAC9D,IAAA;AAAA,EACF;AAEA,EAAA,OAAA,CAAQ,GAAA,CAAI;AAAA,sBAAA,EAAoB,KAAK,MAAM,CAAA;AAAA,CAAc,CAAA;AAEzD,EAAA,KAAA,MAAW,WAAW,IAAA,EAAM;AAE1B,IAAA,MAAM,QAAA,GAAW,IAAA,CAAK,kBAAA,EAAoB,CAAA,KAAA,EAAQ,OAAO,CAAA,KAAA,CAAO,CAAA;AAChE,IAAA,IAAI,UAAA,CAAW,QAAQ,CAAA,EAAG;AACxB,MAAA,MAAA,CAAO,QAAA,EAAU,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA;AAChC,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,yBAAA,EAAuB,OAAO,CAAA,CAAE,CAAA;AAAA,IAC9C;AAGA,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,mBAAA,EAAqB,OAAO,CAAA;AACtD,IAAA,IAAI,UAAA,CAAW,YAAY,CAAA,EAAG;AAC5B,MAAA,MAAA,CAAO,cAAc,EAAE,SAAA,EAAW,IAAA,EAAM,KAAA,EAAO,MAAM,CAAA;AACrD,MAAA,OAAA,CAAQ,GAAA,CAAI,CAAA,2BAAA,EAAyB,OAAO,CAAA,CAAE,CAAA;AAAA,IAChD;AAAA,EACF;AAGA,EAAA,IAAI,UAAA,CAAW,WAAW,CAAA,EAAG;AAC3B,IAAA,MAAA,CAAO,WAAA,EAAa,EAAE,KAAA,EAAO,IAAA,EAAM,CAAA;AACnC,IAAA,OAAA,CAAQ,IAAI,mCAA8B,CAAA;AAAA,EAC5C;AAEA,EAAA,OAAA,CAAQ,IAAI,6BAAwB,CAAA;AACtC;AAEA,eAAe,IAAA,GAAsB;AACnC,EAAA,IAAI,sBAAqB,EAAG;AAC1B,IAAA,OAAA,CAAQ,IAAI,iDAAiD,CAAA;AAC7D,IAAA;AAAA,EACF;AAEA,EAAA,IAAI;AACF,IAAA,MAAM,OAAA,EAAQ;AAAA,EAChB,SAAS,KAAA,EAAO;AACd,IAAA,OAAA,CAAQ,MAAM,iBAAA,EAAmB,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,UAAU,KAAK,CAAA;AAAA,EACjF;AACF;AAEA,IAAA,EAAK","file":"preuninstall.js","sourcesContent":["import { existsSync, rmSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\n\nconst AMASTER_CONFIG_DIR = join(homedir(), \".amaster\");\nconst CONFIG_FILE = join(AMASTER_CONFIG_DIR, \"config.json\");\nconst OPENCLAW_SKILLS_DIR = join(homedir(), \".openclaw\", \"skills\");\n\ninterface RuntimeConfig {\n apps?: Record<string, unknown>;\n}\n\nfunction isAutomatedUninstall(): boolean {\n return !!(process.env.npm_config_ignore_scripts || process.env.NODE_ENV === \"test\");\n}\n\nfunction getConfig(): RuntimeConfig {\n if (!existsSync(CONFIG_FILE)) return {};\n try {\n const fs = require(\"fs\");\n return JSON.parse(fs.readFileSync(CONFIG_FILE, \"utf-8\")) as RuntimeConfig;\n } catch {\n return {};\n }\n}\n\nasync function cleanup(): Promise<void> {\n const config = getConfig();\n const apps = Object.keys(config.apps || {});\n\n if (apps.length === 0) {\n console.log(\"\\nℹ️ No apps configured, nothing to clean up.\\n\");\n return;\n }\n\n console.log(`\\n🧹 Cleaning up ${apps.length} app(s)...\\n`);\n\n for (const appCode of apps) {\n // Remove auth file\n const authFile = join(AMASTER_CONFIG_DIR, `auth-${appCode}.json`);\n if (existsSync(authFile)) {\n rmSync(authFile, { force: true });\n console.log(`✅ Removed auth for: ${appCode}`);\n }\n\n // Remove skills\n const appSkillsDir = join(OPENCLAW_SKILLS_DIR, appCode);\n if (existsSync(appSkillsDir)) {\n rmSync(appSkillsDir, { recursive: true, force: true });\n console.log(`✅ Removed skills for: ${appCode}`);\n }\n }\n\n // Remove config file\n if (existsSync(CONFIG_FILE)) {\n rmSync(CONFIG_FILE, { force: true });\n console.log(\"✅ Removed configuration file\");\n }\n\n console.log(\"\\n✅ Cleanup complete\\n\");\n}\n\nasync function main(): Promise<void> {\n if (isAutomatedUninstall()) {\n console.log(\"Automated uninstall detected, skipping cleanup.\");\n return;\n }\n\n try {\n await cleanup();\n } catch (error) {\n console.error(\"Cleanup failed:\", error instanceof Error ? error.message : error);\n }\n}\n\nmain();\n"]}
|