clawprobe 0.2.2 → 0.2.3

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.
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAsFzF"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAQtD,UAAU,cAAc;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAuCD,wBAAsB,UAAU,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAqKzF"}
@@ -1,67 +1,183 @@
1
+ import fs from "fs";
2
+ import path from "path";
1
3
  import { openDb } from "../../core/db.js";
2
4
  import { getActiveSession } from "../../core/session-store.js";
3
- import { getLatestWorkspaceAnalysis } from "../../engines/file-analyzer.js";
5
+ import { analyzeWorkspaceFiles } from "../../engines/file-analyzer.js";
4
6
  import { header, makeTable, fmtTokens, truncBadge, outputJson, severity, getWindowSize, } from "../format.js";
7
+ /** Rough token estimate: chars / 4 */
8
+ function estTok(chars) {
9
+ return Math.ceil(chars / 4);
10
+ }
11
+ function fmtTok(n) {
12
+ return `~${fmtTokens(n)} tok`;
13
+ }
14
+ /** Try to read a text file from the workspace dir */
15
+ function readWsFile(workspaceDir, name) {
16
+ const p = path.join(workspaceDir, name);
17
+ if (!fs.existsSync(p))
18
+ return null;
19
+ try {
20
+ return fs.readFileSync(p, "utf-8");
21
+ }
22
+ catch {
23
+ return null;
24
+ }
25
+ }
26
+ function scanSkills(workspaceDir) {
27
+ const results = [];
28
+ if (!fs.existsSync(workspaceDir))
29
+ return results;
30
+ // skills/ subdirectory
31
+ const skillsDir = path.join(workspaceDir, "skills");
32
+ if (fs.existsSync(skillsDir) && fs.statSync(skillsDir).isDirectory()) {
33
+ for (const f of fs.readdirSync(skillsDir)) {
34
+ if (f.endsWith(".md") || f.endsWith(".txt")) {
35
+ try {
36
+ const content = fs.readFileSync(path.join(skillsDir, f), "utf-8");
37
+ results.push({ name: path.basename(f, path.extname(f)), chars: content.length });
38
+ }
39
+ catch { /* skip */ }
40
+ }
41
+ }
42
+ }
43
+ return results.sort((a, b) => b.chars - a.chars);
44
+ }
5
45
  export async function runContext(cfg, opts) {
6
46
  const agent = opts.agent ?? cfg.probe.openclaw.agent;
7
47
  const db = openDb(cfg.probeDir);
8
- const analysis = getLatestWorkspaceAnalysis(db, agent, cfg.workspaceDir, cfg.bootstrapMaxChars);
48
+ const analysis = analyzeWorkspaceFiles(cfg.workspaceDir, cfg.bootstrapMaxChars);
9
49
  const activeSession = getActiveSession(cfg.sessionsDir);
10
- const contextTokens = activeSession?.contextTokens ?? 0;
11
- const windowSize = getWindowSize(activeSession?.modelOverride ?? null, contextTokens);
50
+ // sessionTokens = actual context usage; windowSize = upper limit
51
+ const sessionTokens = activeSession?.sessionTokens ?? 0;
52
+ const windowSize = (activeSession?.windowSize || activeSession?.contextTokens) ?? 0;
53
+ const model = activeSession?.modelOverride ?? null;
54
+ const resolvedWindowSize = getWindowSize(model, windowSize || sessionTokens);
55
+ // ── Estimate fixed-cost components ──────────────────────────────────────
56
+ // System prompt: read SOUL.md as proxy if present; otherwise estimate from known agents
57
+ const soulContent = readWsFile(cfg.workspaceDir, "SOUL.md") ?? "";
58
+ const agentsContent = readWsFile(cfg.workspaceDir, "AGENTS.md") ?? "";
59
+ const identityContent = readWsFile(cfg.workspaceDir, "IDENTITY.md") ?? "";
60
+ const heartbeatContent = readWsFile(cfg.workspaceDir, "HEARTBEAT.md") ?? "";
61
+ const bootstrapContent = readWsFile(cfg.workspaceDir, "BOOTSTRAP.md") ?? "";
62
+ // Skills
63
+ const skills = scanSkills(cfg.workspaceDir);
64
+ const skillsChars = skills.reduce((s, sk) => s + sk.chars, 0);
65
+ // Workspace files total (injected)
66
+ const wsFiles = analysis.files;
67
+ const wsTotalInjectedChars = wsFiles.reduce((s, f) => s + f.injectedChars, 0);
68
+ const wsTotalInjectedTokens = wsFiles.reduce((s, f) => s + f.injectedEstTokens, 0);
69
+ // Session history = sessionTokens - all fixed overhead
70
+ // Fixed overhead = workspace files + system prompt estimate
71
+ const fixedOverheadTokens = wsTotalInjectedTokens;
72
+ const sessionHistoryTokens = sessionTokens > fixedOverheadTokens
73
+ ? sessionTokens - fixedOverheadTokens
74
+ : sessionTokens > 0 ? sessionTokens : 0;
12
75
  if (opts.json) {
13
76
  outputJson({
14
77
  agent,
15
- bootstrapMaxChars: analysis.bootstrapMaxChars,
16
- contextTokens,
17
- windowSize,
18
- files: analysis.files.map((f) => ({
78
+ workspaceDir: cfg.workspaceDir,
79
+ bootstrapMaxChars: cfg.bootstrapMaxChars,
80
+ sessionTokens,
81
+ windowSize: resolvedWindowSize,
82
+ utilizationPct: resolvedWindowSize > 0 ? Math.round(sessionTokens / resolvedWindowSize * 100) : 0,
83
+ workspaceFiles: wsFiles.map((f) => ({
19
84
  name: f.name,
20
85
  rawChars: f.rawChars,
21
86
  injectedChars: f.injectedChars,
22
87
  wasTruncated: f.wasTruncated,
23
- lostChars: f.lostChars,
24
- lostPercent: Math.round(f.lostPercent),
25
- estTokens: f.estTokens,
26
- injectedEstTokens: f.injectedEstTokens,
88
+ estTokens: f.injectedEstTokens,
27
89
  })),
90
+ sessionHistoryTokensEst: sessionHistoryTokens,
28
91
  });
29
92
  return;
30
93
  }
31
94
  header("🔍", "Context Analysis", `agent: ${agent}`);
32
- console.log(severity.bold(" Workspace files (injected at session start):"));
33
- console.log();
34
- const table = makeTable(["File", "Raw size", "Injected", "~Tokens", "Status"], [16, 14, 14, 10, 14]);
35
- for (const f of analysis.files) {
36
- table.push([
37
- f.name,
38
- `${f.rawChars.toLocaleString()} chars`,
39
- f.wasTruncated
40
- ? `${f.injectedChars.toLocaleString()} chars`
41
- : `${f.injectedChars.toLocaleString()} chars`,
42
- `~${fmtTokens(f.injectedEstTokens)}`,
43
- truncBadge(f.wasTruncated),
44
- ]);
95
+ // ── Overall context bar ──────────────────────────────────────────────────
96
+ if (sessionTokens > 0) {
97
+ const { tokenBar } = await import("../format.js");
98
+ const pct = Math.round(sessionTokens / resolvedWindowSize * 100);
99
+ console.log(` Context used: ${fmtTokens(sessionTokens)} / ${fmtTokens(resolvedWindowSize)} tokens ` +
100
+ `${tokenBar(sessionTokens, resolvedWindowSize)} ${pct}%`);
101
+ console.log();
45
102
  }
46
- console.log(table.toString());
47
- if (analysis.truncatedFiles.length > 0) {
103
+ else {
104
+ console.log(severity.muted(` Context window: ${fmtTokens(resolvedWindowSize)} tokens (actual usage not available)`));
48
105
  console.log();
49
- for (const f of analysis.truncatedFiles) {
50
- console.log(severity.warning(` ⚠ ${f.name}: ${f.lostChars.toLocaleString()} chars (${Math.round(f.lostPercent)}%) are never seen by the model`));
51
- }
52
106
  }
107
+ // ── Workspace directory info ─────────────────────────────────────────────
108
+ console.log(severity.muted(` Workspace: ${cfg.workspaceDir}`));
109
+ console.log(severity.muted(` Bootstrap max: ${cfg.bootstrapMaxChars.toLocaleString()} chars / file`));
110
+ console.log();
111
+ // ── Injected workspace files ─────────────────────────────────────────────
112
+ console.log(severity.bold(" Injected workspace files:"));
53
113
  console.log();
54
- console.log(severity.bold(" Token estimates:"));
114
+ if (wsFiles.length === 0) {
115
+ console.log(severity.muted(" (none found)"));
116
+ }
117
+ else {
118
+ const table = makeTable(["File", "Raw", "Injected", "~Tokens", "Status"], [18, 14, 14, 10, 12]);
119
+ for (const f of wsFiles) {
120
+ table.push([
121
+ f.name,
122
+ `${f.rawChars.toLocaleString()} chars`,
123
+ `${f.injectedChars.toLocaleString()} chars`,
124
+ fmtTok(f.injectedEstTokens),
125
+ truncBadge(f.wasTruncated),
126
+ ]);
127
+ }
128
+ console.log(table.toString());
129
+ if (analysis.truncatedFiles.length > 0) {
130
+ for (const f of analysis.truncatedFiles) {
131
+ console.log(severity.warning(` ⚠ ${f.name}: ${f.lostChars.toLocaleString()} chars (${Math.round(f.lostPercent)}%) truncated — model never sees this content`));
132
+ }
133
+ console.log();
134
+ }
135
+ console.log(` Workspace subtotal: ~${fmtTokens(wsTotalInjectedTokens)} tokens ` +
136
+ severity.muted(`(${wsFiles.length} files, ${wsTotalInjectedChars.toLocaleString()} chars injected)`));
137
+ }
55
138
  console.log();
56
- const totalWorkspaceTokens = analysis.files.reduce((s, f) => s + f.injectedEstTokens, 0);
57
- if (contextTokens > 0) {
58
- console.log(` Context window (from session): ${fmtTokens(contextTokens)} / ${fmtTokens(windowSize)} tokens`);
139
+ // ── Skills (if found) ────────────────────────────────────────────────────
140
+ if (skills.length > 0) {
141
+ console.log(severity.bold(` Skills (${skills.length} loaded):`));
142
+ console.log();
143
+ const skillTable = makeTable(["Skill", "Chars", "~Tokens"], [24, 12, 12]);
144
+ for (const sk of skills.slice(0, 10)) {
145
+ skillTable.push([sk.name, sk.chars.toLocaleString(), fmtTok(estTok(sk.chars))]);
146
+ }
147
+ if (skills.length > 10) {
148
+ skillTable.push([`… +${skills.length - 10} more`, "", ""]);
149
+ }
150
+ console.log(skillTable.toString());
151
+ console.log(` Skills subtotal: ~${fmtTokens(estTok(skillsChars))} tokens`);
152
+ console.log();
59
153
  }
60
- console.log(` Workspace files (estimate): ~${fmtTokens(totalWorkspaceTokens)} tokens`);
61
- if (contextTokens > 0) {
62
- const remaining = windowSize - contextTokens;
63
- console.log(` Remaining headroom: ${fmtTokens(remaining)} tokens`);
154
+ // ── Session history estimate ─────────────────────────────────────────────
155
+ if (sessionTokens > 0) {
156
+ console.log(severity.bold(" Session history estimate:"));
157
+ console.log();
158
+ console.log(` Total in context: ${fmtTokens(sessionTokens)} tokens`);
159
+ console.log(` Fixed overhead: ~${fmtTokens(fixedOverheadTokens)} tokens ` +
160
+ severity.muted("(workspace files)"));
161
+ console.log(` Conversation est: ~${fmtTokens(sessionHistoryTokens)} tokens ` +
162
+ severity.muted("(messages + system prompt + tools)"));
163
+ console.log();
164
+ console.log(severity.muted(" Note: For exact breakdown, run: /context detail inside OpenClaw"));
165
+ }
166
+ else {
167
+ console.log(severity.muted(" Session token data not available."));
168
+ console.log(severity.muted(" Start a session and ensure the daemon is running: clawprobe start"));
64
169
  }
65
170
  console.log();
171
+ // ── Remaining headroom ───────────────────────────────────────────────────
172
+ if (sessionTokens > 0 && resolvedWindowSize > 0) {
173
+ const remaining = resolvedWindowSize - sessionTokens;
174
+ const remainingPct = Math.round(remaining / resolvedWindowSize * 100);
175
+ console.log(severity.bold(" Remaining headroom:") +
176
+ ` ${fmtTokens(remaining)} tokens (${remainingPct}%)`);
177
+ if (remaining < resolvedWindowSize * 0.1) {
178
+ console.log(severity.warning(" ⚠ Less than 10% context remaining — compaction may be needed soon"));
179
+ }
180
+ console.log();
181
+ }
66
182
  }
67
183
  //# sourceMappingURL=context.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/cli/commands/context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAiGvF"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD,UAAU,aAAa;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,SAAS,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA4GvF"}
@@ -16,12 +16,15 @@ export async function runStatus(cfg, opts) {
16
16
  process.exit(1);
17
17
  }
18
18
  const snapshot = getLatestSnapshot(db, agent, sessionEntry.sessionKey);
19
- // Prefer live sessions.json (and snapshot only for model/context when present)
20
- let contextTokens = snapshot?.context_tokens ?? sessionEntry.contextTokens;
19
+ // sessionTokens = actual tokens currently in the model's context window
20
+ // (matches "Session tokens (cached): N total" in /context detail)
21
+ // windowSize = context window upper limit (ctx=256000)
22
+ // sessions.json's contextTokens field stores the window upper limit, NOT actual usage.
23
+ const sessionTokens = sessionEntry.sessionTokens; // actual usage; 0 if not reported
24
+ const windowSize = sessionEntry.windowSize || sessionEntry.contextTokens; // upper limit
21
25
  let compactionCount = sessionEntry.compactionCount;
22
26
  let lastActiveAt = sessionEntry.updatedAt;
23
- // When sessions.json has no token/compact data yet, derive from transcript so
24
- // "clawprobe status" shows existing state without requiring daemon to have run first.
27
+ // When sessions.json has no token/compact data yet, derive from transcript.
25
28
  const transcriptPath = path.join(cfg.sessionsDir, `${sessionEntry.sessionKey}.jsonl`);
26
29
  if (fs.existsSync(transcriptPath)) {
27
30
  if (compactionCount === 0) {
@@ -43,8 +46,9 @@ export async function runStatus(cfg, opts) {
43
46
  }
44
47
  }
45
48
  const model = snapshot?.model ?? sessionEntry.modelOverride ?? null;
46
- const windowSize = getWindowSize(model, contextTokens);
47
- const utilization = contextTokens / windowSize;
49
+ const resolvedWindowSize = getWindowSize(model, windowSize || sessionTokens);
50
+ const displayContextTokens = sessionTokens > 0 ? sessionTokens : 0;
51
+ const utilization = resolvedWindowSize > 0 ? displayContextTokens / resolvedWindowSize : 0;
48
52
  const isActive = !opts.session;
49
53
  if (opts.json) {
50
54
  outputJson({
@@ -53,8 +57,8 @@ export async function runStatus(cfg, opts) {
53
57
  sessionId: sessionEntry.sessionId,
54
58
  model,
55
59
  provider: snapshot?.provider ?? sessionEntry.providerOverride ?? null,
56
- contextTokens,
57
- windowSize,
60
+ sessionTokens: displayContextTokens,
61
+ windowSize: resolvedWindowSize,
58
62
  utilizationPct: Math.round(utilization * 100),
59
63
  inputTokens: sessionEntry.inputTokens,
60
64
  outputTokens: sessionEntry.outputTokens,
@@ -70,8 +74,14 @@ export async function runStatus(cfg, opts) {
70
74
  if (model)
71
75
  console.log(` Model: ${model}`);
72
76
  console.log();
73
- console.log(` Context: ${fmtTokens(contextTokens)} / ${fmtTokens(windowSize)} tokens ` +
74
- `${tokenBar(contextTokens, windowSize)} ${Math.round(utilization * 100)}%`);
77
+ if (displayContextTokens > 0) {
78
+ console.log(` Context: ${fmtTokens(displayContextTokens)} / ${fmtTokens(resolvedWindowSize)} tokens ` +
79
+ `${tokenBar(displayContextTokens, resolvedWindowSize)} ${Math.round(utilization * 100)}%`);
80
+ }
81
+ else {
82
+ console.log(` Context window: ${fmtTokens(resolvedWindowSize)} tokens ` +
83
+ severity.muted("(actual usage not in sessions.json — run: clawprobe context)"));
84
+ }
75
85
  console.log(` This session: ${fmtTokens(sessionEntry.inputTokens)} in / ${fmtTokens(sessionEntry.outputTokens)} out`);
76
86
  console.log(` Compacts: ${compactionCount}`);
77
87
  if (lastActiveAt) {
@@ -79,10 +89,9 @@ export async function runStatus(cfg, opts) {
79
89
  }
80
90
  if (sessionEntry.inputTokens === 0 &&
81
91
  sessionEntry.outputTokens === 0 &&
82
- sessionEntry.contextTokens === 0 &&
83
92
  fs.existsSync(transcriptPath)) {
84
93
  console.log();
85
- console.log(severity.muted(" Token counts come from sessions.json. If OpenClaw hasnt written them yet, run a turn or check your OpenClaw version."));
94
+ console.log(severity.muted(" Token counts come from sessions.json. If OpenClaw hasn't written them yet, run a turn or check your OpenClaw version."));
86
95
  }
87
96
  console.log();
88
97
  }
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/cli/commands/status.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,14 @@ export interface SessionEntry {
5
5
  inputTokens: number;
6
6
  outputTokens: number;
7
7
  totalTokens: number;
8
+ /** Actual tokens currently in context window (session_tokens / total in /context detail) */
9
+ sessionTokens: number;
10
+ /** Context window size upper limit (ctx= field, i.e. model max context) */
11
+ windowSize: number;
12
+ /**
13
+ * @deprecated Use sessionTokens for actual usage, windowSize for the limit.
14
+ * Kept for backward compatibility — may equal windowSize (not actual usage).
15
+ */
8
16
  contextTokens: number;
9
17
  compactionCount: number;
10
18
  memoryFlushAt?: number;
@@ -21,6 +29,10 @@ interface RawSessionEntry {
21
29
  outputTokens?: number;
22
30
  totalTokens?: number;
23
31
  contextTokens?: number;
32
+ sessionTokens?: number;
33
+ session_tokens?: number;
34
+ ctxSize?: number;
35
+ ctx_size?: number;
24
36
  compactionCount?: number;
25
37
  memoryFlushAt?: number;
26
38
  modelOverride?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/core/session-store.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC3C;AAGD,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,CA2BrE;AAgED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE5F;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAK9E;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAM5D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D"}
1
+ {"version":3,"file":"session-store.d.ts","sourceRoot":"","sources":["../../src/core/session-store.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,4FAA4F;IAC5F,aAAa,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,UAAU,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC3C;AAGD,UAAU,eAAe;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,EAAE,CA2BrE;AA6ED,wBAAgB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE5F;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAK9E;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,EAAE,CAM5D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D"}
@@ -35,7 +35,14 @@ function normalizeEntry(sessionKey, raw) {
35
35
  const inputTokens = getFirstNum(sources, "inputTokens", "input_tokens");
36
36
  const outputTokens = getFirstNum(sources, "outputTokens", "output_tokens");
37
37
  const totalTokens = getFirstNum(sources, "totalTokens", "total_tokens") || inputTokens + outputTokens;
38
+ // contextTokens in sessions.json is actually the window size upper limit (ctx=256000),
39
+ // NOT the actual current usage. The actual usage is in session_tokens field.
38
40
  const contextTokens = getFirstNum(sources, "contextTokens", "context_tokens");
41
+ // sessionTokens = actual tokens in context right now (matches "Session tokens (cached)" in /context detail)
42
+ // Try several field names OpenClaw may use
43
+ const sessionTokens = getFirstNum(sources, "sessionTokens", "session_tokens");
44
+ // windowSize = context window upper limit (ctx= value)
45
+ const windowSize = getFirstNum(sources, "ctxSize", "ctx_size") || contextTokens;
39
46
  const compactionCount = getFirstNum(sources, "compactionCount", "compaction_count");
40
47
  let updatedAt = getFirstNum(sources, "updatedAt", "updated_at");
41
48
  if (updatedAt === 0) {
@@ -53,6 +60,8 @@ function normalizeEntry(sessionKey, raw) {
53
60
  inputTokens,
54
61
  outputTokens,
55
62
  totalTokens,
63
+ sessionTokens,
64
+ windowSize,
56
65
  contextTokens,
57
66
  compactionCount,
58
67
  memoryFlushAt: (raw.memoryFlushAt ?? raw.memory_flush_at),
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/core/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../src/core/session-store.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ import { runCompacts } from "./cli/commands/compacts.js";
12
12
  import { runContext } from "./cli/commands/context.js";
13
13
  import { runSuggest } from "./cli/commands/suggest.js";
14
14
  import { runMemoryList, runMemorySearch, runMemoryAdd, runMemoryEdit, runMemoryDelete, runMemorySaveCompact, } from "./cli/commands/memory.js";
15
- const VERSION = "0.2.2";
15
+ const VERSION = "0.2.3";
16
16
  const program = new Command();
17
17
  program
18
18
  .name("clawprobe")
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawprobe",
3
- "version": "0.2.2",
3
+ "version": "0.2.3",
4
4
  "description": "The missing observability layer for OpenClaw agents",
5
5
  "keywords": ["openclaw", "ai-agent", "context", "observability", "llm"],
6
6
  "license": "MIT",