@amaster.ai/runtime-cli 1.1.27 โ 1.1.29
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 +33 -1
- package/dist/cli.cjs +243 -4
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.d.cts +10 -1
- package/dist/cli.d.ts +10 -1
- package/dist/cli.js +243 -5
- package/dist/cli.js.map +1 -1
- package/dist/index.cjs +252 -4
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +24 -2
- package/dist/index.d.ts +24 -2
- package/dist/index.js +243 -5
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts","../src/index.ts","../src/cli.ts","../src/commands/auth.ts","../src/output.ts","../src/commands/entity.ts","../src/commands/model.ts","../src/commands/bpm.ts","../src/commands/workflow.ts","../src/commands/s3.ts","../src/commands/openclaw.ts"],"names":["chalk","login","getAccessToken","isPlainObject","readFileSync","resolveInputSource","exitWithCommandError","parseJsonInput","promptForJson","loadJsonObjectInput","loadOptionalJsonObjectInput","existsSync","writeFileSync","join","homedir","mkdirSync","rmSync","createClient","Option"],"mappings":"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","file":"index.js","sourcesContent":["import { existsSync, readFileSync, writeFileSync, rmSync, mkdirSync } 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 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 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 { readFileSync, realpathSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { Command, Option } 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 model from \"./commands/model.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\";\nimport { createFormatOption, renderOutput } from \"./output.js\";\n\nfunction resolveCliVersion(): string {\n try {\n const packageJsonUrl = new URL(\"../package.json\", import.meta.url);\n return JSON.parse(readFileSync(packageJsonUrl, \"utf-8\")).version || \"0.0.0\";\n } catch {\n return \"0.0.0\";\n }\n}\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 && shouldRefreshToken(appCode)) {\n console.error(chalk.yellow(\"โ ๏ธ Session expiring soon. Please login again.\"));\n }\n\n const client = createClient({\n baseURL: appConfig.baseURL,\n headers: {\n \"x-app-code\": appCode,\n ...(token\n ? {\n Authorization: `Bearer ${token}`,\n }\n : {}),\n },\n onUnauthorized: () => {\n if (token) {\n console.error(chalk.red(\"\\nโ Session expired. Please login again.\"));\n console.error(chalk.yellow(`Run: amaster login --app ${appCode}`));\n } else {\n console.error(chalk.red(`\\nโ Authentication required for app: ${appCode}`));\n console.error(chalk.yellow(`Run: amaster login --app ${appCode}`));\n }\n process.exit(1);\n },\n });\n\n if (token) {\n // Keep the token in sync for authenticated requests when one exists locally.\n client.setAccessToken(token);\n }\n\n return client;\n}\n\nconst program = new Command();\n\nprogram\n .name(\"amaster\")\n .description(\"CLI for Amaster SDK - Multi-app support for OpenClaw\")\n .version(resolveCliVersion());\n\nprogram\n .command(\"apps\")\n .description(\"List all configured apps\")\n .addOption(createFormatOption())\n .action((options) => {\n const apps = listApps();\n const current = getCurrentApp();\n\n const appSummaries = apps.map((appCode) => {\n const config = getAppConfig(appCode);\n return {\n appCode,\n baseURL: config?.baseURL || null,\n authenticated: isAuthenticated(appCode),\n current: appCode === current,\n };\n });\n\n renderOutput(appSummaries, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ฑ Configured Apps\\n\"));\n\n if (appSummaries.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 app of appSummaries) {\n const prefix = app.current ? chalk.green(\"โ \") : \" \";\n console.log(`${prefix}${chalk.bold(app.appCode)}${app.current ? chalk.green(\" (current)\") : \"\"}`);\n console.log(` ${chalk.gray(app.baseURL || \"No URL\")}`);\n console.log(\n ` ${app.authenticated ? chalk.green(\"โ Authenticated\") : chalk.yellow(\"โ Not authenticated\")}`\n );\n console.log();\n }\n }\n console.log();\n },\n });\n });\n\nprogram\n .command(\"use <app-code>\")\n .description(\"Set the default app for subsequent commands\")\n .addOption(createFormatOption())\n .action((appCode: string, options) => {\n if (setCurrentApp(appCode)) {\n renderOutput(\n {\n appCode,\n current: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`โ
Now using app: ${appCode}`));\n },\n }\n );\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 .option(\"--force\", \"Reinitialize an existing app\")\n .addOption(createFormatOption())\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 force: options.force,\n format: options.format,\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(\"-u, --username <username>\", \"Username\")\n .option(\"-e, --email <email>\", \"Email address\")\n .option(\"-p, --password <password>\", \"Password\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await auth.login(appCode, {\n username: options.username,\n email: options.email,\n password: options.password,\n format: options.format,\n });\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 .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await auth.logout(appCode, { format: options.format });\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 .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await auth.getMe(() => createAmasterClient(appCode), { format: options.format });\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\")\n .option(\"--page-size <size>\", \"Page size\")\n .option(\"-f, --fields <fields>\", \"Comma-separated fields to return\")\n .option(\"-r, --relations <relations>\", \"Comma-separated relations to load\")\n .option(\"-k, --keyword <keyword>\", \"Keyword to search\")\n .option(\"--keyword-fields <fields>\", \"Comma-separated fields for keyword search\")\n .option(\"--order-by <field>\", \"Field to sort by\")\n .addOption(new Option(\"--order-dir <dir>\", \"Sort direction\").choices([\"asc\", \"desc\"]))\n .option(\"--orders <orders>\", \"Multi-order expression, e.g. created_at:desc,name:asc\")\n .option(\"--filter <json>\", \"Advanced __filter JSON or @file\")\n .option(\"--limit <limit>\", \"Limit number of records\")\n .option(\"--offset <offset>\", \"Offset number of records\")\n .option(\"-q, --query <json>\", \"Additional EntityQueryParams as JSON or @file\")\n .addOption(createFormatOption())\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: options.page ? parseInt(options.page) : undefined,\n pageSize: options.pageSize ? parseInt(options.pageSize) : undefined,\n fields: options.fields,\n relations: options.relations,\n keyword: options.keyword,\n keywordFields: options.keywordFields,\n orderBy: options.orderBy,\n orderDir: options.orderDir,\n orders: options.orders,\n filter: options.filter,\n limit: options.limit ? parseInt(options.limit) : undefined,\n offset: options.offset ? parseInt(options.offset) : undefined,\n query: options.query,\n format: options.format,\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 .addOption(createFormatOption())\n .action(async (namespace: string, entityName: string, id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.getEntity(createAmasterClient(appCode), {\n namespace,\n entity: entityName,\n id,\n format: options.format,\n });\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 or @file\")\n .addOption(createFormatOption())\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 format: options.format,\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 or @file\")\n .addOption(createFormatOption())\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 format: options.format,\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 .addOption(createFormatOption())\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 format: options.format,\n });\n });\n\nentityCmd\n .command(\"options <namespace> <entity>\")\n .description(\"List entity options\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-f, --fields <fields>\", \"Comma-separated fields to return\")\n .addOption(createFormatOption())\n .action(async (namespace: string, entityName: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.listEntityOptions(createAmasterClient(appCode), {\n namespace,\n entity: entityName,\n fields: options.fields,\n format: options.format,\n });\n });\n\nentityCmd\n .command(\"bulk-update <namespace> <entity>\")\n .description(\"Bulk update entities\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-i, --items <json>\", \"Items array as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (namespace: string, entityName: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.bulkUpdateEntities(createAmasterClient(appCode), {\n namespace,\n entity: entityName,\n items: options.items,\n format: options.format,\n });\n });\n\nentityCmd\n .command(\"bulk-delete <namespace> <entity>\")\n .description(\"Bulk delete entities\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs, JSON array, or @file\")\n .addOption(createFormatOption())\n .action(async (namespace: string, entityName: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.bulkDeleteEntities(createAmasterClient(appCode), {\n namespace,\n entity: entityName,\n ids: options.ids,\n format: options.format,\n });\n });\n\nconst modelCmd = program\n .command(\"model\")\n .description(\"Discover runtime datasources and table schemas\");\n\nmodelCmd\n .command(\"datasources\")\n .description(\"List runtime datasources with their models\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await model.listDatasources(createAmasterClient(appCode), {\n format: options.format,\n });\n });\n\nmodelCmd\n .command(\"table-schema <source-id>\")\n .description(\"Get CREATE TABLE statements for one datasource\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--tables <tables>\", \"Comma-separated table names, JSON array, or @file\")\n .addOption(createFormatOption())\n .action(async (sourceId: string, options) => {\n const appCode = resolveAppCode(options.app);\n await model.getTableSchema(createAmasterClient(appCode), {\n sourceId,\n tables: options.tables,\n format: options.format,\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 .option(\"--key <key>\", \"Filter by process definition key\")\n .option(\"--name <name>\", \"Filter by process definition name\")\n .option(\"--latest-version\", \"Only return latest version\")\n .option(\"--active\", \"Only return active process definitions\")\n .option(\"--suspended\", \"Only return suspended process definitions\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional ProcessDefinitionQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listProcesses(createAmasterClient(appCode), {\n key: options.key,\n name: options.name,\n latestVersion: options.latestVersion,\n active: options.active,\n suspended: options.suspended,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"xml <key>\")\n .description(\"Get BPMN XML for a process definition key\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getProcessXml(createAmasterClient(appCode), {\n key,\n format: options.format,\n });\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 or @file\")\n .addOption(createFormatOption())\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 format: options.format,\n });\n });\n\nbpmCmd\n .command(\"instances\")\n .description(\"List process instances\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--process-definition-key <key>\", \"Filter by process definition key\")\n .option(\"--active\", \"Only return active instances\")\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"-q, --query <json>\", \"Additional ProcessInstanceQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listProcessInstances(createAmasterClient(appCode), {\n processDefinitionKey: options.processDefinitionKey,\n active: options.active,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"instance <id>\")\n .description(\"Get a process instance by ID\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getProcessInstance(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"instance-tree <id>\")\n .description(\"Get the activity instance tree for a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getActivityInstanceTree(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"active-activities <id>\")\n .description(\"Get active activities for a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getActiveActivities(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"runtime-variables <id>\")\n .description(\"Get runtime variables for a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getRuntimeVariables(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"variables <id>\")\n .description(\"Get historic variables for a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--name <name>\", \"Filter by variable name\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getProcessVariables(createAmasterClient(appCode), {\n id,\n name: options.name,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"delete-instance <id>\")\n .description(\"Delete a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--skip-custom-listeners\", \"Skip custom listeners during deletion\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.deleteProcessInstance(createAmasterClient(appCode), {\n id,\n skipCustomListeners: options.skipCustomListeners,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"suspend-instance <id>\")\n .description(\"Suspend a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.suspendProcessInstance(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"activate-instance <id>\")\n .description(\"Activate a suspended process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.activateProcessInstance(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"modify-instance <id>\")\n .description(\"Modify a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-m, --modification <json>\", \"ProcessInstanceModification JSON or @file\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.modifyProcessInstance(createAmasterClient(appCode), {\n id,\n modification: options.modification,\n format: options.format,\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 .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--candidate-user <user>\", \"Filter by candidate user\")\n .option(\"--candidate-group <group>\", \"Filter by candidate group\")\n .option(\"--name <name>\", \"Filter by exact task name\")\n .option(\"--name-like <name>\", \"Filter by fuzzy task name\")\n .option(\"--task-definition-key <key>\", \"Filter by task definition key\")\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional TaskQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listTasks(createAmasterClient(appCode), {\n processInstanceId: options.processInstanceId,\n assignee: options.assignee,\n candidateUser: options.candidateUser,\n candidateGroup: options.candidateGroup,\n name: options.name,\n nameLike: options.nameLike,\n taskDefinitionKey: options.taskDefinitionKey,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task <id>\")\n .description(\"Get a task by ID\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTask(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-count\")\n .description(\"Get task count\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-a, --assignee <assignee>\", \"Filter by assignee\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--candidate-user <user>\", \"Filter by candidate user\")\n .option(\"--candidate-group <group>\", \"Filter by candidate group\")\n .option(\"--name <name>\", \"Filter by exact task name\")\n .option(\"--name-like <name>\", \"Filter by fuzzy task name\")\n .option(\"--task-definition-key <key>\", \"Filter by task definition key\")\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional TaskQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskCount(createAmasterClient(appCode), {\n processInstanceId: options.processInstanceId,\n assignee: options.assignee,\n candidateUser: options.candidateUser,\n candidateGroup: options.candidateGroup,\n name: options.name,\n nameLike: options.nameLike,\n taskDefinitionKey: options.taskDefinitionKey,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\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 or @file\")\n .addOption(createFormatOption())\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 format: options.format,\n });\n });\n\nbpmCmd\n .command(\"delegate <id>\")\n .description(\"Delegate a task to another user\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .requiredOption(\"--user-id <userId>\", \"Delegate target user ID\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.delegateTask(createAmasterClient(appCode), {\n id,\n userId: options.userId,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-form <id>\")\n .description(\"Get task form metadata\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskForm(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-form-schema <id>\")\n .description(\"Get task form schema\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--redirect <url>\", \"Optional redirect URL\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskFormSchema(createAmasterClient(appCode), {\n id,\n redirect: options.redirect,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-form-variables <id>\")\n .description(\"Get task form variables\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskFormVariables(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-rendered-form <id>\")\n .description(\"Get rendered task form HTML\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskRenderedForm(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-deployed-form <id>\")\n .description(\"Get deployed task form definition\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskDeployedForm(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"start-form <key>\")\n .description(\"Get start form info for a process definition key\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getStartFormInfo(createAmasterClient(appCode), {\n key,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"start-form-variables <key>\")\n .description(\"Get start form variables for a process definition key\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getStartFormVariables(createAmasterClient(appCode), {\n key,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-tasks\")\n .description(\"List history tasks\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--task-assignee <assignee>\", \"Filter by historical task assignee\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--finished\", \"Only return finished history tasks\")\n .option(\"--unfinished\", \"Only return unfinished history tasks\")\n .addOption(new Option(\"--scope <scope>\", \"History task scope\").choices([\"handled\"]))\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional HistoryTaskQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listHistoryTasks(createAmasterClient(appCode), {\n taskAssignee: options.taskAssignee,\n processInstanceId: options.processInstanceId,\n finished: options.finished,\n unfinished: options.unfinished,\n scope: options.scope,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-task-count\")\n .description(\"Get history task count\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--task-assignee <assignee>\", \"Filter by historical task assignee\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--finished\", \"Only count finished history tasks\")\n .option(\"--unfinished\", \"Only count unfinished history tasks\")\n .addOption(new Option(\"--scope <scope>\", \"History task scope\").choices([\"handled\"]))\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional HistoryTaskQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getHistoryTaskCount(createAmasterClient(appCode), {\n taskAssignee: options.taskAssignee,\n processInstanceId: options.processInstanceId,\n finished: options.finished,\n unfinished: options.unfinished,\n scope: options.scope,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-instances\")\n .description(\"List history process instances\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--started-by <userId>\", \"Filter by starter user ID\")\n .option(\"--process-definition-key <key>\", \"Filter by process definition key\")\n .option(\"--finished\", \"Only return finished history instances\")\n .option(\"--unfinished\", \"Only return unfinished history instances\")\n .addOption(new Option(\"--scope <scope>\", \"History process scope\").choices([\"initiated\"]))\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"-q, --query <json>\", \"Additional HistoryProcessInstanceQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listHistoryProcessInstances(createAmasterClient(appCode), {\n startedBy: options.startedBy,\n processDefinitionKey: options.processDefinitionKey,\n finished: options.finished,\n unfinished: options.unfinished,\n scope: options.scope,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-instance-count\")\n .description(\"Get history process instance count\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--started-by <userId>\", \"Filter by starter user ID\")\n .option(\"--process-definition-key <key>\", \"Filter by process definition key\")\n .option(\"--finished\", \"Only count finished history instances\")\n .option(\"--unfinished\", \"Only count unfinished history instances\")\n .addOption(new Option(\"--scope <scope>\", \"History process scope\").choices([\"initiated\"]))\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"-q, --query <json>\", \"Additional HistoryProcessInstanceQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getHistoryProcessInstanceCount(createAmasterClient(appCode), {\n startedBy: options.startedBy,\n processDefinitionKey: options.processDefinitionKey,\n finished: options.finished,\n unfinished: options.unfinished,\n scope: options.scope,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-instance <id>\")\n .description(\"Get a history process instance by ID\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getHistoryProcessInstance(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-activities\")\n .description(\"List history activity instances\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--activity-id <activityId>\", \"Filter by BPMN activity ID\")\n .option(\"--activity-type <activityType>\", \"Filter by activity type\")\n .option(\"--finished\", \"Only return finished history activity instances\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional HistoryActivityQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listHistoryActivityInstances(createAmasterClient(appCode), {\n processInstanceId: options.processInstanceId,\n activityId: options.activityId,\n activityType: options.activityType,\n finished: options.finished,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-variables\")\n .description(\"List history variable instances\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--variable-name <name>\", \"Filter by variable name\")\n .option(\"--deserialize-values\", \"Deserialize complex variable values\")\n .option(\"-q, --query <json>\", \"Additional HistoryVariableQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listHistoryVariableInstances(createAmasterClient(appCode), {\n processInstanceId: options.processInstanceId,\n variableName: options.variableName,\n deserializeValues: options.deserializeValues,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"user-operations\")\n .description(\"List user operation logs\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--task-id <id>\", \"Filter by task ID\")\n .option(\"--user-id <userId>\", \"Filter by user ID\")\n .option(\"--operation-type <type>\", \"Filter by operation type\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"-q, --query <json>\", \"Additional UserOperationLogQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listUserOperationLogs(createAmasterClient(appCode), {\n processInstanceId: options.processInstanceId,\n taskId: options.taskId,\n userId: options.userId,\n operationType: options.operationType,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"delete-history-instance <id>\")\n .description(\"Delete a history process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.deleteHistoryProcessInstance(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"roles\")\n .description(\"List runtime roles\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listRoles(createAmasterClient(appCode), {\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"user-roles <userId>\")\n .description(\"List roles assigned to a user\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (userId: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getUserRoles(createAmasterClient(appCode), {\n userId,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"start-form-deployed <key>\")\n .description(\"Get deployed start form definition for a process definition key\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getDeployedStartForm(createAmasterClient(appCode), {\n key,\n format: options.format,\n });\n });\n\nconst workflowCmd = program\n .command(\"workflow\")\n .description(\"Inspect and run workflows\");\n\nworkflowCmd\n .command(\"list\")\n .description(\"List runnable workflows\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--page <n>\", \"Page number\")\n .option(\"--limit <n>\", \"Page size\")\n .addOption(\n new Option(\"--mode <mode>\", \"Workflow app mode\").choices([\"workflow\", \"chat\", \"completion\", \"agent-chat\"])\n )\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await workflow.listWorkflows(createAmasterClient(appCode), {\n page: options.page ? parseInt(options.page, 10) : undefined,\n limit: options.limit ? parseInt(options.limit, 10) : undefined,\n mode: options.mode,\n format: options.format,\n });\n });\n\nworkflowCmd\n .command(\"get <id>\")\n .alias(\"inspect\")\n .description(\"Get workflow details and input variables by workflow app ID\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await workflow.getWorkflow(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nworkflowCmd\n .command(\"run <name>\")\n .alias(\"execute\")\n .description(\"Run a workflow\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-i, --input <json>\", \"Workflow inputs object as JSON or @file\")\n .option(\"-r, --request <json>\", \"Full WorkflowRunRequest as JSON or @file\")\n .addOption(\n new Option(\"--response-mode <mode>\", \"Workflow response mode\").choices([\"blocking\", \"streaming\"])\n )\n .option(\"--user <user>\", \"Workflow user identifier\")\n .option(\"--files <json>\", \"Workflow files array as JSON or @file\")\n .option(\"--trace-id <traceId>\", \"Workflow trace ID\")\n .addOption(createFormatOption())\n .action(async (name: string, options) => {\n const appCode = resolveAppCode(options.app);\n await workflow.runWorkflow(createAmasterClient(appCode), {\n name,\n input: options.input,\n request: options.request,\n responseMode: options.responseMode,\n user: options.user,\n files: options.files,\n traceId: options.traceId,\n format: options.format,\n });\n });\n\nconst s3Cmd = program\n .command(\"s3\")\n .description(\"Manage S3 files\");\n\ns3Cmd\n .command(\"upload <file>\")\n .description(\"Upload a file\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (file: string, options) => {\n const appCode = resolveAppCode(options.app);\n await s3.uploadFile(createAmasterClient(appCode), {\n file,\n format: options.format,\n });\n });\n\ns3Cmd\n .command(\"download <key> <output>\")\n .description(\"Download a file to a local path\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, output: string, options) => {\n const appCode = resolveAppCode(options.app);\n await s3.downloadFile(createAmasterClient(appCode), {\n key,\n output,\n format: options.format,\n });\n });\n\ns3Cmd\n .command(\"metadata <key>\")\n .description(\"Get file metadata\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await s3.getFileMetadata(createAmasterClient(appCode), {\n key,\n format: options.format,\n });\n });\n\nexport function isDirectCliExecution(entryArg: string | undefined = process.argv[1]): boolean {\n if (!entryArg) {\n return false;\n }\n\n try {\n return realpathSync(entryArg) === realpathSync(fileURLToPath(import.meta.url));\n } catch {\n return false;\n }\n}\n\nif (isDirectCliExecution()) {\n program.parseAsync(process.argv).then(\n () => process.exit(0),\n (err) => {\n console.error(err);\n process.exit(1);\n }\n );\n}\n","import chalk from \"chalk\";\nimport { createClient } from \"@amaster.ai/client\";\nimport { \n getAppConfig, \n saveAuthSession, \n clearAuthSession,\n} from \"../config.js\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\nexport async function login(\n appCode: string,\n options: { username?: string; email?: string; password?: string; format?: string }\n) {\n const spinner = createSpinner(`Logging in to ${appCode}...`, options.format);\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 username = options.username;\n let email = options.email;\n let password = options.password;\n\n if (!username && !email) {\n const { default: inquirer } = await import(\"inquirer\");\n const answers = await inquirer.prompt([\n {\n type: \"input\",\n name: \"login\",\n message: \"Username or Email:\",\n },\n {\n type: \"password\",\n name: \"password\",\n message: \"Password:\",\n when: !password,\n },\n ]);\n\n // Auto-detect if input is email or username\n const login = answers.login;\n if (login.includes('@')) {\n email = login;\n } else {\n username = login;\n }\n password = password || answers.password;\n } else if (!password) {\n const { default: inquirer } = await import(\"inquirer\");\n const answers = await inquirer.prompt([\n {\n type: \"password\",\n name: \"password\",\n message: \"Password:\",\n },\n ]);\n password = answers.password;\n }\n\n const client = createClient({ baseURL: appConfig.baseURL });\n\n // Build login params based on provided credentials\n const loginParams: any = { password: password! };\n if (email) {\n loginParams.email = email;\n } else if (username) {\n loginParams.username = username;\n }\n\n const result = await client.auth.login(loginParams);\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 const loggedInAt = new Date().toISOString();\n const expiresAt = loginData.expiresIn\n ? new Date(Date.now() + loginData.expiresIn * 1000).toISOString()\n : undefined;\n const sessionUser = loginData.user\n ? {\n uid: loginData.user.uid,\n email: loginData.user.email || \"\",\n name: loginData.user.displayName || loginData.user.username || undefined,\n }\n : undefined;\n\n saveAuthSession(appCode, {\n accessToken: loginData.accessToken,\n expiresAt,\n user: sessionUser,\n loggedInAt,\n });\n\n spinner.succeed(`Login successful: ${appCode}`);\n renderOutput(\n {\n appCode,\n baseURL: appConfig.baseURL,\n user: loginData.user ?? null,\n expiresAt: expiresAt ?? null,\n loggedInAt,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(\n chalk.green(\n `\\nWelcome, ${loginData.user?.displayName || loginData.user?.email || loginData.user?.username || email}!`\n )\n );\n console.log(chalk.gray(`App: ${appCode}`));\n console.log(chalk.gray(`URL: ${appConfig.baseURL}`));\n\n if (expiresAt) {\n const expires = new Date(expiresAt);\n console.log(chalk.gray(`Session expires: ${expires.toLocaleString()}`));\n }\n },\n }\n );\n } catch (error) {\n spinner.fail(\"Login failed\");\n throw error;\n }\n}\n\nexport async function logout(appCode: string, options: { format?: string } = {}) {\n const spinner = createSpinner(`Logging out from ${appCode}...`, options.format);\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 renderOutput(\n {\n appCode,\n loggedOut: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Logged out from ${appCode}`));\n },\n }\n );\n } catch (error) {\n spinner.fail(\"Logout failed\");\n throw error;\n }\n}\n\nexport async function getMe(getClient: () => AmasterClient, options: { format?: string } = {}) {\n const spinner = createSpinner(\"Fetching user info...\", options.format);\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 renderOutput(user, {\n format: options.format,\n pretty: () => {\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?.displayName || user?.username || \"N/A\"}`);\n console.log(` ${chalk.bold(\"Status:\")} ${user?.isActive ? \"Active\" : \"Inactive\"}`);\n },\n });\n } catch (error) {\n spinner.fail(\"Failed to fetch user info\");\n throw error;\n }\n}\n","import { Option } from \"commander\";\nimport ora from \"ora\";\n\nexport const OUTPUT_FORMATS = [\"json\", \"pretty\", \"table\", \"ndjson\", \"csv\"] as const;\n\nexport type OutputFormat = (typeof OUTPUT_FORMATS)[number];\n\ntype OutputRow = Record<string, unknown>;\n\nexport interface RenderOutputOptions {\n format?: string;\n pretty?: () => void;\n tableRows?: OutputRow[];\n csvRows?: OutputRow[];\n ndjsonItems?: unknown[];\n}\n\nexport function createFormatOption(description = \"Output format\"): Option {\n return new Option(\n \"--format <format>\",\n `${description}: ${OUTPUT_FORMATS.join(\", \")}`\n )\n .choices([...OUTPUT_FORMATS])\n .default(\"json\");\n}\n\nexport function resolveOutputFormat(format?: string): OutputFormat {\n if (!format) {\n return \"json\";\n }\n\n if ((OUTPUT_FORMATS as readonly string[]).includes(format)) {\n return format as OutputFormat;\n }\n\n throw new Error(`Unsupported output format: ${format}`);\n}\n\nexport function isPrettyOutput(format?: string): boolean {\n return resolveOutputFormat(format) === \"pretty\";\n}\n\nexport function createSpinner(text: string, format?: string) {\n return ora({\n text,\n isSilent: !isPrettyOutput(format),\n }).start();\n}\n\nexport function renderOutput(data: unknown, options: RenderOutputOptions = {}): void {\n const format = resolveOutputFormat(options.format);\n\n switch (format) {\n case \"pretty\":\n if (options.pretty) {\n options.pretty();\n return;\n }\n renderPrettyFallback(data);\n return;\n case \"json\":\n console.log(JSON.stringify(data ?? null, null, 2));\n return;\n case \"ndjson\":\n renderNdjson(options.ndjsonItems ?? data);\n return;\n case \"table\":\n renderTable(options.tableRows ?? inferRows(data));\n return;\n case \"csv\":\n renderCsv(options.csvRows ?? inferRows(data));\n return;\n }\n}\n\nfunction renderPrettyFallback(data: unknown): void {\n const rows = inferRows(data);\n\n if (rows.length === 0) {\n console.log(JSON.stringify(data ?? null, null, 2));\n return;\n }\n\n renderTable(rows);\n}\n\nfunction renderNdjson(data: unknown): void {\n const items = inferNdjsonItems(data);\n\n for (const item of items) {\n console.log(JSON.stringify(item ?? null));\n }\n}\n\nfunction renderTable(rows: OutputRow[]): void {\n console.table(rows);\n}\n\nfunction renderCsv(rows: OutputRow[]): void {\n if (rows.length === 0) {\n return;\n }\n\n const headers: string[] = [];\n\n for (const row of rows) {\n for (const key of Object.keys(row)) {\n if (!headers.includes(key)) {\n headers.push(key);\n }\n }\n }\n\n if (headers.length === 0) {\n return;\n }\n\n console.log(headers.join(\",\"));\n\n for (const row of rows) {\n console.log(headers.map((header) => escapeCsv(row[header])).join(\",\"));\n }\n}\n\nfunction inferNdjsonItems(data: unknown): unknown[] {\n const collection = extractCollection(data);\n if (collection) {\n return collection;\n }\n\n if (Array.isArray(data)) {\n return data;\n }\n\n return [data ?? null];\n}\n\nfunction inferRows(data: unknown): OutputRow[] {\n const collection = extractCollection(data);\n if (collection) {\n return normalizeRows(collection);\n }\n\n if (Array.isArray(data)) {\n return normalizeRows(data);\n }\n\n if (isPlainObject(data)) {\n return [normalizeRow(data)];\n }\n\n return [{ value: normalizeCell(data) }];\n}\n\nfunction extractCollection(data: unknown): unknown[] | null {\n if (!isPlainObject(data)) {\n return null;\n }\n\n if (Array.isArray(data.items)) {\n return data.items;\n }\n\n if (Array.isArray(data.list)) {\n return data.list;\n }\n\n return null;\n}\n\nfunction normalizeRows(items: unknown[]): OutputRow[] {\n return items.map((item) => {\n if (isPlainObject(item)) {\n return normalizeRow(item);\n }\n\n return { value: normalizeCell(item) };\n });\n}\n\nfunction normalizeRow(row: OutputRow): OutputRow {\n return Object.fromEntries(\n Object.entries(row).map(([key, value]) => [key, normalizeCell(value)])\n );\n}\n\nfunction normalizeCell(value: unknown): string | number | boolean | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return value;\n }\n\n return JSON.stringify(value);\n}\n\nfunction escapeCsv(value: unknown): string {\n const cell =\n value === null || value === undefined\n ? \"\"\n : typeof value === \"string\"\n ? value\n : typeof value === \"number\" || typeof value === \"boolean\"\n ? String(value)\n : JSON.stringify(value);\n\n if (/[\",\\n]/.test(cell)) {\n return `\"${cell.replace(/\"/g, \"\\\"\\\"\")}\"`;\n }\n\n return cell;\n}\n\nfunction isPlainObject(value: unknown): value is OutputRow {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import { readFileSync } from \"node:fs\";\nimport chalk from \"chalk\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\ntype EntityRecord = Record<string, unknown>;\ntype BulkUpdateItem = EntityRecord & { id: string | number };\n\nfunction isPlainObject(value: unknown): value is EntityRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction resolveInputSource(input: string): string {\n if (!input.startsWith(\"@\")) {\n return input;\n }\n\n const filePath = input.slice(1);\n if (!filePath) {\n throw new Error(\"File path is required after '@'.\");\n }\n\n return readFileSync(filePath, \"utf8\");\n}\n\nfunction parseJsonInput(input: string, label: string): unknown {\n const source = resolveInputSource(input).trim();\n\n if (!source) {\n throw new Error(`${label} is required.`);\n }\n\n try {\n return JSON.parse(source);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid ${label}: ${reason}`);\n }\n}\n\nasync function promptForJson(message: string, defaultValue: string): Promise<string> {\n const { default: inquirer } = await import(\"inquirer\");\n const { jsonData } = await inquirer.prompt([\n {\n type: \"editor\",\n name: \"jsonData\",\n message,\n default: defaultValue,\n },\n ]);\n\n return jsonData;\n}\n\nasync function loadJsonObjectInput(\n input: string | undefined,\n label: string,\n promptMessage: string\n): Promise<EntityRecord> {\n const source = input ?? (await promptForJson(promptMessage, \"{}\"));\n const value = parseJsonInput(source, label);\n\n if (!isPlainObject(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n\n return value;\n}\n\nasync function loadJsonArrayInput(\n input: string | undefined,\n label: string,\n promptMessage: string\n): Promise<unknown[]> {\n const source = input ?? (await promptForJson(promptMessage, \"[]\"));\n const value = parseJsonInput(source, label);\n\n if (!Array.isArray(value)) {\n throw new Error(`${label} must be a JSON array.`);\n }\n\n return value;\n}\n\nfunction loadOptionalJsonObjectInput(input: string | undefined, label: string): EntityRecord {\n if (!input) {\n return {};\n }\n\n const value = parseJsonInput(input, label);\n if (!isPlainObject(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n\n return value;\n}\n\nfunction parseCommaSeparatedValues(value: string | undefined): string[] | undefined {\n if (!value) {\n return undefined;\n }\n\n const values = value\n .split(\",\")\n .map((entry) => entry.trim())\n .filter(Boolean);\n\n return values.length > 0 ? values : undefined;\n}\n\nfunction validateBulkUpdateItems(items: unknown[]): BulkUpdateItem[] {\n return items.map((item, index) => {\n if (!isPlainObject(item)) {\n throw new Error(`Bulk update item at index ${index} must be a JSON object.`);\n }\n\n if (typeof item.id !== \"string\" && typeof item.id !== \"number\") {\n throw new Error(`Bulk update item at index ${index} must include an 'id'.`);\n }\n\n return item as BulkUpdateItem;\n });\n}\n\nfunction parseIdsInput(input: string): Array<string | number> {\n const source = resolveInputSource(input).trim();\n\n if (!source) {\n throw new Error(\"IDs are required.\");\n }\n\n if (source.startsWith(\"[\")) {\n const value = parseJsonInput(input, \"IDs\");\n if (!Array.isArray(value)) {\n throw new Error(\"IDs must be a JSON array.\");\n }\n\n return value.map((id, index) => {\n if (typeof id !== \"string\" && typeof id !== \"number\") {\n throw new Error(`ID at index ${index} must be a string or number.`);\n }\n return id;\n });\n }\n\n const ids = source\n .split(/[,\\n]/)\n .map((id) => id.trim())\n .filter(Boolean);\n\n if (ids.length === 0) {\n throw new Error(\"IDs are required.\");\n }\n\n return ids;\n}\n\nasync function loadIdsInput(input: string | undefined): Promise<Array<string | number>> {\n if (input) {\n return parseIdsInput(input);\n }\n\n const { default: inquirer } = await import(\"inquirer\");\n const { ids } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"ids\",\n message: \"Enter IDs (comma-separated or JSON array):\",\n },\n ]);\n\n return parseIdsInput(ids);\n}\n\nfunction exitWithCommandError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: unknown\n): never {\n spinner.fail(failureMessage);\n const details = error instanceof Error ? error.message : String(error);\n if (details) {\n console.error(chalk.red(details));\n }\n process.exit(1);\n}\n\nfunction buildListQueryParams(options: {\n query?: string;\n fields?: string;\n relations?: string;\n keyword?: string;\n keywordFields?: string;\n orderBy?: string;\n orderDir?: string;\n orders?: string;\n filter?: string;\n limit?: number;\n offset?: number;\n}): EntityRecord {\n const params = loadOptionalJsonObjectInput(options.query, \"query params\");\n const fields = parseCommaSeparatedValues(options.fields);\n const relations = parseCommaSeparatedValues(options.relations);\n const keywordFields = parseCommaSeparatedValues(options.keywordFields);\n\n if (keywordFields && !options.keyword) {\n throw new Error(\"--keyword-fields requires --keyword.\");\n }\n\n if (options.orderDir && !options.orderBy) {\n throw new Error(\"--order-dir requires --order-by.\");\n }\n\n if (options.orders && (options.orderBy || options.orderDir)) {\n throw new Error(\"--orders cannot be used together with --order-by or --order-dir.\");\n }\n\n if (fields) {\n params.__fields = fields;\n }\n\n if (relations) {\n params.__relations = relations;\n }\n\n if (options.keyword) {\n params.__keywords = keywordFields ? { fields: keywordFields, value: options.keyword } : options.keyword;\n }\n\n if (options.orderBy) {\n params.orderBy = options.orderBy;\n }\n\n if (options.orderDir) {\n params.orderDir = options.orderDir;\n }\n\n if (options.orders) {\n params.__orders = options.orders;\n }\n\n if (options.filter) {\n params.__filter = loadOptionalJsonObjectInput(options.filter, \"filter\");\n }\n\n if (options.limit !== undefined) {\n params.limit = options.limit;\n }\n\n if (options.offset !== undefined) {\n params.offset = options.offset;\n }\n\n return params;\n}\n\nexport async function listEntities(\n client: AmasterClient,\n options: {\n namespace: string;\n entity: string;\n page?: number;\n pageSize?: number;\n query?: string;\n fields?: string;\n relations?: string;\n keyword?: string;\n keywordFields?: string;\n orderBy?: string;\n orderDir?: string;\n orders?: string;\n filter?: string;\n limit?: number;\n offset?: number;\n format?: string;\n }\n) {\n const spinner = createSpinner(`Fetching ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const query = buildListQueryParams(options);\n const paginationParams: EntityRecord = {};\n\n if (options.page !== undefined) {\n paginationParams.page = options.page;\n }\n\n if (options.pageSize !== undefined) {\n paginationParams.perPage = options.pageSize;\n }\n\n const result = await entityClient.list(options.namespace, options.entity, {\n ...query,\n ...paginationParams,\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.stop();\n\n const listData = result.data as\n | Array<Record<string, unknown>>\n | { items?: Array<Record<string, unknown>>; list?: Array<Record<string, unknown>>; total?: number }\n | null\n | undefined;\n\n let items: Array<Record<string, unknown>> = [];\n let total = 0;\n if (Array.isArray(listData)) {\n items = listData;\n total = items.length;\n } else if (listData?.items) {\n items = listData.items;\n total = listData.total || items.length;\n } else if (listData?.list) {\n items = listData.list;\n total = listData.total || items.length;\n }\n\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐ฆ ${options.entity} in ${options.namespace}`));\n console.log(chalk.gray(`ๅ
ฑ ${total} ๆก่ฎฐๅฝ:\\n`));\n\n if (items.length === 0) {\n console.log(chalk.gray(\" ๆๆ ๆฐๆฎ\"));\n return;\n }\n\n const firstItem = items[0]!;\n const keys = Object.keys(firstItem).slice(0, 8);\n\n const widths: Record<string, number> = {};\n keys.forEach((key) => {\n const maxValueWidth = Math.max(\n key.length,\n ...items.map((item) => {\n const val = item[key];\n if (val === null || val === undefined) return 4;\n const str = typeof val === \"object\" ? JSON.stringify(val) : String(val);\n return str.length;\n })\n );\n widths[key] = Math.min(maxValueWidth + 2, 30);\n });\n\n const headerLine = keys\n .map((key) => {\n const width = widths[key] ?? 0;\n return chalk.bold(key.slice(0, width).padEnd(width));\n })\n .join(\"โ\");\n console.log(\" \" + headerLine);\n console.log(\" \" + keys.map((key) => \"โ\".repeat(widths[key] ?? 0)).join(\"โผ\"));\n\n for (const item of items) {\n const rowLine = keys\n .map((key) => {\n const width = widths[key] ?? 0;\n let val = item[key];\n if (val === null || val === undefined) val = \"null\";\n const str =\n typeof val === \"object\"\n ? JSON.stringify(val).slice(0, width - 2)\n : String(val).slice(0, width - 2);\n return str.padEnd(width);\n })\n .join(\"โ\");\n console.log(\" \" + rowLine);\n }\n\n console.log();\n if (items.length < total) {\n console.log(chalk.gray(` ... ่ฟๆ ${total - items.length} ๆก่ฎฐๅฝ`));\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch entities\", error);\n }\n}\n\nexport async function getEntity(\n client: AmasterClient,\n options: { namespace: string; entity: string; id: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const result = await entityClient.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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐ ${options.entity}\\n`));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch entity\", error);\n }\n}\n\nexport async function createEntity(\n client: AmasterClient,\n options: { namespace: string; entity: string; data?: string; format?: string }\n) {\n const spinner = createSpinner(`Creating ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const data = await loadJsonObjectInput(options.data, \"entity data\", \"Enter JSON data:\");\n\n const result = await entityClient.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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(\"\\nCreated entity:\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to create entity\", error);\n }\n}\n\nexport async function updateEntity(\n client: AmasterClient,\n options: { namespace: string; entity: string; id: string; data?: string; format?: string }\n) {\n const spinner = createSpinner(`Updating ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const data = await loadJsonObjectInput(options.data, \"entity data\", \"Enter JSON data:\");\n\n const result = await entityClient.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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(\"\\nUpdated entity:\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to update entity\", error);\n }\n}\n\nexport async function deleteEntity(\n client: AmasterClient,\n options: { namespace: string; entity: string; id: string; format?: string }\n) {\n const spinner = createSpinner(`Deleting ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const result = await entityClient.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 renderOutput(\n {\n namespace: options.namespace,\n entity: options.entity,\n id: options.id,\n deleted: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`\\nDeleted ${options.entity} with ID: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to delete entity\", error);\n }\n}\n\nexport async function listEntityOptions(\n client: AmasterClient,\n options: { namespace: string; entity: string; fields?: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching ${options.entity} options...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const fields = parseCommaSeparatedValues(options.fields);\n const result = await entityClient.options(options.namespace, options.entity, fields);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch entity options\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.length || 0} options`);\n renderOutput(result.data || [], {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐งพ ${options.entity} options\\n`));\n console.log(JSON.stringify(result.data || [], null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch entity options\", error);\n }\n}\n\nexport async function bulkUpdateEntities(\n client: AmasterClient,\n options: { namespace: string; entity: string; items?: string; format?: string }\n) {\n const spinner = createSpinner(`Bulk updating ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const rawItems = await loadJsonArrayInput(\n options.items,\n \"bulk update items\",\n \"Enter JSON array of items:\"\n );\n const items = validateBulkUpdateItems(rawItems);\n const result = await entityClient.bulkUpdate(options.namespace, options.entity, items);\n\n if (result.error) {\n spinner.fail(\"Failed to bulk update entities\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Updated ${items.length} entities`);\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`\\nBulk updated ${items.length} ${options.entity} records:`));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to bulk update entities\", error);\n }\n}\n\nexport async function bulkDeleteEntities(\n client: AmasterClient,\n options: { namespace: string; entity: string; ids?: string; format?: string }\n) {\n const spinner = createSpinner(`Bulk deleting ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const ids = await loadIdsInput(options.ids);\n const result = await entityClient.bulkDelete(options.namespace, options.entity, ids);\n\n if (result.error) {\n spinner.fail(\"Failed to bulk delete entities\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Deleted ${ids.length} entities`);\n renderOutput(\n {\n namespace: options.namespace,\n entity: options.entity,\n ids,\n deleted: true,\n count: ids.length,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`\\nDeleted ${ids.length} ${options.entity} records.`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to bulk delete entities\", error);\n }\n}\n\nexport async function listEntityTypes(\n client: AmasterClient,\n options: { namespace: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching entity types...\", options.format);\n\n try {\n const entityClient = client.entity as any;\n const result = await entityClient.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 renderOutput(types, {\n format: options.format,\n pretty: () => {\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 },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch entity types\", error);\n }\n}\n","import { readFileSync } from \"node:fs\";\nimport chalk from \"chalk\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\ntype ModelInfo = {\n modelId: string;\n tableName: string;\n description?: string;\n};\n\ntype DataSourceWithModels = {\n sourceId: string;\n name: string;\n systemBuilt: boolean;\n synchronizeMode: number;\n models: ModelInfo[];\n};\n\ntype CreateTableStatement = {\n tableName: string;\n createTableSql: string;\n};\n\nfunction resolveInputSource(input: string): string {\n if (!input.startsWith(\"@\")) {\n return input;\n }\n\n const filePath = input.slice(1);\n if (!filePath) {\n throw new Error(\"File path is required after '@'.\");\n }\n\n return readFileSync(filePath, \"utf8\");\n}\n\nfunction exitWithCommandError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: unknown\n): never {\n spinner.fail(failureMessage);\n const details = error instanceof Error ? error.message : String(error);\n if (details) {\n console.error(chalk.red(details));\n }\n process.exit(1);\n}\n\nfunction parseTableNamesInput(input: string | undefined): string[] | undefined {\n if (!input) {\n return undefined;\n }\n\n const source = resolveInputSource(input).trim();\n if (!source) {\n return undefined;\n }\n\n if (source.startsWith(\"[\")) {\n let parsed: unknown;\n try {\n parsed = JSON.parse(source);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid table list: ${reason}`);\n }\n\n if (!Array.isArray(parsed)) {\n throw new Error(\"Table list must be a JSON array.\");\n }\n\n return parsed.map((value, index) => {\n if (typeof value !== \"string\") {\n throw new Error(`Table name at index ${index} must be a string.`);\n }\n return value;\n });\n }\n\n const values = source\n .split(/[,\\n]/)\n .map((entry) => entry.trim())\n .filter(Boolean);\n\n return values.length > 0 ? values : undefined;\n}\n\nexport async function listDatasources(\n client: AmasterClient,\n options: { format?: string } = {}\n) {\n const spinner = createSpinner(\"Fetching datasources...\", options.format);\n\n try {\n const result = await client.http.request<DataSourceWithModels[]>({\n url: \"/api/entity/source/list_with_models\",\n method: \"GET\",\n });\n\n if (result.error) {\n spinner.fail(\"Failed to fetch datasources\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const datasources = result.data || [];\n spinner.succeed(`Found ${datasources.length} datasource${datasources.length === 1 ? \"\" : \"s\"}`);\n\n renderOutput(datasources, {\n format: options.format,\n tableRows: datasources.map((source) => ({\n sourceId: source.sourceId,\n name: source.name,\n systemBuilt: source.systemBuilt,\n synchronizeMode: source.synchronizeMode,\n modelCount: source.models?.length || 0,\n })),\n csvRows: datasources.map((source) => ({\n sourceId: source.sourceId,\n name: source.name,\n systemBuilt: source.systemBuilt,\n synchronizeMode: source.synchronizeMode,\n modelCount: source.models?.length || 0,\n })),\n ndjsonItems: datasources,\n pretty: () => {\n console.log(chalk.blue(\"\\nData Sources\\n\"));\n if (datasources.length === 0) {\n console.log(chalk.gray(\"No datasources found.\"));\n return;\n }\n\n for (const source of datasources) {\n console.log(`${chalk.green(\"โข\")} ${chalk.bold(source.name)} ${chalk.gray(`(${source.sourceId})`)}`);\n console.log(` ${chalk.gray(\"System Built:\")} ${source.systemBuilt}`);\n console.log(` ${chalk.gray(\"Sync Mode:\")} ${source.synchronizeMode}`);\n\n if (!source.models || source.models.length === 0) {\n console.log(` ${chalk.gray(\"Models:\")} none`);\n continue;\n }\n\n console.log(` ${chalk.gray(\"Models:\")}`);\n for (const model of source.models) {\n const suffix = model.description ? ` ${chalk.gray(`- ${model.description}`)}` : \"\";\n console.log(` - ${chalk.bold(model.tableName)} ${chalk.gray(`(${model.modelId})`)}${suffix}`);\n }\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch datasources\", error);\n }\n}\n\nexport async function getTableSchema(\n client: AmasterClient,\n options: { sourceId: string; tables?: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching table schema for ${options.sourceId}...`, options.format);\n\n try {\n const tableNames = parseTableNamesInput(options.tables);\n const search = new URLSearchParams();\n\n if (tableNames && tableNames.length > 0) {\n search.set(\"tableNames\", tableNames.join(\",\"));\n }\n\n const query = search.toString();\n const url = `/api/entity/source/${encodeURIComponent(options.sourceId)}/create_table_statements${\n query ? `?${query}` : \"\"\n }`;\n\n const result = await client.http.request<CreateTableStatement[]>({\n url,\n method: \"GET\",\n });\n\n if (result.error) {\n spinner.fail(\"Failed to fetch table schema\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const tables = result.data || [];\n spinner.succeed(`Fetched schema for ${tables.length} table${tables.length === 1 ? \"\" : \"s\"}`);\n\n renderOutput(tables, {\n format: options.format,\n tableRows: tables.map((table) => ({\n tableName: table.tableName,\n createTableSql: table.createTableSql,\n })),\n csvRows: tables.map((table) => ({\n tableName: table.tableName,\n createTableSql: table.createTableSql,\n })),\n ndjsonItems: tables,\n pretty: () => {\n console.log(chalk.blue(`\\nTable Schemas: ${options.sourceId}\\n`));\n if (tables.length === 0) {\n console.log(chalk.gray(\"No tables found.\"));\n return;\n }\n\n for (const table of tables) {\n console.log(chalk.green(table.tableName));\n console.log(table.createTableSql);\n console.log();\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch table schema\", error);\n }\n}\n","import { readFileSync } from \"node:fs\";\nimport chalk from \"chalk\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\ntype JsonObject = Record<string, unknown>;\n\nfunction isPlainObject(value: unknown): value is JsonObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction resolveInputSource(input: string): string {\n if (!input.startsWith(\"@\")) {\n return input;\n }\n\n const filePath = input.slice(1);\n if (!filePath) {\n throw new Error(\"File path is required after '@'.\");\n }\n\n return readFileSync(filePath, \"utf8\");\n}\n\nfunction parseJsonInput(input: string, label: string): unknown {\n const source = resolveInputSource(input).trim();\n\n if (!source) {\n throw new Error(`${label} is required.`);\n }\n\n try {\n return JSON.parse(source);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid ${label}: ${reason}`);\n }\n}\n\nasync function promptForJson(message: string, defaultValue: string): Promise<string> {\n const { default: inquirer } = await import(\"inquirer\");\n const { jsonData } = await inquirer.prompt([\n {\n type: \"editor\",\n name: \"jsonData\",\n message,\n default: defaultValue,\n },\n ]);\n\n return jsonData;\n}\n\nasync function loadJsonObjectInput(\n input: string | undefined,\n label: string,\n promptMessage: string\n): Promise<JsonObject> {\n const source = input ?? (await promptForJson(promptMessage, \"{}\"));\n const value = parseJsonInput(source, label);\n\n if (!isPlainObject(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n\n return value;\n}\n\nfunction loadOptionalJsonObjectInput(input: string | undefined, label: string): JsonObject {\n if (!input) {\n return {};\n }\n\n const value = parseJsonInput(input, label);\n if (!isPlainObject(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n\n return value;\n}\n\nfunction exitWithCommandError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: unknown\n): never {\n spinner.fail(failureMessage);\n const details = error instanceof Error ? error.message : String(error);\n if (details) {\n console.error(chalk.red(details));\n }\n process.exit(1);\n}\n\nfunction extractClientErrorMessage(error: { message?: string | null } | null | undefined): string {\n return error?.message || \"Unknown BPM client error.\";\n}\n\nfunction exitWithClientError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: { message?: string | null } | null | undefined,\n diagnosticMessage?: string | null\n): never {\n spinner.fail(failureMessage);\n console.error(chalk.red(diagnosticMessage || extractClientErrorMessage(error)));\n process.exit(1);\n}\n\nfunction inspectStartEventFormConfiguration(bpmnXml: string): {\n startEventCount: number;\n hasFormKey: boolean;\n hasCamundaFormRef: boolean;\n hasCamundaFormData: boolean;\n} {\n const startEventMatches =\n bpmnXml.match(/<[^>]*startEvent\\b[\\s\\S]*?(?:<\\/[^>]*startEvent>|\\/>)/g) || [];\n\n return {\n startEventCount: startEventMatches.length,\n hasFormKey: startEventMatches.some((eventXml) => /\\bformKey\\s*=/.test(eventXml)),\n hasCamundaFormRef: startEventMatches.some((eventXml) => /\\bcamunda:formRef\\s*=/.test(eventXml)),\n hasCamundaFormData: startEventMatches.some((eventXml) => /<camunda:formData\\b/.test(eventXml)),\n };\n}\n\nasync function diagnoseTaskFormSchemaError(\n bpmClient: any,\n taskId: string,\n originalMessage: string\n): Promise<string | null> {\n try {\n const taskFormResult = await bpmClient.getTaskForm(taskId);\n if (taskFormResult?.error || !taskFormResult?.data) {\n return null;\n }\n\n const key =\n typeof taskFormResult.data.key === \"string\" && taskFormResult.data.key.length > 0\n ? taskFormResult.data.key\n : null;\n const camundaFormRef = taskFormResult.data.camundaFormRef;\n\n if (!camundaFormRef && key?.includes(\"/rendered-form\")) {\n return [\n `Task '${taskId}' uses an embedded/generated Camunda form (${key}) rather than a schema-backed form.`,\n \"`bpm task-form-schema` is expected to return 404 in this case.\",\n \"Use `bpm task-form`, `bpm task-rendered-form`, or `bpm task-form-variables` instead.\",\n ].join(\" \");\n }\n\n if (!camundaFormRef && !key) {\n return [\n `Task '${taskId}' does not expose schema-backed form metadata.`,\n \"Use `bpm task-form` or `bpm task-form-variables` instead.\",\n ].join(\" \");\n }\n\n if (camundaFormRef) {\n return [\n `Task '${taskId}' appears to reference a Camunda form via camundaFormRef, but the backend returned 404 for /form-schema.`,\n `Original error: ${originalMessage}`,\n ].join(\" \");\n }\n } catch {\n // Ignore diagnostics failures and fall back to the original error.\n }\n\n return null;\n}\n\nasync function diagnoseStartFormError(\n bpmClient: any,\n processKey: string,\n originalMessage: string\n): Promise<string | null> {\n let tenantId: string | null = null;\n let startFormConfig:\n | {\n startEventCount: number;\n hasFormKey: boolean;\n hasCamundaFormRef: boolean;\n hasCamundaFormData: boolean;\n }\n | null = null;\n\n try {\n const definitionsResult = await bpmClient.getProcessDefinitions({ key: processKey, latestVersion: true });\n if (!definitionsResult?.error && Array.isArray(definitionsResult?.data) && definitionsResult.data.length > 0) {\n const latestDefinition = definitionsResult.data[0];\n tenantId = latestDefinition?.tenantId || null;\n }\n } catch {\n // Ignore diagnostics failures and fall back to the original error.\n }\n\n try {\n const xmlResult = await bpmClient.getProcessXml(processKey);\n if (!xmlResult?.error && typeof xmlResult?.data?.bpmn20Xml === \"string\") {\n startFormConfig = inspectStartEventFormConfiguration(xmlResult.data.bpmn20Xml);\n }\n } catch {\n // Ignore diagnostics failures and fall back to the original error.\n }\n\n if (\n startFormConfig &&\n !startFormConfig.hasFormKey &&\n !startFormConfig.hasCamundaFormRef &&\n !startFormConfig.hasCamundaFormData\n ) {\n const tenantHint =\n tenantId && /no tenant-id/i.test(originalMessage)\n ? ` The process definition is tenant-scoped ('${tenantId}'), and this endpoint also appears to resolve by key without tenant context.`\n : \"\";\n\n return [\n `Process '${processKey}' exists, but its start event does not define formKey, camunda:formRef, or camunda:formData.`,\n \"`bpm start-form*` endpoints are expected to fail for this model.\",\n `Use \\`bpm xml ${processKey}\\` to inspect the BPMN or configure a start form first.${tenantHint}`,\n ].join(\" \");\n }\n\n if (tenantId && /no tenant-id/i.test(originalMessage)) {\n return [\n `Process '${processKey}' exists under tenant '${tenantId}', but the backend start-form endpoint resolved the process definition by key without tenant-id.`,\n \"Current CLI/SDK sends only processKey for this endpoint.\",\n \"This is likely a backend multi-tenant lookup limitation rather than a wrong CLI parameter.\",\n ].join(\" \");\n }\n\n if (/formKey/i.test(originalMessage) && /camunda:formRef/i.test(originalMessage)) {\n return [\n `Process '${processKey}' does not expose a deployed start form because neither formKey nor camunda:formRef is configured on the start event.`,\n \"If you need a start form, add formKey or camunda:formRef in the BPMN model.\",\n ].join(\" \");\n }\n\n return null;\n}\n\nfunction buildProcessDefinitionQueryParams(options: {\n query?: string;\n key?: string;\n name?: string;\n latestVersion?: boolean;\n active?: boolean;\n suspended?: boolean;\n sortBy?: string;\n sortOrder?: string;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"process query params\");\n\n if (options.key) params.key = options.key;\n if (options.name) params.name = options.name;\n if (options.latestVersion !== undefined) params.latestVersion = options.latestVersion;\n if (options.active !== undefined) params.active = options.active;\n if (options.suspended !== undefined) params.suspended = options.suspended;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n\n return params;\n}\n\nfunction buildTaskQueryParams(options: {\n query?: string;\n processInstanceId?: string;\n assignee?: string;\n candidateUser?: string;\n candidateGroup?: string;\n name?: string;\n nameLike?: string;\n taskDefinitionKey?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"task query params\");\n\n if (options.processInstanceId) params.processInstanceId = options.processInstanceId;\n if (options.assignee) params.assignee = options.assignee;\n if (options.candidateUser) params.candidateUser = options.candidateUser;\n if (options.candidateGroup) params.candidateGroup = options.candidateGroup;\n if (options.name) params.name = options.name;\n if (options.nameLike) params.nameLike = options.nameLike;\n if (options.taskDefinitionKey) params.taskDefinitionKey = options.taskDefinitionKey;\n if (options.firstResult !== undefined) params.firstResult = options.firstResult;\n if (options.maxResults !== undefined) params.maxResults = options.maxResults;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n\n return params;\n}\n\nfunction buildProcessInstanceQueryParams(options: {\n query?: string;\n processDefinitionKey?: string;\n active?: boolean;\n firstResult?: number;\n maxResults?: number;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"process instance query params\");\n\n if (options.processDefinitionKey) params.processDefinitionKey = options.processDefinitionKey;\n if (options.active !== undefined) params.active = options.active;\n if (options.firstResult !== undefined) params.firstResult = options.firstResult;\n if (options.maxResults !== undefined) params.maxResults = options.maxResults;\n\n return params;\n}\n\nfunction buildHistoryTaskQueryParams(options: {\n query?: string;\n taskAssignee?: string;\n processInstanceId?: string;\n finished?: boolean;\n unfinished?: boolean;\n scope?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"history task query params\");\n\n if (options.taskAssignee) params.taskAssignee = options.taskAssignee;\n if (options.processInstanceId) params.processInstanceId = options.processInstanceId;\n if (options.finished !== undefined) params.finished = options.finished;\n if (options.unfinished !== undefined) params.unfinished = options.unfinished;\n if (options.scope) params.scope = options.scope;\n if (options.firstResult !== undefined) params.firstResult = options.firstResult;\n if (options.maxResults !== undefined) params.maxResults = options.maxResults;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n\n return params;\n}\n\nfunction buildHistoryProcessInstanceQueryParams(options: {\n query?: string;\n startedBy?: string;\n finished?: boolean;\n unfinished?: boolean;\n processDefinitionKey?: string;\n scope?: string;\n sortBy?: string;\n sortOrder?: string;\n firstResult?: number;\n maxResults?: number;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"history process instance query params\");\n\n if (options.startedBy) params.startedBy = options.startedBy;\n if (options.finished !== undefined) params.finished = options.finished;\n if (options.unfinished !== undefined) params.unfinished = options.unfinished;\n if (options.processDefinitionKey) params.processDefinitionKey = options.processDefinitionKey;\n if (options.scope) params.scope = options.scope;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n if (options.firstResult !== undefined) params.firstResult = options.firstResult;\n if (options.maxResults !== undefined) params.maxResults = options.maxResults;\n\n return params;\n}\n\nfunction buildHistoryActivityQueryParams(options: {\n query?: string;\n processInstanceId?: string;\n activityId?: string;\n activityType?: string;\n finished?: boolean;\n sortBy?: string;\n sortOrder?: string;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"history activity query params\");\n\n if (options.processInstanceId) params.processInstanceId = options.processInstanceId;\n if (options.activityId) params.activityId = options.activityId;\n if (options.activityType) params.activityType = options.activityType;\n if (options.finished !== undefined) params.finished = options.finished;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n\n return params;\n}\n\nfunction buildHistoryVariableQueryParams(options: {\n query?: string;\n processInstanceId?: string;\n variableName?: string;\n deserializeValues?: boolean;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"history variable query params\");\n\n if (options.processInstanceId) params.processInstanceId = options.processInstanceId;\n if (options.variableName) params.variableName = options.variableName;\n if (options.deserializeValues !== undefined) params.deserializeValues = options.deserializeValues;\n\n return params;\n}\n\nfunction buildUserOperationLogQueryParams(options: {\n query?: string;\n processInstanceId?: string;\n taskId?: string;\n userId?: string;\n operationType?: string;\n sortBy?: string;\n sortOrder?: string;\n firstResult?: number;\n maxResults?: number;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"user operation log query params\");\n\n if (options.processInstanceId) params.processInstanceId = options.processInstanceId;\n if (options.taskId) params.taskId = options.taskId;\n if (options.userId) params.userId = options.userId;\n if (options.operationType) params.operationType = options.operationType;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n if (options.firstResult !== undefined) params.firstResult = options.firstResult;\n if (options.maxResults !== undefined) params.maxResults = options.maxResults;\n\n return params;\n}\n\nexport async function listProcesses(\n client: AmasterClient,\n options: {\n query?: string;\n key?: string;\n name?: string;\n latestVersion?: boolean;\n active?: boolean;\n suspended?: boolean;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching process definitions...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildProcessDefinitionQueryParams(options);\n const result = await bpmClient.getProcessDefinitions(params);\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 renderOutput(processes, {\n format: options.format,\n pretty: () => {\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(\"ID:\")} ${proc.id || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Name:\")} ${proc.name || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Version:\")} ${proc.version || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Suspended:\")} ${proc.suspended ? \"Yes\" : \"No\"}`);\n console.log();\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch processes\", error);\n }\n}\n\nexport async function getProcessXml(\n client: AmasterClient,\n options: { key: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching BPMN XML for ${options.key}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getProcessXml(options.key);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch process XML\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process XML retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐ BPMN XML: ${options.key}\\n`));\n console.log(result.data?.bpmn20Xml || \"\");\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch process XML\", error);\n }\n}\n\nexport async function startProcess(\n client: AmasterClient,\n options: { key: string; variables?: string; format?: string }\n) {\n const spinner = createSpinner(`Starting process: ${options.key}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const variables = loadOptionalJsonObjectInput(options.variables, \"process variables\");\n\n const result = await bpmClient.startProcess(options.key, variables);\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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\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 },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to start process\", error);\n }\n}\n\nexport async function listProcessInstances(\n client: AmasterClient,\n options: {\n query?: string;\n processDefinitionKey?: string;\n active?: boolean;\n firstResult?: number;\n maxResults?: number;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching process instances...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildProcessInstanceQueryParams(options);\n const result = await bpmClient.getProcessInstances(params);\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 renderOutput(instances, {\n format: options.format,\n pretty: () => {\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/A\"}`);\n console.log(` ${chalk.gray(\"Business Key:\")} ${instance.businessKey || \"N/A\"}`);\n console.log(\n ` ${chalk.gray(\"Status:\")} ${instance.ended ? \"Ended\" : instance.suspended ? \"Suspended\" : \"Active\"}`\n );\n console.log();\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch process instances\", error);\n }\n}\n\nexport async function getProcessInstance(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching process instance...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Process Instance\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch process instance\", error);\n }\n}\n\nexport async function getActivityInstanceTree(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching activity instance tree...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getActivityInstanceTree(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch activity instance tree\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Activity instance tree retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ณ Activity Instance Tree\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch activity instance tree\", error);\n }\n}\n\nexport async function getActiveActivities(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching active activities...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getActiveActivities(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch active activities\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const activities = Array.isArray(result.data) ? result.data : [];\n spinner.succeed(`Found ${activities.length} active activities`);\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\nโก Active Activities\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch active activities\", error);\n }\n}\n\nexport async function getRuntimeVariables(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching runtime variables...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getRuntimeVariables(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch runtime variables\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Runtime variables retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งฎ Runtime Variables\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch runtime variables\", error);\n }\n}\n\nexport async function getProcessVariables(\n client: AmasterClient,\n options: { id: string; name?: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching process variables...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getProcessVariables({\n processInstanceId: options.id,\n variableName: options.name,\n });\n\n if (result.error) {\n spinner.fail(\"Failed to fetch process variables\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.length || 0} variables`);\n renderOutput(result.data || [], {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งพ Process Variables\\n\"));\n console.log(JSON.stringify(result.data || [], null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch process variables\", error);\n }\n}\n\nexport async function deleteProcessInstance(\n client: AmasterClient,\n options: { id: string; skipCustomListeners?: boolean; format?: string }\n) {\n const spinner = createSpinner(`Deleting process instance: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.deleteProcessInstance(options.id, {\n skipCustomListeners: options.skipCustomListeners,\n });\n\n if (result.error) {\n spinner.fail(\"Failed to delete process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process instance deleted\");\n renderOutput(\n {\n id: options.id,\n deleted: true,\n skipCustomListeners: !!options.skipCustomListeners,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Deleted process instance: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to delete process instance\", error);\n }\n}\n\nexport async function suspendProcessInstance(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(`Suspending process instance: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.suspendProcessInstance(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to suspend process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process instance suspended\");\n renderOutput(\n {\n id: options.id,\n suspended: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Suspended process instance: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to suspend process instance\", error);\n }\n}\n\nexport async function activateProcessInstance(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(`Activating process instance: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.activateProcessInstance(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to activate process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process instance activated\");\n renderOutput(\n {\n id: options.id,\n activated: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Activated process instance: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to activate process instance\", error);\n }\n}\n\nexport async function modifyProcessInstance(\n client: AmasterClient,\n options: { id: string; modification?: string; format?: string }\n) {\n const spinner = createSpinner(`Modifying process instance: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const modification = await loadJsonObjectInput(\n options.modification,\n \"process modification\",\n \"Enter process modification JSON:\"\n );\n const result = await bpmClient.modifyProcessInstance(options.id, modification);\n\n if (result.error) {\n spinner.fail(\"Failed to modify process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process instance modified\");\n renderOutput(\n {\n id: options.id,\n modified: true,\n modification,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Modified process instance: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to modify process instance\", error);\n }\n}\n\nexport async function listTasks(\n client: AmasterClient,\n options: {\n query?: string;\n processInstanceId?: string;\n assignee?: string;\n candidateUser?: string;\n candidateGroup?: string;\n name?: string;\n nameLike?: string;\n taskDefinitionKey?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n }\n) {\n const spinner = createSpinner(\"Fetching tasks...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildTaskQueryParams(options);\n const result = await bpmClient.getTasks(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 renderOutput(tasks, {\n format: options.format,\n pretty: () => {\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(\"Process Instance:\")} ${task.processInstanceId || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Created:\")} ${task.created || \"N/A\"}`);\n console.log();\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch tasks\", error);\n }\n}\n\nexport async function getTask(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching task: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTask(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch task\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Task\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch task\", error);\n }\n}\n\nexport async function getTaskCount(\n client: AmasterClient,\n options: {\n query?: string;\n processInstanceId?: string;\n assignee?: string;\n candidateUser?: string;\n candidateGroup?: string;\n name?: string;\n nameLike?: string;\n taskDefinitionKey?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n }\n) {\n const spinner = createSpinner(\"Fetching task count...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildTaskQueryParams(options);\n const result = await bpmClient.getTaskCount(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch task count\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task count retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Task count: ${result.data?.count ?? 0}`));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch task count\", error);\n }\n}\n\nexport async function completeTask(\n client: AmasterClient,\n options: { id: string; variables?: string; format?: string }\n) {\n const spinner = createSpinner(`Completing task: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const variables = loadOptionalJsonObjectInput(options.variables, \"task variables\");\n const result = await bpmClient.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 renderOutput(\n {\n id: options.id,\n completed: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Completed task: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to complete task\", error);\n }\n}\n\nexport async function delegateTask(\n client: AmasterClient,\n options: { id: string; userId: string; format?: string }\n) {\n const spinner = createSpinner(`Delegating task: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.delegateTask(options.id, options.userId);\n\n if (result.error) {\n spinner.fail(\"Failed to delegate task\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task delegated\");\n renderOutput(\n {\n id: options.id,\n userId: options.userId,\n delegated: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Delegated task ${options.id} to ${options.userId}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to delegate task\", error);\n }\n}\n\nexport async function getTaskForm(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching task form...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTaskForm(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch task form\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task form retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งฉ Task Form\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch task form\", error);\n }\n}\n\nexport async function getTaskFormSchema(\n client: AmasterClient,\n options: { id: string; redirect?: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching task form schema...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTaskFormSchema(\n options.id,\n options.redirect ? { redirect: options.redirect } : undefined\n );\n\n if (result.error) {\n const diagnostic = await diagnoseTaskFormSchemaError(\n bpmClient,\n options.id,\n extractClientErrorMessage(result.error)\n );\n exitWithClientError(spinner, \"Failed to fetch task form schema\", result.error, diagnostic);\n }\n\n spinner.succeed(\"Task form schema retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งฉ Task Form Schema\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch task form schema\", error);\n }\n}\n\nexport async function getTaskFormVariables(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching task form variables...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTaskFormVariables(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch task form variables\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task form variables retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งฎ Task Form Variables\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch task form variables\", error);\n }\n}\n\nexport async function getTaskRenderedForm(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching rendered task form...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTaskRenderedForm(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch rendered task form\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Rendered task form retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งพ Rendered Task Form\\n\"));\n console.log(result.data || \"\");\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch rendered task form\", error);\n }\n}\n\nexport async function getTaskDeployedForm(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching deployed task form...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTaskDeployedForm(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch deployed task form\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Deployed task form retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งพ Deployed Task Form\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch deployed task form\", error);\n }\n}\n\nexport async function getStartFormInfo(\n client: AmasterClient,\n options: { key: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching start form info...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getStartFormInfo(options.key);\n\n if (result.error) {\n const diagnostic = await diagnoseStartFormError(\n bpmClient,\n options.key,\n extractClientErrorMessage(result.error)\n );\n exitWithClientError(spinner, \"Failed to fetch start form info\", result.error, diagnostic);\n }\n\n spinner.succeed(\"Start form info retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Start Form Info\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch start form info\", error);\n }\n}\n\nexport async function getStartFormVariables(\n client: AmasterClient,\n options: { key: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching start form variables...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getStartFormVariables(options.key);\n\n if (result.error) {\n const diagnostic = await diagnoseStartFormError(\n bpmClient,\n options.key,\n extractClientErrorMessage(result.error)\n );\n exitWithClientError(spinner, \"Failed to fetch start form variables\", result.error, diagnostic);\n }\n\n spinner.succeed(\"Start form variables retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Start Form Variables\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch start form variables\", error);\n }\n}\n\nexport async function getDeployedStartForm(\n client: AmasterClient,\n options: { key: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching deployed start form...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getDeployedStartForm(options.key);\n\n if (result.error) {\n const diagnostic = await diagnoseStartFormError(\n bpmClient,\n options.key,\n extractClientErrorMessage(result.error)\n );\n exitWithClientError(spinner, \"Failed to fetch deployed start form\", result.error, diagnostic);\n }\n\n spinner.succeed(\"Deployed start form retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Deployed Start Form\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch deployed start form\", error);\n }\n}\n\nexport async function listHistoryTasks(\n client: AmasterClient,\n options: {\n query?: string;\n taskAssignee?: string;\n processInstanceId?: string;\n finished?: boolean;\n unfinished?: boolean;\n scope?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history tasks...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryTaskQueryParams(options);\n const result = await bpmClient.getHistoryTasks(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history tasks\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const tasks = result.data || [];\n spinner.succeed(`Found ${tasks.length} history tasks`);\n renderOutput(tasks, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ History Tasks\\n\"));\n console.log(JSON.stringify(tasks, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history tasks\", error);\n }\n}\n\nexport async function getHistoryTaskCount(\n client: AmasterClient,\n options: {\n query?: string;\n taskAssignee?: string;\n processInstanceId?: string;\n finished?: boolean;\n unfinished?: boolean;\n scope?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history task count...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryTaskQueryParams(options);\n const result = await bpmClient.getHistoryTaskCount(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history task count\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"History task count retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`History task count: ${result.data?.count ?? 0}`));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history task count\", error);\n }\n}\n\nexport async function listHistoryProcessInstances(\n client: AmasterClient,\n options: {\n query?: string;\n startedBy?: string;\n finished?: boolean;\n unfinished?: boolean;\n processDefinitionKey?: string;\n scope?: string;\n sortBy?: string;\n sortOrder?: string;\n firstResult?: number;\n maxResults?: number;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history process instances...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryProcessInstanceQueryParams(options);\n const result = await bpmClient.getHistoryProcessInstances(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history process instances\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const instances = result.data || [];\n spinner.succeed(`Found ${instances.length} history process instances`);\n renderOutput(instances, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ History Process Instances\\n\"));\n console.log(JSON.stringify(instances, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history process instances\", error);\n }\n}\n\nexport async function getHistoryProcessInstanceCount(\n client: AmasterClient,\n options: {\n query?: string;\n startedBy?: string;\n finished?: boolean;\n unfinished?: boolean;\n processDefinitionKey?: string;\n scope?: string;\n sortBy?: string;\n sortOrder?: string;\n firstResult?: number;\n maxResults?: number;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history process instance count...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryProcessInstanceQueryParams(options);\n const result = await bpmClient.getHistoryProcessInstanceCount(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history process instance count\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"History process instance count retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`History process instance count: ${result.data?.count ?? 0}`));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history process instance count\", error);\n }\n}\n\nexport async function getHistoryProcessInstance(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching history process instance...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getHistoryProcessInstance(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"History process instance retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ History Process Instance\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history process instance\", error);\n }\n}\n\nexport async function listHistoryActivityInstances(\n client: AmasterClient,\n options: {\n query?: string;\n processInstanceId?: string;\n activityId?: string;\n activityType?: string;\n finished?: boolean;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history activity instances...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryActivityQueryParams(options);\n const result = await bpmClient.getHistoryActivityInstances(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history activity instances\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const activities = result.data || [];\n spinner.succeed(`Found ${activities.length} history activity instances`);\n renderOutput(activities, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ History Activity Instances\\n\"));\n console.log(JSON.stringify(activities, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history activity instances\", error);\n }\n}\n\nexport async function listHistoryVariableInstances(\n client: AmasterClient,\n options: {\n query?: string;\n processInstanceId?: string;\n variableName?: string;\n deserializeValues?: boolean;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history variable instances...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryVariableQueryParams(options);\n const result = await bpmClient.getHistoryVariableInstances(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history variable instances\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const variables = result.data || [];\n spinner.succeed(`Found ${variables.length} history variable instances`);\n renderOutput(variables, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ History Variable Instances\\n\"));\n console.log(JSON.stringify(variables, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history variable instances\", error);\n }\n}\n\nexport async function listUserOperationLogs(\n client: AmasterClient,\n options: {\n query?: string;\n processInstanceId?: string;\n taskId?: string;\n userId?: string;\n operationType?: string;\n sortBy?: string;\n sortOrder?: string;\n firstResult?: number;\n maxResults?: number;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching user operation logs...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildUserOperationLogQueryParams(options);\n const result = await bpmClient.getUserOperationLogs(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch user operation logs\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const logs = result.data || [];\n spinner.succeed(`Found ${logs.length} user operation logs`);\n renderOutput(logs, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ User Operation Logs\\n\"));\n console.log(JSON.stringify(logs, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch user operation logs\", error);\n }\n}\n\nexport async function deleteHistoryProcessInstance(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(`Deleting history process instance: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.deleteHistoryProcessInstance(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to delete history process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"History process instance deleted\");\n renderOutput(\n {\n id: options.id,\n deleted: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Deleted history process instance: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to delete history process instance\", error);\n }\n}\n\nexport async function listRoles(\n client: AmasterClient,\n options: { format?: string } = {}\n) {\n const spinner = createSpinner(\"Fetching roles...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getRoles();\n\n if (result.error) {\n spinner.fail(\"Failed to fetch roles\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const roles = result.data || [];\n spinner.succeed(`Found ${roles.length} roles`);\n renderOutput(roles, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ฅ Roles\\n\"));\n console.log(JSON.stringify(roles, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch roles\", error);\n }\n}\n\nexport async function getUserRoles(\n client: AmasterClient,\n options: { userId: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching roles for user: ${options.userId}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getUserRoles(options.userId);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch user roles\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const roles = result.data || [];\n spinner.succeed(`Found ${roles.length} roles for user ${options.userId}`);\n renderOutput(roles, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐ค User Roles: ${options.userId}\\n`));\n console.log(JSON.stringify(roles, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch user roles\", error);\n }\n}\n","import { readFileSync } from \"node:fs\";\nimport chalk from \"chalk\";\nimport type { AmasterClient, ClientResult } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\ntype JsonObject = Record<string, unknown>;\ntype WorkflowMode = \"workflow\" | \"chat\" | \"completion\" | \"agent-chat\";\n\ntype WorkflowTracing = {\n base_name?: string;\n [key: string]: unknown;\n};\n\ntype WorkflowAppSummary = {\n id: string;\n name: string;\n runnable_name: string | null;\n description?: string | null;\n mode?: string | null;\n tracing?: string | WorkflowTracing | null;\n workflow?: Record<string, unknown> | null;\n [key: string]: unknown;\n};\n\ntype WorkflowListResponse = {\n page: number;\n limit: number;\n total: number;\n has_more: boolean;\n data: WorkflowAppSummary[];\n [key: string]: unknown;\n};\n\ntype WorkflowInputVariable = {\n variable: string;\n label?: string;\n required?: boolean;\n type?: string;\n [key: string]: unknown;\n};\n\ntype WorkflowDefinition = {\n workflow_id: string;\n app_id: string;\n version?: string;\n name: string;\n dsl?: Record<string, unknown>;\n context?: string;\n input_variables: WorkflowInputVariable[];\n [key: string]: unknown;\n};\n\nconst WORKFLOW_LIST_PATH = \"/api/proxy/builtin/platform/workflow/openapi/apps\";\nconst WORKFLOW_GET_PATH = (workflowId: string) =>\n `/api/proxy/builtin/platform/workflow/openapi/apps/${encodeURIComponent(workflowId)}/dsl`;\n\nfunction resolveInputSource(input: string): string {\n if (!input.startsWith(\"@\")) {\n return input;\n }\n\n const filePath = input.slice(1);\n if (!filePath) {\n throw new Error(\"File path is required after '@'.\");\n }\n\n return readFileSync(filePath, \"utf8\");\n}\n\nfunction parseJsonInput(input: string, label: string): unknown {\n const source = resolveInputSource(input).trim();\n\n if (!source) {\n throw new Error(`${label} is required.`);\n }\n\n try {\n return JSON.parse(source);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid ${label}: ${reason}`);\n }\n}\n\nfunction isPlainObject(value: unknown): value is JsonObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseWorkflowTracing(value: unknown): WorkflowTracing | null {\n if (!value) {\n return null;\n }\n\n if (isPlainObject(value)) {\n return value as WorkflowTracing;\n }\n\n if (typeof value !== \"string\") {\n return null;\n }\n\n try {\n const parsed = JSON.parse(value);\n return isPlainObject(parsed) ? (parsed as WorkflowTracing) : null;\n } catch {\n return null;\n }\n}\n\nfunction getRunnableName(summary: JsonObject): string | null {\n const tracing = parseWorkflowTracing(summary.tracing);\n const baseName = tracing?.base_name;\n if (typeof baseName === \"string\" && baseName.trim()) {\n return baseName.trim();\n }\n return null;\n}\n\nfunction normalizeWorkflowSummary(summary: JsonObject): WorkflowAppSummary {\n return {\n ...summary,\n id: typeof summary.id === \"string\" ? summary.id : \"\",\n name: typeof summary.name === \"string\" ? summary.name : \"\",\n runnable_name: getRunnableName(summary),\n description: typeof summary.description === \"string\" ? summary.description : null,\n mode: typeof summary.mode === \"string\" ? summary.mode : null,\n };\n}\n\nfunction extractWorkflowInputVariables(dsl: unknown): WorkflowInputVariable[] {\n if (!isPlainObject(dsl)) {\n return [];\n }\n\n const candidateNodeSets: unknown[][] = [];\n if (Array.isArray(dsl.nodes)) {\n candidateNodeSets.push(dsl.nodes);\n }\n if (isPlainObject(dsl.graph) && Array.isArray(dsl.graph.nodes)) {\n candidateNodeSets.push(dsl.graph.nodes);\n }\n\n const variables: WorkflowInputVariable[] = [];\n\n for (const nodeSet of candidateNodeSets) {\n for (const node of nodeSet) {\n if (!isPlainObject(node) || !isPlainObject(node.data)) {\n continue;\n }\n\n const nodeData = node.data;\n if (nodeData.type !== \"start\" || !Array.isArray(nodeData.variables)) {\n continue;\n }\n\n for (const variable of nodeData.variables) {\n if (!isPlainObject(variable) || typeof variable.variable !== \"string\") {\n continue;\n }\n\n variables.push({\n ...variable,\n variable: variable.variable,\n label: typeof variable.label === \"string\" ? variable.label : undefined,\n required: typeof variable.required === \"boolean\" ? variable.required : undefined,\n type: typeof variable.type === \"string\" ? variable.type : undefined,\n });\n }\n }\n }\n\n return variables;\n}\n\nfunction normalizeWorkflowDefinition(definition: JsonObject): WorkflowDefinition {\n return {\n ...definition,\n workflow_id: typeof definition.workflow_id === \"string\" ? definition.workflow_id : \"\",\n app_id: typeof definition.app_id === \"string\" ? definition.app_id : \"\",\n version: typeof definition.version === \"string\" ? definition.version : undefined,\n name: typeof definition.name === \"string\" ? definition.name : \"\",\n dsl: isPlainObject(definition.dsl) ? definition.dsl : undefined,\n context: typeof definition.context === \"string\" ? definition.context : undefined,\n input_variables: extractWorkflowInputVariables(definition.dsl),\n };\n}\n\nfunction invalidResponse<T>(status: number, message: string): ClientResult<T> {\n return {\n data: null,\n error: {\n status,\n message,\n },\n status,\n };\n}\n\nfunction createWorkflowService(client: AmasterClient) {\n return {\n async list(params: { page?: number; limit?: number; mode?: WorkflowMode } = {}) {\n const response = await client.http.request<{\n page?: number;\n limit?: number;\n total?: number;\n has_more?: boolean;\n data?: JsonObject[];\n [key: string]: unknown;\n }>({\n url: WORKFLOW_LIST_PATH,\n method: \"GET\",\n params: {\n page: params.page ?? 1,\n limit: params.limit ?? 20,\n mode: params.mode ?? \"workflow\",\n },\n });\n\n if (!response.data || !Array.isArray(response.data.data)) {\n return invalidResponse<WorkflowListResponse>(\n response.status,\n response.error?.message || \"Invalid workflow list response structure\"\n );\n }\n\n return {\n ...response,\n data: {\n ...response.data,\n page: typeof response.data.page === \"number\" ? response.data.page : params.page ?? 1,\n limit: typeof response.data.limit === \"number\" ? response.data.limit : params.limit ?? 20,\n total: typeof response.data.total === \"number\" ? response.data.total : response.data.data.length,\n has_more: typeof response.data.has_more === \"boolean\" ? response.data.has_more : false,\n data: response.data.data.map(normalizeWorkflowSummary),\n },\n };\n },\n\n async get(workflowId: string) {\n if (!workflowId) {\n return invalidResponse<WorkflowDefinition>(400, \"workflowId is required\");\n }\n\n const response = await client.http.request<JsonObject>({\n url: WORKFLOW_GET_PATH(workflowId),\n method: \"GET\",\n });\n\n if (!response.data || !isPlainObject(response.data)) {\n return invalidResponse<WorkflowDefinition>(\n response.status,\n response.error?.message || \"Invalid workflow definition response structure\"\n );\n }\n\n return {\n ...response,\n data: normalizeWorkflowDefinition(response.data),\n };\n },\n };\n}\n\nfunction loadOptionalJsonObjectInput(input: string | undefined, label: string): JsonObject {\n if (!input) {\n return {};\n }\n\n const value = parseJsonInput(input, label);\n if (!isPlainObject(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n\n return value;\n}\n\nfunction loadOptionalJsonArrayInput(input: string | undefined, label: string): unknown[] | undefined {\n if (!input) {\n return undefined;\n }\n\n const value = parseJsonInput(input, label);\n if (!Array.isArray(value)) {\n throw new Error(`${label} must be a JSON array.`);\n }\n\n return value;\n}\n\nfunction exitWithCommandError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: unknown\n): never {\n spinner.fail(failureMessage);\n const details = error instanceof Error ? error.message : String(error);\n if (details) {\n console.error(chalk.red(details));\n }\n process.exit(1);\n}\n\nfunction buildWorkflowRunRequest(options: {\n input?: string;\n request?: string;\n responseMode?: string;\n user?: string;\n files?: string;\n traceId?: string;\n}): JsonObject {\n const request = loadOptionalJsonObjectInput(options.request, \"workflow request\");\n\n if (options.input) {\n const inputs = parseJsonInput(options.input, \"workflow input\");\n if (!isPlainObject(inputs)) {\n throw new Error(\"workflow input must be a JSON object.\");\n }\n request.inputs = inputs;\n }\n\n if (options.responseMode) {\n request.response_mode = options.responseMode;\n }\n\n if (options.user) {\n request.user = options.user;\n }\n\n if (options.files) {\n request.files = loadOptionalJsonArrayInput(options.files, \"workflow files\");\n }\n\n if (options.traceId) {\n request.trace_id = options.traceId;\n }\n\n return request;\n}\n\nexport async function runWorkflow(\n client: AmasterClient,\n options: {\n name: string;\n input?: string;\n request?: string;\n responseMode?: string;\n user?: string;\n files?: string;\n traceId?: string;\n format?: string;\n }\n) {\n const spinner = createSpinner(`Running workflow: ${options.name}...`, options.format);\n\n try {\n const workflowClient = client.workflow as any;\n const request = buildWorkflowRunRequest(options);\n const result = await workflowClient.run(options.name, request);\n\n if (result.error) {\n spinner.fail(\"Failed to run workflow\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Workflow completed\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\nโก Workflow Run\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to run workflow\", error);\n }\n}\n\nexport async function listWorkflows(\n client: AmasterClient,\n options: { page?: number; limit?: number; mode?: WorkflowMode; format?: string } = {}\n) {\n const spinner = createSpinner(\"Fetching workflows...\", options.format);\n\n try {\n const workflowService = createWorkflowService(client);\n const result = await workflowService.list({\n page: options.page,\n limit: options.limit,\n mode: options.mode,\n });\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 const payload = result.data;\n const workflows = payload?.data || [];\n spinner.succeed(`Found ${workflows.length} workflow${workflows.length === 1 ? \"\" : \"s\"}`);\n\n renderOutput(payload, {\n format: options.format,\n tableRows: workflows.map((workflow) => ({\n id: workflow.id,\n runnableName: workflow.runnable_name,\n platformName: workflow.name,\n mode: workflow.mode,\n description: workflow.description,\n })),\n csvRows: workflows.map((workflow) => ({\n id: workflow.id,\n runnableName: workflow.runnable_name,\n platformName: workflow.name,\n mode: workflow.mode,\n description: workflow.description,\n })),\n ndjsonItems: workflows,\n pretty: () => {\n console.log(chalk.blue(\"\\nWorkflows\\n\"));\n if (workflows.length === 0) {\n console.log(chalk.gray(\"No workflows found.\"));\n return;\n }\n\n for (const workflow of workflows) {\n console.log(`${chalk.green(\"โข\")} ${chalk.bold(workflow.runnable_name || workflow.name)}`);\n console.log(` ${chalk.gray(\"ID:\")} ${workflow.id}`);\n console.log(` ${chalk.gray(\"Platform Name:\")} ${workflow.name}`);\n console.log(` ${chalk.gray(\"Mode:\")} ${workflow.mode || \"workflow\"}`);\n if (workflow.description) {\n console.log(` ${chalk.gray(\"Description:\")} ${workflow.description}`);\n }\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch workflows\", error);\n }\n}\n\nexport async function getWorkflow(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching workflow: ${options.id}...`, options.format);\n\n try {\n const workflowService = createWorkflowService(client);\n const result = await workflowService.get(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 const workflow = result.data;\n const inputVariables = workflow?.input_variables || [];\n spinner.succeed(\"Workflow loaded\");\n\n renderOutput(workflow, {\n format: options.format,\n tableRows: workflow\n ? [\n {\n appId: workflow.app_id,\n workflowId: workflow.workflow_id,\n runnableName: workflow.name,\n version: workflow.version || null,\n inputVariables: inputVariables.map((item) => item.variable).join(\", \"),\n },\n ]\n : [],\n csvRows: workflow\n ? [\n {\n appId: workflow.app_id,\n workflowId: workflow.workflow_id,\n runnableName: workflow.name,\n version: workflow.version || null,\n inputVariables: inputVariables.map((item) => item.variable).join(\", \"),\n },\n ]\n : [],\n ndjsonItems: workflow ? [workflow] : [],\n pretty: () => {\n if (!workflow) {\n console.log(chalk.gray(\"No workflow found.\"));\n return;\n }\n\n console.log(chalk.blue(`\\nWorkflow: ${workflow.name}\\n`));\n console.log(`${chalk.gray(\"App ID:\")} ${workflow.app_id}`);\n console.log(`${chalk.gray(\"Workflow ID:\")} ${workflow.workflow_id}`);\n if (workflow.version) {\n console.log(`${chalk.gray(\"Version:\")} ${workflow.version}`);\n }\n\n console.log(`\\n${chalk.gray(\"Input Variables:\")}`);\n if (inputVariables.length === 0) {\n console.log(chalk.gray(\" none\"));\n } else {\n for (const variable of inputVariables) {\n const label = variable.label ? ` ${chalk.gray(`(${variable.label})`)}` : \"\";\n const type = variable.type ? ` ${chalk.gray(`[${variable.type}]`)}` : \"\";\n const required = variable.required ? chalk.yellow(\" required\") : chalk.gray(\" optional\");\n console.log(` - ${chalk.bold(variable.variable)}${label}${type}${required}`);\n }\n }\n\n console.log(`\\n${chalk.gray(\"Run With:\")} amaster workflow run ${workflow.name} --app <app-code> --input '{...}'`);\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch workflow\", error);\n }\n}\n","import { File } from \"node:buffer\";\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { basename, resolve } from \"node:path\";\nimport chalk from \"chalk\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\nfunction exitWithCommandError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: unknown\n): never {\n spinner.fail(failureMessage);\n const details = error instanceof Error ? error.message : String(error);\n if (details) {\n console.error(chalk.red(details));\n }\n process.exit(1);\n}\n\nasync function toBuffer(data: unknown): Promise<Buffer> {\n if (data instanceof Blob) {\n return Buffer.from(await data.arrayBuffer());\n }\n\n if (Buffer.isBuffer(data)) {\n return data;\n }\n\n if (data instanceof Uint8Array) {\n return Buffer.from(data);\n }\n\n if (data instanceof ArrayBuffer) {\n return Buffer.from(data);\n }\n\n if (typeof data === \"string\") {\n return Buffer.from(data);\n }\n\n if (\n typeof data === \"object\" &&\n data !== null &&\n \"arrayBuffer\" in data &&\n typeof (data as { arrayBuffer?: unknown }).arrayBuffer === \"function\"\n ) {\n const arrayBuffer = await (data as { arrayBuffer: () => Promise<ArrayBuffer> }).arrayBuffer();\n return Buffer.from(arrayBuffer);\n }\n\n throw new Error(`Unsupported download response type: ${Object.prototype.toString.call(data)}`);\n}\n\nexport async function uploadFile(\n client: AmasterClient,\n options: { file: string; format?: string }\n) {\n const spinner = createSpinner(\"Uploading file...\", options.format);\n\n try {\n const s3Client = client.s3 as any;\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 file = new File([readFileSync(filePath)], basename(filePath));\n const result = await s3Client.upload(file);\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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\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 },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Upload failed\", error);\n }\n}\n\nexport async function downloadFile(\n client: AmasterClient,\n options: { key: string; output: string; format?: string }\n) {\n const spinner = createSpinner(\"Downloading file...\", options.format);\n\n try {\n const s3Client = client.s3 as any;\n const result = await s3Client.download(options.key);\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 if (!result.data) {\n spinner.fail(\"Download failed\");\n console.error(chalk.red(\"Empty file response.\"));\n process.exit(1);\n }\n\n const outputPath = resolve(options.output);\n const buffer = await toBuffer(result.data);\n writeFileSync(outputPath, buffer);\n\n spinner.succeed(\"Download complete\");\n renderOutput(\n {\n key: options.key,\n output: outputPath,\n downloaded: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`\\nFile saved to: ${outputPath}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Download failed\", error);\n }\n}\n\nexport async function getFileMetadata(\n client: AmasterClient,\n options: { key: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching file metadata...\", options.format);\n\n try {\n const s3Client = client.s3 as any;\n const result = await s3Client.getMetadata(options.key);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch metadata\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Metadata retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐ Metadata for ${options.key}\\n`));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch metadata\", error);\n }\n}\n","import { existsSync, mkdirSync, readFileSync, writeFileSync, rmSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport chalk from \"chalk\";\nimport yaml from \"yaml\";\nimport { addApp, getAppConfig, listApps } from \"../config.js\";\nimport { createSpinner, isPrettyOutput, renderOutput } from \"../output.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 format?: string;\n}): Promise<void> {\n const spinner = createSpinner(`Initializing app: ${options.appCode}...`, options.format);\n const pretty = isPrettyOutput(options.format);\n const ossEndpoint = options.ossEndpoint || DEFAULT_OSS_ENDPOINT;\n let installedSkills = 0;\n let configuredMcpServers = 0;\n let skillsError: string | null = null;\n let mcpError: string | null = null;\n const openClawDetected = existsSync(OPENCLAW_CONFIG_DIR);\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 // Save app config first (before OpenClaw check)\n addApp(options.appCode, {\n baseURL: options.baseURL,\n ossEndpoint,\n initializedAt: new Date().toISOString(),\n });\n\n if (!openClawDetected) {\n spinner.succeed(`App initialized: ${options.appCode}`);\n if (pretty) {\n console.log(chalk.yellow(\"\\nโ ๏ธ OpenClaw not detected, skipping skill download\"));\n console.log(chalk.gray(\" Install OpenClaw: npm install -g openclaw\"));\n } else {\n renderOutput(\n {\n appCode: options.appCode,\n baseURL: options.baseURL,\n ossEndpoint,\n openClawDetected: false,\n installedSkills: 0,\n configuredMcpServers: 0,\n },\n { format: options.format }\n );\n }\n return;\n }\n\n spinner.succeed(`App initialized: ${options.appCode}`);\n if (pretty) {\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\n // Download and install skills\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 installedSkills = skills.length;\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 skillsError = error instanceof Error ? error.message : String(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 configuredMcpServers = Object.keys(mcpServers).length;\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 mcpError = error instanceof Error ? error.message : String(error);\n spinner.warn(\"MCP configuration failed (optional)\");\n }\n\n const apps = listApps();\n const configuredApps = apps.map((app) => {\n const config = getAppConfig(app);\n return {\n appCode: app,\n baseURL: config?.baseURL || null,\n };\n });\n\n const summary = {\n appCode: options.appCode,\n baseURL: options.baseURL,\n ossEndpoint,\n openClawDetected: true,\n installedSkills,\n configuredMcpServers,\n configuredApps,\n warnings: {\n skills: skillsError,\n mcpServers: mcpError,\n },\n };\n\n if (pretty) {\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 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\n return;\n }\n\n renderOutput(summary, { format: options.format });\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"]}
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/index.ts","../src/cli.ts","../src/commands/auth.ts","../src/output.ts","../src/commands/entity.ts","../src/commands/model.ts","../src/commands/bpm.ts","../src/commands/workflow.ts","../src/commands/s3.ts","../src/commands/openclaw.ts"],"names":["chalk","login","getAccessToken","isPlainObject","readFileSync","resolveInputSource","exitWithCommandError","parseJsonInput","promptForJson","loadJsonObjectInput","loadOptionalJsonObjectInput","existsSync","writeFileSync","join","homedir","mkdirSync","rmSync","createClient","resolvedRegistry","Option"],"mappings":"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","file":"index.js","sourcesContent":["import { existsSync, readFileSync, writeFileSync, rmSync, mkdirSync } 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 DEFAULT_REGISTRY_NAME = \"helige\";\n\nconst BUILTIN_REGISTRY_DEFINITIONS = {\n helige: \"https://helige.cn\",\n \"helige-int\": \"https://helige-int.cn\",\n} as const;\n\nexport interface AppConfig {\n baseURL: string;\n registry?: string;\n registryBaseURL?: string;\n ossEndpoint?: string;\n initializedAt: string;\n}\n\nexport interface RegistryConfig {\n baseURL: string;\n createdAt: string;\n}\n\nexport interface ResolvedRegistry {\n name: string;\n baseURL: string;\n builtin: boolean;\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 registries?: Record<string, RegistryConfig>;\n currentRegistry?: 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 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 listRegistries(): ResolvedRegistry[] {\n const config = getConfig();\n const currentRegistry = config.currentRegistry || DEFAULT_REGISTRY_NAME;\n const registryMap = new Map<string, ResolvedRegistry>();\n\n for (const [name, baseURL] of Object.entries(BUILTIN_REGISTRY_DEFINITIONS)) {\n registryMap.set(name, {\n name,\n baseURL,\n builtin: true,\n });\n }\n\n for (const [name, registry] of Object.entries(config.registries || {})) {\n registryMap.set(name, {\n name,\n baseURL: registry.baseURL,\n builtin: false,\n });\n }\n\n const registries = Array.from(registryMap.values()).sort((left, right) => left.name.localeCompare(right.name));\n const currentResolved = resolveRegistry(currentRegistry);\n\n return registries.map((registry) => ({\n ...registry,\n name: registry.name === currentResolved.name ? registry.name : registry.name,\n }));\n}\n\nexport function getCurrentRegistry(): string {\n const config = getConfig();\n return config.currentRegistry || DEFAULT_REGISTRY_NAME;\n}\n\nexport function setCurrentRegistry(registryRef: string): ResolvedRegistry {\n const resolved = ensureRegistry(registryRef);\n const config = getConfig();\n config.currentRegistry = resolved.name;\n saveConfig(config);\n return resolved;\n}\n\nexport function getRegistryConfig(name: string): RegistryConfig | null {\n const config = getConfig();\n return config.registries?.[name] || null;\n}\n\nexport function ensureRegistry(registryRef: string): ResolvedRegistry {\n const normalizedRef = registryRef.trim();\n if (!normalizedRef) {\n throw new Error(\"Registry cannot be empty\");\n }\n\n const builtinBaseURL = BUILTIN_REGISTRY_DEFINITIONS[normalizedRef as keyof typeof BUILTIN_REGISTRY_DEFINITIONS];\n if (builtinBaseURL) {\n return {\n name: normalizedRef,\n baseURL: builtinBaseURL,\n builtin: true,\n };\n }\n\n const config = getConfig();\n const existing = config.registries?.[normalizedRef];\n if (existing) {\n return {\n name: normalizedRef,\n baseURL: existing.baseURL,\n builtin: false,\n };\n }\n\n const normalizedBaseURL = normalizeRegistryBaseURL(normalizedRef);\n for (const [name, baseURL] of Object.entries(BUILTIN_REGISTRY_DEFINITIONS)) {\n if (normalizeRegistryBaseURL(baseURL) === normalizedBaseURL) {\n return {\n name,\n baseURL,\n builtin: true,\n };\n }\n }\n const inferredName = inferRegistryName(normalizedBaseURL);\n const current = config.registries?.[inferredName];\n const nextRegistry: RegistryConfig = {\n baseURL: normalizedBaseURL,\n createdAt: current?.createdAt || new Date().toISOString(),\n };\n\n config.registries = {\n ...(config.registries || {}),\n [inferredName]: nextRegistry,\n };\n saveConfig(config);\n\n return {\n name: inferredName,\n baseURL: normalizedBaseURL,\n builtin: false,\n };\n}\n\nexport function resolveRegistry(registryRef?: string): ResolvedRegistry {\n return ensureRegistry(registryRef || getCurrentRegistry());\n}\n\nexport function normalizeRegistryBaseURL(value: string): string {\n const trimmed = value.trim();\n if (!trimmed) {\n throw new Error(\"Registry cannot be empty\");\n }\n\n const withProtocol = /^https?:\\/\\//i.test(trimmed) ? trimmed : `https://${trimmed}`;\n const parsed = new URL(withProtocol);\n\n if (parsed.username || parsed.password || parsed.search || parsed.hash) {\n throw new Error(`Unsupported registry URL: ${value}`);\n }\n\n if (parsed.pathname && parsed.pathname !== \"/\") {\n throw new Error(`Registry URL must not include a path: ${value}`);\n }\n\n parsed.pathname = \"\";\n return parsed.toString().replace(/\\/$/, \"\");\n}\n\nexport function resolveAppBaseURL(appCode: string, registryRef?: string): string {\n const resolved = resolveRegistry(registryRef);\n const registryUrl = new URL(resolved.baseURL);\n\n if (isLocalLikeHost(registryUrl.hostname)) {\n throw new Error(`Cannot infer app URL from registry ${resolved.baseURL}; please pass --url explicitly`);\n }\n\n return `${registryUrl.protocol}//${appCode}.${registryUrl.host}`;\n}\n\nexport function inferRegistryBaseURLFromAppBaseURL(appBaseURL: string, appCode?: string): string {\n const parsed = new URL(appBaseURL);\n const hostnameParts = parsed.hostname.split(\".\");\n\n if (hostnameParts.length <= 2 || isLocalLikeHost(parsed.hostname)) {\n parsed.pathname = \"\";\n return parsed.toString().replace(/\\/$/, \"\");\n }\n\n if (appCode && parsed.hostname.startsWith(`${appCode}.`)) {\n parsed.hostname = parsed.hostname.slice(appCode.length + 1);\n } else {\n parsed.hostname = hostnameParts.slice(1).join(\".\");\n }\n\n parsed.pathname = \"\";\n return parsed.toString().replace(/\\/$/, \"\");\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 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\nfunction inferRegistryName(baseURL: string): string {\n const parsed = new URL(baseURL);\n return parsed.hostname.replace(/\\./g, \"-\");\n}\n\nfunction isLocalLikeHost(hostname: string): boolean {\n if (hostname === \"localhost\") {\n return true;\n }\n\n if (/^\\d{1,3}(\\.\\d{1,3}){3}$/.test(hostname)) {\n return true;\n }\n\n return false;\n}\n","export * from \"./types.js\";\nexport * from \"./config.js\";\nexport { createAmasterClient, resolveAppCode, resolveInitBaseURL } from \"./cli.js\";\n","#!/usr/bin/env node\nimport { readFileSync, realpathSync } from \"node:fs\";\nimport { fileURLToPath } from \"node:url\";\nimport { Command, Option } 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 getCurrentRegistry,\n inferRegistryBaseURLFromAppBaseURL,\n listRegistries,\n resolveAppBaseURL,\n resolveRegistry,\n setCurrentRegistry,\n} from \"./config.js\";\nimport * as auth from \"./commands/auth.js\";\nimport * as entity from \"./commands/entity.js\";\nimport * as model from \"./commands/model.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\";\nimport { createFormatOption, renderOutput } from \"./output.js\";\n\nfunction resolveCliVersion(): string {\n try {\n const packageJsonUrl = new URL(\"../package.json\", import.meta.url);\n return JSON.parse(readFileSync(packageJsonUrl, \"utf-8\")).version || \"0.0.0\";\n } catch {\n return \"0.0.0\";\n }\n}\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 && shouldRefreshToken(appCode)) {\n console.error(chalk.yellow(\"โ ๏ธ Session expiring soon. Please login again.\"));\n }\n\n const client = createClient({\n baseURL: appConfig.baseURL,\n headers: {\n \"x-app-code\": appCode,\n ...(token\n ? {\n Authorization: `Bearer ${token}`,\n }\n : {}),\n },\n onUnauthorized: () => {\n if (token) {\n console.error(chalk.red(\"\\nโ Session expired. Please login again.\"));\n console.error(chalk.yellow(`Run: amaster login --app ${appCode}`));\n } else {\n console.error(chalk.red(`\\nโ Authentication required for app: ${appCode}`));\n console.error(chalk.yellow(`Run: amaster login --app ${appCode}`));\n }\n process.exit(1);\n },\n });\n\n if (token) {\n // Keep the token in sync for authenticated requests when one exists locally.\n client.setAccessToken(token);\n }\n\n return client;\n}\n\nexport function resolveInitBaseURL(options: { appCode: string; url?: string; registry?: string }): {\n baseURL: string;\n registryName: string;\n registryBaseURL: string;\n} {\n if (options.url) {\n const resolvedRegistry = resolveRegistry(\n options.registry || inferRegistryBaseURLFromAppBaseURL(options.url, options.appCode),\n );\n return {\n baseURL: options.url,\n registryName: resolvedRegistry.name,\n registryBaseURL: resolvedRegistry.baseURL,\n };\n }\n\n const resolvedRegistry = resolveRegistry(options.registry);\n return {\n baseURL: resolveAppBaseURL(options.appCode, resolvedRegistry.name),\n registryName: resolvedRegistry.name,\n registryBaseURL: resolvedRegistry.baseURL,\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(resolveCliVersion());\n\nprogram\n .command(\"apps\")\n .description(\"List all configured apps\")\n .addOption(createFormatOption())\n .action((options) => {\n const apps = listApps();\n const current = getCurrentApp();\n\n const appSummaries = apps.map((appCode) => {\n const config = getAppConfig(appCode);\n return {\n appCode,\n baseURL: config?.baseURL || null,\n registry: config?.registry || null,\n registryBaseURL: config?.registryBaseURL || null,\n authenticated: isAuthenticated(appCode),\n current: appCode === current,\n };\n });\n\n renderOutput(appSummaries, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ฑ Configured Apps\\n\"));\n\n if (appSummaries.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 app of appSummaries) {\n const prefix = app.current ? chalk.green(\"โ \") : \" \";\n console.log(`${prefix}${chalk.bold(app.appCode)}${app.current ? chalk.green(\" (current)\") : \"\"}`);\n console.log(` ${chalk.gray(app.baseURL || \"No URL\")}`);\n if (app.registryBaseURL) {\n console.log(` ${chalk.gray(`registry: ${app.registry} -> ${app.registryBaseURL}`)}`);\n }\n console.log(\n ` ${app.authenticated ? chalk.green(\"โ Authenticated\") : chalk.yellow(\"โ Not authenticated\")}`\n );\n console.log();\n }\n }\n console.log();\n },\n });\n });\n\nconst registryCmd = program\n .command(\"registry\")\n .description(\"Manage addon and app registries\");\n\nregistryCmd\n .command(\"list\")\n .alias(\"ls\")\n .description(\"List available registries\")\n .addOption(createFormatOption())\n .action((options) => {\n const currentRegistry = getCurrentRegistry();\n const registries = listRegistries().map((registry) => ({\n ...registry,\n current: registry.name === currentRegistry,\n }));\n\n renderOutput(registries, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Registries\\n\"));\n for (const registry of registries) {\n const prefix = registry.current ? chalk.green(\"โ \") : \" \";\n const builtin = registry.builtin ? chalk.gray(\"builtin\") : chalk.gray(\"custom\");\n console.log(`${prefix}${chalk.bold(registry.name)}${registry.current ? chalk.green(\" (current)\") : \"\"}`);\n console.log(` ${chalk.gray(registry.baseURL)} ${builtin}`);\n }\n console.log();\n },\n });\n });\n\nregistryCmd\n .command(\"use <registry>\")\n .description(\"Set the default registry by name or URL\")\n .addOption(createFormatOption())\n .action((registry: string, options) => {\n const resolved = setCurrentRegistry(registry);\n\n renderOutput(\n {\n name: resolved.name,\n baseURL: resolved.baseURL,\n builtin: resolved.builtin,\n current: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`โ
Now using registry: ${resolved.name}`));\n console.log(chalk.gray(resolved.baseURL));\n },\n }\n );\n });\n\nprogram\n .command(\"use <app-code>\")\n .description(\"Set the default app for subsequent commands\")\n .addOption(createFormatOption())\n .action((appCode: string, options) => {\n if (setCurrentApp(appCode)) {\n renderOutput(\n {\n appCode,\n current: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`โ
Now using app: ${appCode}`));\n },\n }\n );\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 .option(\"--url <url>\", \"Base URL (e.g., https://fhv94bto1.helige.cn)\")\n .option(\"--registry <registry>\", \"Registry name or URL (default: current registry)\")\n .option(\"--api-key <key>\", \"API Key for OSS access\")\n .option(\"--oss-endpoint <endpoint>\", \"OSS endpoint\")\n .option(\"--force\", \"Reinitialize an existing app\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const resolvedInit = resolveInitBaseURL({\n appCode: options.appCode,\n url: options.url,\n registry: options.registry,\n });\n\n await openclaw.initOpenClaw({\n appCode: options.appCode,\n baseURL: resolvedInit.baseURL,\n registry: resolvedInit.registryName,\n registryBaseURL: resolvedInit.registryBaseURL,\n apiKey: options.apiKey,\n ossEndpoint: options.ossEndpoint,\n force: options.force,\n format: options.format,\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(\"-u, --username <username>\", \"Username\")\n .option(\"-e, --email <email>\", \"Email address\")\n .option(\"-p, --password <password>\", \"Password\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await auth.login(appCode, {\n username: options.username,\n email: options.email,\n password: options.password,\n format: options.format,\n });\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 .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await auth.logout(appCode, { format: options.format });\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 .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await auth.getMe(() => createAmasterClient(appCode), { format: options.format });\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\")\n .option(\"--page-size <size>\", \"Page size\")\n .option(\"-f, --fields <fields>\", \"Comma-separated fields to return\")\n .option(\"-r, --relations <relations>\", \"Comma-separated relations to load\")\n .option(\"-k, --keyword <keyword>\", \"Keyword to search\")\n .option(\"--keyword-fields <fields>\", \"Comma-separated fields for keyword search\")\n .option(\"--order-by <field>\", \"Field to sort by\")\n .addOption(new Option(\"--order-dir <dir>\", \"Sort direction\").choices([\"asc\", \"desc\"]))\n .option(\"--orders <orders>\", \"Multi-order expression, e.g. created_at:desc,name:asc\")\n .option(\"--filter <json>\", \"Advanced __filter JSON or @file\")\n .option(\"--limit <limit>\", \"Limit number of records\")\n .option(\"--offset <offset>\", \"Offset number of records\")\n .option(\"-q, --query <json>\", \"Additional EntityQueryParams as JSON or @file\")\n .addOption(createFormatOption())\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: options.page ? parseInt(options.page) : undefined,\n pageSize: options.pageSize ? parseInt(options.pageSize) : undefined,\n fields: options.fields,\n relations: options.relations,\n keyword: options.keyword,\n keywordFields: options.keywordFields,\n orderBy: options.orderBy,\n orderDir: options.orderDir,\n orders: options.orders,\n filter: options.filter,\n limit: options.limit ? parseInt(options.limit) : undefined,\n offset: options.offset ? parseInt(options.offset) : undefined,\n query: options.query,\n format: options.format,\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 .addOption(createFormatOption())\n .action(async (namespace: string, entityName: string, id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.getEntity(createAmasterClient(appCode), {\n namespace,\n entity: entityName,\n id,\n format: options.format,\n });\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 or @file\")\n .addOption(createFormatOption())\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 format: options.format,\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 or @file\")\n .addOption(createFormatOption())\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 format: options.format,\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 .addOption(createFormatOption())\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 format: options.format,\n });\n });\n\nentityCmd\n .command(\"options <namespace> <entity>\")\n .description(\"List entity options\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-f, --fields <fields>\", \"Comma-separated fields to return\")\n .addOption(createFormatOption())\n .action(async (namespace: string, entityName: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.listEntityOptions(createAmasterClient(appCode), {\n namespace,\n entity: entityName,\n fields: options.fields,\n format: options.format,\n });\n });\n\nentityCmd\n .command(\"bulk-update <namespace> <entity>\")\n .description(\"Bulk update entities\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-i, --items <json>\", \"Items array as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (namespace: string, entityName: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.bulkUpdateEntities(createAmasterClient(appCode), {\n namespace,\n entity: entityName,\n items: options.items,\n format: options.format,\n });\n });\n\nentityCmd\n .command(\"bulk-delete <namespace> <entity>\")\n .description(\"Bulk delete entities\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--ids <ids>\", \"Comma-separated IDs, JSON array, or @file\")\n .addOption(createFormatOption())\n .action(async (namespace: string, entityName: string, options) => {\n const appCode = resolveAppCode(options.app);\n await entity.bulkDeleteEntities(createAmasterClient(appCode), {\n namespace,\n entity: entityName,\n ids: options.ids,\n format: options.format,\n });\n });\n\nconst modelCmd = program\n .command(\"model\")\n .description(\"Discover runtime datasources and table schemas\");\n\nmodelCmd\n .command(\"datasources\")\n .description(\"List runtime datasources with their models\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await model.listDatasources(createAmasterClient(appCode), {\n format: options.format,\n });\n });\n\nmodelCmd\n .command(\"table-schema <source-id>\")\n .description(\"Get CREATE TABLE statements for one datasource\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--tables <tables>\", \"Comma-separated table names, JSON array, or @file\")\n .addOption(createFormatOption())\n .action(async (sourceId: string, options) => {\n const appCode = resolveAppCode(options.app);\n await model.getTableSchema(createAmasterClient(appCode), {\n sourceId,\n tables: options.tables,\n format: options.format,\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 .option(\"--key <key>\", \"Filter by process definition key\")\n .option(\"--name <name>\", \"Filter by process definition name\")\n .option(\"--latest-version\", \"Only return latest version\")\n .option(\"--active\", \"Only return active process definitions\")\n .option(\"--suspended\", \"Only return suspended process definitions\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional ProcessDefinitionQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listProcesses(createAmasterClient(appCode), {\n key: options.key,\n name: options.name,\n latestVersion: options.latestVersion,\n active: options.active,\n suspended: options.suspended,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"xml <key>\")\n .description(\"Get BPMN XML for a process definition key\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getProcessXml(createAmasterClient(appCode), {\n key,\n format: options.format,\n });\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 or @file\")\n .addOption(createFormatOption())\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 format: options.format,\n });\n });\n\nbpmCmd\n .command(\"instances\")\n .description(\"List process instances\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--process-definition-key <key>\", \"Filter by process definition key\")\n .option(\"--active\", \"Only return active instances\")\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"-q, --query <json>\", \"Additional ProcessInstanceQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listProcessInstances(createAmasterClient(appCode), {\n processDefinitionKey: options.processDefinitionKey,\n active: options.active,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"instance <id>\")\n .description(\"Get a process instance by ID\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getProcessInstance(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"instance-tree <id>\")\n .description(\"Get the activity instance tree for a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getActivityInstanceTree(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"active-activities <id>\")\n .description(\"Get active activities for a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getActiveActivities(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"runtime-variables <id>\")\n .description(\"Get runtime variables for a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getRuntimeVariables(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"variables <id>\")\n .description(\"Get historic variables for a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--name <name>\", \"Filter by variable name\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getProcessVariables(createAmasterClient(appCode), {\n id,\n name: options.name,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"delete-instance <id>\")\n .description(\"Delete a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--skip-custom-listeners\", \"Skip custom listeners during deletion\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.deleteProcessInstance(createAmasterClient(appCode), {\n id,\n skipCustomListeners: options.skipCustomListeners,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"suspend-instance <id>\")\n .description(\"Suspend a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.suspendProcessInstance(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"activate-instance <id>\")\n .description(\"Activate a suspended process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.activateProcessInstance(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"modify-instance <id>\")\n .description(\"Modify a process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-m, --modification <json>\", \"ProcessInstanceModification JSON or @file\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.modifyProcessInstance(createAmasterClient(appCode), {\n id,\n modification: options.modification,\n format: options.format,\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 .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--candidate-user <user>\", \"Filter by candidate user\")\n .option(\"--candidate-group <group>\", \"Filter by candidate group\")\n .option(\"--name <name>\", \"Filter by exact task name\")\n .option(\"--name-like <name>\", \"Filter by fuzzy task name\")\n .option(\"--task-definition-key <key>\", \"Filter by task definition key\")\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional TaskQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listTasks(createAmasterClient(appCode), {\n processInstanceId: options.processInstanceId,\n assignee: options.assignee,\n candidateUser: options.candidateUser,\n candidateGroup: options.candidateGroup,\n name: options.name,\n nameLike: options.nameLike,\n taskDefinitionKey: options.taskDefinitionKey,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task <id>\")\n .description(\"Get a task by ID\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTask(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-count\")\n .description(\"Get task count\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-a, --assignee <assignee>\", \"Filter by assignee\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--candidate-user <user>\", \"Filter by candidate user\")\n .option(\"--candidate-group <group>\", \"Filter by candidate group\")\n .option(\"--name <name>\", \"Filter by exact task name\")\n .option(\"--name-like <name>\", \"Filter by fuzzy task name\")\n .option(\"--task-definition-key <key>\", \"Filter by task definition key\")\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional TaskQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskCount(createAmasterClient(appCode), {\n processInstanceId: options.processInstanceId,\n assignee: options.assignee,\n candidateUser: options.candidateUser,\n candidateGroup: options.candidateGroup,\n name: options.name,\n nameLike: options.nameLike,\n taskDefinitionKey: options.taskDefinitionKey,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\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 or @file\")\n .addOption(createFormatOption())\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 format: options.format,\n });\n });\n\nbpmCmd\n .command(\"delegate <id>\")\n .description(\"Delegate a task to another user\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .requiredOption(\"--user-id <userId>\", \"Delegate target user ID\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.delegateTask(createAmasterClient(appCode), {\n id,\n userId: options.userId,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-form <id>\")\n .description(\"Get task form metadata\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskForm(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-form-schema <id>\")\n .description(\"Get task form schema\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--redirect <url>\", \"Optional redirect URL\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskFormSchema(createAmasterClient(appCode), {\n id,\n redirect: options.redirect,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-form-variables <id>\")\n .description(\"Get task form variables\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskFormVariables(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-rendered-form <id>\")\n .description(\"Get rendered task form HTML\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskRenderedForm(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"task-deployed-form <id>\")\n .description(\"Get deployed task form definition\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getTaskDeployedForm(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"start-form <key>\")\n .description(\"Get start form info for a process definition key\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getStartFormInfo(createAmasterClient(appCode), {\n key,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"start-form-variables <key>\")\n .description(\"Get start form variables for a process definition key\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getStartFormVariables(createAmasterClient(appCode), {\n key,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-tasks\")\n .description(\"List history tasks\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--task-assignee <assignee>\", \"Filter by historical task assignee\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--finished\", \"Only return finished history tasks\")\n .option(\"--unfinished\", \"Only return unfinished history tasks\")\n .addOption(new Option(\"--scope <scope>\", \"History task scope\").choices([\"handled\"]))\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional HistoryTaskQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listHistoryTasks(createAmasterClient(appCode), {\n taskAssignee: options.taskAssignee,\n processInstanceId: options.processInstanceId,\n finished: options.finished,\n unfinished: options.unfinished,\n scope: options.scope,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-task-count\")\n .description(\"Get history task count\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--task-assignee <assignee>\", \"Filter by historical task assignee\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--finished\", \"Only count finished history tasks\")\n .option(\"--unfinished\", \"Only count unfinished history tasks\")\n .addOption(new Option(\"--scope <scope>\", \"History task scope\").choices([\"handled\"]))\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional HistoryTaskQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getHistoryTaskCount(createAmasterClient(appCode), {\n taskAssignee: options.taskAssignee,\n processInstanceId: options.processInstanceId,\n finished: options.finished,\n unfinished: options.unfinished,\n scope: options.scope,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-instances\")\n .description(\"List history process instances\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--started-by <userId>\", \"Filter by starter user ID\")\n .option(\"--process-definition-key <key>\", \"Filter by process definition key\")\n .option(\"--finished\", \"Only return finished history instances\")\n .option(\"--unfinished\", \"Only return unfinished history instances\")\n .addOption(new Option(\"--scope <scope>\", \"History process scope\").choices([\"initiated\"]))\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"-q, --query <json>\", \"Additional HistoryProcessInstanceQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listHistoryProcessInstances(createAmasterClient(appCode), {\n startedBy: options.startedBy,\n processDefinitionKey: options.processDefinitionKey,\n finished: options.finished,\n unfinished: options.unfinished,\n scope: options.scope,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-instance-count\")\n .description(\"Get history process instance count\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--started-by <userId>\", \"Filter by starter user ID\")\n .option(\"--process-definition-key <key>\", \"Filter by process definition key\")\n .option(\"--finished\", \"Only count finished history instances\")\n .option(\"--unfinished\", \"Only count unfinished history instances\")\n .addOption(new Option(\"--scope <scope>\", \"History process scope\").choices([\"initiated\"]))\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"-q, --query <json>\", \"Additional HistoryProcessInstanceQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getHistoryProcessInstanceCount(createAmasterClient(appCode), {\n startedBy: options.startedBy,\n processDefinitionKey: options.processDefinitionKey,\n finished: options.finished,\n unfinished: options.unfinished,\n scope: options.scope,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-instance <id>\")\n .description(\"Get a history process instance by ID\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getHistoryProcessInstance(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-activities\")\n .description(\"List history activity instances\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--activity-id <activityId>\", \"Filter by BPMN activity ID\")\n .option(\"--activity-type <activityType>\", \"Filter by activity type\")\n .option(\"--finished\", \"Only return finished history activity instances\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"-q, --query <json>\", \"Additional HistoryActivityQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listHistoryActivityInstances(createAmasterClient(appCode), {\n processInstanceId: options.processInstanceId,\n activityId: options.activityId,\n activityType: options.activityType,\n finished: options.finished,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"history-variables\")\n .description(\"List history variable instances\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--variable-name <name>\", \"Filter by variable name\")\n .option(\"--deserialize-values\", \"Deserialize complex variable values\")\n .option(\"-q, --query <json>\", \"Additional HistoryVariableQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listHistoryVariableInstances(createAmasterClient(appCode), {\n processInstanceId: options.processInstanceId,\n variableName: options.variableName,\n deserializeValues: options.deserializeValues,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"user-operations\")\n .description(\"List user operation logs\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--process-instance-id <id>\", \"Filter by process instance ID\")\n .option(\"--task-id <id>\", \"Filter by task ID\")\n .option(\"--user-id <userId>\", \"Filter by user ID\")\n .option(\"--operation-type <type>\", \"Filter by operation type\")\n .option(\"--sort-by <field>\", \"Sort field\")\n .addOption(new Option(\"--sort-order <order>\", \"Sort order\").choices([\"asc\", \"desc\"]))\n .option(\"--first-result <n>\", \"Pagination offset\")\n .option(\"--max-results <n>\", \"Maximum number of results\")\n .option(\"-q, --query <json>\", \"Additional UserOperationLogQueryParams as JSON or @file\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listUserOperationLogs(createAmasterClient(appCode), {\n processInstanceId: options.processInstanceId,\n taskId: options.taskId,\n userId: options.userId,\n operationType: options.operationType,\n sortBy: options.sortBy,\n sortOrder: options.sortOrder,\n firstResult: options.firstResult ? parseInt(options.firstResult) : undefined,\n maxResults: options.maxResults ? parseInt(options.maxResults) : undefined,\n query: options.query,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"delete-history-instance <id>\")\n .description(\"Delete a history process instance\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.deleteHistoryProcessInstance(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"roles\")\n .description(\"List runtime roles\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.listRoles(createAmasterClient(appCode), {\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"user-roles <userId>\")\n .description(\"List roles assigned to a user\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (userId: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getUserRoles(createAmasterClient(appCode), {\n userId,\n format: options.format,\n });\n });\n\nbpmCmd\n .command(\"start-form-deployed <key>\")\n .description(\"Get deployed start form definition for a process definition key\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await bpm.getDeployedStartForm(createAmasterClient(appCode), {\n key,\n format: options.format,\n });\n });\n\nconst workflowCmd = program\n .command(\"workflow\")\n .description(\"Inspect and run workflows\");\n\nworkflowCmd\n .command(\"list\")\n .description(\"List runnable workflows\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"--page <n>\", \"Page number\")\n .option(\"--limit <n>\", \"Page size\")\n .addOption(\n new Option(\"--mode <mode>\", \"Workflow app mode\").choices([\"workflow\", \"chat\", \"completion\", \"agent-chat\"])\n )\n .addOption(createFormatOption())\n .action(async (options) => {\n const appCode = resolveAppCode(options.app);\n await workflow.listWorkflows(createAmasterClient(appCode), {\n page: options.page ? parseInt(options.page, 10) : undefined,\n limit: options.limit ? parseInt(options.limit, 10) : undefined,\n mode: options.mode,\n format: options.format,\n });\n });\n\nworkflowCmd\n .command(\"get <id>\")\n .alias(\"inspect\")\n .description(\"Get workflow details and input variables by workflow app ID\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (id: string, options) => {\n const appCode = resolveAppCode(options.app);\n await workflow.getWorkflow(createAmasterClient(appCode), {\n id,\n format: options.format,\n });\n });\n\nworkflowCmd\n .command(\"run <name>\")\n .alias(\"execute\")\n .description(\"Run a workflow\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .option(\"-i, --input <json>\", \"Workflow inputs object as JSON or @file\")\n .option(\"-r, --request <json>\", \"Full WorkflowRunRequest as JSON or @file\")\n .addOption(\n new Option(\"--response-mode <mode>\", \"Workflow response mode\").choices([\"blocking\", \"streaming\"])\n )\n .option(\"--user <user>\", \"Workflow user identifier\")\n .option(\"--files <json>\", \"Workflow files array as JSON or @file\")\n .option(\"--trace-id <traceId>\", \"Workflow trace ID\")\n .addOption(createFormatOption())\n .action(async (name: string, options) => {\n const appCode = resolveAppCode(options.app);\n await workflow.runWorkflow(createAmasterClient(appCode), {\n name,\n input: options.input,\n request: options.request,\n responseMode: options.responseMode,\n user: options.user,\n files: options.files,\n traceId: options.traceId,\n format: options.format,\n });\n });\n\nconst s3Cmd = program\n .command(\"s3\")\n .description(\"Manage S3 files\");\n\ns3Cmd\n .command(\"upload <file>\")\n .description(\"Upload a file\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (file: string, options) => {\n const appCode = resolveAppCode(options.app);\n await s3.uploadFile(createAmasterClient(appCode), {\n file,\n format: options.format,\n });\n });\n\ns3Cmd\n .command(\"download <key> <output>\")\n .description(\"Download a file to a local path\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, output: string, options) => {\n const appCode = resolveAppCode(options.app);\n await s3.downloadFile(createAmasterClient(appCode), {\n key,\n output,\n format: options.format,\n });\n });\n\ns3Cmd\n .command(\"metadata <key>\")\n .description(\"Get file metadata\")\n .option(\"--app <app-code>\", \"App code (uses default if not specified)\")\n .addOption(createFormatOption())\n .action(async (key: string, options) => {\n const appCode = resolveAppCode(options.app);\n await s3.getFileMetadata(createAmasterClient(appCode), {\n key,\n format: options.format,\n });\n });\n\nexport function isDirectCliExecution(entryArg: string | undefined = process.argv[1]): boolean {\n if (!entryArg) {\n return false;\n }\n\n try {\n return realpathSync(entryArg) === realpathSync(fileURLToPath(import.meta.url));\n } catch {\n return false;\n }\n}\n\nif (isDirectCliExecution()) {\n program.parseAsync(process.argv).then(\n () => process.exit(0),\n (err) => {\n console.error(err);\n process.exit(1);\n }\n );\n}\n","import chalk from \"chalk\";\nimport { createClient } from \"@amaster.ai/client\";\nimport { \n getAppConfig, \n saveAuthSession, \n clearAuthSession,\n} from \"../config.js\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\nexport async function login(\n appCode: string,\n options: { username?: string; email?: string; password?: string; format?: string }\n) {\n const spinner = createSpinner(`Logging in to ${appCode}...`, options.format);\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 username = options.username;\n let email = options.email;\n let password = options.password;\n\n if (!username && !email) {\n const { default: inquirer } = await import(\"inquirer\");\n const answers = await inquirer.prompt([\n {\n type: \"input\",\n name: \"login\",\n message: \"Username or Email:\",\n },\n {\n type: \"password\",\n name: \"password\",\n message: \"Password:\",\n when: !password,\n },\n ]);\n\n // Auto-detect if input is email or username\n const login = answers.login;\n if (login.includes('@')) {\n email = login;\n } else {\n username = login;\n }\n password = password || answers.password;\n } else if (!password) {\n const { default: inquirer } = await import(\"inquirer\");\n const answers = await inquirer.prompt([\n {\n type: \"password\",\n name: \"password\",\n message: \"Password:\",\n },\n ]);\n password = answers.password;\n }\n\n const client = createClient({ baseURL: appConfig.baseURL });\n\n // Build login params based on provided credentials\n const loginParams: any = { password: password! };\n if (email) {\n loginParams.email = email;\n } else if (username) {\n loginParams.username = username;\n }\n\n const result = await client.auth.login(loginParams);\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 const loggedInAt = new Date().toISOString();\n const expiresAt = loginData.expiresIn\n ? new Date(Date.now() + loginData.expiresIn * 1000).toISOString()\n : undefined;\n const sessionUser = loginData.user\n ? {\n uid: loginData.user.uid,\n email: loginData.user.email || \"\",\n name: loginData.user.displayName || loginData.user.username || undefined,\n }\n : undefined;\n\n saveAuthSession(appCode, {\n accessToken: loginData.accessToken,\n expiresAt,\n user: sessionUser,\n loggedInAt,\n });\n\n spinner.succeed(`Login successful: ${appCode}`);\n renderOutput(\n {\n appCode,\n baseURL: appConfig.baseURL,\n user: loginData.user ?? null,\n expiresAt: expiresAt ?? null,\n loggedInAt,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(\n chalk.green(\n `\\nWelcome, ${loginData.user?.displayName || loginData.user?.email || loginData.user?.username || email}!`\n )\n );\n console.log(chalk.gray(`App: ${appCode}`));\n console.log(chalk.gray(`URL: ${appConfig.baseURL}`));\n\n if (expiresAt) {\n const expires = new Date(expiresAt);\n console.log(chalk.gray(`Session expires: ${expires.toLocaleString()}`));\n }\n },\n }\n );\n } catch (error) {\n spinner.fail(\"Login failed\");\n throw error;\n }\n}\n\nexport async function logout(appCode: string, options: { format?: string } = {}) {\n const spinner = createSpinner(`Logging out from ${appCode}...`, options.format);\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 renderOutput(\n {\n appCode,\n loggedOut: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Logged out from ${appCode}`));\n },\n }\n );\n } catch (error) {\n spinner.fail(\"Logout failed\");\n throw error;\n }\n}\n\nexport async function getMe(getClient: () => AmasterClient, options: { format?: string } = {}) {\n const spinner = createSpinner(\"Fetching user info...\", options.format);\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 renderOutput(user, {\n format: options.format,\n pretty: () => {\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?.displayName || user?.username || \"N/A\"}`);\n console.log(` ${chalk.bold(\"Status:\")} ${user?.isActive ? \"Active\" : \"Inactive\"}`);\n },\n });\n } catch (error) {\n spinner.fail(\"Failed to fetch user info\");\n throw error;\n }\n}\n","import { Option } from \"commander\";\nimport ora from \"ora\";\n\nexport const OUTPUT_FORMATS = [\"json\", \"pretty\", \"table\", \"ndjson\", \"csv\"] as const;\n\nexport type OutputFormat = (typeof OUTPUT_FORMATS)[number];\n\ntype OutputRow = Record<string, unknown>;\n\nexport interface RenderOutputOptions {\n format?: string;\n pretty?: () => void;\n tableRows?: OutputRow[];\n csvRows?: OutputRow[];\n ndjsonItems?: unknown[];\n}\n\nexport function createFormatOption(description = \"Output format\"): Option {\n return new Option(\n \"--format <format>\",\n `${description}: ${OUTPUT_FORMATS.join(\", \")}`\n )\n .choices([...OUTPUT_FORMATS])\n .default(\"json\");\n}\n\nexport function resolveOutputFormat(format?: string): OutputFormat {\n if (!format) {\n return \"json\";\n }\n\n if ((OUTPUT_FORMATS as readonly string[]).includes(format)) {\n return format as OutputFormat;\n }\n\n throw new Error(`Unsupported output format: ${format}`);\n}\n\nexport function isPrettyOutput(format?: string): boolean {\n return resolveOutputFormat(format) === \"pretty\";\n}\n\nexport function createSpinner(text: string, format?: string) {\n return ora({\n text,\n isSilent: !isPrettyOutput(format),\n }).start();\n}\n\nexport function renderOutput(data: unknown, options: RenderOutputOptions = {}): void {\n const format = resolveOutputFormat(options.format);\n\n switch (format) {\n case \"pretty\":\n if (options.pretty) {\n options.pretty();\n return;\n }\n renderPrettyFallback(data);\n return;\n case \"json\":\n console.log(JSON.stringify(data ?? null, null, 2));\n return;\n case \"ndjson\":\n renderNdjson(options.ndjsonItems ?? data);\n return;\n case \"table\":\n renderTable(options.tableRows ?? inferRows(data));\n return;\n case \"csv\":\n renderCsv(options.csvRows ?? inferRows(data));\n return;\n }\n}\n\nfunction renderPrettyFallback(data: unknown): void {\n const rows = inferRows(data);\n\n if (rows.length === 0) {\n console.log(JSON.stringify(data ?? null, null, 2));\n return;\n }\n\n renderTable(rows);\n}\n\nfunction renderNdjson(data: unknown): void {\n const items = inferNdjsonItems(data);\n\n for (const item of items) {\n console.log(JSON.stringify(item ?? null));\n }\n}\n\nfunction renderTable(rows: OutputRow[]): void {\n console.table(rows);\n}\n\nfunction renderCsv(rows: OutputRow[]): void {\n if (rows.length === 0) {\n return;\n }\n\n const headers: string[] = [];\n\n for (const row of rows) {\n for (const key of Object.keys(row)) {\n if (!headers.includes(key)) {\n headers.push(key);\n }\n }\n }\n\n if (headers.length === 0) {\n return;\n }\n\n console.log(headers.join(\",\"));\n\n for (const row of rows) {\n console.log(headers.map((header) => escapeCsv(row[header])).join(\",\"));\n }\n}\n\nfunction inferNdjsonItems(data: unknown): unknown[] {\n const collection = extractCollection(data);\n if (collection) {\n return collection;\n }\n\n if (Array.isArray(data)) {\n return data;\n }\n\n return [data ?? null];\n}\n\nfunction inferRows(data: unknown): OutputRow[] {\n const collection = extractCollection(data);\n if (collection) {\n return normalizeRows(collection);\n }\n\n if (Array.isArray(data)) {\n return normalizeRows(data);\n }\n\n if (isPlainObject(data)) {\n return [normalizeRow(data)];\n }\n\n return [{ value: normalizeCell(data) }];\n}\n\nfunction extractCollection(data: unknown): unknown[] | null {\n if (!isPlainObject(data)) {\n return null;\n }\n\n if (Array.isArray(data.items)) {\n return data.items;\n }\n\n if (Array.isArray(data.list)) {\n return data.list;\n }\n\n return null;\n}\n\nfunction normalizeRows(items: unknown[]): OutputRow[] {\n return items.map((item) => {\n if (isPlainObject(item)) {\n return normalizeRow(item);\n }\n\n return { value: normalizeCell(item) };\n });\n}\n\nfunction normalizeRow(row: OutputRow): OutputRow {\n return Object.fromEntries(\n Object.entries(row).map(([key, value]) => [key, normalizeCell(value)])\n );\n}\n\nfunction normalizeCell(value: unknown): string | number | boolean | null {\n if (value === null || value === undefined) {\n return null;\n }\n\n if (typeof value === \"string\" || typeof value === \"number\" || typeof value === \"boolean\") {\n return value;\n }\n\n return JSON.stringify(value);\n}\n\nfunction escapeCsv(value: unknown): string {\n const cell =\n value === null || value === undefined\n ? \"\"\n : typeof value === \"string\"\n ? value\n : typeof value === \"number\" || typeof value === \"boolean\"\n ? String(value)\n : JSON.stringify(value);\n\n if (/[\",\\n]/.test(cell)) {\n return `\"${cell.replace(/\"/g, \"\\\"\\\"\")}\"`;\n }\n\n return cell;\n}\n\nfunction isPlainObject(value: unknown): value is OutputRow {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n","import { readFileSync } from \"node:fs\";\nimport chalk from \"chalk\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\ntype EntityRecord = Record<string, unknown>;\ntype BulkUpdateItem = EntityRecord & { id: string | number };\n\nfunction isPlainObject(value: unknown): value is EntityRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction resolveInputSource(input: string): string {\n if (!input.startsWith(\"@\")) {\n return input;\n }\n\n const filePath = input.slice(1);\n if (!filePath) {\n throw new Error(\"File path is required after '@'.\");\n }\n\n return readFileSync(filePath, \"utf8\");\n}\n\nfunction parseJsonInput(input: string, label: string): unknown {\n const source = resolveInputSource(input).trim();\n\n if (!source) {\n throw new Error(`${label} is required.`);\n }\n\n try {\n return JSON.parse(source);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid ${label}: ${reason}`);\n }\n}\n\nasync function promptForJson(message: string, defaultValue: string): Promise<string> {\n const { default: inquirer } = await import(\"inquirer\");\n const { jsonData } = await inquirer.prompt([\n {\n type: \"editor\",\n name: \"jsonData\",\n message,\n default: defaultValue,\n },\n ]);\n\n return jsonData;\n}\n\nasync function loadJsonObjectInput(\n input: string | undefined,\n label: string,\n promptMessage: string\n): Promise<EntityRecord> {\n const source = input ?? (await promptForJson(promptMessage, \"{}\"));\n const value = parseJsonInput(source, label);\n\n if (!isPlainObject(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n\n return value;\n}\n\nasync function loadJsonArrayInput(\n input: string | undefined,\n label: string,\n promptMessage: string\n): Promise<unknown[]> {\n const source = input ?? (await promptForJson(promptMessage, \"[]\"));\n const value = parseJsonInput(source, label);\n\n if (!Array.isArray(value)) {\n throw new Error(`${label} must be a JSON array.`);\n }\n\n return value;\n}\n\nfunction loadOptionalJsonObjectInput(input: string | undefined, label: string): EntityRecord {\n if (!input) {\n return {};\n }\n\n const value = parseJsonInput(input, label);\n if (!isPlainObject(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n\n return value;\n}\n\nfunction parseCommaSeparatedValues(value: string | undefined): string[] | undefined {\n if (!value) {\n return undefined;\n }\n\n const values = value\n .split(\",\")\n .map((entry) => entry.trim())\n .filter(Boolean);\n\n return values.length > 0 ? values : undefined;\n}\n\nfunction validateBulkUpdateItems(items: unknown[]): BulkUpdateItem[] {\n return items.map((item, index) => {\n if (!isPlainObject(item)) {\n throw new Error(`Bulk update item at index ${index} must be a JSON object.`);\n }\n\n if (typeof item.id !== \"string\" && typeof item.id !== \"number\") {\n throw new Error(`Bulk update item at index ${index} must include an 'id'.`);\n }\n\n return item as BulkUpdateItem;\n });\n}\n\nfunction parseIdsInput(input: string): Array<string | number> {\n const source = resolveInputSource(input).trim();\n\n if (!source) {\n throw new Error(\"IDs are required.\");\n }\n\n if (source.startsWith(\"[\")) {\n const value = parseJsonInput(input, \"IDs\");\n if (!Array.isArray(value)) {\n throw new Error(\"IDs must be a JSON array.\");\n }\n\n return value.map((id, index) => {\n if (typeof id !== \"string\" && typeof id !== \"number\") {\n throw new Error(`ID at index ${index} must be a string or number.`);\n }\n return id;\n });\n }\n\n const ids = source\n .split(/[,\\n]/)\n .map((id) => id.trim())\n .filter(Boolean);\n\n if (ids.length === 0) {\n throw new Error(\"IDs are required.\");\n }\n\n return ids;\n}\n\nasync function loadIdsInput(input: string | undefined): Promise<Array<string | number>> {\n if (input) {\n return parseIdsInput(input);\n }\n\n const { default: inquirer } = await import(\"inquirer\");\n const { ids } = await inquirer.prompt([\n {\n type: \"input\",\n name: \"ids\",\n message: \"Enter IDs (comma-separated or JSON array):\",\n },\n ]);\n\n return parseIdsInput(ids);\n}\n\nfunction exitWithCommandError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: unknown\n): never {\n spinner.fail(failureMessage);\n const details = error instanceof Error ? error.message : String(error);\n if (details) {\n console.error(chalk.red(details));\n }\n process.exit(1);\n}\n\nfunction buildListQueryParams(options: {\n query?: string;\n fields?: string;\n relations?: string;\n keyword?: string;\n keywordFields?: string;\n orderBy?: string;\n orderDir?: string;\n orders?: string;\n filter?: string;\n limit?: number;\n offset?: number;\n}): EntityRecord {\n const params = loadOptionalJsonObjectInput(options.query, \"query params\");\n const fields = parseCommaSeparatedValues(options.fields);\n const relations = parseCommaSeparatedValues(options.relations);\n const keywordFields = parseCommaSeparatedValues(options.keywordFields);\n\n if (keywordFields && !options.keyword) {\n throw new Error(\"--keyword-fields requires --keyword.\");\n }\n\n if (options.orderDir && !options.orderBy) {\n throw new Error(\"--order-dir requires --order-by.\");\n }\n\n if (options.orders && (options.orderBy || options.orderDir)) {\n throw new Error(\"--orders cannot be used together with --order-by or --order-dir.\");\n }\n\n if (fields) {\n params.__fields = fields;\n }\n\n if (relations) {\n params.__relations = relations;\n }\n\n if (options.keyword) {\n params.__keywords = keywordFields ? { fields: keywordFields, value: options.keyword } : options.keyword;\n }\n\n if (options.orderBy) {\n params.orderBy = options.orderBy;\n }\n\n if (options.orderDir) {\n params.orderDir = options.orderDir;\n }\n\n if (options.orders) {\n params.__orders = options.orders;\n }\n\n if (options.filter) {\n params.__filter = loadOptionalJsonObjectInput(options.filter, \"filter\");\n }\n\n if (options.limit !== undefined) {\n params.limit = options.limit;\n }\n\n if (options.offset !== undefined) {\n params.offset = options.offset;\n }\n\n return params;\n}\n\nexport async function listEntities(\n client: AmasterClient,\n options: {\n namespace: string;\n entity: string;\n page?: number;\n pageSize?: number;\n query?: string;\n fields?: string;\n relations?: string;\n keyword?: string;\n keywordFields?: string;\n orderBy?: string;\n orderDir?: string;\n orders?: string;\n filter?: string;\n limit?: number;\n offset?: number;\n format?: string;\n }\n) {\n const spinner = createSpinner(`Fetching ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const query = buildListQueryParams(options);\n const paginationParams: EntityRecord = {};\n\n if (options.page !== undefined) {\n paginationParams.page = options.page;\n }\n\n if (options.pageSize !== undefined) {\n paginationParams.perPage = options.pageSize;\n }\n\n const result = await entityClient.list(options.namespace, options.entity, {\n ...query,\n ...paginationParams,\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.stop();\n\n const listData = result.data as\n | Array<Record<string, unknown>>\n | { items?: Array<Record<string, unknown>>; list?: Array<Record<string, unknown>>; total?: number }\n | null\n | undefined;\n\n let items: Array<Record<string, unknown>> = [];\n let total = 0;\n if (Array.isArray(listData)) {\n items = listData;\n total = items.length;\n } else if (listData?.items) {\n items = listData.items;\n total = listData.total || items.length;\n } else if (listData?.list) {\n items = listData.list;\n total = listData.total || items.length;\n }\n\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐ฆ ${options.entity} in ${options.namespace}`));\n console.log(chalk.gray(`ๅ
ฑ ${total} ๆก่ฎฐๅฝ:\\n`));\n\n if (items.length === 0) {\n console.log(chalk.gray(\" ๆๆ ๆฐๆฎ\"));\n return;\n }\n\n const firstItem = items[0]!;\n const keys = Object.keys(firstItem).slice(0, 8);\n\n const widths: Record<string, number> = {};\n keys.forEach((key) => {\n const maxValueWidth = Math.max(\n key.length,\n ...items.map((item) => {\n const val = item[key];\n if (val === null || val === undefined) return 4;\n const str = typeof val === \"object\" ? JSON.stringify(val) : String(val);\n return str.length;\n })\n );\n widths[key] = Math.min(maxValueWidth + 2, 30);\n });\n\n const headerLine = keys\n .map((key) => {\n const width = widths[key] ?? 0;\n return chalk.bold(key.slice(0, width).padEnd(width));\n })\n .join(\"โ\");\n console.log(\" \" + headerLine);\n console.log(\" \" + keys.map((key) => \"โ\".repeat(widths[key] ?? 0)).join(\"โผ\"));\n\n for (const item of items) {\n const rowLine = keys\n .map((key) => {\n const width = widths[key] ?? 0;\n let val = item[key];\n if (val === null || val === undefined) val = \"null\";\n const str =\n typeof val === \"object\"\n ? JSON.stringify(val).slice(0, width - 2)\n : String(val).slice(0, width - 2);\n return str.padEnd(width);\n })\n .join(\"โ\");\n console.log(\" \" + rowLine);\n }\n\n console.log();\n if (items.length < total) {\n console.log(chalk.gray(` ... ่ฟๆ ${total - items.length} ๆก่ฎฐๅฝ`));\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch entities\", error);\n }\n}\n\nexport async function getEntity(\n client: AmasterClient,\n options: { namespace: string; entity: string; id: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const result = await entityClient.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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐ ${options.entity}\\n`));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch entity\", error);\n }\n}\n\nexport async function createEntity(\n client: AmasterClient,\n options: { namespace: string; entity: string; data?: string; format?: string }\n) {\n const spinner = createSpinner(`Creating ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const data = await loadJsonObjectInput(options.data, \"entity data\", \"Enter JSON data:\");\n\n const result = await entityClient.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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(\"\\nCreated entity:\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to create entity\", error);\n }\n}\n\nexport async function updateEntity(\n client: AmasterClient,\n options: { namespace: string; entity: string; id: string; data?: string; format?: string }\n) {\n const spinner = createSpinner(`Updating ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const data = await loadJsonObjectInput(options.data, \"entity data\", \"Enter JSON data:\");\n\n const result = await entityClient.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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(\"\\nUpdated entity:\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to update entity\", error);\n }\n}\n\nexport async function deleteEntity(\n client: AmasterClient,\n options: { namespace: string; entity: string; id: string; format?: string }\n) {\n const spinner = createSpinner(`Deleting ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const result = await entityClient.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 renderOutput(\n {\n namespace: options.namespace,\n entity: options.entity,\n id: options.id,\n deleted: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`\\nDeleted ${options.entity} with ID: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to delete entity\", error);\n }\n}\n\nexport async function listEntityOptions(\n client: AmasterClient,\n options: { namespace: string; entity: string; fields?: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching ${options.entity} options...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const fields = parseCommaSeparatedValues(options.fields);\n const result = await entityClient.options(options.namespace, options.entity, fields);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch entity options\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.length || 0} options`);\n renderOutput(result.data || [], {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐งพ ${options.entity} options\\n`));\n console.log(JSON.stringify(result.data || [], null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch entity options\", error);\n }\n}\n\nexport async function bulkUpdateEntities(\n client: AmasterClient,\n options: { namespace: string; entity: string; items?: string; format?: string }\n) {\n const spinner = createSpinner(`Bulk updating ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const rawItems = await loadJsonArrayInput(\n options.items,\n \"bulk update items\",\n \"Enter JSON array of items:\"\n );\n const items = validateBulkUpdateItems(rawItems);\n const result = await entityClient.bulkUpdate(options.namespace, options.entity, items);\n\n if (result.error) {\n spinner.fail(\"Failed to bulk update entities\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Updated ${items.length} entities`);\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`\\nBulk updated ${items.length} ${options.entity} records:`));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to bulk update entities\", error);\n }\n}\n\nexport async function bulkDeleteEntities(\n client: AmasterClient,\n options: { namespace: string; entity: string; ids?: string; format?: string }\n) {\n const spinner = createSpinner(`Bulk deleting ${options.entity}...`, options.format);\n\n try {\n const entityClient = client.entity as any;\n const ids = await loadIdsInput(options.ids);\n const result = await entityClient.bulkDelete(options.namespace, options.entity, ids);\n\n if (result.error) {\n spinner.fail(\"Failed to bulk delete entities\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Deleted ${ids.length} entities`);\n renderOutput(\n {\n namespace: options.namespace,\n entity: options.entity,\n ids,\n deleted: true,\n count: ids.length,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`\\nDeleted ${ids.length} ${options.entity} records.`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to bulk delete entities\", error);\n }\n}\n\nexport async function listEntityTypes(\n client: AmasterClient,\n options: { namespace: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching entity types...\", options.format);\n\n try {\n const entityClient = client.entity as any;\n const result = await entityClient.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 renderOutput(types, {\n format: options.format,\n pretty: () => {\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 },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch entity types\", error);\n }\n}\n","import { readFileSync } from \"node:fs\";\nimport chalk from \"chalk\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\ntype ModelInfo = {\n modelId: string;\n tableName: string;\n description?: string;\n};\n\ntype DataSourceWithModels = {\n sourceId: string;\n name: string;\n systemBuilt: boolean;\n synchronizeMode: number;\n models: ModelInfo[];\n};\n\ntype CreateTableStatement = {\n tableName: string;\n createTableSql: string;\n};\n\nfunction resolveInputSource(input: string): string {\n if (!input.startsWith(\"@\")) {\n return input;\n }\n\n const filePath = input.slice(1);\n if (!filePath) {\n throw new Error(\"File path is required after '@'.\");\n }\n\n return readFileSync(filePath, \"utf8\");\n}\n\nfunction exitWithCommandError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: unknown\n): never {\n spinner.fail(failureMessage);\n const details = error instanceof Error ? error.message : String(error);\n if (details) {\n console.error(chalk.red(details));\n }\n process.exit(1);\n}\n\nfunction parseTableNamesInput(input: string | undefined): string[] | undefined {\n if (!input) {\n return undefined;\n }\n\n const source = resolveInputSource(input).trim();\n if (!source) {\n return undefined;\n }\n\n if (source.startsWith(\"[\")) {\n let parsed: unknown;\n try {\n parsed = JSON.parse(source);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid table list: ${reason}`);\n }\n\n if (!Array.isArray(parsed)) {\n throw new Error(\"Table list must be a JSON array.\");\n }\n\n return parsed.map((value, index) => {\n if (typeof value !== \"string\") {\n throw new Error(`Table name at index ${index} must be a string.`);\n }\n return value;\n });\n }\n\n const values = source\n .split(/[,\\n]/)\n .map((entry) => entry.trim())\n .filter(Boolean);\n\n return values.length > 0 ? values : undefined;\n}\n\nexport async function listDatasources(\n client: AmasterClient,\n options: { format?: string } = {}\n) {\n const spinner = createSpinner(\"Fetching datasources...\", options.format);\n\n try {\n const result = await client.http.request<DataSourceWithModels[]>({\n url: \"/api/entity/source/list_with_models\",\n method: \"GET\",\n });\n\n if (result.error) {\n spinner.fail(\"Failed to fetch datasources\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const datasources = result.data || [];\n spinner.succeed(`Found ${datasources.length} datasource${datasources.length === 1 ? \"\" : \"s\"}`);\n\n renderOutput(datasources, {\n format: options.format,\n tableRows: datasources.map((source) => ({\n sourceId: source.sourceId,\n name: source.name,\n systemBuilt: source.systemBuilt,\n synchronizeMode: source.synchronizeMode,\n modelCount: source.models?.length || 0,\n })),\n csvRows: datasources.map((source) => ({\n sourceId: source.sourceId,\n name: source.name,\n systemBuilt: source.systemBuilt,\n synchronizeMode: source.synchronizeMode,\n modelCount: source.models?.length || 0,\n })),\n ndjsonItems: datasources,\n pretty: () => {\n console.log(chalk.blue(\"\\nData Sources\\n\"));\n if (datasources.length === 0) {\n console.log(chalk.gray(\"No datasources found.\"));\n return;\n }\n\n for (const source of datasources) {\n console.log(`${chalk.green(\"โข\")} ${chalk.bold(source.name)} ${chalk.gray(`(${source.sourceId})`)}`);\n console.log(` ${chalk.gray(\"System Built:\")} ${source.systemBuilt}`);\n console.log(` ${chalk.gray(\"Sync Mode:\")} ${source.synchronizeMode}`);\n\n if (!source.models || source.models.length === 0) {\n console.log(` ${chalk.gray(\"Models:\")} none`);\n continue;\n }\n\n console.log(` ${chalk.gray(\"Models:\")}`);\n for (const model of source.models) {\n const suffix = model.description ? ` ${chalk.gray(`- ${model.description}`)}` : \"\";\n console.log(` - ${chalk.bold(model.tableName)} ${chalk.gray(`(${model.modelId})`)}${suffix}`);\n }\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch datasources\", error);\n }\n}\n\nexport async function getTableSchema(\n client: AmasterClient,\n options: { sourceId: string; tables?: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching table schema for ${options.sourceId}...`, options.format);\n\n try {\n const tableNames = parseTableNamesInput(options.tables);\n const search = new URLSearchParams();\n\n if (tableNames && tableNames.length > 0) {\n search.set(\"tableNames\", tableNames.join(\",\"));\n }\n\n const query = search.toString();\n const url = `/api/entity/source/${encodeURIComponent(options.sourceId)}/create_table_statements${\n query ? `?${query}` : \"\"\n }`;\n\n const result = await client.http.request<CreateTableStatement[]>({\n url,\n method: \"GET\",\n });\n\n if (result.error) {\n spinner.fail(\"Failed to fetch table schema\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const tables = result.data || [];\n spinner.succeed(`Fetched schema for ${tables.length} table${tables.length === 1 ? \"\" : \"s\"}`);\n\n renderOutput(tables, {\n format: options.format,\n tableRows: tables.map((table) => ({\n tableName: table.tableName,\n createTableSql: table.createTableSql,\n })),\n csvRows: tables.map((table) => ({\n tableName: table.tableName,\n createTableSql: table.createTableSql,\n })),\n ndjsonItems: tables,\n pretty: () => {\n console.log(chalk.blue(`\\nTable Schemas: ${options.sourceId}\\n`));\n if (tables.length === 0) {\n console.log(chalk.gray(\"No tables found.\"));\n return;\n }\n\n for (const table of tables) {\n console.log(chalk.green(table.tableName));\n console.log(table.createTableSql);\n console.log();\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch table schema\", error);\n }\n}\n","import { readFileSync } from \"node:fs\";\nimport chalk from \"chalk\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\ntype JsonObject = Record<string, unknown>;\n\nfunction isPlainObject(value: unknown): value is JsonObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction resolveInputSource(input: string): string {\n if (!input.startsWith(\"@\")) {\n return input;\n }\n\n const filePath = input.slice(1);\n if (!filePath) {\n throw new Error(\"File path is required after '@'.\");\n }\n\n return readFileSync(filePath, \"utf8\");\n}\n\nfunction parseJsonInput(input: string, label: string): unknown {\n const source = resolveInputSource(input).trim();\n\n if (!source) {\n throw new Error(`${label} is required.`);\n }\n\n try {\n return JSON.parse(source);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid ${label}: ${reason}`);\n }\n}\n\nasync function promptForJson(message: string, defaultValue: string): Promise<string> {\n const { default: inquirer } = await import(\"inquirer\");\n const { jsonData } = await inquirer.prompt([\n {\n type: \"editor\",\n name: \"jsonData\",\n message,\n default: defaultValue,\n },\n ]);\n\n return jsonData;\n}\n\nasync function loadJsonObjectInput(\n input: string | undefined,\n label: string,\n promptMessage: string\n): Promise<JsonObject> {\n const source = input ?? (await promptForJson(promptMessage, \"{}\"));\n const value = parseJsonInput(source, label);\n\n if (!isPlainObject(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n\n return value;\n}\n\nfunction loadOptionalJsonObjectInput(input: string | undefined, label: string): JsonObject {\n if (!input) {\n return {};\n }\n\n const value = parseJsonInput(input, label);\n if (!isPlainObject(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n\n return value;\n}\n\nfunction exitWithCommandError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: unknown\n): never {\n spinner.fail(failureMessage);\n const details = error instanceof Error ? error.message : String(error);\n if (details) {\n console.error(chalk.red(details));\n }\n process.exit(1);\n}\n\nfunction extractClientErrorMessage(error: { message?: string | null } | null | undefined): string {\n return error?.message || \"Unknown BPM client error.\";\n}\n\nfunction exitWithClientError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: { message?: string | null } | null | undefined,\n diagnosticMessage?: string | null\n): never {\n spinner.fail(failureMessage);\n console.error(chalk.red(diagnosticMessage || extractClientErrorMessage(error)));\n process.exit(1);\n}\n\nfunction inspectStartEventFormConfiguration(bpmnXml: string): {\n startEventCount: number;\n hasFormKey: boolean;\n hasCamundaFormRef: boolean;\n hasCamundaFormData: boolean;\n} {\n const startEventMatches =\n bpmnXml.match(/<[^>]*startEvent\\b[\\s\\S]*?(?:<\\/[^>]*startEvent>|\\/>)/g) || [];\n\n return {\n startEventCount: startEventMatches.length,\n hasFormKey: startEventMatches.some((eventXml) => /\\bformKey\\s*=/.test(eventXml)),\n hasCamundaFormRef: startEventMatches.some((eventXml) => /\\bcamunda:formRef\\s*=/.test(eventXml)),\n hasCamundaFormData: startEventMatches.some((eventXml) => /<camunda:formData\\b/.test(eventXml)),\n };\n}\n\nasync function diagnoseTaskFormSchemaError(\n bpmClient: any,\n taskId: string,\n originalMessage: string\n): Promise<string | null> {\n try {\n const taskFormResult = await bpmClient.getTaskForm(taskId);\n if (taskFormResult?.error || !taskFormResult?.data) {\n return null;\n }\n\n const key =\n typeof taskFormResult.data.key === \"string\" && taskFormResult.data.key.length > 0\n ? taskFormResult.data.key\n : null;\n const camundaFormRef = taskFormResult.data.camundaFormRef;\n\n if (!camundaFormRef && key?.includes(\"/rendered-form\")) {\n return [\n `Task '${taskId}' uses an embedded/generated Camunda form (${key}) rather than a schema-backed form.`,\n \"`bpm task-form-schema` is expected to return 404 in this case.\",\n \"Use `bpm task-form`, `bpm task-rendered-form`, or `bpm task-form-variables` instead.\",\n ].join(\" \");\n }\n\n if (!camundaFormRef && !key) {\n return [\n `Task '${taskId}' does not expose schema-backed form metadata.`,\n \"Use `bpm task-form` or `bpm task-form-variables` instead.\",\n ].join(\" \");\n }\n\n if (camundaFormRef) {\n return [\n `Task '${taskId}' appears to reference a Camunda form via camundaFormRef, but the backend returned 404 for /form-schema.`,\n `Original error: ${originalMessage}`,\n ].join(\" \");\n }\n } catch {\n // Ignore diagnostics failures and fall back to the original error.\n }\n\n return null;\n}\n\nasync function diagnoseStartFormError(\n bpmClient: any,\n processKey: string,\n originalMessage: string\n): Promise<string | null> {\n let tenantId: string | null = null;\n let startFormConfig:\n | {\n startEventCount: number;\n hasFormKey: boolean;\n hasCamundaFormRef: boolean;\n hasCamundaFormData: boolean;\n }\n | null = null;\n\n try {\n const definitionsResult = await bpmClient.getProcessDefinitions({ key: processKey, latestVersion: true });\n if (!definitionsResult?.error && Array.isArray(definitionsResult?.data) && definitionsResult.data.length > 0) {\n const latestDefinition = definitionsResult.data[0];\n tenantId = latestDefinition?.tenantId || null;\n }\n } catch {\n // Ignore diagnostics failures and fall back to the original error.\n }\n\n try {\n const xmlResult = await bpmClient.getProcessXml(processKey);\n if (!xmlResult?.error && typeof xmlResult?.data?.bpmn20Xml === \"string\") {\n startFormConfig = inspectStartEventFormConfiguration(xmlResult.data.bpmn20Xml);\n }\n } catch {\n // Ignore diagnostics failures and fall back to the original error.\n }\n\n if (\n startFormConfig &&\n !startFormConfig.hasFormKey &&\n !startFormConfig.hasCamundaFormRef &&\n !startFormConfig.hasCamundaFormData\n ) {\n const tenantHint =\n tenantId && /no tenant-id/i.test(originalMessage)\n ? ` The process definition is tenant-scoped ('${tenantId}'), and this endpoint also appears to resolve by key without tenant context.`\n : \"\";\n\n return [\n `Process '${processKey}' exists, but its start event does not define formKey, camunda:formRef, or camunda:formData.`,\n \"`bpm start-form*` endpoints are expected to fail for this model.\",\n `Use \\`bpm xml ${processKey}\\` to inspect the BPMN or configure a start form first.${tenantHint}`,\n ].join(\" \");\n }\n\n if (tenantId && /no tenant-id/i.test(originalMessage)) {\n return [\n `Process '${processKey}' exists under tenant '${tenantId}', but the backend start-form endpoint resolved the process definition by key without tenant-id.`,\n \"Current CLI/SDK sends only processKey for this endpoint.\",\n \"This is likely a backend multi-tenant lookup limitation rather than a wrong CLI parameter.\",\n ].join(\" \");\n }\n\n if (/formKey/i.test(originalMessage) && /camunda:formRef/i.test(originalMessage)) {\n return [\n `Process '${processKey}' does not expose a deployed start form because neither formKey nor camunda:formRef is configured on the start event.`,\n \"If you need a start form, add formKey or camunda:formRef in the BPMN model.\",\n ].join(\" \");\n }\n\n return null;\n}\n\nfunction buildProcessDefinitionQueryParams(options: {\n query?: string;\n key?: string;\n name?: string;\n latestVersion?: boolean;\n active?: boolean;\n suspended?: boolean;\n sortBy?: string;\n sortOrder?: string;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"process query params\");\n\n if (options.key) params.key = options.key;\n if (options.name) params.name = options.name;\n if (options.latestVersion !== undefined) params.latestVersion = options.latestVersion;\n if (options.active !== undefined) params.active = options.active;\n if (options.suspended !== undefined) params.suspended = options.suspended;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n\n return params;\n}\n\nfunction buildTaskQueryParams(options: {\n query?: string;\n processInstanceId?: string;\n assignee?: string;\n candidateUser?: string;\n candidateGroup?: string;\n name?: string;\n nameLike?: string;\n taskDefinitionKey?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"task query params\");\n\n if (options.processInstanceId) params.processInstanceId = options.processInstanceId;\n if (options.assignee) params.assignee = options.assignee;\n if (options.candidateUser) params.candidateUser = options.candidateUser;\n if (options.candidateGroup) params.candidateGroup = options.candidateGroup;\n if (options.name) params.name = options.name;\n if (options.nameLike) params.nameLike = options.nameLike;\n if (options.taskDefinitionKey) params.taskDefinitionKey = options.taskDefinitionKey;\n if (options.firstResult !== undefined) params.firstResult = options.firstResult;\n if (options.maxResults !== undefined) params.maxResults = options.maxResults;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n\n return params;\n}\n\nfunction buildProcessInstanceQueryParams(options: {\n query?: string;\n processDefinitionKey?: string;\n active?: boolean;\n firstResult?: number;\n maxResults?: number;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"process instance query params\");\n\n if (options.processDefinitionKey) params.processDefinitionKey = options.processDefinitionKey;\n if (options.active !== undefined) params.active = options.active;\n if (options.firstResult !== undefined) params.firstResult = options.firstResult;\n if (options.maxResults !== undefined) params.maxResults = options.maxResults;\n\n return params;\n}\n\nfunction buildHistoryTaskQueryParams(options: {\n query?: string;\n taskAssignee?: string;\n processInstanceId?: string;\n finished?: boolean;\n unfinished?: boolean;\n scope?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"history task query params\");\n\n if (options.taskAssignee) params.taskAssignee = options.taskAssignee;\n if (options.processInstanceId) params.processInstanceId = options.processInstanceId;\n if (options.finished !== undefined) params.finished = options.finished;\n if (options.unfinished !== undefined) params.unfinished = options.unfinished;\n if (options.scope) params.scope = options.scope;\n if (options.firstResult !== undefined) params.firstResult = options.firstResult;\n if (options.maxResults !== undefined) params.maxResults = options.maxResults;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n\n return params;\n}\n\nfunction buildHistoryProcessInstanceQueryParams(options: {\n query?: string;\n startedBy?: string;\n finished?: boolean;\n unfinished?: boolean;\n processDefinitionKey?: string;\n scope?: string;\n sortBy?: string;\n sortOrder?: string;\n firstResult?: number;\n maxResults?: number;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"history process instance query params\");\n\n if (options.startedBy) params.startedBy = options.startedBy;\n if (options.finished !== undefined) params.finished = options.finished;\n if (options.unfinished !== undefined) params.unfinished = options.unfinished;\n if (options.processDefinitionKey) params.processDefinitionKey = options.processDefinitionKey;\n if (options.scope) params.scope = options.scope;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n if (options.firstResult !== undefined) params.firstResult = options.firstResult;\n if (options.maxResults !== undefined) params.maxResults = options.maxResults;\n\n return params;\n}\n\nfunction buildHistoryActivityQueryParams(options: {\n query?: string;\n processInstanceId?: string;\n activityId?: string;\n activityType?: string;\n finished?: boolean;\n sortBy?: string;\n sortOrder?: string;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"history activity query params\");\n\n if (options.processInstanceId) params.processInstanceId = options.processInstanceId;\n if (options.activityId) params.activityId = options.activityId;\n if (options.activityType) params.activityType = options.activityType;\n if (options.finished !== undefined) params.finished = options.finished;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n\n return params;\n}\n\nfunction buildHistoryVariableQueryParams(options: {\n query?: string;\n processInstanceId?: string;\n variableName?: string;\n deserializeValues?: boolean;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"history variable query params\");\n\n if (options.processInstanceId) params.processInstanceId = options.processInstanceId;\n if (options.variableName) params.variableName = options.variableName;\n if (options.deserializeValues !== undefined) params.deserializeValues = options.deserializeValues;\n\n return params;\n}\n\nfunction buildUserOperationLogQueryParams(options: {\n query?: string;\n processInstanceId?: string;\n taskId?: string;\n userId?: string;\n operationType?: string;\n sortBy?: string;\n sortOrder?: string;\n firstResult?: number;\n maxResults?: number;\n}): JsonObject {\n const params = loadOptionalJsonObjectInput(options.query, \"user operation log query params\");\n\n if (options.processInstanceId) params.processInstanceId = options.processInstanceId;\n if (options.taskId) params.taskId = options.taskId;\n if (options.userId) params.userId = options.userId;\n if (options.operationType) params.operationType = options.operationType;\n if (options.sortBy) params.sortBy = options.sortBy;\n if (options.sortOrder) params.sortOrder = options.sortOrder;\n if (options.firstResult !== undefined) params.firstResult = options.firstResult;\n if (options.maxResults !== undefined) params.maxResults = options.maxResults;\n\n return params;\n}\n\nexport async function listProcesses(\n client: AmasterClient,\n options: {\n query?: string;\n key?: string;\n name?: string;\n latestVersion?: boolean;\n active?: boolean;\n suspended?: boolean;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching process definitions...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildProcessDefinitionQueryParams(options);\n const result = await bpmClient.getProcessDefinitions(params);\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 renderOutput(processes, {\n format: options.format,\n pretty: () => {\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(\"ID:\")} ${proc.id || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Name:\")} ${proc.name || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Version:\")} ${proc.version || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Suspended:\")} ${proc.suspended ? \"Yes\" : \"No\"}`);\n console.log();\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch processes\", error);\n }\n}\n\nexport async function getProcessXml(\n client: AmasterClient,\n options: { key: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching BPMN XML for ${options.key}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getProcessXml(options.key);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch process XML\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process XML retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐ BPMN XML: ${options.key}\\n`));\n console.log(result.data?.bpmn20Xml || \"\");\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch process XML\", error);\n }\n}\n\nexport async function startProcess(\n client: AmasterClient,\n options: { key: string; variables?: string; format?: string }\n) {\n const spinner = createSpinner(`Starting process: ${options.key}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const variables = loadOptionalJsonObjectInput(options.variables, \"process variables\");\n\n const result = await bpmClient.startProcess(options.key, variables);\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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\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 },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to start process\", error);\n }\n}\n\nexport async function listProcessInstances(\n client: AmasterClient,\n options: {\n query?: string;\n processDefinitionKey?: string;\n active?: boolean;\n firstResult?: number;\n maxResults?: number;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching process instances...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildProcessInstanceQueryParams(options);\n const result = await bpmClient.getProcessInstances(params);\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 renderOutput(instances, {\n format: options.format,\n pretty: () => {\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/A\"}`);\n console.log(` ${chalk.gray(\"Business Key:\")} ${instance.businessKey || \"N/A\"}`);\n console.log(\n ` ${chalk.gray(\"Status:\")} ${instance.ended ? \"Ended\" : instance.suspended ? \"Suspended\" : \"Active\"}`\n );\n console.log();\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch process instances\", error);\n }\n}\n\nexport async function getProcessInstance(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching process instance...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Process Instance\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch process instance\", error);\n }\n}\n\nexport async function getActivityInstanceTree(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching activity instance tree...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getActivityInstanceTree(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch activity instance tree\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Activity instance tree retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ณ Activity Instance Tree\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch activity instance tree\", error);\n }\n}\n\nexport async function getActiveActivities(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching active activities...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getActiveActivities(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch active activities\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const activities = Array.isArray(result.data) ? result.data : [];\n spinner.succeed(`Found ${activities.length} active activities`);\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\nโก Active Activities\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch active activities\", error);\n }\n}\n\nexport async function getRuntimeVariables(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching runtime variables...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getRuntimeVariables(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch runtime variables\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Runtime variables retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งฎ Runtime Variables\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch runtime variables\", error);\n }\n}\n\nexport async function getProcessVariables(\n client: AmasterClient,\n options: { id: string; name?: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching process variables...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getProcessVariables({\n processInstanceId: options.id,\n variableName: options.name,\n });\n\n if (result.error) {\n spinner.fail(\"Failed to fetch process variables\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(`Found ${result.data?.length || 0} variables`);\n renderOutput(result.data || [], {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งพ Process Variables\\n\"));\n console.log(JSON.stringify(result.data || [], null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch process variables\", error);\n }\n}\n\nexport async function deleteProcessInstance(\n client: AmasterClient,\n options: { id: string; skipCustomListeners?: boolean; format?: string }\n) {\n const spinner = createSpinner(`Deleting process instance: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.deleteProcessInstance(options.id, {\n skipCustomListeners: options.skipCustomListeners,\n });\n\n if (result.error) {\n spinner.fail(\"Failed to delete process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process instance deleted\");\n renderOutput(\n {\n id: options.id,\n deleted: true,\n skipCustomListeners: !!options.skipCustomListeners,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Deleted process instance: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to delete process instance\", error);\n }\n}\n\nexport async function suspendProcessInstance(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(`Suspending process instance: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.suspendProcessInstance(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to suspend process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process instance suspended\");\n renderOutput(\n {\n id: options.id,\n suspended: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Suspended process instance: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to suspend process instance\", error);\n }\n}\n\nexport async function activateProcessInstance(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(`Activating process instance: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.activateProcessInstance(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to activate process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process instance activated\");\n renderOutput(\n {\n id: options.id,\n activated: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Activated process instance: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to activate process instance\", error);\n }\n}\n\nexport async function modifyProcessInstance(\n client: AmasterClient,\n options: { id: string; modification?: string; format?: string }\n) {\n const spinner = createSpinner(`Modifying process instance: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const modification = await loadJsonObjectInput(\n options.modification,\n \"process modification\",\n \"Enter process modification JSON:\"\n );\n const result = await bpmClient.modifyProcessInstance(options.id, modification);\n\n if (result.error) {\n spinner.fail(\"Failed to modify process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Process instance modified\");\n renderOutput(\n {\n id: options.id,\n modified: true,\n modification,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Modified process instance: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to modify process instance\", error);\n }\n}\n\nexport async function listTasks(\n client: AmasterClient,\n options: {\n query?: string;\n processInstanceId?: string;\n assignee?: string;\n candidateUser?: string;\n candidateGroup?: string;\n name?: string;\n nameLike?: string;\n taskDefinitionKey?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n }\n) {\n const spinner = createSpinner(\"Fetching tasks...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildTaskQueryParams(options);\n const result = await bpmClient.getTasks(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 renderOutput(tasks, {\n format: options.format,\n pretty: () => {\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(\"Process Instance:\")} ${task.processInstanceId || \"N/A\"}`);\n console.log(` ${chalk.gray(\"Created:\")} ${task.created || \"N/A\"}`);\n console.log();\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch tasks\", error);\n }\n}\n\nexport async function getTask(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching task: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTask(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch task\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Task\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch task\", error);\n }\n}\n\nexport async function getTaskCount(\n client: AmasterClient,\n options: {\n query?: string;\n processInstanceId?: string;\n assignee?: string;\n candidateUser?: string;\n candidateGroup?: string;\n name?: string;\n nameLike?: string;\n taskDefinitionKey?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n }\n) {\n const spinner = createSpinner(\"Fetching task count...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildTaskQueryParams(options);\n const result = await bpmClient.getTaskCount(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch task count\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task count retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Task count: ${result.data?.count ?? 0}`));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch task count\", error);\n }\n}\n\nexport async function completeTask(\n client: AmasterClient,\n options: { id: string; variables?: string; format?: string }\n) {\n const spinner = createSpinner(`Completing task: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const variables = loadOptionalJsonObjectInput(options.variables, \"task variables\");\n const result = await bpmClient.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 renderOutput(\n {\n id: options.id,\n completed: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Completed task: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to complete task\", error);\n }\n}\n\nexport async function delegateTask(\n client: AmasterClient,\n options: { id: string; userId: string; format?: string }\n) {\n const spinner = createSpinner(`Delegating task: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.delegateTask(options.id, options.userId);\n\n if (result.error) {\n spinner.fail(\"Failed to delegate task\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task delegated\");\n renderOutput(\n {\n id: options.id,\n userId: options.userId,\n delegated: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Delegated task ${options.id} to ${options.userId}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to delegate task\", error);\n }\n}\n\nexport async function getTaskForm(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching task form...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTaskForm(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch task form\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task form retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งฉ Task Form\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch task form\", error);\n }\n}\n\nexport async function getTaskFormSchema(\n client: AmasterClient,\n options: { id: string; redirect?: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching task form schema...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTaskFormSchema(\n options.id,\n options.redirect ? { redirect: options.redirect } : undefined\n );\n\n if (result.error) {\n const diagnostic = await diagnoseTaskFormSchemaError(\n bpmClient,\n options.id,\n extractClientErrorMessage(result.error)\n );\n exitWithClientError(spinner, \"Failed to fetch task form schema\", result.error, diagnostic);\n }\n\n spinner.succeed(\"Task form schema retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งฉ Task Form Schema\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch task form schema\", error);\n }\n}\n\nexport async function getTaskFormVariables(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching task form variables...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTaskFormVariables(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch task form variables\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Task form variables retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งฎ Task Form Variables\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch task form variables\", error);\n }\n}\n\nexport async function getTaskRenderedForm(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching rendered task form...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTaskRenderedForm(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch rendered task form\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Rendered task form retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งพ Rendered Task Form\\n\"));\n console.log(result.data || \"\");\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch rendered task form\", error);\n }\n}\n\nexport async function getTaskDeployedForm(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching deployed task form...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getTaskDeployedForm(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch deployed task form\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Deployed task form retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐งพ Deployed Task Form\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch deployed task form\", error);\n }\n}\n\nexport async function getStartFormInfo(\n client: AmasterClient,\n options: { key: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching start form info...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getStartFormInfo(options.key);\n\n if (result.error) {\n const diagnostic = await diagnoseStartFormError(\n bpmClient,\n options.key,\n extractClientErrorMessage(result.error)\n );\n exitWithClientError(spinner, \"Failed to fetch start form info\", result.error, diagnostic);\n }\n\n spinner.succeed(\"Start form info retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Start Form Info\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch start form info\", error);\n }\n}\n\nexport async function getStartFormVariables(\n client: AmasterClient,\n options: { key: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching start form variables...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getStartFormVariables(options.key);\n\n if (result.error) {\n const diagnostic = await diagnoseStartFormError(\n bpmClient,\n options.key,\n extractClientErrorMessage(result.error)\n );\n exitWithClientError(spinner, \"Failed to fetch start form variables\", result.error, diagnostic);\n }\n\n spinner.succeed(\"Start form variables retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Start Form Variables\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch start form variables\", error);\n }\n}\n\nexport async function getDeployedStartForm(\n client: AmasterClient,\n options: { key: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching deployed start form...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getDeployedStartForm(options.key);\n\n if (result.error) {\n const diagnostic = await diagnoseStartFormError(\n bpmClient,\n options.key,\n extractClientErrorMessage(result.error)\n );\n exitWithClientError(spinner, \"Failed to fetch deployed start form\", result.error, diagnostic);\n }\n\n spinner.succeed(\"Deployed start form retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ Deployed Start Form\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch deployed start form\", error);\n }\n}\n\nexport async function listHistoryTasks(\n client: AmasterClient,\n options: {\n query?: string;\n taskAssignee?: string;\n processInstanceId?: string;\n finished?: boolean;\n unfinished?: boolean;\n scope?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history tasks...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryTaskQueryParams(options);\n const result = await bpmClient.getHistoryTasks(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history tasks\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const tasks = result.data || [];\n spinner.succeed(`Found ${tasks.length} history tasks`);\n renderOutput(tasks, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ History Tasks\\n\"));\n console.log(JSON.stringify(tasks, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history tasks\", error);\n }\n}\n\nexport async function getHistoryTaskCount(\n client: AmasterClient,\n options: {\n query?: string;\n taskAssignee?: string;\n processInstanceId?: string;\n finished?: boolean;\n unfinished?: boolean;\n scope?: string;\n firstResult?: number;\n maxResults?: number;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history task count...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryTaskQueryParams(options);\n const result = await bpmClient.getHistoryTaskCount(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history task count\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"History task count retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`History task count: ${result.data?.count ?? 0}`));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history task count\", error);\n }\n}\n\nexport async function listHistoryProcessInstances(\n client: AmasterClient,\n options: {\n query?: string;\n startedBy?: string;\n finished?: boolean;\n unfinished?: boolean;\n processDefinitionKey?: string;\n scope?: string;\n sortBy?: string;\n sortOrder?: string;\n firstResult?: number;\n maxResults?: number;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history process instances...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryProcessInstanceQueryParams(options);\n const result = await bpmClient.getHistoryProcessInstances(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history process instances\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const instances = result.data || [];\n spinner.succeed(`Found ${instances.length} history process instances`);\n renderOutput(instances, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ History Process Instances\\n\"));\n console.log(JSON.stringify(instances, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history process instances\", error);\n }\n}\n\nexport async function getHistoryProcessInstanceCount(\n client: AmasterClient,\n options: {\n query?: string;\n startedBy?: string;\n finished?: boolean;\n unfinished?: boolean;\n processDefinitionKey?: string;\n scope?: string;\n sortBy?: string;\n sortOrder?: string;\n firstResult?: number;\n maxResults?: number;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history process instance count...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryProcessInstanceQueryParams(options);\n const result = await bpmClient.getHistoryProcessInstanceCount(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history process instance count\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"History process instance count retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`History process instance count: ${result.data?.count ?? 0}`));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history process instance count\", error);\n }\n}\n\nexport async function getHistoryProcessInstance(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching history process instance...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getHistoryProcessInstance(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"History process instance retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ History Process Instance\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history process instance\", error);\n }\n}\n\nexport async function listHistoryActivityInstances(\n client: AmasterClient,\n options: {\n query?: string;\n processInstanceId?: string;\n activityId?: string;\n activityType?: string;\n finished?: boolean;\n sortBy?: string;\n sortOrder?: string;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history activity instances...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryActivityQueryParams(options);\n const result = await bpmClient.getHistoryActivityInstances(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history activity instances\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const activities = result.data || [];\n spinner.succeed(`Found ${activities.length} history activity instances`);\n renderOutput(activities, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ History Activity Instances\\n\"));\n console.log(JSON.stringify(activities, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history activity instances\", error);\n }\n}\n\nexport async function listHistoryVariableInstances(\n client: AmasterClient,\n options: {\n query?: string;\n processInstanceId?: string;\n variableName?: string;\n deserializeValues?: boolean;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching history variable instances...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildHistoryVariableQueryParams(options);\n const result = await bpmClient.getHistoryVariableInstances(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch history variable instances\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const variables = result.data || [];\n spinner.succeed(`Found ${variables.length} history variable instances`);\n renderOutput(variables, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ History Variable Instances\\n\"));\n console.log(JSON.stringify(variables, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch history variable instances\", error);\n }\n}\n\nexport async function listUserOperationLogs(\n client: AmasterClient,\n options: {\n query?: string;\n processInstanceId?: string;\n taskId?: string;\n userId?: string;\n operationType?: string;\n sortBy?: string;\n sortOrder?: string;\n firstResult?: number;\n maxResults?: number;\n format?: string;\n } = {}\n) {\n const spinner = createSpinner(\"Fetching user operation logs...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const params = buildUserOperationLogQueryParams(options);\n const result = await bpmClient.getUserOperationLogs(params);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch user operation logs\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const logs = result.data || [];\n spinner.succeed(`Found ${logs.length} user operation logs`);\n renderOutput(logs, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ User Operation Logs\\n\"));\n console.log(JSON.stringify(logs, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch user operation logs\", error);\n }\n}\n\nexport async function deleteHistoryProcessInstance(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(`Deleting history process instance: ${options.id}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.deleteHistoryProcessInstance(options.id);\n\n if (result.error) {\n spinner.fail(\"Failed to delete history process instance\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"History process instance deleted\");\n renderOutput(\n {\n id: options.id,\n deleted: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`Deleted history process instance: ${options.id}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to delete history process instance\", error);\n }\n}\n\nexport async function listRoles(\n client: AmasterClient,\n options: { format?: string } = {}\n) {\n const spinner = createSpinner(\"Fetching roles...\", options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getRoles();\n\n if (result.error) {\n spinner.fail(\"Failed to fetch roles\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const roles = result.data || [];\n spinner.succeed(`Found ${roles.length} roles`);\n renderOutput(roles, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\n๐ฅ Roles\\n\"));\n console.log(JSON.stringify(roles, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch roles\", error);\n }\n}\n\nexport async function getUserRoles(\n client: AmasterClient,\n options: { userId: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching roles for user: ${options.userId}...`, options.format);\n\n try {\n const bpmClient = client.bpm as any;\n const result = await bpmClient.getUserRoles(options.userId);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch user roles\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n const roles = result.data || [];\n spinner.succeed(`Found ${roles.length} roles for user ${options.userId}`);\n renderOutput(roles, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐ค User Roles: ${options.userId}\\n`));\n console.log(JSON.stringify(roles, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch user roles\", error);\n }\n}\n","import { readFileSync } from \"node:fs\";\nimport chalk from \"chalk\";\nimport type { AmasterClient, ClientResult } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\ntype JsonObject = Record<string, unknown>;\ntype WorkflowMode = \"workflow\" | \"chat\" | \"completion\" | \"agent-chat\";\n\ntype WorkflowTracing = {\n base_name?: string;\n [key: string]: unknown;\n};\n\ntype WorkflowAppSummary = {\n id: string;\n name: string;\n runnable_name: string | null;\n description?: string | null;\n mode?: string | null;\n tracing?: string | WorkflowTracing | null;\n workflow?: Record<string, unknown> | null;\n [key: string]: unknown;\n};\n\ntype WorkflowListResponse = {\n page: number;\n limit: number;\n total: number;\n has_more: boolean;\n data: WorkflowAppSummary[];\n [key: string]: unknown;\n};\n\ntype WorkflowInputVariable = {\n variable: string;\n label?: string;\n required?: boolean;\n type?: string;\n [key: string]: unknown;\n};\n\ntype WorkflowDefinition = {\n workflow_id: string;\n app_id: string;\n version?: string;\n name: string;\n dsl?: Record<string, unknown>;\n context?: string;\n input_variables: WorkflowInputVariable[];\n [key: string]: unknown;\n};\n\nconst WORKFLOW_LIST_PATH = \"/api/proxy/builtin/platform/workflow/openapi/apps\";\nconst WORKFLOW_GET_PATH = (workflowId: string) =>\n `/api/proxy/builtin/platform/workflow/openapi/apps/${encodeURIComponent(workflowId)}/dsl`;\n\nfunction resolveInputSource(input: string): string {\n if (!input.startsWith(\"@\")) {\n return input;\n }\n\n const filePath = input.slice(1);\n if (!filePath) {\n throw new Error(\"File path is required after '@'.\");\n }\n\n return readFileSync(filePath, \"utf8\");\n}\n\nfunction parseJsonInput(input: string, label: string): unknown {\n const source = resolveInputSource(input).trim();\n\n if (!source) {\n throw new Error(`${label} is required.`);\n }\n\n try {\n return JSON.parse(source);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw new Error(`Invalid ${label}: ${reason}`);\n }\n}\n\nfunction isPlainObject(value: unknown): value is JsonObject {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction parseWorkflowTracing(value: unknown): WorkflowTracing | null {\n if (!value) {\n return null;\n }\n\n if (isPlainObject(value)) {\n return value as WorkflowTracing;\n }\n\n if (typeof value !== \"string\") {\n return null;\n }\n\n try {\n const parsed = JSON.parse(value);\n return isPlainObject(parsed) ? (parsed as WorkflowTracing) : null;\n } catch {\n return null;\n }\n}\n\nfunction getRunnableName(summary: JsonObject): string | null {\n const tracing = parseWorkflowTracing(summary.tracing);\n const baseName = tracing?.base_name;\n if (typeof baseName === \"string\" && baseName.trim()) {\n return baseName.trim();\n }\n return null;\n}\n\nfunction normalizeWorkflowSummary(summary: JsonObject): WorkflowAppSummary {\n return {\n ...summary,\n id: typeof summary.id === \"string\" ? summary.id : \"\",\n name: typeof summary.name === \"string\" ? summary.name : \"\",\n runnable_name: getRunnableName(summary),\n description: typeof summary.description === \"string\" ? summary.description : null,\n mode: typeof summary.mode === \"string\" ? summary.mode : null,\n };\n}\n\nfunction extractWorkflowInputVariables(dsl: unknown): WorkflowInputVariable[] {\n if (!isPlainObject(dsl)) {\n return [];\n }\n\n const candidateNodeSets: unknown[][] = [];\n if (Array.isArray(dsl.nodes)) {\n candidateNodeSets.push(dsl.nodes);\n }\n if (isPlainObject(dsl.graph) && Array.isArray(dsl.graph.nodes)) {\n candidateNodeSets.push(dsl.graph.nodes);\n }\n\n const variables: WorkflowInputVariable[] = [];\n\n for (const nodeSet of candidateNodeSets) {\n for (const node of nodeSet) {\n if (!isPlainObject(node) || !isPlainObject(node.data)) {\n continue;\n }\n\n const nodeData = node.data;\n if (nodeData.type !== \"start\" || !Array.isArray(nodeData.variables)) {\n continue;\n }\n\n for (const variable of nodeData.variables) {\n if (!isPlainObject(variable) || typeof variable.variable !== \"string\") {\n continue;\n }\n\n variables.push({\n ...variable,\n variable: variable.variable,\n label: typeof variable.label === \"string\" ? variable.label : undefined,\n required: typeof variable.required === \"boolean\" ? variable.required : undefined,\n type: typeof variable.type === \"string\" ? variable.type : undefined,\n });\n }\n }\n }\n\n return variables;\n}\n\nfunction normalizeWorkflowDefinition(definition: JsonObject): WorkflowDefinition {\n return {\n ...definition,\n workflow_id: typeof definition.workflow_id === \"string\" ? definition.workflow_id : \"\",\n app_id: typeof definition.app_id === \"string\" ? definition.app_id : \"\",\n version: typeof definition.version === \"string\" ? definition.version : undefined,\n name: typeof definition.name === \"string\" ? definition.name : \"\",\n dsl: isPlainObject(definition.dsl) ? definition.dsl : undefined,\n context: typeof definition.context === \"string\" ? definition.context : undefined,\n input_variables: extractWorkflowInputVariables(definition.dsl),\n };\n}\n\nfunction invalidResponse<T>(status: number, message: string): ClientResult<T> {\n return {\n data: null,\n error: {\n status,\n message,\n },\n status,\n };\n}\n\nfunction createWorkflowService(client: AmasterClient) {\n return {\n async list(params: { page?: number; limit?: number; mode?: WorkflowMode } = {}) {\n const response = await client.http.request<{\n page?: number;\n limit?: number;\n total?: number;\n has_more?: boolean;\n data?: JsonObject[];\n [key: string]: unknown;\n }>({\n url: WORKFLOW_LIST_PATH,\n method: \"GET\",\n params: {\n page: params.page ?? 1,\n limit: params.limit ?? 20,\n mode: params.mode ?? \"workflow\",\n },\n });\n\n if (!response.data || !Array.isArray(response.data.data)) {\n return invalidResponse<WorkflowListResponse>(\n response.status,\n response.error?.message || \"Invalid workflow list response structure\"\n );\n }\n\n return {\n ...response,\n data: {\n ...response.data,\n page: typeof response.data.page === \"number\" ? response.data.page : params.page ?? 1,\n limit: typeof response.data.limit === \"number\" ? response.data.limit : params.limit ?? 20,\n total: typeof response.data.total === \"number\" ? response.data.total : response.data.data.length,\n has_more: typeof response.data.has_more === \"boolean\" ? response.data.has_more : false,\n data: response.data.data.map(normalizeWorkflowSummary),\n },\n };\n },\n\n async get(workflowId: string) {\n if (!workflowId) {\n return invalidResponse<WorkflowDefinition>(400, \"workflowId is required\");\n }\n\n const response = await client.http.request<JsonObject>({\n url: WORKFLOW_GET_PATH(workflowId),\n method: \"GET\",\n });\n\n if (!response.data || !isPlainObject(response.data)) {\n return invalidResponse<WorkflowDefinition>(\n response.status,\n response.error?.message || \"Invalid workflow definition response structure\"\n );\n }\n\n return {\n ...response,\n data: normalizeWorkflowDefinition(response.data),\n };\n },\n };\n}\n\nfunction loadOptionalJsonObjectInput(input: string | undefined, label: string): JsonObject {\n if (!input) {\n return {};\n }\n\n const value = parseJsonInput(input, label);\n if (!isPlainObject(value)) {\n throw new Error(`${label} must be a JSON object.`);\n }\n\n return value;\n}\n\nfunction loadOptionalJsonArrayInput(input: string | undefined, label: string): unknown[] | undefined {\n if (!input) {\n return undefined;\n }\n\n const value = parseJsonInput(input, label);\n if (!Array.isArray(value)) {\n throw new Error(`${label} must be a JSON array.`);\n }\n\n return value;\n}\n\nfunction exitWithCommandError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: unknown\n): never {\n spinner.fail(failureMessage);\n const details = error instanceof Error ? error.message : String(error);\n if (details) {\n console.error(chalk.red(details));\n }\n process.exit(1);\n}\n\nfunction buildWorkflowRunRequest(options: {\n input?: string;\n request?: string;\n responseMode?: string;\n user?: string;\n files?: string;\n traceId?: string;\n}): JsonObject {\n const request = loadOptionalJsonObjectInput(options.request, \"workflow request\");\n\n if (options.input) {\n const inputs = parseJsonInput(options.input, \"workflow input\");\n if (!isPlainObject(inputs)) {\n throw new Error(\"workflow input must be a JSON object.\");\n }\n request.inputs = inputs;\n }\n\n if (options.responseMode) {\n request.response_mode = options.responseMode;\n }\n\n if (options.user) {\n request.user = options.user;\n }\n\n if (options.files) {\n request.files = loadOptionalJsonArrayInput(options.files, \"workflow files\");\n }\n\n if (options.traceId) {\n request.trace_id = options.traceId;\n }\n\n return request;\n}\n\nexport async function runWorkflow(\n client: AmasterClient,\n options: {\n name: string;\n input?: string;\n request?: string;\n responseMode?: string;\n user?: string;\n files?: string;\n traceId?: string;\n format?: string;\n }\n) {\n const spinner = createSpinner(`Running workflow: ${options.name}...`, options.format);\n\n try {\n const workflowClient = client.workflow as any;\n const request = buildWorkflowRunRequest(options);\n const result = await workflowClient.run(options.name, request);\n\n if (result.error) {\n spinner.fail(\"Failed to run workflow\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Workflow completed\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(\"\\nโก Workflow Run\\n\"));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to run workflow\", error);\n }\n}\n\nexport async function listWorkflows(\n client: AmasterClient,\n options: { page?: number; limit?: number; mode?: WorkflowMode; format?: string } = {}\n) {\n const spinner = createSpinner(\"Fetching workflows...\", options.format);\n\n try {\n const workflowService = createWorkflowService(client);\n const result = await workflowService.list({\n page: options.page,\n limit: options.limit,\n mode: options.mode,\n });\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 const payload = result.data;\n const workflows = payload?.data || [];\n spinner.succeed(`Found ${workflows.length} workflow${workflows.length === 1 ? \"\" : \"s\"}`);\n\n renderOutput(payload, {\n format: options.format,\n tableRows: workflows.map((workflow) => ({\n id: workflow.id,\n runnableName: workflow.runnable_name,\n platformName: workflow.name,\n mode: workflow.mode,\n description: workflow.description,\n })),\n csvRows: workflows.map((workflow) => ({\n id: workflow.id,\n runnableName: workflow.runnable_name,\n platformName: workflow.name,\n mode: workflow.mode,\n description: workflow.description,\n })),\n ndjsonItems: workflows,\n pretty: () => {\n console.log(chalk.blue(\"\\nWorkflows\\n\"));\n if (workflows.length === 0) {\n console.log(chalk.gray(\"No workflows found.\"));\n return;\n }\n\n for (const workflow of workflows) {\n console.log(`${chalk.green(\"โข\")} ${chalk.bold(workflow.runnable_name || workflow.name)}`);\n console.log(` ${chalk.gray(\"ID:\")} ${workflow.id}`);\n console.log(` ${chalk.gray(\"Platform Name:\")} ${workflow.name}`);\n console.log(` ${chalk.gray(\"Mode:\")} ${workflow.mode || \"workflow\"}`);\n if (workflow.description) {\n console.log(` ${chalk.gray(\"Description:\")} ${workflow.description}`);\n }\n }\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch workflows\", error);\n }\n}\n\nexport async function getWorkflow(\n client: AmasterClient,\n options: { id: string; format?: string }\n) {\n const spinner = createSpinner(`Fetching workflow: ${options.id}...`, options.format);\n\n try {\n const workflowService = createWorkflowService(client);\n const result = await workflowService.get(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 const workflow = result.data;\n const inputVariables = workflow?.input_variables || [];\n spinner.succeed(\"Workflow loaded\");\n\n renderOutput(workflow, {\n format: options.format,\n tableRows: workflow\n ? [\n {\n appId: workflow.app_id,\n workflowId: workflow.workflow_id,\n runnableName: workflow.name,\n version: workflow.version || null,\n inputVariables: inputVariables.map((item) => item.variable).join(\", \"),\n },\n ]\n : [],\n csvRows: workflow\n ? [\n {\n appId: workflow.app_id,\n workflowId: workflow.workflow_id,\n runnableName: workflow.name,\n version: workflow.version || null,\n inputVariables: inputVariables.map((item) => item.variable).join(\", \"),\n },\n ]\n : [],\n ndjsonItems: workflow ? [workflow] : [],\n pretty: () => {\n if (!workflow) {\n console.log(chalk.gray(\"No workflow found.\"));\n return;\n }\n\n console.log(chalk.blue(`\\nWorkflow: ${workflow.name}\\n`));\n console.log(`${chalk.gray(\"App ID:\")} ${workflow.app_id}`);\n console.log(`${chalk.gray(\"Workflow ID:\")} ${workflow.workflow_id}`);\n if (workflow.version) {\n console.log(`${chalk.gray(\"Version:\")} ${workflow.version}`);\n }\n\n console.log(`\\n${chalk.gray(\"Input Variables:\")}`);\n if (inputVariables.length === 0) {\n console.log(chalk.gray(\" none\"));\n } else {\n for (const variable of inputVariables) {\n const label = variable.label ? ` ${chalk.gray(`(${variable.label})`)}` : \"\";\n const type = variable.type ? ` ${chalk.gray(`[${variable.type}]`)}` : \"\";\n const required = variable.required ? chalk.yellow(\" required\") : chalk.gray(\" optional\");\n console.log(` - ${chalk.bold(variable.variable)}${label}${type}${required}`);\n }\n }\n\n console.log(`\\n${chalk.gray(\"Run With:\")} amaster workflow run ${workflow.name} --app <app-code> --input '{...}'`);\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch workflow\", error);\n }\n}\n","import { File } from \"node:buffer\";\nimport { existsSync, readFileSync, writeFileSync } from \"node:fs\";\nimport { basename, resolve } from \"node:path\";\nimport chalk from \"chalk\";\nimport type { AmasterClient } from \"@amaster.ai/client\";\nimport { createSpinner, renderOutput } from \"../output.js\";\n\nfunction exitWithCommandError(\n spinner: ReturnType<typeof createSpinner>,\n failureMessage: string,\n error: unknown\n): never {\n spinner.fail(failureMessage);\n const details = error instanceof Error ? error.message : String(error);\n if (details) {\n console.error(chalk.red(details));\n }\n process.exit(1);\n}\n\nasync function toBuffer(data: unknown): Promise<Buffer> {\n if (data instanceof Blob) {\n return Buffer.from(await data.arrayBuffer());\n }\n\n if (Buffer.isBuffer(data)) {\n return data;\n }\n\n if (data instanceof Uint8Array) {\n return Buffer.from(data);\n }\n\n if (data instanceof ArrayBuffer) {\n return Buffer.from(data);\n }\n\n if (typeof data === \"string\") {\n return Buffer.from(data);\n }\n\n if (\n typeof data === \"object\" &&\n data !== null &&\n \"arrayBuffer\" in data &&\n typeof (data as { arrayBuffer?: unknown }).arrayBuffer === \"function\"\n ) {\n const arrayBuffer = await (data as { arrayBuffer: () => Promise<ArrayBuffer> }).arrayBuffer();\n return Buffer.from(arrayBuffer);\n }\n\n throw new Error(`Unsupported download response type: ${Object.prototype.toString.call(data)}`);\n}\n\nexport async function uploadFile(\n client: AmasterClient,\n options: { file: string; format?: string }\n) {\n const spinner = createSpinner(\"Uploading file...\", options.format);\n\n try {\n const s3Client = client.s3 as any;\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 file = new File([readFileSync(filePath)], basename(filePath));\n const result = await s3Client.upload(file);\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 renderOutput(result.data, {\n format: options.format,\n pretty: () => {\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 },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Upload failed\", error);\n }\n}\n\nexport async function downloadFile(\n client: AmasterClient,\n options: { key: string; output: string; format?: string }\n) {\n const spinner = createSpinner(\"Downloading file...\", options.format);\n\n try {\n const s3Client = client.s3 as any;\n const result = await s3Client.download(options.key);\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 if (!result.data) {\n spinner.fail(\"Download failed\");\n console.error(chalk.red(\"Empty file response.\"));\n process.exit(1);\n }\n\n const outputPath = resolve(options.output);\n const buffer = await toBuffer(result.data);\n writeFileSync(outputPath, buffer);\n\n spinner.succeed(\"Download complete\");\n renderOutput(\n {\n key: options.key,\n output: outputPath,\n downloaded: true,\n },\n {\n format: options.format,\n pretty: () => {\n console.log(chalk.green(`\\nFile saved to: ${outputPath}`));\n },\n }\n );\n } catch (error) {\n exitWithCommandError(spinner, \"Download failed\", error);\n }\n}\n\nexport async function getFileMetadata(\n client: AmasterClient,\n options: { key: string; format?: string }\n) {\n const spinner = createSpinner(\"Fetching file metadata...\", options.format);\n\n try {\n const s3Client = client.s3 as any;\n const result = await s3Client.getMetadata(options.key);\n\n if (result.error) {\n spinner.fail(\"Failed to fetch metadata\");\n console.error(chalk.red(result.error.message));\n process.exit(1);\n }\n\n spinner.succeed(\"Metadata retrieved\");\n renderOutput(result.data, {\n format: options.format,\n pretty: () => {\n console.log(chalk.blue(`\\n๐ Metadata for ${options.key}\\n`));\n console.log(JSON.stringify(result.data, null, 2));\n },\n });\n } catch (error) {\n exitWithCommandError(spinner, \"Failed to fetch metadata\", error);\n }\n}\n","import { existsSync, mkdirSync, readFileSync, writeFileSync, rmSync } from \"fs\";\nimport { join } from \"path\";\nimport { homedir } from \"os\";\nimport chalk from \"chalk\";\nimport yaml from \"yaml\";\nimport { addApp, getAppConfig, listApps } from \"../config.js\";\nimport { createSpinner, isPrettyOutput, renderOutput } from \"../output.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 registry?: string;\n registryBaseURL?: string;\n apiKey?: string;\n ossEndpoint?: string;\n force?: boolean;\n format?: string;\n}): Promise<void> {\n const spinner = createSpinner(`Initializing app: ${options.appCode}...`, options.format);\n const pretty = isPrettyOutput(options.format);\n const ossEndpoint = options.ossEndpoint || DEFAULT_OSS_ENDPOINT;\n let installedSkills = 0;\n let configuredMcpServers = 0;\n let skillsError: string | null = null;\n let mcpError: string | null = null;\n const openClawDetected = existsSync(OPENCLAW_CONFIG_DIR);\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 // Save app config first (before OpenClaw check)\n addApp(options.appCode, {\n baseURL: options.baseURL,\n registry: options.registry,\n registryBaseURL: options.registryBaseURL,\n ossEndpoint,\n initializedAt: new Date().toISOString(),\n });\n\n if (!openClawDetected) {\n spinner.succeed(`App initialized: ${options.appCode}`);\n if (pretty) {\n console.log(chalk.yellow(\"\\nโ ๏ธ OpenClaw not detected, skipping skill download\"));\n console.log(chalk.gray(\" Install OpenClaw: npm install -g openclaw\"));\n } else {\n renderOutput(\n {\n appCode: options.appCode,\n baseURL: options.baseURL,\n registry: options.registry || null,\n registryBaseURL: options.registryBaseURL || null,\n ossEndpoint,\n openClawDetected: false,\n installedSkills: 0,\n configuredMcpServers: 0,\n },\n { format: options.format }\n );\n }\n return;\n }\n\n spinner.succeed(`App initialized: ${options.appCode}`);\n if (pretty) {\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 if (options.registryBaseURL) {\n console.log(` Registry: ${chalk.gray(`${options.registry || \"custom\"} -> ${options.registryBaseURL}`)}`);\n }\n console.log();\n }\n\n // Download and install skills\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 installedSkills = skills.length;\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 skillsError = error instanceof Error ? error.message : String(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 configuredMcpServers = Object.keys(mcpServers).length;\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 mcpError = error instanceof Error ? error.message : String(error);\n spinner.warn(\"MCP configuration failed (optional)\");\n }\n\n const apps = listApps();\n const configuredApps = apps.map((app) => {\n const config = getAppConfig(app);\n return {\n appCode: app,\n baseURL: config?.baseURL || null,\n registry: config?.registry || null,\n registryBaseURL: config?.registryBaseURL || null,\n };\n });\n\n const summary = {\n appCode: options.appCode,\n baseURL: options.baseURL,\n registry: options.registry || null,\n registryBaseURL: options.registryBaseURL || null,\n ossEndpoint,\n openClawDetected: true,\n installedSkills,\n configuredMcpServers,\n configuredApps,\n warnings: {\n skills: skillsError,\n mcpServers: mcpError,\n },\n };\n\n if (pretty) {\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 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\n return;\n }\n\n renderOutput(summary, { format: options.format });\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"]}
|