{"version":3,"sources":["../src/cli/commands/suites/create.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport {\n  SuitesApiService,\n  type SuiteTarget,\n} from \"@/client-sdk/services/suites\";\nimport { checkApiKey } from \"../../utils/apiKey\";\nimport { failSpinner } from \"../../utils/spinnerError\";\n\nfunction parseTargets(targetStrings: string[]): SuiteTarget[] {\n  return targetStrings.map((t) => {\n    const colonIndex = t.indexOf(\":\");\n    if (colonIndex === -1) {\n      console.error(chalk.red(`Error: Invalid target format \"${t}\". Use <type>:<referenceId> (e.g., http:agent_abc123)`));\n      process.exit(1);\n    }\n    const type = t.slice(0, colonIndex);\n    const referenceId = t.slice(colonIndex + 1);\n    if (![\"prompt\", \"http\", \"code\", \"workflow\"].includes(type)) {\n      console.error(chalk.red(`Error: Invalid target type \"${type}\". Must be one of: prompt, http, code, workflow`));\n      process.exit(1);\n    }\n    return { type: type as SuiteTarget[\"type\"], referenceId };\n  });\n}\n\nexport const createSuiteCommand = async (\n  name: string,\n  options: {\n    scenarios?: string;\n    targets?: string[];\n    repeatCount?: string;\n    labels?: string;\n    description?: string;\n    format?: string;\n  },\n): Promise<void> => {\n  checkApiKey();\n\n  if (!options.scenarios) {\n    console.error(chalk.red(\"Error: --scenarios is required (comma-separated scenario IDs)\"));\n    process.exit(1);\n  }\n\n  if (!options.targets || options.targets.length === 0) {\n    console.error(chalk.red(\"Error: --targets is required (format: <type>:<referenceId>)\"));\n    process.exit(1);\n  }\n\n  const scenarioIds = options.scenarios.split(\",\").map((s) => s.trim());\n  const targets = parseTargets(options.targets);\n  const repeatCount = options.repeatCount ? parseInt(options.repeatCount, 10) : 1;\n  const labels = options.labels ? options.labels.split(\",\").map((l) => l.trim()) : [];\n\n  const service = new SuitesApiService();\n  const spinner = ora(`Creating suite \"${name}\"...`).start();\n\n  try {\n    const suite = await service.create({\n      name,\n      description: options.description,\n      scenarioIds,\n      targets,\n      repeatCount,\n      labels,\n    });\n\n    spinner.succeed(`Suite \"${suite.name}\" created (${suite.id})`);\n\n    if (options.format === \"json\") {\n      console.log(JSON.stringify(suite, null, 2));\n      return;\n    }\n\n    console.log();\n    console.log(`  ${chalk.gray(\"ID:\")}        ${chalk.green(suite.id)}`);\n    console.log(`  ${chalk.gray(\"Slug:\")}      ${chalk.yellow(suite.slug)}`);\n    console.log(`  ${chalk.gray(\"Scenarios:\")} ${suite.scenarioIds.length}`);\n    console.log(`  ${chalk.gray(\"Targets:\")}   ${suite.targets.length}`);\n    console.log(`  ${chalk.gray(\"Repeat:\")}    ${suite.repeatCount}`);\n    console.log();\n    if (suite.platformUrl) {\n      console.log(`  ${chalk.bold(\"View:\")}  ${chalk.underline(suite.platformUrl)}`);\n    }\n    console.log(\n      chalk.gray(`Run it with: ${chalk.cyan(`langwatch suite run ${suite.id}`)}`),\n    );\n  } catch (error) {\n    failSpinner({ spinner, error, action: \"create suite\" });\n    process.exit(1);\n  }\n};\n"],"mappings":"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","names":[]}