@burnguard/agent 1.0.0 → 1.1.0

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/config.js CHANGED
@@ -30,7 +30,7 @@ function loadConfig() {
30
30
  "wss://api.burnguard.dev/api/ws";
31
31
  const logDirectory = resolveHome(getCliArg("log-dir") ??
32
32
  process.env.BURNGUARD_LOG_DIR ??
33
- "~/.openclaw/sessions");
33
+ "~/.openclaw");
34
34
  const reconnectInterval = parseInt(getCliArg("reconnect-interval") ?? "5000", 10);
35
35
  const maxReconnectAttempts = parseInt(getCliArg("max-reconnect") ?? "10", 10);
36
36
  const batchSize = parseInt(getCliArg("batch-size") ?? "50", 10);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;AA0BA,gCA8CC;AAxED,4CAAoB;AACpB,gDAAwB;AAYxB,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,MAAM,GAAG,KAAK,IAAI,GAAG,CAAC;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,MAAM,GACV,SAAS,CAAC,SAAS,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,EAAE,CAAC;IAEL,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,2EAA2E,CAC5E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GACd,SAAS,CAAC,aAAa,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,gCAAgC,CAAC;IAEnC,MAAM,YAAY,GAAG,WAAW,CAC9B,SAAS,CAAC,SAAS,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,sBAAsB,CACvB,CAAC;IAEF,MAAM,iBAAiB,GAAG,QAAQ,CAChC,SAAS,CAAC,oBAAoB,CAAC,IAAI,MAAM,EACzC,EAAE,CACH,CAAC;IAEF,MAAM,oBAAoB,GAAG,QAAQ,CACnC,SAAS,CAAC,eAAe,CAAC,IAAI,IAAI,EAClC,EAAE,CACH,CAAC;IAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAE1E,OAAO;QACL,MAAM;QACN,UAAU;QACV,YAAY;QACZ,iBAAiB;QACjB,oBAAoB;QACpB,SAAS;QACT,aAAa;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;AA0BA,gCA8CC;AAxED,4CAAoB;AACpB,gDAAwB;AAYxB,SAAS,WAAW,CAAC,QAAgB;IACnC,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,MAAM,GAAG,KAAK,IAAI,GAAG,CAAC;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3D,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpD,CAAC;AAED,SAAgB,UAAU;IACxB,MAAM,MAAM,GACV,SAAS,CAAC,SAAS,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,EAAE,CAAC;IAEL,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CAAC,KAAK,CACX,2EAA2E,CAC5E,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,UAAU,GACd,SAAS,CAAC,aAAa,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,qBAAqB;QACjC,gCAAgC,CAAC;IAEnC,MAAM,YAAY,GAAG,WAAW,CAC9B,SAAS,CAAC,SAAS,CAAC;QACpB,OAAO,CAAC,GAAG,CAAC,iBAAiB;QAC7B,aAAa,CACd,CAAC;IAEF,MAAM,iBAAiB,GAAG,QAAQ,CAChC,SAAS,CAAC,oBAAoB,CAAC,IAAI,MAAM,EACzC,EAAE,CACH,CAAC;IAEF,MAAM,oBAAoB,GAAG,QAAQ,CACnC,SAAS,CAAC,eAAe,CAAC,IAAI,IAAI,EAClC,EAAE,CACH,CAAC;IAEF,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC;IAChE,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;IAE1E,OAAO;QACL,MAAM;QACN,UAAU;QACV,YAAY;QACZ,iBAAiB;QACjB,oBAAoB;QACpB,SAAS;QACT,aAAa;KACd,CAAC;AACJ,CAAC"}
package/dist/index.js CHANGED
@@ -5,7 +5,7 @@ const config_1 = require("./config");
5
5
  const watcher_1 = require("./watcher");
6
6
  const sender_1 = require("./sender");
7
7
  console.log("=================================");
8
- console.log(" BurnGuard Agent v1.0.0");
8
+ console.log(" BurnGuard Agent v1.1.0");
9
9
  console.log(" Real-Time Cost Monitoring");
10
10
  console.log("=================================");
11
11
  console.log();
package/dist/parser.d.ts CHANGED
@@ -7,5 +7,8 @@ export interface ParsedMetric {
7
7
  outputTokens: number;
8
8
  costCents: number;
9
9
  }
