{"version":3,"sources":["../src/cli/commands/api-keys/list.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { ApiKeysApiService } from \"@/client-sdk/services/api-keys/api-keys-api.service\";\nimport { checkApiKey } from \"../../utils/apiKey\";\nimport { formatTable } from \"../../utils/formatting\";\nimport { failSpinner } from \"../../utils/spinnerError\";\n\nexport const listApiKeysCommand = async (options?: { format?: string }): Promise<void> => {\n  checkApiKey();\n\n  const service = new ApiKeysApiService();\n  const spinner = ora(\"Fetching API keys...\").start();\n\n  try {\n    const keys = await service.list();\n\n    spinner.succeed(`Found ${keys.length} API key${keys.length !== 1 ? \"s\" : \"\"}`);\n\n    if (options?.format === \"json\") {\n      console.log(JSON.stringify(keys, null, 2));\n      return;\n    }\n\n    if (keys.length === 0) {\n      console.log();\n      console.log(chalk.gray(\"No API keys found.\"));\n      console.log(chalk.gray(\"Create one with:\"));\n      console.log(chalk.cyan('  langwatch api-keys create --name \"my-key\"'));\n      return;\n    }\n\n    console.log();\n\n    const now = Date.now();\n    const tableData = keys.map((k) => {\n      const isExpired = !!k.expiresAt && new Date(k.expiresAt).getTime() <= now;\n      const status = k.revokedAt\n        ? chalk.red(\"revoked\")\n        : isExpired\n          ? chalk.yellow(\"expired\")\n          : chalk.green(\"active\");\n\n      return {\n        ID: k.id,\n        Name: k.name,\n        Status: status,\n        Bindings: String(k.roleBindings.length),\n        Expires: k.expiresAt ? new Date(k.expiresAt).toLocaleDateString() : chalk.gray(\"never\"),\n        \"Last used\": k.lastUsedAt ? new Date(k.lastUsedAt).toLocaleDateString() : chalk.gray(\"—\"),\n        Created: new Date(k.createdAt).toLocaleDateString(),\n      };\n    });\n\n    formatTable({\n      data: tableData,\n      headers: [\"ID\", \"Name\", \"Status\", \"Bindings\", \"Expires\", \"Last used\", \"Created\"],\n      colorMap: {\n        Name: chalk.cyan,\n        ID: chalk.gray,\n      },\n    });\n\n    console.log();\n  } catch (error) {\n    failSpinner({ spinner, error, action: \"fetch API keys\" });\n    process.exit(1);\n  }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,SAAS;AAMT,IAAM,qBAAqB,OAAO,YAAiD;AACxF,cAAY;AAEZ,QAAM,UAAU,IAAI,kBAAkB;AACtC,QAAM,UAAU,IAAI,sBAAsB,EAAE,MAAM;AAElD,MAAI;AACF,UAAM,OAAO,MAAM,QAAQ,KAAK;AAEhC,YAAQ,QAAQ,SAAS,KAAK,MAAM,WAAW,KAAK,WAAW,IAAI,MAAM,EAAE,EAAE;AAE7E,SAAI,mCAAS,YAAW,QAAQ;AAC9B,cAAQ,IAAI,KAAK,UAAU,MAAM,MAAM,CAAC,CAAC;AACzC;AAAA,IACF;AAEA,QAAI,KAAK,WAAW,GAAG;AACrB,cAAQ,IAAI;AACZ,cAAQ,IAAI,MAAM,KAAK,oBAAoB,CAAC;AAC5C,cAAQ,IAAI,MAAM,KAAK,kBAAkB,CAAC;AAC1C,cAAQ,IAAI,MAAM,KAAK,6CAA6C,CAAC;AACrE;AAAA,IACF;AAEA,YAAQ,IAAI;AAEZ,UAAM,MAAM,KAAK,IAAI;AACrB,UAAM,YAAY,KAAK,IAAI,CAAC,MAAM;AAChC,YAAM,YAAY,CAAC,CAAC,EAAE,aAAa,IAAI,KAAK,EAAE,SAAS,EAAE,QAAQ,KAAK;AACtE,YAAM,SAAS,EAAE,YACb,MAAM,IAAI,SAAS,IACnB,YACE,MAAM,OAAO,SAAS,IACtB,MAAM,MAAM,QAAQ;AAE1B,aAAO;AAAA,QACL,IAAI,EAAE;AAAA,QACN,MAAM,EAAE;AAAA,QACR,QAAQ;AAAA,QACR,UAAU,OAAO,EAAE,aAAa,MAAM;AAAA,QACtC,SAAS,EAAE,YAAY,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB,IAAI,MAAM,KAAK,OAAO;AAAA,QACtF,aAAa,EAAE,aAAa,IAAI,KAAK,EAAE,UAAU,EAAE,mBAAmB,IAAI,MAAM,KAAK,QAAG;AAAA,QACxF,SAAS,IAAI,KAAK,EAAE,SAAS,EAAE,mBAAmB;AAAA,MACpD;AAAA,IACF,CAAC;AAED,gBAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,QAAQ,UAAU,YAAY,WAAW,aAAa,SAAS;AAAA,MAC/E,UAAU;AAAA,QACR,MAAM,MAAM;AAAA,QACZ,IAAI,MAAM;AAAA,MACZ;AAAA,IACF,CAAC;AAED,YAAQ,IAAI;AAAA,EACd,SAAS,OAAO;AACd,gBAAY,EAAE,SAAS,OAAO,QAAQ,iBAAiB,CAAC;AACxD,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;","names":[]}