codeam-cli 1.4.17 → 1.4.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.js +22 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -115,7 +115,7 @@ var import_qrcode_terminal = __toESM(require("qrcode-terminal"));
|
|
|
115
115
|
// package.json
|
|
116
116
|
var package_default = {
|
|
117
117
|
name: "codeam-cli",
|
|
118
|
-
version: "1.4.
|
|
118
|
+
version: "1.4.19",
|
|
119
119
|
description: "Remote control Claude Code from your mobile device",
|
|
120
120
|
main: "dist/index.js",
|
|
121
121
|
bin: {
|
|
@@ -1396,6 +1396,20 @@ function getPricing(model) {
|
|
|
1396
1396
|
}
|
|
1397
1397
|
return MODEL_PRICING["claude-sonnet-4"];
|
|
1398
1398
|
}
|
|
1399
|
+
var MODEL_CONTEXT_WINDOW = {
|
|
1400
|
+
"claude-opus-4": 1e6,
|
|
1401
|
+
"claude-sonnet-4": 1e6,
|
|
1402
|
+
"claude-3-5-sonnet": 2e5,
|
|
1403
|
+
"claude-3-5-haiku": 2e5,
|
|
1404
|
+
"claude-3-haiku": 2e5
|
|
1405
|
+
};
|
|
1406
|
+
function getContextWindow(model) {
|
|
1407
|
+
if (!model) return 2e5;
|
|
1408
|
+
for (const [prefix, size] of Object.entries(MODEL_CONTEXT_WINDOW)) {
|
|
1409
|
+
if (model.startsWith(prefix)) return size;
|
|
1410
|
+
}
|
|
1411
|
+
return 2e5;
|
|
1412
|
+
}
|
|
1399
1413
|
var HistoryService = class {
|
|
1400
1414
|
constructor(pluginId, cwd) {
|
|
1401
1415
|
this.pluginId = pluginId;
|
|
@@ -1498,7 +1512,7 @@ var HistoryService = class {
|
|
|
1498
1512
|
if (!lastUsage) return null;
|
|
1499
1513
|
const inputTokens = (lastUsage["input_tokens"] ?? lastUsage["prompt_tokens"] ?? 0) + (lastUsage["cache_read_input_tokens"] ?? 0) + (lastUsage["cache_creation_input_tokens"] ?? 0);
|
|
1500
1514
|
const outputTokens = lastUsage["output_tokens"] ?? lastUsage["completion_tokens"] ?? 0;
|
|
1501
|
-
const total =
|
|
1515
|
+
const total = getContextWindow(lastModel);
|
|
1502
1516
|
const percent = Math.min(100, Math.round(inputTokens / total * 100));
|
|
1503
1517
|
return { used: inputTokens, total, percent, model: lastModel, outputTokens, cacheReadTokens: lastUsage["cache_read_input_tokens"] ?? 0 };
|
|
1504
1518
|
}
|
|
@@ -1515,14 +1529,16 @@ var HistoryService = class {
|
|
|
1515
1529
|
return 0;
|
|
1516
1530
|
}
|
|
1517
1531
|
const now = /* @__PURE__ */ new Date();
|
|
1518
|
-
const monthStart = new Date(now.getFullYear(), now.getMonth(), 1)
|
|
1532
|
+
const monthStart = new Date(now.getFullYear(), now.getMonth(), 1);
|
|
1533
|
+
const monthStartIso = monthStart.toISOString();
|
|
1534
|
+
const monthStartMs = monthStart.getTime();
|
|
1519
1535
|
let totalCost = 0;
|
|
1520
1536
|
for (const projectDir of projectDirs) {
|
|
1521
1537
|
let files;
|
|
1522
1538
|
try {
|
|
1523
1539
|
files = fs4.readdirSync(projectDir).filter((f) => f.endsWith(".jsonl")).filter((f) => {
|
|
1524
1540
|
try {
|
|
1525
|
-
return fs4.statSync(path4.join(projectDir, f)).mtimeMs >=
|
|
1541
|
+
return fs4.statSync(path4.join(projectDir, f)).mtimeMs >= monthStartMs;
|
|
1526
1542
|
} catch {
|
|
1527
1543
|
return false;
|
|
1528
1544
|
}
|
|
@@ -1541,6 +1557,8 @@ var HistoryService = class {
|
|
|
1541
1557
|
try {
|
|
1542
1558
|
const record = JSON.parse(line);
|
|
1543
1559
|
if (record["type"] !== "assistant") continue;
|
|
1560
|
+
const timestamp = record["timestamp"];
|
|
1561
|
+
if (timestamp && timestamp < monthStartIso) continue;
|
|
1544
1562
|
const msg = record["message"];
|
|
1545
1563
|
if (!msg || msg["model"] === "<synthetic>") continue;
|
|
1546
1564
|
const model = msg["model"] || "";
|