10
- export declare function parseJsonlLine(line: string): ParsedMetric | null;
10
+ /** Strip date suffix from model names: claude-sonnet-4-20250514 claude-sonnet-4 */
11
+ export declare function normalizeModelName(model: string): string;
12
+ /** Parse OpenClaw's nested JSONL format, with flat-format fallback */
13
+ export declare function parseJsonlLine(line: string, fileSessionId?: string): ParsedMetric | null;
11
14
  //# sourceMappingURL=parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AA6CD,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAiDhE"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AASD,qFAAqF;AACrF,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAExD;AA+DD,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAuFxF"}
package/dist/parser.js CHANGED
@@ -1,5 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeModelName = normalizeModelName;
3
4
  exports.parseJsonlLine = parseJsonlLine;
4
5
  /** Model pricing: [input_per_1M_tokens_cents, output_per_1M_tokens_cents] */
5
6
  const MODEL_PRICING = {
@@ -7,73 +8,102 @@ const MODEL_PRICING = {
7
8
  "claude-sonnet-4": [300, 1500],
8
9
  "claude-haiku-3.5": [25, 125],
9
10
  };
10
- function calculateCost(model, inputTokens, outputTokens) {
11
- const pricing = MODEL_PRICING[model];
11
+ /** Strip date suffix from model names: claude-sonnet-4-20250514 → claude-sonnet-4 */
12
+ function normalizeModelName(model) {
13
+ return model.replace(/-\d{8}$/, "");
14
+ }
15
+ function calculateCost(model, standardInput, cacheReadInput, cacheCreationInput, outputTokens) {
16
+ const normalized = normalizeModelName(model);
17
+ const pricing = MODEL_PRICING[normalized];
12
18
  if (!pricing)
13
19
  return 0;
14
20
  const [inputRate, outputRate] = pricing;
15
- const cost = (inputTokens / 1_000_000) * inputRate +
21
+ const cost = (standardInput / 1_000_000) * inputRate +
22
+ (cacheReadInput / 1_000_000) * inputRate * 0.1 +
23
+ (cacheCreationInput / 1_000_000) * inputRate * 1.25 +
16
24
  (outputTokens / 1_000_000) * outputRate;
17
25
  return Math.round(cost);
18
26
  }
19
- function detectCategory(data) {
20
- if (typeof data.type === "string") {
21
- const t = data.type.toLowerCase();
22
- if (t.includes("heartbeat") || t.includes("ping"))
23
- return "heartbeat";
24
- if (t.includes("tool") || t.includes("function"))
25
- return "tool_use";
26
- if (t.includes("error"))
27
- return "error";
28
- return t;
27
+ function detectCategoryFromContent(content) {
28
+ if (!Array.isArray(content))
29
+ return "conversation";
30
+ for (const block of content) {
31
+ if (typeof block === "object" && block !== null && "type" in block) {
32
+ const t = block.type;
33
+ if (t === "tool_use")
34
+ return "tool_use";
35
+ if (t === "thinking")
36
+ return "thinking";
37
+ }
29
38
  }
30
- if (data.heartbeat || data.is_heartbeat)
31
- return "heartbeat";
32
- if (data.tool_name || data.function_call)
33
- return "tool_use";
34
39
  return "conversation";
35
40
  }
36
- function extractSessionId(data) {
37
- if (typeof data.session_id === "string")
38
- return data.session_id;
39
- if (typeof data.sessionId === "string")
40
- return data.sessionId;
41
- if (typeof data.id === "string")
42
- return data.id;
43
- return "unknown";
44
- }
45
- function parseJsonlLine(line) {
41
+ /** Parse OpenClaw's nested JSONL format, with flat-format fallback */
42
+ function parseJsonlLine(line, fileSessionId) {
46
43
  const trimmed = line.trim();
47
44
  if (!trimmed)
48
45
  return null;
49
46
  try {
50
47
  const data = JSON.parse(trimmed);
51
- const model = data.model ??
52
- data.model_name ??
53
- "";
48
+ // OpenClaw nested format: assistant messages with usage data
49
+ if (data.type === "message" && data.message?.role === "assistant" && data.message?.usage) {
50
+ const usage = data.message.usage;
51
+ const standardInput = usage.input_tokens ?? 0;
52
+ const cacheReadInput = usage.cache_read_input_tokens ?? 0;
53
+ const cacheCreationInput = usage.cache_creation_input_tokens ?? 0;
54
+ const outputTokens = usage.output_tokens ?? 0;
55
+ if (standardInput === 0 && cacheReadInput === 0 && cacheCreationInput === 0 && outputTokens === 0) {
56
+ return null;
57
+ }
58
+ const model = data.message.model ?? "";
59
+ if (!model)
60
+ return null;
61
+ const totalInput = standardInput + cacheReadInput + cacheCreationInput;
62
+ const costCents = calculateCost(model, standardInput, cacheReadInput, cacheCreationInput, outputTokens);
63
+ const category = detectCategoryFromContent(data.message.content ?? []);
64
+ const sessionId = fileSessionId ?? data.id ?? "unknown";
65
+ let timestamp;
66
+ if (data.timestamp) {
67
+ const parsed = Date.parse(data.timestamp);
68
+ timestamp = isNaN(parsed) ? Math.floor(Date.now() / 1000) : Math.floor(parsed / 1000);
69
+ }
70
+ else {
71
+ timestamp = Math.floor(Date.now() / 1000);
72
+ }
73
+ return {
74
+ sessionId,
75
+ timestamp,
76
+ model: normalizeModelName(model),
77
+ category,
78
+ inputTokens: totalInput,
79
+ outputTokens,
80
+ costCents,
81
+ };
82
+ }
83
+ // Flat format fallback (backward compatibility)
84
+ const model = data.model ?? data.model_name ?? "";
54
85
  if (!model)
55
86
  return null;
56
- const inputTokens = data.input_tokens ??
57
- data.prompt_tokens ??
58
- data.tokens_input ??
59
- 0;
60
- const outputTokens = data.output_tokens ??
61
- data.completion_tokens ??
62
- data.tokens_output ??
63
- 0;
87
+ const inputTokens = data.input_tokens ?? data.prompt_tokens ?? data.tokens_input ?? 0;
88
+ const outputTokens = data.output_tokens ?? data.completion_tokens ?? data.tokens_output ?? 0;
64
89
  if (inputTokens === 0 && outputTokens === 0)
65
90
  return null;
66
- const costCents = calculateCost(model, inputTokens, outputTokens);
67
- const category = detectCategory(data);
68
- const sessionId = extractSessionId(data);
69
- const timestamp = typeof data.timestamp === "number"
70
- ? data.timestamp
91
+ const normalized = normalizeModelName(model);
92
+ const pricing = MODEL_PRICING[normalized];
93
+ let costCents = 0;
94
+ if (pricing) {
95
+ const [inputRate, outputRate] = pricing;
96
+ costCents = Math.round((inputTokens / 1_000_000) * inputRate + (outputTokens / 1_000_000) * outputRate);
97
+ }
98
+ const sessionId = fileSessionId ?? data.session_id ?? data.sessionId ?? "unknown";
99
+ const timestamp = typeof data.timestamp === "string"
100
+ ? Math.floor(Date.parse(data.timestamp) / 1000) || Math.floor(Date.now() / 1000)
71
101
  : Math.floor(Date.now() / 1000);
72
102
  return {
73
103
  sessionId,
74
104
  timestamp,
75
- model,
76
- category,
105
+ model: normalized,
106
+ category: "conversation",
77
107
  inputTokens,
78
108
  outputTokens,
79
109
  costCents,
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAkB,YAAY,EAAE,MAAM,UAAU,CAAC;AAExD,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;AA4CzD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,eAAe,GACzB,QAAQ,CAAC,SAAS,CA4BpB"}
1
+ {"version":3,"file":"watcher.d.ts","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AACrC,OAAO,EAAkB,YAAY,EAAE,MAAM,UAAU,CAAC;AAExD,KAAK,eAAe,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,IAAI,CAAC;AA6CzD,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,eAAe,GACzB,QAAQ,CAAC,SAAS,CA4BpB"}
package/dist/watcher.js CHANGED
@@ -65,9 +65,10 @@ function processFile(filePath, onMetrics) {
65
65
  const lines = readNewLines(filePath);
66
66
  if (lines.length === 0)
67
67
  return;
68
+ const fileSessionId = path_1.default.basename(filePath, ".jsonl");
68
69
  const metrics = [];
69
70
  for (const line of lines) {
70
- const metric = (0, parser_1.parseJsonlLine)(line);
71
+ const metric = (0, parser_1.parseJsonlLine)(line, fileSessionId);
71
72
  if (metric) {
72
73
  metrics.push(metric);
73
74
  }
@@ -1 +1 @@
1
- {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"watcher.js","sourceRoot":"","sources":["../src/watcher.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burnguard/agent",
3
- "version": "1.0.0",
3
+ "version": "1.1.0",
4
4
  "description": "BurnGuard local agent - monitors OpenClaw session logs",
5
5
  "main": "dist/index.js",
6
6
  "bin": {