{"version":3,"sources":["../src/cli/commands/experiment/run.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { ExperimentsApiService } from \"@/client-sdk/services/experiments/experiments-api.service\";\nimport { checkApiKey } from \"../../utils/apiKey\";\nimport { failSpinner } from \"../../utils/spinnerError\";\n\nexport const runExperimentCommand = async (\n  slug: string,\n  options: { wait?: boolean; format?: string },\n): Promise<void> => {\n  checkApiKey();\n\n  const service = new ExperimentsApiService();\n  const spinner = ora(`Starting experiment \"${slug}\"...`).start();\n\n  try {\n    const runResult = await service.startRun(slug);\n\n    spinner.succeed(\n      `Experiment started! Run ID: ${chalk.cyan(runResult.runId)} (${runResult.total} cells)`,\n    );\n\n    if (runResult.runUrl) {\n      console.log(chalk.gray(`  View at: ${runResult.runUrl}`));\n    }\n\n    // If --wait flag is set, poll until completion\n    if (options.wait) {\n      const pollSpinner = ora(\"Waiting for completion...\").start();\n\n      let status = await service.getRunStatus(runResult.runId);\n      while (status.status === \"running\" || status.status === \"pending\") {\n        pollSpinner.text = `Running... ${status.progress}/${status.total} cells completed`;\n        await new Promise((resolve) => setTimeout(resolve, 3000));\n        status = await service.getRunStatus(runResult.runId);\n      }\n\n      if (status.status === \"completed\") {\n        pollSpinner.succeed(\n          `Experiment completed! ${status.progress}/${status.total} cells`,\n        );\n\n        if (options.format === \"json\") {\n          console.log(JSON.stringify(status, null, 2));\n        } else if (status.summary) {\n          console.log();\n          console.log(chalk.bold(\"  Summary:\"));\n          console.log(`    ${chalk.gray(\"Total cells:\")}    ${status.summary.totalCells ?? status.total}`);\n          console.log(`    ${chalk.gray(\"Completed:\")}      ${chalk.green(String(status.summary.completedCells ?? status.progress))}`);\n          if (status.summary.failedCells) {\n            console.log(`    ${chalk.gray(\"Failed:\")}         ${chalk.red(String(status.summary.failedCells))}`);\n          }\n          if (status.summary.duration) {\n            console.log(`    ${chalk.gray(\"Duration:\")}       ${(status.summary.duration / 1000).toFixed(1)}s`);\n          }\n          if (status.summary.runUrl) {\n            console.log(`    ${chalk.gray(\"View results:\")}  ${status.summary.runUrl}`);\n          }\n          console.log();\n        }\n      } else if (status.status === \"failed\") {\n        pollSpinner.fail(\n          `Experiment failed after ${status.progress}/${status.total} cells`,\n        );\n        process.exit(1);\n      } else {\n        pollSpinner.warn(`Experiment ${status.status}`);\n      }\n    } else if (options.format === \"json\") {\n      console.log(JSON.stringify(runResult, null, 2));\n    }\n  } catch (error) {\n    failSpinner({ spinner, error, action: \"run experiment\" });\n    process.exit(1);\n  }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,SAAS;AAKT,IAAM,uBAAuB,OAClC,MACA,YACkB;AATpB;AAUE,cAAY;AAEZ,QAAM,UAAU,IAAI,sBAAsB;AAC1C,QAAM,UAAU,IAAI,wBAAwB,IAAI,MAAM,EAAE,MAAM;AAE9D,MAAI;AACF,UAAM,YAAY,MAAM,QAAQ,SAAS,IAAI;AAE7C,YAAQ;AAAA,MACN,+BAA+B,MAAM,KAAK,UAAU,KAAK,CAAC,KAAK,UAAU,KAAK;AAAA,IAChF;AAEA,QAAI,UAAU,QAAQ;AACpB,cAAQ,IAAI,MAAM,KAAK,cAAc,UAAU,MAAM,EAAE,CAAC;AAAA,IAC1D;AAGA,QAAI,QAAQ,MAAM;AAChB,YAAM,cAAc,IAAI,2BAA2B,EAAE,MAAM;AAE3D,UAAI,SAAS,MAAM,QAAQ,aAAa,UAAU,KAAK;AACvD,aAAO,OAAO,WAAW,aAAa,OAAO,WAAW,WAAW;AACjE,oBAAY,OAAO,cAAc,OAAO,QAAQ,IAAI,OAAO,KAAK;AAChE,cAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAI,CAAC;AACxD,iBAAS,MAAM,QAAQ,aAAa,UAAU,KAAK;AAAA,MACrD;AAEA,UAAI,OAAO,WAAW,aAAa;AACjC,oBAAY;AAAA,UACV,yBAAyB,OAAO,QAAQ,IAAI,OAAO,KAAK;AAAA,QAC1D;AAEA,YAAI,QAAQ,WAAW,QAAQ;AAC7B,kBAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;AAAA,QAC7C,WAAW,OAAO,SAAS;AACzB,kBAAQ,IAAI;AACZ,kBAAQ,IAAI,MAAM,KAAK,YAAY,CAAC;AACpC,kBAAQ,IAAI,OAAO,MAAM,KAAK,cAAc,CAAC,QAAO,YAAO,QAAQ,eAAf,YAA6B,OAAO,KAAK,EAAE;AAC/F,kBAAQ,IAAI,OAAO,MAAM,KAAK,YAAY,CAAC,SAAS,MAAM,MAAM,QAAO,YAAO,QAAQ,mBAAf,YAAiC,OAAO,QAAQ,CAAC,CAAC,EAAE;AAC3H,cAAI,OAAO,QAAQ,aAAa;AAC9B,oBAAQ,IAAI,OAAO,MAAM,KAAK,SAAS,CAAC,YAAY,MAAM,IAAI,OAAO,OAAO,QAAQ,WAAW,CAAC,CAAC,EAAE;AAAA,UACrG;AACA,cAAI,OAAO,QAAQ,UAAU;AAC3B,oBAAQ,IAAI,OAAO,MAAM,KAAK,WAAW,CAAC,WAAW,OAAO,QAAQ,WAAW,KAAM,QAAQ,CAAC,CAAC,GAAG;AAAA,UACpG;AACA,cAAI,OAAO,QAAQ,QAAQ;AACzB,oBAAQ,IAAI,OAAO,MAAM,KAAK,eAAe,CAAC,KAAK,OAAO,QAAQ,MAAM,EAAE;AAAA,UAC5E;AACA,kBAAQ,IAAI;AAAA,QACd;AAAA,MACF,WAAW,OAAO,WAAW,UAAU;AACrC,oBAAY;AAAA,UACV,2BAA2B,OAAO,QAAQ,IAAI,OAAO,KAAK;AAAA,QAC5D;AACA,gBAAQ,KAAK,CAAC;AAAA,MAChB,OAAO;AACL,oBAAY,KAAK,cAAc,OAAO,MAAM,EAAE;AAAA,MAChD;AAAA,IACF,WAAW,QAAQ,WAAW,QAAQ;AACpC,cAAQ,IAAI,KAAK,UAAU,WAAW,MAAM,CAAC,CAAC;AAAA,IAChD;AAAA,EACF,SAAS,OAAO;AACd,gBAAY,EAAE,SAAS,OAAO,QAAQ,iBAAiB,CAAC;AACxD,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;","names":[]}