mac: bundle web chat assets
This commit is contained in:
47
apps/macos/Sources/Clawdis/Resources/WebChat/utils/format.js
Normal file
47
apps/macos/Sources/Clawdis/Resources/WebChat/utils/format.js
Normal file
@@ -0,0 +1,47 @@
|
||||
import { i18n } from "@mariozechner/mini-lit";
|
||||
export function formatCost(cost) {
|
||||
return `$${cost.toFixed(4)}`;
|
||||
}
|
||||
export function formatModelCost(cost) {
|
||||
if (!cost)
|
||||
return i18n("Free");
|
||||
const input = cost.input || 0;
|
||||
const output = cost.output || 0;
|
||||
if (input === 0 && output === 0)
|
||||
return i18n("Free");
|
||||
// Format numbers with appropriate precision
|
||||
const formatNum = (num) => {
|
||||
if (num >= 100)
|
||||
return num.toFixed(0);
|
||||
if (num >= 10)
|
||||
return num.toFixed(1).replace(/\.0$/, "");
|
||||
if (num >= 1)
|
||||
return num.toFixed(2).replace(/\.?0+$/, "");
|
||||
return num.toFixed(3).replace(/\.?0+$/, "");
|
||||
};
|
||||
return `$${formatNum(input)}/$${formatNum(output)}`;
|
||||
}
|
||||
export function formatUsage(usage) {
|
||||
if (!usage)
|
||||
return "";
|
||||
const parts = [];
|
||||
if (usage.input)
|
||||
parts.push(`↑${formatTokenCount(usage.input)}`);
|
||||
if (usage.output)
|
||||
parts.push(`↓${formatTokenCount(usage.output)}`);
|
||||
if (usage.cacheRead)
|
||||
parts.push(`R${formatTokenCount(usage.cacheRead)}`);
|
||||
if (usage.cacheWrite)
|
||||
parts.push(`W${formatTokenCount(usage.cacheWrite)}`);
|
||||
if (usage.cost?.total)
|
||||
parts.push(formatCost(usage.cost.total));
|
||||
return parts.join(" ");
|
||||
}
|
||||
export function formatTokenCount(count) {
|
||||
if (count < 1000)
|
||||
return count.toString();
|
||||
if (count < 10000)
|
||||
return (count / 1000).toFixed(1) + "k";
|
||||
return Math.round(count / 1000) + "k";
|
||||
}
|
||||
//# sourceMappingURL=format.js.map
|
||||
Reference in New Issue
Block a user