{"version":3,"sources":["../src/cli/commands/gateway-budgets/list.ts"],"sourcesContent":["import chalk from \"chalk\";\nimport ora from \"ora\";\nimport { GatewayBudgetsApiService } from \"@/client-sdk/services/gateway-budgets/gateway-budgets-api.service\";\nimport { checkApiKey } from \"../../utils/apiKey\";\nimport { formatTable } from \"../../utils/formatting\";\nimport { failSpinner } from \"../../utils/spinnerError\";\n\nexport const listGatewayBudgetsCommand = async (options?: { format?: string }): Promise<void> => {\n  checkApiKey();\n\n  const service = new GatewayBudgetsApiService();\n  const spinner = ora(\"Fetching gateway budgets...\").start();\n\n  try {\n    const budgets = await service.list();\n\n    spinner.succeed(`Found ${budgets.length} budget${budgets.length !== 1 ? \"s\" : \"\"}`);\n\n    if (options?.format === \"json\") {\n      console.log(JSON.stringify(budgets, null, 2));\n      return;\n    }\n\n    if (budgets.length === 0) {\n      console.log();\n      console.log(chalk.gray(\"No gateway budgets configured.\"));\n      console.log(chalk.gray(\"Create one with:\"));\n      console.log(\n        chalk.cyan('  langwatch gateway-budgets create --scope project --project <id> --window day --limit 100 --name \"daily cap\"'),\n      );\n      return;\n    }\n\n    console.log();\n\n    const tableData = budgets.map((b) => {\n      const limit = Number.parseFloat(b.limit_usd);\n      const spent = Number.parseFloat(b.spent_usd);\n      const pct = limit > 0 ? (spent / limit) * 100 : 0;\n      const pctLabel = `${pct.toFixed(0)}%`;\n      const coloredPct = pct >= 100 ? chalk.red(pctLabel) : pct >= 80 ? chalk.yellow(pctLabel) : chalk.green(pctLabel);\n      return {\n        ID: b.id,\n        Name: b.name,\n        Scope: `${b.scope_type.toLowerCase()}:${b.scope_id.slice(0, 10)}...`,\n        Window: b.window.toLowerCase(),\n        Breach: b.on_breach === \"BLOCK\" ? chalk.red(\"block\") : chalk.yellow(\"warn\"),\n        Limit: `$${limit.toFixed(2)}`,\n        Spent: `$${spent.toFixed(2)} (${coloredPct})`,\n        Resets: new Date(b.resets_at).toLocaleString(),\n        Archived: b.archived_at ? chalk.gray(\"yes\") : \"\",\n      };\n    });\n\n    formatTable({\n      data: tableData,\n      headers: [\"ID\", \"Name\", \"Scope\", \"Window\", \"Breach\", \"Limit\", \"Spent\", \"Resets\", \"Archived\"],\n      colorMap: { Name: chalk.cyan, ID: chalk.gray },\n    });\n\n    console.log();\n  } catch (error) {\n    failSpinner({ spinner, error, action: \"fetch gateway budgets\" });\n    process.exit(1);\n  }\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA,OAAO,WAAW;AAClB,OAAO,SAAS;AAMT,IAAM,4BAA4B,OAAO,YAAiD;AAC/F,cAAY;AAEZ,QAAM,UAAU,IAAI,yBAAyB;AAC7C,QAAM,UAAU,IAAI,6BAA6B,EAAE,MAAM;AAEzD,MAAI;AACF,UAAM,UAAU,MAAM,QAAQ,KAAK;AAEnC,YAAQ,QAAQ,SAAS,QAAQ,MAAM,UAAU,QAAQ,WAAW,IAAI,MAAM,EAAE,EAAE;AAElF,SAAI,mCAAS,YAAW,QAAQ;AAC9B,cAAQ,IAAI,KAAK,UAAU,SAAS,MAAM,CAAC,CAAC;AAC5C;AAAA,IACF;AAEA,QAAI,QAAQ,WAAW,GAAG;AACxB,cAAQ,IAAI;AACZ,cAAQ,IAAI,MAAM,KAAK,gCAAgC,CAAC;AACxD,cAAQ,IAAI,MAAM,KAAK,kBAAkB,CAAC;AAC1C,cAAQ;AAAA,QACN,MAAM,KAAK,+GAA+G;AAAA,MAC5H;AACA;AAAA,IACF;AAEA,YAAQ,IAAI;AAEZ,UAAM,YAAY,QAAQ,IAAI,CAAC,MAAM;AACnC,YAAM,QAAQ,OAAO,WAAW,EAAE,SAAS;AAC3C,YAAM,QAAQ,OAAO,WAAW,EAAE,SAAS;AAC3C,YAAM,MAAM,QAAQ,IAAK,QAAQ,QAAS,MAAM;AAChD,YAAM,WAAW,GAAG,IAAI,QAAQ,CAAC,CAAC;AAClC,YAAM,aAAa,OAAO,MAAM,MAAM,IAAI,QAAQ,IAAI,OAAO,KAAK,MAAM,OAAO,QAAQ,IAAI,MAAM,MAAM,QAAQ;AAC/G,aAAO;AAAA,QACL,IAAI,EAAE;AAAA,QACN,MAAM,EAAE;AAAA,QACR,OAAO,GAAG,EAAE,WAAW,YAAY,CAAC,IAAI,EAAE,SAAS,MAAM,GAAG,EAAE,CAAC;AAAA,QAC/D,QAAQ,EAAE,OAAO,YAAY;AAAA,QAC7B,QAAQ,EAAE,cAAc,UAAU,MAAM,IAAI,OAAO,IAAI,MAAM,OAAO,MAAM;AAAA,QAC1E,OAAO,IAAI,MAAM,QAAQ,CAAC,CAAC;AAAA,QAC3B,OAAO,IAAI,MAAM,QAAQ,CAAC,CAAC,KAAK,UAAU;AAAA,QAC1C,QAAQ,IAAI,KAAK,EAAE,SAAS,EAAE,eAAe;AAAA,QAC7C,UAAU,EAAE,cAAc,MAAM,KAAK,KAAK,IAAI;AAAA,MAChD;AAAA,IACF,CAAC;AAED,gBAAY;AAAA,MACV,MAAM;AAAA,MACN,SAAS,CAAC,MAAM,QAAQ,SAAS,UAAU,UAAU,SAAS,SAAS,UAAU,UAAU;AAAA,MAC3F,UAAU,EAAE,MAAM,MAAM,MAAM,IAAI,MAAM,KAAK;AAAA,IAC/C,CAAC;AAED,YAAQ,IAAI;AAAA,EACd,SAAS,OAAO;AACd,gBAAY,EAAE,SAAS,OAAO,QAAQ,wBAAwB,CAAC;AAC/D,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;","names":[]}