@chanl-ai/cli 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/bin/chanl.js +10 -0
  2. package/dist/__tests__/cli.test.d.ts +2 -0
  3. package/dist/__tests__/cli.test.js +2313 -0
  4. package/dist/__tests__/cli.test.js.map +1 -0
  5. package/dist/cli.d.ts +12 -0
  6. package/dist/cli.js +72 -0
  7. package/dist/cli.js.map +1 -0
  8. package/dist/commands/agents.d.ts +8 -0
  9. package/dist/commands/agents.js +671 -0
  10. package/dist/commands/agents.js.map +1 -0
  11. package/dist/commands/auth.d.ts +16 -0
  12. package/dist/commands/auth.js +294 -0
  13. package/dist/commands/auth.js.map +1 -0
  14. package/dist/commands/call.d.ts +8 -0
  15. package/dist/commands/call.js +166 -0
  16. package/dist/commands/call.js.map +1 -0
  17. package/dist/commands/calls.d.ts +8 -0
  18. package/dist/commands/calls.js +719 -0
  19. package/dist/commands/calls.js.map +1 -0
  20. package/dist/commands/chat.d.ts +8 -0
  21. package/dist/commands/chat.js +203 -0
  22. package/dist/commands/chat.js.map +1 -0
  23. package/dist/commands/config.d.ts +8 -0
  24. package/dist/commands/config.js +231 -0
  25. package/dist/commands/config.js.map +1 -0
  26. package/dist/commands/health.d.ts +8 -0
  27. package/dist/commands/health.js +55 -0
  28. package/dist/commands/health.js.map +1 -0
  29. package/dist/commands/index.d.ts +18 -0
  30. package/dist/commands/index.js +39 -0
  31. package/dist/commands/index.js.map +1 -0
  32. package/dist/commands/knowledge.d.ts +8 -0
  33. package/dist/commands/knowledge.js +539 -0
  34. package/dist/commands/knowledge.js.map +1 -0
  35. package/dist/commands/mcp.d.ts +8 -0
  36. package/dist/commands/mcp.js +589 -0
  37. package/dist/commands/mcp.js.map +1 -0
  38. package/dist/commands/memory.d.ts +8 -0
  39. package/dist/commands/memory.js +408 -0
  40. package/dist/commands/memory.js.map +1 -0
  41. package/dist/commands/personas.d.ts +8 -0
  42. package/dist/commands/personas.js +356 -0
  43. package/dist/commands/personas.js.map +1 -0
  44. package/dist/commands/prompts.d.ts +8 -0
  45. package/dist/commands/prompts.js +295 -0
  46. package/dist/commands/prompts.js.map +1 -0
  47. package/dist/commands/scenarios.d.ts +8 -0
  48. package/dist/commands/scenarios.js +591 -0
  49. package/dist/commands/scenarios.js.map +1 -0
  50. package/dist/commands/scorecards.d.ts +8 -0
  51. package/dist/commands/scorecards.js +570 -0
  52. package/dist/commands/scorecards.js.map +1 -0
  53. package/dist/commands/tools.d.ts +8 -0
  54. package/dist/commands/tools.js +632 -0
  55. package/dist/commands/tools.js.map +1 -0
  56. package/dist/commands/toolsets.d.ts +8 -0
  57. package/dist/commands/toolsets.js +464 -0
  58. package/dist/commands/toolsets.js.map +1 -0
  59. package/dist/commands/workspaces.d.ts +8 -0
  60. package/dist/commands/workspaces.js +170 -0
  61. package/dist/commands/workspaces.js.map +1 -0
  62. package/dist/index.d.ts +2 -0
  63. package/dist/index.js +6 -0
  64. package/dist/index.js.map +1 -0
  65. package/dist/utils/config-store.d.ts +117 -0
  66. package/dist/utils/config-store.js +191 -0
  67. package/dist/utils/config-store.js.map +1 -0
  68. package/dist/utils/interactive.d.ts +41 -0
  69. package/dist/utils/interactive.js +83 -0
  70. package/dist/utils/interactive.js.map +1 -0
  71. package/dist/utils/output.d.ts +100 -0
  72. package/dist/utils/output.js +221 -0
  73. package/dist/utils/output.js.map +1 -0
  74. package/dist/utils/sdk-factory.d.ts +15 -0
  75. package/dist/utils/sdk-factory.js +34 -0
  76. package/dist/utils/sdk-factory.js.map +1 -0
  77. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/commands/scorecards.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { readFile } from 'fs/promises';\nimport { confirm } from '@inquirer/prompts';\nimport ora from 'ora';\nimport chalk from 'chalk';\nimport type {\n Scorecard,\n ScorecardResult,\n ScorecardCategory,\n ScorecardCriteria,\n CreateScorecardRequest,\n UpdateScorecardRequest,\n ScorecardStatus,\n} from '@chanl-ai/sdk';\nimport { createSdk } from '../utils/sdk-factory.js';\nimport {\n printSuccess,\n printError,\n printInfo,\n printWarning,\n printLabel,\n printBlank,\n printSimpleTable,\n isJsonOutput,\n printJson,\n formatDate,\n} from '../utils/output.js';\n\n/**\n * Create the scorecards command group\n */\nexport function createScorecardsCommand(): Command {\n const scorecards = new Command('scorecards')\n .description('Manage scorecards for call evaluation')\n .addHelpText(\n 'after',\n `\nWhat are Scorecards?\n Scorecards define criteria for evaluating call quality. Each scorecard\n contains categories and criteria that are used to score calls.\n\nQuick Start:\n $ chanl scorecards list # List all scorecards\n $ chanl scorecards get <id> # View scorecard details\n $ chanl scorecards create -f scorecard.json # Create from file\n $ chanl scorecards evaluate <callId> -s <scorecardId> # Evaluate a call\n\nWorkflow:\n 1. Create a scorecard with categories and criteria\n 2. Import or record a call\n 3. Evaluate the call against the scorecard\n 4. View results with 'results <callId>'`\n );\n\n // scorecards list\n scorecards\n .command('list')\n .description('List scorecards')\n .option('-s, --status <status>', 'Filter by status (active, inactive, draft)')\n .option('-l, --limit <number>', 'Items per page', '20')\n .option('-p, --page <number>', 'Page number', '1')\n .addHelpText(\n 'after',\n `\nExamples:\n $ chanl scorecards list # List all scorecards\n $ chanl scorecards list --status active # Only active scorecards\n $ chanl scorecards list --json # Output as JSON`\n )\n .action(handleScorecardsList);\n\n // scorecards get <id>\n scorecards\n .command('get <id>')\n .description('Get scorecard details')\n .option('-c, --categories', 'Include categories and criteria')\n .addHelpText(\n 'after',\n `\nExamples:\n $ chanl scorecards get abc123 # Get scorecard details\n $ chanl scorecards get abc123 --categories # Include categories\n $ chanl scorecards get abc123 --json # Output as JSON`\n )\n .action(handleScorecardsGet);\n\n // scorecards create\n scorecards\n .command('create')\n .description('Create a new scorecard')\n .option('-f, --file <path>', 'JSON file with scorecard definition')\n .option('-n, --name <name>', 'Scorecard name')\n .option('-d, --description <desc>', 'Scorecard description')\n .option('-s, --status <status>', 'Status (active, inactive, draft)', 'draft')\n .addHelpText(\n 'after',\n `\nExamples:\n # Create from JSON file\n $ chanl scorecards create -f scorecard.json\n\n # Create with basic options\n $ chanl scorecards create -n \"Quality Check\" -d \"Basic quality scorecard\"\n\nJSON file format:\n {\n \"name\": \"Quality Scorecard\",\n \"description\": \"Evaluates call quality\",\n \"status\": \"active\",\n \"categories\": [\n {\n \"name\": \"Communication\",\n \"weight\": 50,\n \"criteria\": [\n {\n \"name\": \"Greeting\",\n \"type\": \"prompt\",\n \"settings\": { \"prompt\": \"Did the agent greet the customer?\" }\n }\n ]\n }\n ]\n }`\n )\n .action(handleScorecardsCreate);\n\n // scorecards update <id>\n scorecards\n .command('update <id>')\n .description('Update a scorecard')\n .option('-f, --file <path>', 'JSON file with updates')\n .option('-n, --name <name>', 'New name')\n .option('-d, --description <desc>', 'New description')\n .option('-s, --status <status>', 'New status (active, inactive, draft)')\n .addHelpText(\n 'after',\n `\nExamples:\n $ chanl scorecards update abc123 -s active # Activate scorecard\n $ chanl scorecards update abc123 -n \"New Name\" # Update name\n $ chanl scorecards update abc123 -f updates.json # Update from file`\n )\n .action(handleScorecardsUpdate);\n\n // scorecards delete <id>\n scorecards\n .command('delete <id>')\n .description('Delete a scorecard')\n .option('-y, --yes', 'Skip confirmation prompt')\n .addHelpText(\n 'after',\n `\nExamples:\n $ chanl scorecards delete abc123 # Delete with confirmation\n $ chanl scorecards delete abc123 --yes # Delete without confirmation`\n )\n .action(handleScorecardsDelete);\n\n // scorecards evaluate <callId>\n scorecards\n .command('evaluate <callId>')\n .description('Evaluate a call with a scorecard')\n .requiredOption('-s, --scorecard <id>', 'Scorecard ID to use')\n .option('--force', 'Force re-evaluation even if already done')\n .addHelpText(\n 'after',\n `\nExamples:\n $ chanl scorecards evaluate call123 -s scorecard456\n $ chanl scorecards evaluate call123 -s scorecard456 --force`\n )\n .action(handleScorecardsEvaluate);\n\n // scorecards results <callId>\n scorecards\n .command('results <callId>')\n .description('View evaluation results for a call')\n .option('-s, --scorecard <id>', 'Filter by scorecard ID')\n .addHelpText(\n 'after',\n `\nExamples:\n $ chanl scorecards results call123 # All results for call\n $ chanl scorecards results call123 -s scorecard456 # Results for specific scorecard\n $ chanl scorecards results call123 --json # Output as JSON`\n )\n .action(handleScorecardsResults);\n\n // scorecards categories <scorecardId>\n scorecards\n .command('categories <scorecardId>')\n .description('List categories in a scorecard')\n .addHelpText(\n 'after',\n `\nExamples:\n $ chanl scorecards categories abc123 # List categories\n $ chanl scorecards categories abc123 --json # Output as JSON`\n )\n .action(handleScorecardsCategories);\n\n // scorecards criteria <categoryId>\n scorecards\n .command('criteria <categoryId>')\n .description('List criteria in a category')\n .addHelpText(\n 'after',\n `\nExamples:\n $ chanl scorecards criteria cat123 # List criteria\n $ chanl scorecards criteria cat123 --json # Output as JSON`\n )\n .action(handleScorecardsCriteria);\n\n return scorecards;\n}\n\n/**\n * Format status with color\n */\nfunction formatStatus(status?: string): string {\n switch (status) {\n case 'active':\n return chalk.green('active');\n case 'inactive':\n return chalk.gray('inactive');\n case 'draft':\n return chalk.yellow('draft');\n default:\n return chalk.gray(status || 'unknown');\n }\n}\n\n/**\n * Format score with color\n */\nfunction formatScore(score?: number): string {\n if (score === undefined || score === null) return '-';\n if (score >= 80) return chalk.green(`${score.toFixed(1)}%`);\n if (score >= 60) return chalk.yellow(`${score.toFixed(1)}%`);\n return chalk.red(`${score.toFixed(1)}%`);\n}\n\n/**\n * Handle scorecards list command\n */\nasync function handleScorecardsList(options: {\n status?: string;\n limit: string;\n page: string;\n}): Promise<void> {\n const sdk = createSdk();\n if (!sdk) return;\n\n const spinner = ora('Fetching scorecards...').start();\n\n try {\n const response = await sdk.scorecard.list({\n status: options.status as ScorecardStatus | undefined,\n limit: parseInt(options.limit, 10),\n page: parseInt(options.page, 10),\n });\n\n spinner.stop();\n\n if (!response.success || !response.data) {\n printError('Failed to fetch scorecards', response.message);\n process.exitCode = 1;\n return;\n }\n\n const { scorecards, pagination } = response.data;\n\n if (isJsonOutput()) {\n printJson(response.data);\n return;\n }\n\n if (scorecards.length === 0) {\n printInfo('No scorecards found');\n return;\n }\n\n printBlank();\n printSimpleTable(\n ['ID', 'Name', 'Status', 'Categories', 'Created'],\n scorecards.map((s: Scorecard) => [\n s.id.slice(-12),\n s.name.slice(0, 30),\n formatStatus(s.status),\n (s.categories?.length || 0).toString(),\n formatDate(s.createdAt),\n ])\n );\n\n printBlank();\n if (pagination) {\n printInfo(`Total: ${pagination.total} scorecards (Page ${pagination.page} of ${pagination.pages})`);\n }\n } catch (error) {\n spinner.fail('Failed to fetch scorecards');\n const message = error instanceof Error ? error.message : 'Unknown error';\n printError('Error', message);\n process.exitCode = 1;\n }\n}\n\n/**\n * Handle scorecards get command\n */\nasync function handleScorecardsGet(\n id: string,\n options: { categories?: boolean }\n): Promise<void> {\n const sdk = createSdk();\n if (!sdk) return;\n\n const spinner = ora('Fetching scorecard...').start();\n\n try {\n const response = await sdk.scorecard.get(id);\n\n spinner.stop();\n\n if (!response.success || !response.data) {\n printError('Failed to fetch scorecard', response.message);\n process.exitCode = 1;\n return;\n }\n\n if (isJsonOutput()) {\n printJson(response.data);\n return;\n }\n\n const scorecard = response.data;\n\n printBlank();\n console.log(chalk.bold('Scorecard Details:'));\n console.log(` ID: ${scorecard.id}`);\n console.log(` Name: ${scorecard.name}`);\n console.log(` Status: ${formatStatus(scorecard.status)}`);\n if (scorecard.description) {\n console.log(` Description: ${scorecard.description}`);\n }\n if (scorecard.version) {\n console.log(` Version: ${scorecard.version}`);\n }\n console.log(` Created: ${formatDate(scorecard.createdAt)}`);\n if (scorecard.updatedAt) {\n console.log(` Updated: ${formatDate(scorecard.updatedAt)}`);\n }\n\n if (options.categories && scorecard.categories && scorecard.categories.length > 0) {\n console.log(chalk.bold('\\n Categories:'));\n for (const cat of scorecard.categories) {\n console.log(`\\n ${chalk.cyan(cat.name)} (weight: ${cat.weight}%)`);\n if (cat.criteria && cat.criteria.length > 0) {\n for (const crit of cat.criteria) {\n console.log(` - ${crit.name} [${crit.type}]`);\n }\n }\n }\n }\n\n printBlank();\n } catch (error) {\n spinner.fail('Failed to fetch scorecard');\n const message = error instanceof Error ? error.message : 'Unknown error';\n printError('Error', message);\n process.exitCode = 1;\n }\n}\n\n/**\n * Handle scorecards create command\n */\nasync function handleScorecardsCreate(options: {\n file?: string;\n name?: string;\n description?: string;\n status?: string;\n}): Promise<void> {\n const sdk = createSdk();\n if (!sdk) return;\n\n let createRequest: CreateScorecardRequest;\n\n if (options.file) {\n try {\n const content = await readFile(options.file, 'utf-8');\n createRequest = JSON.parse(content) as CreateScorecardRequest;\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Unknown error';\n printError('Failed to read file', message);\n process.exitCode = 1;\n return;\n }\n } else if (options.name) {\n createRequest = {\n name: options.name,\n description: options.description,\n status: (options.status as ScorecardStatus) || 'draft',\n };\n } else {\n printError('Missing required options', 'Provide --file or --name');\n process.exitCode = 1;\n return;\n }\n\n const spinner = ora('Creating scorecard...').start();\n\n try {\n const response = await sdk.scorecard.create(createRequest);\n\n spinner.stop();\n\n if (!response.success || !response.data) {\n printError('Failed to create scorecard', response.message);\n process.exitCode = 1;\n return;\n }\n\n if (isJsonOutput()) {\n printJson(response.data);\n return;\n }\n\n const scorecard = response.data;\n\n printBlank();\n printSuccess('Scorecard created successfully');\n printLabel('ID', scorecard.id);\n printLabel('Name', scorecard.name);\n printLabel('Status', formatStatus(scorecard.status));\n printBlank();\n printInfo(`Run 'chanl scorecards get ${scorecard.id}' to view details`);\n printBlank();\n } catch (error) {\n spinner.fail('Failed to create scorecard');\n const message = error instanceof Error ? error.message : 'Unknown error';\n printError('Error', message);\n process.exitCode = 1;\n }\n}\n\n/**\n * Handle scorecards update command\n */\nasync function handleScorecardsUpdate(\n id: string,\n options: {\n file?: string;\n name?: string;\n description?: string;\n status?: string;\n }\n): Promise<void> {\n const sdk = createSdk();\n if (!sdk) return;\n\n let updateRequest: UpdateScorecardRequest;\n\n if (options.file) {\n try {\n const content = await readFile(options.file, 'utf-8');\n updateRequest = JSON.parse(content) as UpdateScorecardRequest;\n } catch (err) {\n const message = err instanceof Error ? err.message : 'Unknown error';\n printError('Failed to read file', message);\n process.exitCode = 1;\n return;\n }\n } else {\n updateRequest = {};\n if (options.name) updateRequest.name = options.name;\n if (options.description) updateRequest.description = options.description;\n if (options.status) updateRequest.status = options.status as ScorecardStatus;\n\n if (Object.keys(updateRequest).length === 0) {\n printError('No updates provided', 'Provide --file or update options');\n process.exitCode = 1;\n return;\n }\n }\n\n const spinner = ora('Updating scorecard...').start();\n\n try {\n const response = await sdk.scorecard.update(id, updateRequest);\n\n spinner.stop();\n\n if (!response.success || !response.data) {\n printError('Failed to update scorecard', response.message);\n process.exitCode = 1;\n return;\n }\n\n if (isJsonOutput()) {\n printJson(response.data);\n return;\n }\n\n const scorecard = response.data;\n\n printBlank();\n printSuccess('Scorecard updated successfully');\n printLabel('ID', scorecard.id);\n printLabel('Name', scorecard.name);\n printLabel('Status', formatStatus(scorecard.status));\n printBlank();\n } catch (error) {\n spinner.fail('Failed to update scorecard');\n const message = error instanceof Error ? error.message : 'Unknown error';\n printError('Error', message);\n process.exitCode = 1;\n }\n}\n\n/**\n * Handle scorecards delete command\n */\nasync function handleScorecardsDelete(\n id: string,\n options: { yes?: boolean }\n): Promise<void> {\n const sdk = createSdk();\n if (!sdk) return;\n\n if (!options.yes) {\n printWarning(`This will permanently delete scorecard ${id.slice(-12)}`);\n const confirmed = await confirm({ message: 'Are you sure?', default: false });\n if (!confirmed) {\n printInfo('Cancelled');\n return;\n }\n }\n\n const spinner = ora('Deleting scorecard...').start();\n\n try {\n const response = await sdk.scorecard.delete(id);\n\n spinner.stop();\n\n if (!response.success) {\n printError('Failed to delete scorecard', response.message);\n process.exitCode = 1;\n return;\n }\n\n if (isJsonOutput()) {\n printJson({ deleted: true, scorecardId: id });\n return;\n }\n\n printSuccess(`Scorecard ${id.slice(-12)} deleted successfully`);\n } catch (error) {\n spinner.fail('Failed to delete scorecard');\n const message = error instanceof Error ? error.message : 'Unknown error';\n printError('Error', message);\n process.exitCode = 1;\n }\n}\n\n/**\n * Handle scorecards evaluate command\n */\nasync function handleScorecardsEvaluate(\n callId: string,\n options: { scorecard: string; force?: boolean }\n): Promise<void> {\n const sdk = createSdk();\n if (!sdk) return;\n\n const spinner = ora('Triggering evaluation...').start();\n\n try {\n const response = await sdk.scorecard.evaluate(callId, {\n scorecardId: options.scorecard,\n force: options.force,\n });\n\n spinner.stop();\n\n if (!response.success || !response.data) {\n printError('Failed to trigger evaluation', response.message);\n process.exitCode = 1;\n return;\n }\n\n if (isJsonOutput()) {\n printJson(response.data);\n return;\n }\n\n const { resultId, status } = response.data;\n\n printBlank();\n if (status === 'completed') {\n printSuccess('Evaluation completed');\n } else {\n printSuccess('Evaluation queued');\n }\n if (resultId) {\n printLabel('Result ID', resultId);\n }\n printLabel('Status', status);\n printBlank();\n printInfo(`Run 'chanl scorecards results ${callId}' to view results`);\n printBlank();\n } catch (error) {\n spinner.fail('Failed to trigger evaluation');\n const message = error instanceof Error ? error.message : 'Unknown error';\n printError('Error', message);\n process.exitCode = 1;\n }\n}\n\n/**\n * Handle scorecards results command\n */\nasync function handleScorecardsResults(\n callId: string,\n options: { scorecard?: string }\n): Promise<void> {\n const sdk = createSdk();\n if (!sdk) return;\n\n const spinner = ora('Fetching results...').start();\n\n try {\n const response = await sdk.scorecard.getResultsByCall(callId);\n\n spinner.stop();\n\n if (!response.success || !response.data) {\n printError('Failed to fetch results', response.message);\n process.exitCode = 1;\n return;\n }\n\n let results = response.data.results;\n\n // Filter by scorecard if specified\n if (options.scorecard && Array.isArray(results)) {\n results = results.filter((r: ScorecardResult) => r.scorecardId === options.scorecard);\n }\n\n if (isJsonOutput()) {\n printJson(results);\n return;\n }\n\n if (!results || results.length === 0) {\n printInfo('No evaluation results found for this call');\n printInfo(`Run 'chanl scorecards evaluate ${callId} -s <scorecardId>' to evaluate`);\n return;\n }\n\n const resultArray = results;\n\n printBlank();\n console.log(chalk.bold(`Evaluation Results for Call ${callId.slice(-12)}`));\n console.log(chalk.dim('-'.repeat(60)));\n\n for (const result of resultArray) {\n console.log(chalk.bold(`\\nScorecard: ${result.scorecardId?.slice(-12) || 'Unknown'}`));\n console.log(` Overall Score: ${formatScore(result.overallScore)}`);\n console.log(` Status: ${result.status || 'completed'}`);\n if (result.createdAt) {\n console.log(` Evaluated: ${formatDate(result.createdAt)}`);\n }\n\n if (result.categoryScores && Object.keys(result.categoryScores).length > 0) {\n console.log(chalk.bold('\\n Category Scores:'));\n for (const [categoryName, score] of Object.entries(result.categoryScores)) {\n console.log(` ${categoryName}: ${formatScore(score)}`);\n }\n }\n\n if (result.llmAnalysis?.summary) {\n console.log(chalk.bold('\\n Summary:'));\n console.log(` ${result.llmAnalysis.summary}`);\n }\n\n if (result.llmAnalysis?.improvementSuggestions && result.llmAnalysis.improvementSuggestions.length > 0) {\n console.log(chalk.bold('\\n Improvement Suggestions:'));\n for (const suggestion of result.llmAnalysis.improvementSuggestions) {\n console.log(` - ${suggestion}`);\n }\n }\n }\n\n printBlank();\n } catch (error) {\n spinner.fail('Failed to fetch results');\n const message = error instanceof Error ? error.message : 'Unknown error';\n printError('Error', message);\n process.exitCode = 1;\n }\n}\n\n/**\n * Handle scorecards categories command\n */\nasync function handleScorecardsCategories(scorecardId: string): Promise<void> {\n const sdk = createSdk();\n if (!sdk) return;\n\n const spinner = ora('Fetching categories...').start();\n\n try {\n const response = await sdk.scorecard.listCategories(scorecardId);\n\n spinner.stop();\n\n if (!response.success || !response.data) {\n printError('Failed to fetch categories', response.message);\n process.exitCode = 1;\n return;\n }\n\n const categories = response.data.categories;\n\n if (isJsonOutput()) {\n printJson(categories);\n return;\n }\n\n if (!categories || categories.length === 0) {\n printInfo('No categories found');\n return;\n }\n\n printBlank();\n printSimpleTable(\n ['ID', 'Name', 'Weight', 'Criteria'],\n categories.map((c: ScorecardCategory) => [\n c.id.slice(-12),\n c.name.slice(0, 30),\n `${c.weight}%`,\n (c.criteria?.length || 0).toString(),\n ])\n );\n printBlank();\n } catch (error) {\n spinner.fail('Failed to fetch categories');\n const message = error instanceof Error ? error.message : 'Unknown error';\n printError('Error', message);\n process.exitCode = 1;\n }\n}\n\n/**\n * Handle scorecards criteria command\n */\nasync function handleScorecardsCriteria(categoryId: string): Promise<void> {\n const sdk = createSdk();\n if (!sdk) return;\n\n const spinner = ora('Fetching criteria...').start();\n\n try {\n const response = await sdk.scorecard.listCriteria(categoryId);\n\n spinner.stop();\n\n if (!response.success || !response.data) {\n printError('Failed to fetch criteria', response.message);\n process.exitCode = 1;\n return;\n }\n\n const criteria = response.data.criteria;\n\n if (isJsonOutput()) {\n printJson(criteria);\n return;\n }\n\n if (!criteria || criteria.length === 0) {\n printInfo('No criteria found');\n return;\n }\n\n printBlank();\n printSimpleTable(\n ['ID', 'Name', 'Type', 'Order', 'Active'],\n criteria.map((c: ScorecardCriteria) => [\n c.id.slice(-12),\n c.name.slice(0, 25),\n c.type,\n c.order.toString(),\n c.isActive ? chalk.green('yes') : chalk.gray('no'),\n ])\n );\n printBlank();\n } catch (error) {\n spinner.fail('Failed to fetch criteria');\n const message = error instanceof Error ? error.message : 'Unknown error';\n printError('Error', message);\n process.exitCode = 1;\n }\n}\n"],"mappings":"AAAA,SAAS,eAAe;AACxB,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,OAAO,SAAS;AAChB,OAAO,WAAW;AAUlB,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAKA,SAAS,0BAAmC;AACjD,QAAM,aAAa,IAAI,QAAQ,YAAY,EACxC,YAAY,uCAAuC,EACnD;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgBF;AAGF,aACG,QAAQ,MAAM,EACd,YAAY,iBAAiB,EAC7B,OAAO,yBAAyB,4CAA4C,EAC5E,OAAO,wBAAwB,kBAAkB,IAAI,EACrD,OAAO,uBAAuB,eAAe,GAAG,EAChD;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKF,EACC,OAAO,oBAAoB;AAG9B,aACG,QAAQ,UAAU,EAClB,YAAY,uBAAuB,EACnC,OAAO,oBAAoB,iCAAiC,EAC5D;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKF,EACC,OAAO,mBAAmB;AAG7B,aACG,QAAQ,QAAQ,EAChB,YAAY,wBAAwB,EACpC,OAAO,qBAAqB,qCAAqC,EACjE,OAAO,qBAAqB,gBAAgB,EAC5C,OAAO,4BAA4B,uBAAuB,EAC1D,OAAO,yBAAyB,oCAAoC,OAAO,EAC3E;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA2BF,EACC,OAAO,sBAAsB;AAGhC,aACG,QAAQ,aAAa,EACrB,YAAY,oBAAoB,EAChC,OAAO,qBAAqB,wBAAwB,EACpD,OAAO,qBAAqB,UAAU,EACtC,OAAO,4BAA4B,iBAAiB,EACpD,OAAO,yBAAyB,sCAAsC,EACtE;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKF,EACC,OAAO,sBAAsB;AAGhC,aACG,QAAQ,aAAa,EACrB,YAAY,oBAAoB,EAChC,OAAO,aAAa,0BAA0B,EAC9C;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,EAIF,EACC,OAAO,sBAAsB;AAGhC,aACG,QAAQ,mBAAmB,EAC3B,YAAY,kCAAkC,EAC9C,eAAe,wBAAwB,qBAAqB,EAC5D,OAAO,WAAW,0CAA0C,EAC5D;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,EAIF,EACC,OAAO,wBAAwB;AAGlC,aACG,QAAQ,kBAAkB,EAC1B,YAAY,oCAAoC,EAChD,OAAO,wBAAwB,wBAAwB,EACvD;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA;AAAA,EAKF,EACC,OAAO,uBAAuB;AAGjC,aACG,QAAQ,0BAA0B,EAClC,YAAY,gCAAgC,EAC5C;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,EAIF,EACC,OAAO,0BAA0B;AAGpC,aACG,QAAQ,uBAAuB,EAC/B,YAAY,6BAA6B,EACzC;AAAA,IACC;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,EAIF,EACC,OAAO,wBAAwB;AAElC,SAAO;AACT;AAKA,SAAS,aAAa,QAAyB;AAC7C,UAAQ,QAAQ;AAAA,IACd,KAAK;AACH,aAAO,MAAM,MAAM,QAAQ;AAAA,IAC7B,KAAK;AACH,aAAO,MAAM,KAAK,UAAU;AAAA,IAC9B,KAAK;AACH,aAAO,MAAM,OAAO,OAAO;AAAA,IAC7B;AACE,aAAO,MAAM,KAAK,UAAU,SAAS;AAAA,EACzC;AACF;AAKA,SAAS,YAAY,OAAwB;AAC3C,MAAI,UAAU,UAAa,UAAU,KAAM,QAAO;AAClD,MAAI,SAAS,GAAI,QAAO,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,CAAC,GAAG;AAC1D,MAAI,SAAS,GAAI,QAAO,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,CAAC,GAAG;AAC3D,SAAO,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,CAAC,GAAG;AACzC;AAKA,eAAe,qBAAqB,SAIlB;AAChB,QAAM,MAAM,UAAU;AACtB,MAAI,CAAC,IAAK;AAEV,QAAM,UAAU,IAAI,wBAAwB,EAAE,MAAM;AAEpD,MAAI;AACF,UAAM,WAAW,MAAM,IAAI,UAAU,KAAK;AAAA,MACxC,QAAQ,QAAQ;AAAA,MAChB,OAAO,SAAS,QAAQ,OAAO,EAAE;AAAA,MACjC,MAAM,SAAS,QAAQ,MAAM,EAAE;AAAA,IACjC,CAAC;AAED,YAAQ,KAAK;AAEb,QAAI,CAAC,SAAS,WAAW,CAAC,SAAS,MAAM;AACvC,iBAAW,8BAA8B,SAAS,OAAO;AACzD,cAAQ,WAAW;AACnB;AAAA,IACF;AAEA,UAAM,EAAE,YAAY,WAAW,IAAI,SAAS;AAE5C,QAAI,aAAa,GAAG;AAClB,gBAAU,SAAS,IAAI;AACvB;AAAA,IACF;AAEA,QAAI,WAAW,WAAW,GAAG;AAC3B,gBAAU,qBAAqB;AAC/B;AAAA,IACF;AAEA,eAAW;AACX;AAAA,MACE,CAAC,MAAM,QAAQ,UAAU,cAAc,SAAS;AAAA,MAChD,WAAW,IAAI,CAAC,MAAiB;AAAA,QAC/B,EAAE,GAAG,MAAM,GAAG;AAAA,QACd,EAAE,KAAK,MAAM,GAAG,EAAE;AAAA,QAClB,aAAa,EAAE,MAAM;AAAA,SACpB,EAAE,YAAY,UAAU,GAAG,SAAS;AAAA,QACrC,WAAW,EAAE,SAAS;AAAA,MACxB,CAAC;AAAA,IACH;AAEA,eAAW;AACX,QAAI,YAAY;AACd,gBAAU,UAAU,WAAW,KAAK,qBAAqB,WAAW,IAAI,OAAO,WAAW,KAAK,GAAG;AAAA,IACpG;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,KAAK,4BAA4B;AACzC,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,eAAW,SAAS,OAAO;AAC3B,YAAQ,WAAW;AAAA,EACrB;AACF;AAKA,eAAe,oBACb,IACA,SACe;AACf,QAAM,MAAM,UAAU;AACtB,MAAI,CAAC,IAAK;AAEV,QAAM,UAAU,IAAI,uBAAuB,EAAE,MAAM;AAEnD,MAAI;AACF,UAAM,WAAW,MAAM,IAAI,UAAU,IAAI,EAAE;AAE3C,YAAQ,KAAK;AAEb,QAAI,CAAC,SAAS,WAAW,CAAC,SAAS,MAAM;AACvC,iBAAW,6BAA6B,SAAS,OAAO;AACxD,cAAQ,WAAW;AACnB;AAAA,IACF;AAEA,QAAI,aAAa,GAAG;AAClB,gBAAU,SAAS,IAAI;AACvB;AAAA,IACF;AAEA,UAAM,YAAY,SAAS;AAE3B,eAAW;AACX,YAAQ,IAAI,MAAM,KAAK,oBAAoB,CAAC;AAC5C,YAAQ,IAAI,kBAAkB,UAAU,EAAE,EAAE;AAC5C,YAAQ,IAAI,kBAAkB,UAAU,IAAI,EAAE;AAC9C,YAAQ,IAAI,kBAAkB,aAAa,UAAU,MAAM,CAAC,EAAE;AAC9D,QAAI,UAAU,aAAa;AACzB,cAAQ,IAAI,kBAAkB,UAAU,WAAW,EAAE;AAAA,IACvD;AACA,QAAI,UAAU,SAAS;AACrB,cAAQ,IAAI,kBAAkB,UAAU,OAAO,EAAE;AAAA,IACnD;AACA,YAAQ,IAAI,kBAAkB,WAAW,UAAU,SAAS,CAAC,EAAE;AAC/D,QAAI,UAAU,WAAW;AACvB,cAAQ,IAAI,kBAAkB,WAAW,UAAU,SAAS,CAAC,EAAE;AAAA,IACjE;AAEA,QAAI,QAAQ,cAAc,UAAU,cAAc,UAAU,WAAW,SAAS,GAAG;AACjF,cAAQ,IAAI,MAAM,KAAK,iBAAiB,CAAC;AACzC,iBAAW,OAAO,UAAU,YAAY;AACtC,gBAAQ,IAAI;AAAA,MAAS,MAAM,KAAK,IAAI,IAAI,CAAC,aAAa,IAAI,MAAM,IAAI;AACpE,YAAI,IAAI,YAAY,IAAI,SAAS,SAAS,GAAG;AAC3C,qBAAW,QAAQ,IAAI,UAAU;AAC/B,oBAAQ,IAAI,WAAW,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG;AAAA,UACnD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,eAAW;AAAA,EACb,SAAS,OAAO;AACd,YAAQ,KAAK,2BAA2B;AACxC,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,eAAW,SAAS,OAAO;AAC3B,YAAQ,WAAW;AAAA,EACrB;AACF;AAKA,eAAe,uBAAuB,SAKpB;AAChB,QAAM,MAAM,UAAU;AACtB,MAAI,CAAC,IAAK;AAEV,MAAI;AAEJ,MAAI,QAAQ,MAAM;AAChB,QAAI;AACF,YAAM,UAAU,MAAM,SAAS,QAAQ,MAAM,OAAO;AACpD,sBAAgB,KAAK,MAAM,OAAO;AAAA,IACpC,SAAS,KAAK;AACZ,YAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,iBAAW,uBAAuB,OAAO;AACzC,cAAQ,WAAW;AACnB;AAAA,IACF;AAAA,EACF,WAAW,QAAQ,MAAM;AACvB,oBAAgB;AAAA,MACd,MAAM,QAAQ;AAAA,MACd,aAAa,QAAQ;AAAA,MACrB,QAAS,QAAQ,UAA8B;AAAA,IACjD;AAAA,EACF,OAAO;AACL,eAAW,4BAA4B,0BAA0B;AACjE,YAAQ,WAAW;AACnB;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,uBAAuB,EAAE,MAAM;AAEnD,MAAI;AACF,UAAM,WAAW,MAAM,IAAI,UAAU,OAAO,aAAa;AAEzD,YAAQ,KAAK;AAEb,QAAI,CAAC,SAAS,WAAW,CAAC,SAAS,MAAM;AACvC,iBAAW,8BAA8B,SAAS,OAAO;AACzD,cAAQ,WAAW;AACnB;AAAA,IACF;AAEA,QAAI,aAAa,GAAG;AAClB,gBAAU,SAAS,IAAI;AACvB;AAAA,IACF;AAEA,UAAM,YAAY,SAAS;AAE3B,eAAW;AACX,iBAAa,gCAAgC;AAC7C,eAAW,MAAM,UAAU,EAAE;AAC7B,eAAW,QAAQ,UAAU,IAAI;AACjC,eAAW,UAAU,aAAa,UAAU,MAAM,CAAC;AACnD,eAAW;AACX,cAAU,6BAA6B,UAAU,EAAE,mBAAmB;AACtE,eAAW;AAAA,EACb,SAAS,OAAO;AACd,YAAQ,KAAK,4BAA4B;AACzC,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,eAAW,SAAS,OAAO;AAC3B,YAAQ,WAAW;AAAA,EACrB;AACF;AAKA,eAAe,uBACb,IACA,SAMe;AACf,QAAM,MAAM,UAAU;AACtB,MAAI,CAAC,IAAK;AAEV,MAAI;AAEJ,MAAI,QAAQ,MAAM;AAChB,QAAI;AACF,YAAM,UAAU,MAAM,SAAS,QAAQ,MAAM,OAAO;AACpD,sBAAgB,KAAK,MAAM,OAAO;AAAA,IACpC,SAAS,KAAK;AACZ,YAAM,UAAU,eAAe,QAAQ,IAAI,UAAU;AACrD,iBAAW,uBAAuB,OAAO;AACzC,cAAQ,WAAW;AACnB;AAAA,IACF;AAAA,EACF,OAAO;AACL,oBAAgB,CAAC;AACjB,QAAI,QAAQ,KAAM,eAAc,OAAO,QAAQ;AAC/C,QAAI,QAAQ,YAAa,eAAc,cAAc,QAAQ;AAC7D,QAAI,QAAQ,OAAQ,eAAc,SAAS,QAAQ;AAEnD,QAAI,OAAO,KAAK,aAAa,EAAE,WAAW,GAAG;AAC3C,iBAAW,uBAAuB,kCAAkC;AACpE,cAAQ,WAAW;AACnB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,uBAAuB,EAAE,MAAM;AAEnD,MAAI;AACF,UAAM,WAAW,MAAM,IAAI,UAAU,OAAO,IAAI,aAAa;AAE7D,YAAQ,KAAK;AAEb,QAAI,CAAC,SAAS,WAAW,CAAC,SAAS,MAAM;AACvC,iBAAW,8BAA8B,SAAS,OAAO;AACzD,cAAQ,WAAW;AACnB;AAAA,IACF;AAEA,QAAI,aAAa,GAAG;AAClB,gBAAU,SAAS,IAAI;AACvB;AAAA,IACF;AAEA,UAAM,YAAY,SAAS;AAE3B,eAAW;AACX,iBAAa,gCAAgC;AAC7C,eAAW,MAAM,UAAU,EAAE;AAC7B,eAAW,QAAQ,UAAU,IAAI;AACjC,eAAW,UAAU,aAAa,UAAU,MAAM,CAAC;AACnD,eAAW;AAAA,EACb,SAAS,OAAO;AACd,YAAQ,KAAK,4BAA4B;AACzC,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,eAAW,SAAS,OAAO;AAC3B,YAAQ,WAAW;AAAA,EACrB;AACF;AAKA,eAAe,uBACb,IACA,SACe;AACf,QAAM,MAAM,UAAU;AACtB,MAAI,CAAC,IAAK;AAEV,MAAI,CAAC,QAAQ,KAAK;AAChB,iBAAa,0CAA0C,GAAG,MAAM,GAAG,CAAC,EAAE;AACtE,UAAM,YAAY,MAAM,QAAQ,EAAE,SAAS,iBAAiB,SAAS,MAAM,CAAC;AAC5E,QAAI,CAAC,WAAW;AACd,gBAAU,WAAW;AACrB;AAAA,IACF;AAAA,EACF;AAEA,QAAM,UAAU,IAAI,uBAAuB,EAAE,MAAM;AAEnD,MAAI;AACF,UAAM,WAAW,MAAM,IAAI,UAAU,OAAO,EAAE;AAE9C,YAAQ,KAAK;AAEb,QAAI,CAAC,SAAS,SAAS;AACrB,iBAAW,8BAA8B,SAAS,OAAO;AACzD,cAAQ,WAAW;AACnB;AAAA,IACF;AAEA,QAAI,aAAa,GAAG;AAClB,gBAAU,EAAE,SAAS,MAAM,aAAa,GAAG,CAAC;AAC5C;AAAA,IACF;AAEA,iBAAa,aAAa,GAAG,MAAM,GAAG,CAAC,uBAAuB;AAAA,EAChE,SAAS,OAAO;AACd,YAAQ,KAAK,4BAA4B;AACzC,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,eAAW,SAAS,OAAO;AAC3B,YAAQ,WAAW;AAAA,EACrB;AACF;AAKA,eAAe,yBACb,QACA,SACe;AACf,QAAM,MAAM,UAAU;AACtB,MAAI,CAAC,IAAK;AAEV,QAAM,UAAU,IAAI,0BAA0B,EAAE,MAAM;AAEtD,MAAI;AACF,UAAM,WAAW,MAAM,IAAI,UAAU,SAAS,QAAQ;AAAA,MACpD,aAAa,QAAQ;AAAA,MACrB,OAAO,QAAQ;AAAA,IACjB,CAAC;AAED,YAAQ,KAAK;AAEb,QAAI,CAAC,SAAS,WAAW,CAAC,SAAS,MAAM;AACvC,iBAAW,gCAAgC,SAAS,OAAO;AAC3D,cAAQ,WAAW;AACnB;AAAA,IACF;AAEA,QAAI,aAAa,GAAG;AAClB,gBAAU,SAAS,IAAI;AACvB;AAAA,IACF;AAEA,UAAM,EAAE,UAAU,OAAO,IAAI,SAAS;AAEtC,eAAW;AACX,QAAI,WAAW,aAAa;AAC1B,mBAAa,sBAAsB;AAAA,IACrC,OAAO;AACL,mBAAa,mBAAmB;AAAA,IAClC;AACA,QAAI,UAAU;AACZ,iBAAW,aAAa,QAAQ;AAAA,IAClC;AACA,eAAW,UAAU,MAAM;AAC3B,eAAW;AACX,cAAU,iCAAiC,MAAM,mBAAmB;AACpE,eAAW;AAAA,EACb,SAAS,OAAO;AACd,YAAQ,KAAK,8BAA8B;AAC3C,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,eAAW,SAAS,OAAO;AAC3B,YAAQ,WAAW;AAAA,EACrB;AACF;AAKA,eAAe,wBACb,QACA,SACe;AACf,QAAM,MAAM,UAAU;AACtB,MAAI,CAAC,IAAK;AAEV,QAAM,UAAU,IAAI,qBAAqB,EAAE,MAAM;AAEjD,MAAI;AACF,UAAM,WAAW,MAAM,IAAI,UAAU,iBAAiB,MAAM;AAE5D,YAAQ,KAAK;AAEb,QAAI,CAAC,SAAS,WAAW,CAAC,SAAS,MAAM;AACvC,iBAAW,2BAA2B,SAAS,OAAO;AACtD,cAAQ,WAAW;AACnB;AAAA,IACF;AAEA,QAAI,UAAU,SAAS,KAAK;AAG5B,QAAI,QAAQ,aAAa,MAAM,QAAQ,OAAO,GAAG;AAC/C,gBAAU,QAAQ,OAAO,CAAC,MAAuB,EAAE,gBAAgB,QAAQ,SAAS;AAAA,IACtF;AAEA,QAAI,aAAa,GAAG;AAClB,gBAAU,OAAO;AACjB;AAAA,IACF;AAEA,QAAI,CAAC,WAAW,QAAQ,WAAW,GAAG;AACpC,gBAAU,2CAA2C;AACrD,gBAAU,kCAAkC,MAAM,gCAAgC;AAClF;AAAA,IACF;AAEA,UAAM,cAAc;AAEpB,eAAW;AACX,YAAQ,IAAI,MAAM,KAAK,+BAA+B,OAAO,MAAM,GAAG,CAAC,EAAE,CAAC;AAC1E,YAAQ,IAAI,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC;AAErC,eAAW,UAAU,aAAa;AAChC,cAAQ,IAAI,MAAM,KAAK;AAAA,aAAgB,OAAO,aAAa,MAAM,GAAG,KAAK,SAAS,EAAE,CAAC;AACrF,cAAQ,IAAI,oBAAoB,YAAY,OAAO,YAAY,CAAC,EAAE;AAClE,cAAQ,IAAI,oBAAoB,OAAO,UAAU,WAAW,EAAE;AAC9D,UAAI,OAAO,WAAW;AACpB,gBAAQ,IAAI,oBAAoB,WAAW,OAAO,SAAS,CAAC,EAAE;AAAA,MAChE;AAEA,UAAI,OAAO,kBAAkB,OAAO,KAAK,OAAO,cAAc,EAAE,SAAS,GAAG;AAC1E,gBAAQ,IAAI,MAAM,KAAK,sBAAsB,CAAC;AAC9C,mBAAW,CAAC,cAAc,KAAK,KAAK,OAAO,QAAQ,OAAO,cAAc,GAAG;AACzE,kBAAQ,IAAI,OAAO,YAAY,KAAK,YAAY,KAAK,CAAC,EAAE;AAAA,QAC1D;AAAA,MACF;AAEA,UAAI,OAAO,aAAa,SAAS;AAC/B,gBAAQ,IAAI,MAAM,KAAK,cAAc,CAAC;AACtC,gBAAQ,IAAI,OAAO,OAAO,YAAY,OAAO,EAAE;AAAA,MACjD;AAEA,UAAI,OAAO,aAAa,0BAA0B,OAAO,YAAY,uBAAuB,SAAS,GAAG;AACtG,gBAAQ,IAAI,MAAM,KAAK,8BAA8B,CAAC;AACtD,mBAAW,cAAc,OAAO,YAAY,wBAAwB;AAClE,kBAAQ,IAAI,SAAS,UAAU,EAAE;AAAA,QACnC;AAAA,MACF;AAAA,IACF;AAEA,eAAW;AAAA,EACb,SAAS,OAAO;AACd,YAAQ,KAAK,yBAAyB;AACtC,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,eAAW,SAAS,OAAO;AAC3B,YAAQ,WAAW;AAAA,EACrB;AACF;AAKA,eAAe,2BAA2B,aAAoC;AAC5E,QAAM,MAAM,UAAU;AACtB,MAAI,CAAC,IAAK;AAEV,QAAM,UAAU,IAAI,wBAAwB,EAAE,MAAM;AAEpD,MAAI;AACF,UAAM,WAAW,MAAM,IAAI,UAAU,eAAe,WAAW;AAE/D,YAAQ,KAAK;AAEb,QAAI,CAAC,SAAS,WAAW,CAAC,SAAS,MAAM;AACvC,iBAAW,8BAA8B,SAAS,OAAO;AACzD,cAAQ,WAAW;AACnB;AAAA,IACF;AAEA,UAAM,aAAa,SAAS,KAAK;AAEjC,QAAI,aAAa,GAAG;AAClB,gBAAU,UAAU;AACpB;AAAA,IACF;AAEA,QAAI,CAAC,cAAc,WAAW,WAAW,GAAG;AAC1C,gBAAU,qBAAqB;AAC/B;AAAA,IACF;AAEA,eAAW;AACX;AAAA,MACE,CAAC,MAAM,QAAQ,UAAU,UAAU;AAAA,MACnC,WAAW,IAAI,CAAC,MAAyB;AAAA,QACvC,EAAE,GAAG,MAAM,GAAG;AAAA,QACd,EAAE,KAAK,MAAM,GAAG,EAAE;AAAA,QAClB,GAAG,EAAE,MAAM;AAAA,SACV,EAAE,UAAU,UAAU,GAAG,SAAS;AAAA,MACrC,CAAC;AAAA,IACH;AACA,eAAW;AAAA,EACb,SAAS,OAAO;AACd,YAAQ,KAAK,4BAA4B;AACzC,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,eAAW,SAAS,OAAO;AAC3B,YAAQ,WAAW;AAAA,EACrB;AACF;AAKA,eAAe,yBAAyB,YAAmC;AACzE,QAAM,MAAM,UAAU;AACtB,MAAI,CAAC,IAAK;AAEV,QAAM,UAAU,IAAI,sBAAsB,EAAE,MAAM;AAElD,MAAI;AACF,UAAM,WAAW,MAAM,IAAI,UAAU,aAAa,UAAU;AAE5D,YAAQ,KAAK;AAEb,QAAI,CAAC,SAAS,WAAW,CAAC,SAAS,MAAM;AACvC,iBAAW,4BAA4B,SAAS,OAAO;AACvD,cAAQ,WAAW;AACnB;AAAA,IACF;AAEA,UAAM,WAAW,SAAS,KAAK;AAE/B,QAAI,aAAa,GAAG;AAClB,gBAAU,QAAQ;AAClB;AAAA,IACF;AAEA,QAAI,CAAC,YAAY,SAAS,WAAW,GAAG;AACtC,gBAAU,mBAAmB;AAC7B;AAAA,IACF;AAEA,eAAW;AACX;AAAA,MACE,CAAC,MAAM,QAAQ,QAAQ,SAAS,QAAQ;AAAA,MACxC,SAAS,IAAI,CAAC,MAAyB;AAAA,QACrC,EAAE,GAAG,MAAM,GAAG;AAAA,QACd,EAAE,KAAK,MAAM,GAAG,EAAE;AAAA,QAClB,EAAE;AAAA,QACF,EAAE,MAAM,SAAS;AAAA,QACjB,EAAE,WAAW,MAAM,MAAM,KAAK,IAAI,MAAM,KAAK,IAAI;AAAA,MACnD,CAAC;AAAA,IACH;AACA,eAAW;AAAA,EACb,SAAS,OAAO;AACd,YAAQ,KAAK,0BAA0B;AACvC,UAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU;AACzD,eAAW,SAAS,OAAO;AAC3B,YAAQ,WAAW;AAAA,EACrB;AACF;","names":[]}
@@ -0,0 +1,8 @@
1
+ import { Command } from 'commander';
2
+
3
+ /**
4
+ * Create the tools command group
5
+ */
6
+ declare function createToolsCommand(): Command;
7
+
8
+ export { createToolsCommand };