{"version":3,"sources":["../src/cli/commands/annotations/list.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { AnnotationsApiService } from \"@/client-sdk/services/annotations/annotations-api.service\";\nimport { checkApiKey } from \"../../utils/apiKey\";\nimport { formatTable, formatRelativeTime } from \"../../utils/formatting\";\nimport { failSpinner } from \"../../utils/spinnerError\";\n\nexport const listAnnotationsCommand = async (options: {\n  traceId?: string;\n  format?: string;\n}): Promise<void> => {\n  checkApiKey();\n\n  const service = new AnnotationsApiService();\n  const label = options.traceId\n    ? `Fetching annotations for trace \"${options.traceId}\"...`\n    : \"Fetching annotations...\";\n  const spinner = ora(label).start();\n\n  try {\n    const result = options.traceId\n      ? await service.getByTrace(options.traceId)\n      : await service.getAll();\n\n    // Handle both array and {data: [...]} response shapes\n    const annotations = Array.isArray(result)\n      ? result\n      : (result as unknown as { data: typeof result }).data ?? [];\n\n    spinner.succeed(\n      `Found ${annotations.length} annotation${annotations.length !== 1 ? \"s\" : \"\"}`,\n    );\n\n    if (options.format === \"json\") {\n      console.log(JSON.stringify(annotations, null, 2));\n      return;\n    }\n\n    if (annotations.length === 0) {\n      console.log();\n      console.log(chalk.gray(\"No annotations found.\"));\n      console.log(chalk.gray(\"Create one with:\"));\n      console.log(\n        chalk.cyan(\n          '  langwatch annotation create <traceId> --comment \"Great response!\"',\n        ),\n      );\n      return;\n    }\n\n    console.log();\n\n    const tableData = annotations.map((a) => ({\n      ID: a.id ?? \"—\",\n      \"Trace ID\": a.traceId ? a.traceId.substring(0, 20) : \"—\",\n      Comment: truncate(a.comment ?? \"—\", 40),\n      Rating: a.isThumbsUp === true ? \"👍\" : a.isThumbsUp === false ? \"👎\" : \"—\",\n      Created: a.createdAt ? formatRelativeTime(a.createdAt) : \"—\",\n    }));\n\n    formatTable({\n      data: tableData,\n      headers: [\"ID\", \"Trace ID\", \"Comment\", \"Rating\", \"Created\"],\n      colorMap: {\n        ID: chalk.green,\n        \"Trace ID\": chalk.cyan,\n      },\n    });\n\n    console.log();\n    console.log(\n      chalk.gray(\n        `Use ${chalk.cyan(\"langwatch annotation get <id>\")} to view full details`,\n      ),\n    );\n  } catch (error) {\n    failSpinner({ spinner, error, action: \"fetch annotations\" });\n    process.exit(1);\n  }\n};\n\nfunction truncate(str: string, maxLen: number): string {\n  const cleaned = str.replace(/\\n/g, \" \").trim();\n  if (cleaned.length <= maxLen) return cleaned;\n  return cleaned.substring(0, maxLen - 1) + \"…\";\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,SAAS;AAMT,IAAM,yBAAyB,OAAO,YAGxB;AAVrB;AAWE,cAAY;AAEZ,QAAM,UAAU,IAAI,sBAAsB;AAC1C,QAAM,QAAQ,QAAQ,UAClB,mCAAmC,QAAQ,OAAO,SAClD;AACJ,QAAM,UAAU,IAAI,KAAK,EAAE,MAAM;AAEjC,MAAI;AACF,UAAM,SAAS,QAAQ,UACnB,MAAM,QAAQ,WAAW,QAAQ,OAAO,IACxC,MAAM,QAAQ,OAAO;AAGzB,UAAM,cAAc,MAAM,QAAQ,MAAM,IACpC,UACC,YAA8C,SAA9C,YAAsD,CAAC;AAE5D,YAAQ;AAAA,MACN,SAAS,YAAY,MAAM,cAAc,YAAY,WAAW,IAAI,MAAM,EAAE;AAAA,IAC9E;AAEA,QAAI,QAAQ,WAAW,QAAQ;AAC7B,cAAQ,IAAI,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AAChD;AAAA,IACF;AAEA,QAAI,YAAY,WAAW,GAAG;AAC5B,cAAQ,IAAI;AACZ,cAAQ,IAAI,MAAM,KAAK,uBAAuB,CAAC;AAC/C,cAAQ,IAAI,MAAM,KAAK,kBAAkB,CAAC;AAC1C,cAAQ;AAAA,QACN,MAAM;AAAA,UACJ;AAAA,QACF;AAAA,MACF;AACA;AAAA,IACF;AAEA,YAAQ,IAAI;AAEZ,UAAM,YAAY,YAAY,IAAI,CAAC,MAAG;AApD1C,UAAAA,KAAA;AAoD8C;AAAA,QACxC,KAAIA,MAAA,EAAE,OAAF,OAAAA,MAAQ;AAAA,QACZ,YAAY,EAAE,UAAU,EAAE,QAAQ,UAAU,GAAG,EAAE,IAAI;AAAA,QACrD,SAAS,UAAS,OAAE,YAAF,YAAa,UAAK,EAAE;AAAA,QACtC,QAAQ,EAAE,eAAe,OAAO,cAAO,EAAE,eAAe,QAAQ,cAAO;AAAA,QACvE,SAAS,EAAE,YAAY,mBAAmB,EAAE,SAAS,IAAI;AAAA,MAC3D;AAAA,KAAE;AAEF,gBAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,YAAY,WAAW,UAAU,SAAS;AAAA,MAC1D,UAAU;AAAA,QACR,IAAI,MAAM;AAAA,QACV,YAAY,MAAM;AAAA,MACpB;AAAA,IACF,CAAC;AAED,YAAQ,IAAI;AACZ,YAAQ;AAAA,MACN,MAAM;AAAA,QACJ,OAAO,MAAM,KAAK,+BAA+B,CAAC;AAAA,MACpD;AAAA,IACF;AAAA,EACF,SAAS,OAAO;AACd,gBAAY,EAAE,SAAS,OAAO,QAAQ,oBAAoB,CAAC;AAC3D,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,SAAS,SAAS,KAAa,QAAwB;AACrD,QAAM,UAAU,IAAI,QAAQ,OAAO,GAAG,EAAE,KAAK;AAC7C,MAAI,QAAQ,UAAU,OAAQ,QAAO;AACrC,SAAO,QAAQ,UAAU,GAAG,SAAS,CAAC,IAAI;AAC5C;","names":["_a"]}