{"version":3,"sources":["../src/cli/commands/monitors/create.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { checkApiKey } from \"../../utils/apiKey\";\nimport { formatFetchError } from \"../../utils/formatFetchError\";\nimport { failSpinner } from \"../../utils/spinnerError\";\nimport { buildAuthHeaders } from \"@/internal/api/auth\";\n\nimport { resolveControlPlaneUrl } from \"@/cli/utils/governance/resolveEndpoint\";\nexport const createMonitorCommand = async (\n  name: string,\n  options: {\n    checkType: string;\n    executionMode?: string;\n    sample?: string;\n    evaluatorId?: string;\n    level?: string;\n    parameters?: string;\n    format?: string;\n  }\n): Promise<void> => {\n  checkApiKey();\n\n  const validModes = [\"ON_MESSAGE\", \"AS_GUARDRAIL\", \"MANUALLY\"];\n  if (options.executionMode && !validModes.includes(options.executionMode)) {\n    console.error(\n      chalk.red(`Error: --execution-mode must be one of: ${validModes.join(\", \")}`)\n    );\n    process.exit(1);\n  }\n\n  const apiKey = process.env.LANGWATCH_API_KEY ?? \"\";\n  const endpoint =\n    resolveControlPlaneUrl();\n\n  const spinner = ora(`Creating monitor \"${name}\"...`).start();\n\n  try {\n    let parameters: Record<string, unknown> = {};\n    if (options.parameters) {\n      parameters = JSON.parse(options.parameters) as Record<string, unknown>;\n    }\n\n    const response = await fetch(`${endpoint}/api/monitors`, {\n      method: \"POST\",\n      headers: {\n        \"Content-Type\": \"application/json\",\n        ...buildAuthHeaders({ apiKey }),\n      },\n      body: JSON.stringify({\n        name,\n        checkType: options.checkType,\n        executionMode: options.executionMode ?? \"ON_MESSAGE\",\n        sample: options.sample ? parseFloat(options.sample) : 1.0,\n        evaluatorId: options.evaluatorId,\n        level: options.level ?? \"trace\",\n        parameters,\n        preconditions: [],\n      }),\n    });\n\n    if (!response.ok) {\n      const message = await formatFetchError(response);\n      spinner.fail(`Failed to create monitor: ${message}`);\n      process.exit(1);\n    }\n\n    const monitor = (await response.json()) as {\n      id: string;\n      name: string;\n      checkType: string;\n      executionMode: string;\n      platformUrl?: string;\n    };\n\n    spinner.succeed(`Monitor \"${monitor.name}\" created (${monitor.id})`);\n\n    if (options.format === \"json\") {\n      console.log(JSON.stringify(monitor, null, 2));\n      return;\n    }\n\n    console.log();\n    console.log(`  ${chalk.gray(\"ID:\")}   ${chalk.green(monitor.id)}`);\n    console.log(`  ${chalk.gray(\"Type:\")} ${monitor.checkType}`);\n    console.log(`  ${chalk.gray(\"Mode:\")} ${monitor.executionMode}`);\n    if (monitor.platformUrl) {\n      console.log(`  ${chalk.bold(\"View:\")}  ${chalk.underline(monitor.platformUrl)}`);\n    }\n    console.log();\n  } catch (error) {\n    if (error instanceof SyntaxError) {\n      spinner.fail(chalk.red(\"--parameters must be valid JSON\"));\n    } else {\n      failSpinner({ spinner, error, action: \"create monitor\" });\n    }\n    process.exit(1);\n  }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,SAAS;AAOT,IAAM,uBAAuB,OAClC,MACA,YASkB;AAnBpB;AAoBE,cAAY;AAEZ,QAAM,aAAa,CAAC,cAAc,gBAAgB,UAAU;AAC5D,MAAI,QAAQ,iBAAiB,CAAC,WAAW,SAAS,QAAQ,aAAa,GAAG;AACxE,YAAQ;AAAA,MACN,MAAM,IAAI,2CAA2C,WAAW,KAAK,IAAI,CAAC,EAAE;AAAA,IAC9E;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AAEA,QAAM,UAAS,aAAQ,IAAI,sBAAZ,YAAiC;AAChD,QAAM,WACJ,uBAAuB;AAEzB,QAAM,UAAU,IAAI,qBAAqB,IAAI,MAAM,EAAE,MAAM;AAE3D,MAAI;AACF,QAAI,aAAsC,CAAC;AAC3C,QAAI,QAAQ,YAAY;AACtB,mBAAa,KAAK,MAAM,QAAQ,UAAU;AAAA,IAC5C;AAEA,UAAM,WAAW,MAAM,MAAM,GAAG,QAAQ,iBAAiB;AAAA,MACvD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,SACb,iBAAiB,EAAE,OAAO,CAAC;AAAA,MAEhC,MAAM,KAAK,UAAU;AAAA,QACnB;AAAA,QACA,WAAW,QAAQ;AAAA,QACnB,gBAAe,aAAQ,kBAAR,YAAyB;AAAA,QACxC,QAAQ,QAAQ,SAAS,WAAW,QAAQ,MAAM,IAAI;AAAA,QACtD,aAAa,QAAQ;AAAA,QACrB,QAAO,aAAQ,UAAR,YAAiB;AAAA,QACxB;AAAA,QACA,eAAe,CAAC;AAAA,MAClB,CAAC;AAAA,IACH,CAAC;AAED,QAAI,CAAC,SAAS,IAAI;AAChB,YAAM,UAAU,MAAM,iBAAiB,QAAQ;AAC/C,cAAQ,KAAK,6BAA6B,OAAO,EAAE;AACnD,cAAQ,KAAK,CAAC;AAAA,IAChB;AAEA,UAAM,UAAW,MAAM,SAAS,KAAK;AAQrC,YAAQ,QAAQ,YAAY,QAAQ,IAAI,cAAc,QAAQ,EAAE,GAAG;AAEnE,QAAI,QAAQ,WAAW,QAAQ;AAC7B,cAAQ,IAAI,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAC5C;AAAA,IACF;AAEA,YAAQ,IAAI;AACZ,YAAQ,IAAI,KAAK,MAAM,KAAK,KAAK,CAAC,MAAM,MAAM,MAAM,QAAQ,EAAE,CAAC,EAAE;AACjE,YAAQ,IAAI,KAAK,MAAM,KAAK,OAAO,CAAC,IAAI,QAAQ,SAAS,EAAE;AAC3D,YAAQ,IAAI,KAAK,MAAM,KAAK,OAAO,CAAC,IAAI,QAAQ,aAAa,EAAE;AAC/D,QAAI,QAAQ,aAAa;AACvB,cAAQ,IAAI,KAAK,MAAM,KAAK,OAAO,CAAC,KAAK,MAAM,UAAU,QAAQ,WAAW,CAAC,EAAE;AAAA,IACjF;AACA,YAAQ,IAAI;AAAA,EACd,SAAS,OAAO;AACd,QAAI,iBAAiB,aAAa;AAChC,cAAQ,KAAK,MAAM,IAAI,iCAAiC,CAAC;AAAA,IAC3D,OAAO;AACL,kBAAY,EAAE,SAAS,OAAO,QAAQ,iBAAiB,CAAC;AAAA,IAC1D;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;","names":[]}