context-lens 0.3.2 → 0.4.1

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.
Files changed (126) hide show
  1. package/README.md +52 -16
  2. package/dist/analysis/ingest.d.ts +13 -0
  3. package/dist/analysis/ingest.d.ts.map +1 -0
  4. package/dist/analysis/ingest.js +75 -0
  5. package/dist/analysis/ingest.js.map +1 -0
  6. package/dist/analysis/server.d.ts +10 -0
  7. package/dist/analysis/server.d.ts.map +1 -0
  8. package/dist/analysis/server.js +95 -0
  9. package/dist/analysis/server.js.map +1 -0
  10. package/dist/analysis/watcher.d.ts +55 -0
  11. package/dist/analysis/watcher.d.ts.map +1 -0
  12. package/dist/analysis/watcher.js +170 -0
  13. package/dist/analysis/watcher.js.map +1 -0
  14. package/dist/cli-utils.d.ts +16 -0
  15. package/dist/cli-utils.d.ts.map +1 -1
  16. package/dist/cli-utils.js +185 -3
  17. package/dist/cli-utils.js.map +1 -1
  18. package/dist/cli.js +629 -88
  19. package/dist/cli.js.map +1 -1
  20. package/dist/core/conversation.d.ts +8 -1
  21. package/dist/core/conversation.d.ts.map +1 -1
  22. package/dist/core/conversation.js +38 -12
  23. package/dist/core/conversation.js.map +1 -1
  24. package/dist/core/parse.d.ts.map +1 -1
  25. package/dist/core/parse.js +17 -1
  26. package/dist/core/parse.js.map +1 -1
  27. package/dist/core/session-analysis.d.ts +100 -0
  28. package/dist/core/session-analysis.d.ts.map +1 -0
  29. package/dist/core/session-analysis.js +435 -0
  30. package/dist/core/session-analysis.js.map +1 -0
  31. package/dist/core/session-format.d.ts +20 -0
  32. package/dist/core/session-format.d.ts.map +1 -0
  33. package/dist/core/session-format.js +298 -0
  34. package/dist/core/session-format.js.map +1 -0
  35. package/dist/core.d.ts +4 -0
  36. package/dist/core.d.ts.map +1 -1
  37. package/dist/core.js +2 -0
  38. package/dist/core.js.map +1 -1
  39. package/dist/lhar/reader.d.ts +22 -0
  40. package/dist/lhar/reader.d.ts.map +1 -0
  41. package/dist/lhar/reader.js +43 -0
  42. package/dist/lhar/reader.js.map +1 -0
  43. package/dist/lhar/record.d.ts.map +1 -1
  44. package/dist/lhar/record.js +3 -0
  45. package/dist/lhar/record.js.map +1 -1
  46. package/dist/lhar/response.d.ts +8 -0
  47. package/dist/lhar/response.d.ts.map +1 -1
  48. package/dist/lhar/response.js +44 -0
  49. package/dist/lhar/response.js.map +1 -1
  50. package/dist/lhar/tools.d.ts +17 -0
  51. package/dist/lhar/tools.d.ts.map +1 -0
  52. package/dist/lhar/tools.js +48 -0
  53. package/dist/lhar/tools.js.map +1 -0
  54. package/dist/lhar-types.generated.d.ts +34 -0
  55. package/dist/lhar-types.generated.d.ts.map +1 -1
  56. package/dist/lhar.d.ts +4 -1
  57. package/dist/lhar.d.ts.map +1 -1
  58. package/dist/lhar.js +5 -1
  59. package/dist/lhar.js.map +1 -1
  60. package/dist/proxy/capture.d.ts +40 -0
  61. package/dist/proxy/capture.d.ts.map +1 -0
  62. package/dist/proxy/capture.js +56 -0
  63. package/dist/proxy/capture.js.map +1 -0
  64. package/dist/proxy/config.d.ts +16 -0
  65. package/dist/proxy/config.d.ts.map +1 -0
  66. package/dist/proxy/config.js +34 -0
  67. package/dist/proxy/config.js.map +1 -0
  68. package/dist/proxy/forward.d.ts +20 -0
  69. package/dist/proxy/forward.d.ts.map +1 -0
  70. package/dist/proxy/forward.js +210 -0
  71. package/dist/proxy/forward.js.map +1 -0
  72. package/dist/proxy/headers.d.ts +16 -0
  73. package/dist/proxy/headers.d.ts.map +1 -0
  74. package/dist/proxy/headers.js +37 -0
  75. package/dist/proxy/headers.js.map +1 -0
  76. package/dist/proxy/routing.d.ts +44 -0
  77. package/dist/proxy/routing.d.ts.map +1 -0
  78. package/dist/proxy/routing.js +114 -0
  79. package/dist/proxy/routing.js.map +1 -0
  80. package/dist/proxy/server.d.ts +27 -0
  81. package/dist/proxy/server.d.ts.map +1 -0
  82. package/dist/proxy/server.js +55 -0
  83. package/dist/proxy/server.js.map +1 -0
  84. package/dist/schemas.d.ts +328 -0
  85. package/dist/schemas.d.ts.map +1 -0
  86. package/dist/schemas.js +249 -0
  87. package/dist/schemas.js.map +1 -0
  88. package/dist/server/api.d.ts +3 -4
  89. package/dist/server/api.d.ts.map +1 -1
  90. package/dist/server/api.js +195 -220
  91. package/dist/server/api.js.map +1 -1
  92. package/dist/server/store.d.ts +23 -7
  93. package/dist/server/store.d.ts.map +1 -1
  94. package/dist/server/store.js +141 -50
  95. package/dist/server/store.js.map +1 -1
  96. package/dist/server/webui.d.ts +5 -2
  97. package/dist/server/webui.d.ts.map +1 -1
  98. package/dist/server/webui.js +32 -13
  99. package/dist/server/webui.js.map +1 -1
  100. package/dist/server-utils.d.ts +1 -2
  101. package/dist/server-utils.d.ts.map +1 -1
  102. package/dist/server-utils.js +0 -2
  103. package/dist/server-utils.js.map +1 -1
  104. package/dist/types.d.ts +1 -1
  105. package/dist/types.d.ts.map +1 -1
  106. package/dist/version.generated.d.ts +1 -1
  107. package/dist/version.generated.js +1 -1
  108. package/mitm_addon.py +99 -28
  109. package/package.json +12 -5
  110. package/schema/lhar.schema.json +50 -0
  111. package/dist/server/config.d.ts +0 -13
  112. package/dist/server/config.d.ts.map +0 -1
  113. package/dist/server/config.js +0 -36
  114. package/dist/server/config.js.map +0 -1
  115. package/dist/server/proxy.d.ts +0 -13
  116. package/dist/server/proxy.d.ts.map +0 -1
  117. package/dist/server/proxy.js +0 -218
  118. package/dist/server/proxy.js.map +0 -1
  119. package/dist/server/static.d.ts +0 -9
  120. package/dist/server/static.d.ts.map +0 -1
  121. package/dist/server/static.js +0 -78
  122. package/dist/server/static.js.map +0 -1
  123. package/dist/server.d.ts +0 -3
  124. package/dist/server.d.ts.map +0 -1
  125. package/dist/server.js +0 -43
  126. package/dist/server.js.map +0 -1
@@ -0,0 +1,298 @@
1
+ /**
2
+ * Human-readable formatting for session analysis results.
3
+ *
4
+ * Produces the text output for `context-lens analyze`.
5
+ */
6
+ // ---------------------------------------------------------------------------
7
+ // Formatting helpers
8
+ // ---------------------------------------------------------------------------
9
+ export function fmtTokens(n) {
10
+ if (n >= 1_000_000)
11
+ return `${(n / 1_000_000).toFixed(1)}M`;
12
+ if (n >= 1_000)
13
+ return `${(n / 1_000).toFixed(1)}K`;
14
+ return String(n);
15
+ }
16
+ export function fmtCost(c) {
17
+ if (c === null || c === 0)
18
+ return "-";
19
+ if (c < 0.01)
20
+ return `$${c.toFixed(4)}`;
21
+ return `$${c.toFixed(2)}`;
22
+ }
23
+ export function shortModel(m) {
24
+ const replacements = {
25
+ "claude-opus-4-6": "opus-4.6",
26
+ "claude-sonnet-4-5-2025": "sonnet-4.5",
27
+ "claude-sonnet-4-2025": "sonnet-4",
28
+ "claude-haiku-4-5-2025": "haiku-4.5",
29
+ "claude-3-5-sonnet-2024": "sonnet-3.5",
30
+ "claude-3-5-haiku-2024": "haiku-3.5",
31
+ };
32
+ for (const [prefix, short] of Object.entries(replacements)) {
33
+ if (m.startsWith(prefix))
34
+ return short;
35
+ }
36
+ if (m.length > 25)
37
+ return `${m.slice(0, 22)}...`;
38
+ return m;
39
+ }
40
+ export function fmtDuration(ms) {
41
+ if (ms < 1_000)
42
+ return `${Math.round(ms)}ms`;
43
+ const secs = ms / 1_000;
44
+ if (secs < 60)
45
+ return `${secs.toFixed(1)}s`;
46
+ const mins = Math.floor(secs / 60);
47
+ const remainSecs = Math.round(secs % 60);
48
+ if (mins < 60)
49
+ return `${mins}m ${remainSecs}s`;
50
+ const hrs = Math.floor(mins / 60);
51
+ const remainMins = mins % 60;
52
+ return `${hrs}h ${remainMins}m`;
53
+ }
54
+ function pad(s, width, right = false) {
55
+ if (right)
56
+ return s.padStart(width);
57
+ return s.padEnd(width);
58
+ }
59
+ // ---------------------------------------------------------------------------
60
+ // Composition table
61
+ // ---------------------------------------------------------------------------
62
+ function formatComposition(composition, indent) {
63
+ if (composition.length === 0)
64
+ return [`${indent}(no composition data)`];
65
+ const total = composition.reduce((s, c) => s + c.tokens, 0);
66
+ const lines = [];
67
+ lines.push(`${indent}${pad("Category", 22)} ${pad("Tokens", 10, true)} ${pad("%", 7, true)} ${pad("Count", 6, true)}`);
68
+ lines.push(`${indent}${"-".repeat(48)}`);
69
+ const sorted = [...composition].sort((a, b) => b.tokens - a.tokens);
70
+ for (const c of sorted) {
71
+ if (c.tokens === 0)
72
+ continue;
73
+ const pct = c.pct || (total > 0 ? Math.round((c.tokens / total) * 1000) / 10 : 0);
74
+ lines.push(`${indent}${pad(c.category, 22)} ${pad(fmtTokens(c.tokens), 10, true)} ${pad(`${pct.toFixed(1)}%`, 7, true)} ${pad(String(c.count), 6, true)}`);
75
+ }
76
+ return lines;
77
+ }
78
+ export function formatSessionAnalysis(a, opts = {}) {
79
+ const { showPath = true, composition: compositionArg } = opts;
80
+ const lines = [];
81
+ // Header
82
+ lines.push("=".repeat(70));
83
+ lines.push(`SESSION ANALYSIS: ${a.filename}`);
84
+ lines.push("=".repeat(70));
85
+ lines.push(` Tool: ${a.tool}`);
86
+ lines.push(` Primary model: ${a.primaryModel}`);
87
+ lines.push(` Started: ${a.startedAt}`);
88
+ lines.push(` Total entries: ${a.totalEntries} (${a.mainEntries} main, ${a.subagentEntries} subagent)`);
89
+ lines.push(` User turns: ${a.userTurns.length}`);
90
+ lines.push(` Compactions: ${a.compactions.length}`);
91
+ lines.push(` Total cost: ${fmtCost(a.totalCostUsd)}`);
92
+ if (a.timing.wallTimeMs > 0) {
93
+ lines.push(` Wall time: ${fmtDuration(a.timing.wallTimeMs)}`);
94
+ }
95
+ if (a.cache.totalCacheReadTokens > 0 || a.cache.totalCacheWriteTokens > 0) {
96
+ lines.push(` Cache hit rate: ${(a.cache.cacheHitRate * 100).toFixed(1)}%`);
97
+ }
98
+ lines.push("");
99
+ // Context timeline
100
+ lines.push("CONTEXT TIMELINE (cumulative tokens per entry)");
101
+ lines.push("-".repeat(70));
102
+ if (a.contextTimeline.length > 0) {
103
+ const maxTok = Math.max(...a.contextTimeline.map((t) => t[1]));
104
+ const width = 50;
105
+ const compactionIndices = new Set(a.compactions.map((c) => c.entryIndex));
106
+ for (const [entryIdx, tokens] of a.contextTimeline) {
107
+ const barLen = maxTok > 0 ? Math.floor((tokens / maxTok) * width) : 0;
108
+ const bar = "\u2588".repeat(barLen);
109
+ const marker = compactionIndices.has(entryIdx) ? " << COMPACTION" : "";
110
+ lines.push(` #${pad(String(entryIdx), 3, true)} ${pad(fmtTokens(tokens), 8, true)} |${bar}${marker}`);
111
+ }
112
+ }
113
+ lines.push("");
114
+ // Compaction events
115
+ if (a.compactions.length > 0) {
116
+ lines.push(`COMPACTION EVENTS (${a.compactions.length} total)`);
117
+ lines.push("-".repeat(70));
118
+ lines.push(` ${pad("#", 4, true)} ${pad("Entry", 6, true)} ${pad("Seq", 5, true)} ${pad("Before", 10, true)} ${pad("After", 10, true)} ${pad("Lost", 10, true)} ${pad("%", 7, true)}`);
119
+ for (let i = 0; i < a.compactions.length; i++) {
120
+ const c = a.compactions[i];
121
+ lines.push(` ${pad(String(i + 1), 4, true)} ${pad(String(c.entryIndex), 6, true)} ${pad(String(c.sequence), 5, true)} ${pad(fmtTokens(c.beforeTokens), 10, true)} ${pad(fmtTokens(c.afterTokens), 10, true)} ${pad(fmtTokens(c.tokensLost), 10, true)} ${pad(`${c.pctLost.toFixed(1)}%`, 7, true)}`);
122
+ }
123
+ lines.push("");
124
+ }
125
+ // Growth blocks
126
+ if (a.growthBlocks.length > 0) {
127
+ lines.push(`GROWTH BLOCKS (${a.growthBlocks.length} contiguous increasing stretches)`);
128
+ lines.push("-".repeat(70));
129
+ const interesting = a.growthBlocks.filter((b) => b.numEntries > 1);
130
+ if (interesting.length > 0) {
131
+ lines.push(` ${pad("#", 4, true)} ${pad("Entries", 8, true)} ${pad("Start", 10, true)} ${pad("End", 10, true)} ${pad("Gained", 10, true)} ${pad("Rate/turn", 12, true)}`);
132
+ for (let i = 0; i < interesting.length; i++) {
133
+ const b = interesting[i];
134
+ lines.push(` ${pad(String(i + 1), 4, true)} ${pad(String(b.numEntries), 8, true)} ${pad(fmtTokens(b.startTokens), 10, true)} ${pad(fmtTokens(b.endTokens), 10, true)} ${pad(fmtTokens(b.tokensGained), 10, true)} ${pad(`${fmtTokens(Math.round(b.ratePerTurn))}/t`, 10, true)}`);
135
+ }
136
+ }
137
+ else {
138
+ lines.push(" (no multi-entry growth blocks; context fluctuates rapidly)");
139
+ }
140
+ lines.push("");
141
+ }
142
+ // User turns
143
+ if (a.userTurns.length > 0) {
144
+ lines.push(`USER TURNS (${a.userTurns.length} turns)`);
145
+ lines.push("-".repeat(70));
146
+ lines.push(` ${pad("Turn", 5, true)} ${pad("Calls", 6, true)} ${pad("Models", 25, true)} ${pad("Peak ctx", 10, true)} ${pad("Cost", 10, true)} ${pad("Compactions", 12, true)}`);
147
+ for (const t of a.userTurns) {
148
+ let modelsStr = t.modelsUsed.map(shortModel).join(", ");
149
+ if (modelsStr.length > 25)
150
+ modelsStr = `${modelsStr.slice(0, 22)}...`;
151
+ lines.push(` ${pad(String(t.turnNumber), 5, true)} ${pad(String(t.numApiCalls), 6, true)} ${pad(modelsStr, 25, true)} ${pad(fmtTokens(t.peakContextTokens), 10, true)} ${pad(fmtCost(t.totalCost), 10, true)} ${pad(String(t.compactionsInTurn), 12, true)}`);
152
+ }
153
+ lines.push("");
154
+ }
155
+ // Agent path trace
156
+ if (showPath && a.agentPaths.length > 0) {
157
+ lines.push("AGENT PATH TRACE");
158
+ lines.push("-".repeat(70));
159
+ for (let turnIdx = 0; turnIdx < a.agentPaths.length; turnIdx++) {
160
+ const path = a.agentPaths[turnIdx];
161
+ const turn = a.userTurns[turnIdx];
162
+ const label = turn ? `Turn ${turn.turnNumber}` : `Turn ${turnIdx + 1}`;
163
+ lines.push("");
164
+ lines.push(` ${label}:`);
165
+ for (const step of path) {
166
+ const m = shortModel(step.model);
167
+ const roleTag = step.agentRole ? `[${step.agentRole}]` : "";
168
+ const cost = fmtCost(step.costUsd);
169
+ const ctx = fmtTokens(step.contextTokens);
170
+ if (step.action === "compaction") {
171
+ lines.push(` seq=${pad(String(step.sequence), 3, true)} ${pad(roleTag, 12)} ${pad(m, 18)} !! COMPACTION ctx=${ctx}`);
172
+ }
173
+ else if (step.action === "tool_use") {
174
+ lines.push(` seq=${pad(String(step.sequence), 3, true)} ${pad(roleTag, 12)} ${pad(m, 18)} -> tool_use ctx=${ctx} cost=${cost}`);
175
+ }
176
+ else if (step.action === "end_turn") {
177
+ lines.push(` seq=${pad(String(step.sequence), 3, true)} ${pad(roleTag, 12)} ${pad(m, 18)} => end_turn ctx=${ctx} cost=${cost}`);
178
+ }
179
+ else {
180
+ lines.push(` seq=${pad(String(step.sequence), 3, true)} ${pad(roleTag, 12)} ${pad(m, 18)} ${pad(step.action, 14)} ctx=${ctx} cost=${cost}`);
181
+ }
182
+ }
183
+ }
184
+ lines.push("");
185
+ }
186
+ // Composition breakdowns
187
+ let showLast = true;
188
+ let showPreCompaction = false;
189
+ let specificTurn = null;
190
+ if (compositionArg) {
191
+ if (compositionArg === "last") {
192
+ showLast = true;
193
+ }
194
+ else if (compositionArg === "pre-compaction") {
195
+ showPreCompaction = true;
196
+ showLast = false;
197
+ }
198
+ else {
199
+ const parsed = parseInt(compositionArg, 10);
200
+ if (!isNaN(parsed)) {
201
+ specificTurn = parsed;
202
+ showLast = false;
203
+ }
204
+ }
205
+ }
206
+ if (showLast) {
207
+ lines.push("COMPOSITION (last entry)");
208
+ lines.push("-".repeat(70));
209
+ lines.push(...formatComposition(a.compositionLast, " "));
210
+ lines.push("");
211
+ }
212
+ if (showPreCompaction && a.compositionsPreCompaction.length > 0) {
213
+ lines.push(`COMPOSITION BEFORE COMPACTIONS (${a.compositionsPreCompaction.length} snapshots)`);
214
+ lines.push("-".repeat(70));
215
+ for (const [entryIdx, comp] of a.compositionsPreCompaction) {
216
+ lines.push(` Entry #${entryIdx}:`);
217
+ lines.push(...formatComposition(comp, " "));
218
+ lines.push("");
219
+ }
220
+ }
221
+ if (specificTurn !== null && opts.entries) {
222
+ if (specificTurn > 0 && specificTurn <= a.userTurns.length) {
223
+ const turn = a.userTurns[specificTurn - 1];
224
+ const entryIdx = Math.min(turn.endEntryIndex, opts.entries.length - 1);
225
+ const entry = opts.entries[entryIdx];
226
+ if (entry) {
227
+ lines.push(`COMPOSITION (turn ${specificTurn}, entry #${entryIdx})`);
228
+ lines.push("-".repeat(70));
229
+ lines.push(...formatComposition(entry.context_lens.composition, " "));
230
+ lines.push("");
231
+ }
232
+ }
233
+ else {
234
+ lines.push(`Turn ${specificTurn} is out of range (session has ${a.userTurns.length} turns)`);
235
+ }
236
+ }
237
+ // Summary statistics
238
+ lines.push("SUMMARY STATISTICS");
239
+ lines.push("-".repeat(70));
240
+ if (a.contextTimeline.length > 0) {
241
+ const tokensList = a.contextTimeline.map((t) => t[1]);
242
+ lines.push(` Peak context: ${fmtTokens(Math.max(...tokensList))}`);
243
+ lines.push(` Final context: ${fmtTokens(tokensList[tokensList.length - 1])}`);
244
+ const rates = a.growthBlocks
245
+ .filter((b) => b.numEntries > 1 && b.ratePerTurn > 0)
246
+ .map((b) => b.ratePerTurn);
247
+ if (rates.length > 0) {
248
+ const avg = rates.reduce((s, r) => s + r, 0) / rates.length;
249
+ lines.push(` Avg growth rate: ${fmtTokens(Math.round(avg))}/turn (across ${rates.length} growth blocks)`);
250
+ lines.push(` Max growth rate: ${fmtTokens(Math.round(Math.max(...rates)))}/turn`);
251
+ }
252
+ }
253
+ if (a.compactions.length > 0) {
254
+ const totalLost = a.compactions.reduce((s, c) => s + c.tokensLost, 0);
255
+ lines.push(` Total tokens compacted:${fmtTokens(totalLost)}`);
256
+ const avgPct = a.compactions.reduce((s, c) => s + c.pctLost, 0) / a.compactions.length;
257
+ lines.push(` Avg compaction size: ${avgPct.toFixed(1)}% of context`);
258
+ }
259
+ if (a.userTurns.length > 0) {
260
+ const callsPerTurn = a.userTurns.map((t) => t.numApiCalls);
261
+ const avg = callsPerTurn.reduce((s, c) => s + c, 0) / callsPerTurn.length;
262
+ lines.push(` Avg API calls/turn: ${avg.toFixed(1)}`);
263
+ }
264
+ lines.push("");
265
+ // Timing stats
266
+ const t = a.timing;
267
+ if (t.wallTimeMs > 0 || t.totalApiTimeMs > 0) {
268
+ lines.push("TIMING");
269
+ lines.push("-".repeat(70));
270
+ if (t.wallTimeMs > 0) {
271
+ lines.push(` Wall time: ${fmtDuration(t.wallTimeMs)}`);
272
+ }
273
+ if (t.totalApiTimeMs > 0) {
274
+ lines.push(` Total API time: ${fmtDuration(t.totalApiTimeMs)}`);
275
+ lines.push(` Median API call: ${fmtDuration(t.medianApiTimeMs)}`);
276
+ }
277
+ if (t.medianTokensPerSecond != null) {
278
+ lines.push(` Median tok/s (output): ${t.medianTokensPerSecond.toFixed(1)}`);
279
+ }
280
+ if (t.totalInputTokens > 0 || t.totalOutputTokens > 0) {
281
+ lines.push(` Total input tokens: ${fmtTokens(t.totalInputTokens)}`);
282
+ lines.push(` Total output tokens: ${fmtTokens(t.totalOutputTokens)}`);
283
+ }
284
+ lines.push("");
285
+ }
286
+ // Cache stats
287
+ const c = a.cache;
288
+ if (c.totalCacheReadTokens > 0 || c.totalCacheWriteTokens > 0) {
289
+ lines.push("CACHE");
290
+ lines.push("-".repeat(70));
291
+ lines.push(` Cache read tokens: ${fmtTokens(c.totalCacheReadTokens)}`);
292
+ lines.push(` Cache write tokens: ${fmtTokens(c.totalCacheWriteTokens)}`);
293
+ lines.push(` Cache hit rate: ${(c.cacheHitRate * 100).toFixed(1)}%`);
294
+ lines.push("");
295
+ }
296
+ return lines.join("\n");
297
+ }
298
+ //# sourceMappingURL=session-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-format.js","sourceRoot":"","sources":["../../src/core/session-format.ts"],"names":[],"mappings":"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"}
package/dist/core.d.ts CHANGED
@@ -10,6 +10,10 @@ export { estimateCost, getContextLimit, } from "./core/models.js";
10
10
  export { parseContextInfo } from "./core/parse.js";
11
11
  export { detectApiFormat, detectProvider, extractSource, resolveTargetUrl, } from "./core/routing.js";
12
12
  export { scanSecurity } from "./core/security.js";
13
+ export type { AgentPathStep, AnalyzeOptions, CacheStats, CompactionEvent, GrowthBlock, SessionAnalysis, TimingStats, UserTurn, } from "./core/session-analysis.js";
14
+ export { analyzeSession, buildAgentPaths, findCompactions, findGrowthBlocks, identifyUserTurns, } from "./core/session-analysis.js";
15
+ export type { FormatOptions } from "./core/session-format.js";
16
+ export { fmtCost, fmtDuration, fmtTokens, formatSessionAnalysis, shortModel, } from "./core/session-format.js";
13
17
  export { detectSource } from "./core/source.js";
14
18
  export { estimateTokens, rescaleContextTokens } from "./core/tokens.js";
15
19
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EACV,aAAa,EACb,cAAc,EACd,UAAU,EACV,eAAe,EACf,WAAW,EACX,eAAe,EACf,WAAW,EACX,QAAQ,GACT,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EACL,OAAO,EACP,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,UAAU,GACX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
package/dist/core.js CHANGED
@@ -10,6 +10,8 @@ export { estimateCost, getContextLimit, } from "./core/models.js";
10
10
  export { parseContextInfo } from "./core/parse.js";
11
11
  export { detectApiFormat, detectProvider, extractSource, resolveTargetUrl, } from "./core/routing.js";
12
12
  export { scanSecurity } from "./core/security.js";
13
+ export { analyzeSession, buildAgentPaths, findCompactions, findGrowthBlocks, identifyUserTurns, } from "./core/session-analysis.js";
14
+ export { fmtCost, fmtDuration, fmtTokens, formatSessionAnalysis, shortModel, } from "./core/session-format.js";
13
15
  export { detectSource } from "./core/source.js";
14
16
  export { estimateTokens, rescaleContextTokens } from "./core/tokens.js";
15
17
  //# sourceMappingURL=core.js.map
package/dist/core.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB,uBAAuB,GACxB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EACL,YAAY,EACZ,eAAe,GAChB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EACL,eAAe,EACf,cAAc,EACd,aAAa,EACb,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAWlD,OAAO,EACL,cAAc,EACd,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EACL,OAAO,EACP,WAAW,EACX,SAAS,EACT,qBAAqB,EACrB,UAAU,GACX,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * LHAR file reader: parses .lhar (JSONL) files into typed records.
3
+ */
4
+ import type { LharRecord, LharSessionLine } from "../lhar-types.generated.js";
5
+ export interface ParsedLhar {
6
+ session: LharSessionLine | null;
7
+ entries: LharRecord[];
8
+ }
9
+ /**
10
+ * Parse an LHAR file (JSONL format) into a session header and entry records.
11
+ *
12
+ * Skips blank lines and lines that don't parse as valid JSON.
13
+ * The first `{"type":"session",...}` line becomes the session header;
14
+ * all `{"type":"entry",...}` lines become entries.
15
+ */
16
+ export declare function readLharFile(filepath: string): ParsedLhar;
17
+ /**
18
+ * Parse LHAR content (JSONL string) without file I/O.
19
+ * Useful for testing and for piped input.
20
+ */
21
+ export declare function parseLharContent(content: string): ParsedLhar;
22
+ //# sourceMappingURL=reader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.d.ts","sourceRoot":"","sources":["../../src/lhar/reader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE9E,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IAChC,OAAO,EAAE,UAAU,EAAE,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,CAGzD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU,CAuB5D"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * LHAR file reader: parses .lhar (JSONL) files into typed records.
3
+ */
4
+ import fs from "node:fs";
5
+ /**
6
+ * Parse an LHAR file (JSONL format) into a session header and entry records.
7
+ *
8
+ * Skips blank lines and lines that don't parse as valid JSON.
9
+ * The first `{"type":"session",...}` line becomes the session header;
10
+ * all `{"type":"entry",...}` lines become entries.
11
+ */
12
+ export function readLharFile(filepath) {
13
+ const content = fs.readFileSync(filepath, "utf8");
14
+ return parseLharContent(content);
15
+ }
16
+ /**
17
+ * Parse LHAR content (JSONL string) without file I/O.
18
+ * Useful for testing and for piped input.
19
+ */
20
+ export function parseLharContent(content) {
21
+ let session = null;
22
+ const entries = [];
23
+ for (const line of content.split("\n")) {
24
+ const trimmed = line.trim();
25
+ if (!trimmed)
26
+ continue;
27
+ let rec;
28
+ try {
29
+ rec = JSON.parse(trimmed);
30
+ }
31
+ catch {
32
+ continue;
33
+ }
34
+ if (rec.type === "session") {
35
+ session = rec;
36
+ }
37
+ else if (rec.type === "entry") {
38
+ entries.push(rec);
39
+ }
40
+ }
41
+ return { session, entries };
42
+ }
43
+ //# sourceMappingURL=reader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reader.js","sourceRoot":"","sources":["../../src/lhar/reader.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AAQzB;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAClD,OAAO,gBAAgB,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,IAAI,OAAO,GAA2B,IAAI,CAAC;IAC3C,MAAM,OAAO,GAAiB,EAAE,CAAC;IAEjC,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO;YAAE,SAAS;QAEvB,IAAI,GAA4B,CAAC;QACjC,IAAI,CAAC;YACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,SAAS;QACX,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC3B,OAAO,GAAG,GAAiC,CAAC;QAC9C,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,GAA4B,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;AAC9B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/lhar/record.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY7E,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI7E;AA2BD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,aAAa,EAAE,EAC5B,OAAO,GAAE,YAAyB,GACjC,UAAU,CAqMZ;AAED,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,GACZ,eAAe,CAQjB"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/lhar/record.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAa7E,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAI7E;AA2BD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,aAAa,EAAE,EAC5B,OAAO,GAAE,YAAyB,GACjC,UAAU,CAuMZ;AAED,wBAAgB,gBAAgB,CAC9B,cAAc,EAAE,MAAM,EACtB,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,MAAM,GACZ,eAAe,CAQjB"}
@@ -3,6 +3,7 @@ import { redactHeaders } from "../http/headers.js";
3
3
  import { VERSION } from "../version.generated.js";
4
4
  import { analyzeComposition } from "./composition.js";
5
5
  import { parseResponseUsage } from "./response.js";
6
+ import { extractToolCalls, extractToolDefinitions } from "./tools.js";
6
7
  const COLLECTOR_NAME = "context-lens";
7
8
  const COLLECTOR_VERSION = VERSION;
8
9
  function hexId(bytes) {
@@ -175,6 +176,8 @@ export function buildLharRecord(entry, prevEntries, privacy = "standard") {
175
176
  tools_tokens: ci.toolsTokens,
176
177
  messages_tokens: ci.messagesTokens,
177
178
  composition,
179
+ tool_definitions: extractToolDefinitions(ci),
180
+ tool_calls: extractToolCalls(ci),
178
181
  growth: {
179
182
  tokens_added_this_turn: tokensAdded,
180
183
  cumulative_tokens: ci.totalTokens,
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/lhar/record.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/lhar/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnD,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEtE,MAAM,cAAc,GAAG,cAAc,CAAC;AACtC,MAAM,iBAAiB,GAAG,OAAO,CAAC;AAElC,SAAS,KAAK,CAAC,KAAa;IAC1B,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,cAA6B;IACnE,IAAI,CAAC,cAAc;QAAE,OAAO,KAAK,CAAC,EAAE,CAAC,CAAC;IACtC,mEAAmE;IACnE,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AAChF,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAC7B,QAAmC;IAEnC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC3B,MAAM,IAAI,GAAG,QAA+B,CAAC;IAC7C,4BAA4B;IAC5B,IAAI,IAAI,CAAC,SAAS,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IACD,sBAAsB;IACtB,IAAI,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC7C,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;IACD,kDAAkD;IAClD,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,8BAA8B;IAC9B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,KAAoB,EACpB,WAA4B,EAC5B,UAAwB,UAAU;IAElC,MAAM,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;IAC7B,2EAA2E;IAC3E,MAAM,WAAW,GACf,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QAC1B,CAAC,CAAC,KAAK,CAAC,WAAW;QACnB,CAAC,CAAC,kBAAkB,CAAC,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IAEjD,4DAA4D;IAC5D,gFAAgF;IAChF,IAAI,YAAY,GAAG,KAAK,CAAC,cAAc;QACrC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc,CAAC;QACtE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEZ,yFAAyF;IACzF,IAAI,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAC5D,CAAC;QACF,IAAI,CAAC,KAAK;YAAE,YAAY,GAAG,CAAC,GAAG,YAAY,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACzB,MAAM,EAAE,GACN,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAC;QACpE,IAAI,EAAE,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;IACrB,CAAC,CAAC,CAAC;IAEH,IAAI,UAAU,GAAG,YAAY,CAAC,SAAS,CACrC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,CAC5D,CAAC;IACF,IAAI,UAAU,GAAG,CAAC;QAChB,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;IAChE,IAAI,UAAU,GAAG,CAAC;QAAE,UAAU,GAAG,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC;IAEhC,gFAAgF;IAChF,8EAA8E;IAC9E,IAAI,SAAS,GAAwB,MAAM,CAAC;IAC5C,IAAI,OAAO,GAAkB,IAAI,CAAC;IAClC,IAAI,KAAK,CAAC,cAAc,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,IAAI,GAAG,EAAyB,CAAC;QACnD,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,SAAS,EAAE,CAAC;YACrC,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACrB,QAAQ,GAAG,KAAK,CAAC;gBACjB,OAAO,GAAG,GAAG,CAAC;YAChB,CAAC;QACH,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;YAC/B,SAAS,GAAG,UAAU,CAAC;QACzB,CAAC;IACH,CAAC;IAED,+EAA+E;IAC/E,0EAA0E;IAC1E,IAAI,SAAS,GAAyB,IAAI,CAAC;IAC3C,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,IAAI,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE,CAAC;YAChD,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC5B,MAAM;QACR,CAAC;IACH,CAAC;IACD,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACrE,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,MAAM,kBAAkB,GAAG,WAAW,KAAK,IAAI,IAAI,WAAW,GAAG,CAAC,CAAC;IAEnE,oBAAoB;IACpB,IAAI,eAAe,GAAkB,IAAI,CAAC;IAC1C,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,IAAI,KAAK,CAAC,YAAY,GAAG,CAAC,EAAE,CAAC;QAC5E,eAAe;YACb,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;gBACvE,EAAE,CAAC;IACP,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO;QAC3B,CAAC,CAAC;YACE,GAAG,KAAK,CAAC,OAAO;YAChB,iBAAiB,EAAE,eAAe;SACnC;QACH,CAAC,CAAC,IAAI,CAAC;IAET,OAAO;QACL,IAAI,EAAE,OAAO;QACb,EAAE,EAAE,UAAU,EAAE;QAChB,QAAQ,EAAE,uBAAuB,CAAC,KAAK,CAAC,cAAc,CAAC;QACvD,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACjB,cAAc,EAAE,IAAI;QACpB,SAAS,EAAE,KAAK,CAAC,SAAS;QAC1B,QAAQ;QAER,MAAM,EAAE;YACN,IAAI,EAAE,KAAK,CAAC,MAAM,IAAI,SAAS;YAC/B,YAAY,EAAE,IAAI;YAClB,UAAU,EAAE,SAAS;YACrB,SAAS,EAAE,cAAc;YACzB,iBAAiB,EAAE,iBAAiB;SACrC;QAED,MAAM,EAAE;YACN,MAAM,EAAE,EAAE,CAAC,QAAQ;YACnB,OAAO,EAAE;gBACP,KAAK,EAAE,EAAE,CAAC,KAAK;gBACf,UAAU,EAAE,KAAK,CAAC,OAAO,EAAE,UAAU,IAAI,IAAI;gBAC7C,WAAW,EAAE,KAAK,CAAC,OAAO,EAAE,WAAW,IAAI,IAAI;gBAC/C,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,IAAI;gBACnC,cAAc,EAAE,KAAK,CAAC,OAAO,EAAE,cAAc,IAAI,EAAE;aACpD;YACD,QAAQ,EAAE;gBACR,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,cAAc,EAAE,KAAK,CAAC,aAAa;aACpC;YACD,KAAK,EAAE;gBACL,YAAY,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW;gBACjD,aAAa,EAAE,KAAK,CAAC,YAAY;gBACjC,YAAY,EACV,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,YAAY;aAC7D;SACF;QAED,SAAS,EAAE;YACT,iBAAiB,EAAE,KAAK,CAAC,eAAe;YACxC,kBAAkB,EAAE,KAAK,CAAC,gBAAgB;YAC1C,QAAQ,EAAE,KAAK,CAAC,OAAO;SACxB;QAED,IAAI,EAAE;YACJ,MAAM,EAAE,MAAM;YACd,GAAG,EAAE,KAAK,CAAC,SAAS;YACpB,WAAW,EAAE,KAAK,CAAC,UAAU;YAC7B,UAAU,EAAE,EAAE,CAAC,SAAS;YACxB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,eAAe,EACb,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,cAAc,CAAC;YAClE,gBAAgB,EACd,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,eAAe,CAAC;SACpE;QAED,OAAO;QAEP,QAAQ,EAAE;YACR,aAAa,EAAE,KAAK,CAAC,YAAY;YACjC,cAAc,EAAE,KAAK,CAAC,aAAa;YACnC,UAAU,EAAE,KAAK;SAClB;QAED,YAAY,EAAE;YACZ,WAAW,EAAE,KAAK,CAAC,YAAY;YAC/B,WAAW,EACT,KAAK,CAAC,YAAY,GAAG,CAAC;gBACpB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI;gBACjE,CAAC,CAAC,CAAC;YACP,aAAa,EAAE,EAAE,CAAC,YAAY;YAC9B,YAAY,EAAE,EAAE,CAAC,WAAW;YAC5B,eAAe,EAAE,EAAE,CAAC,cAAc;YAClC,WAAW;YACX,gBAAgB,EAAE,sBAAsB,CAAC,EAAE,CAAC;YAC5C,UAAU,EAAE,gBAAgB,CAAC,EAAE,CAAC;YAChC,MAAM,EAAE;gBACN,sBAAsB,EAAE,WAAW;gBACnC,iBAAiB,EAAE,EAAE,CAAC,WAAW;gBACjC,mBAAmB,EAAE,kBAAkB;aACxC;YACD,QAAQ,EAAE;gBACR,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC/C,aAAa,EAAE,CAAC,CAAC,YAAY;oBAC7B,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,SAAS,EAAE,CAAC,CAAC,QAAQ;oBACrB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,MAAM,EAAE,CAAC,CAAC,MAAM;iBACjB,CAAC,CAAC;gBACH,OAAO,EAAE;oBACP,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAC7B,CAAC,MAAM;oBACR,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM,CACzC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAC/B,CAAC,MAAM;oBACR,IAAI,EAAE,CAAC,KAAK,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,CAC7B,CAAC,MAAM;iBACT;aACF;SACF;QAED,GAAG,EAAE;YACH,YAAY,EAAE,OAAO,KAAK,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YACxE,aAAa,EACX,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;SACrE;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,cAAsB,EACtB,YAA0B,EAC1B,KAAa;IAEb,OAAO;QACL,IAAI,EAAE,SAAS;QACf,QAAQ,EAAE,uBAAuB,CAAC,cAAc,CAAC;QACjD,UAAU,EAAE,YAAY,CAAC,SAAS;QAClC,IAAI,EAAE,YAAY,CAAC,MAAM;QACzB,KAAK;KACN,CAAC;AACJ,CAAC"}
@@ -7,5 +7,13 @@ export interface ParsedResponseUsage {
7
7
  finishReasons: string[];
8
8
  stream: boolean;
9
9
  }
10
+ /**
11
+ * Extract the response ID from a response object.
12
+ *
13
+ * Works for both non-streaming (direct JSON) and streaming (SSE chunks)
14
+ * responses. For streaming, scans for `response.completed` or
15
+ * `response.created` SSE events that carry the response object with its ID.
16
+ */
17
+ export declare function extractResponseId(responseData: any): string | null;
10
18
  export declare function parseResponseUsage(responseData: any): ParsedResponseUsage;
11
19
  //# sourceMappingURL=response.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/lhar/response.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,GAAG,GAAG,mBAAmB,CAoEzE"}
1
+ {"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/lhar/response.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,EAAE,GAAG,GAAG,MAAM,GAAG,IAAI,CAiClE;AAED,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,GAAG,GAAG,mBAAmB,CAoEzE"}
@@ -1,3 +1,47 @@
1
+ /**
2
+ * Extract the response ID from a response object.
3
+ *
4
+ * Works for both non-streaming (direct JSON) and streaming (SSE chunks)
5
+ * responses. For streaming, scans for `response.completed` or
6
+ * `response.created` SSE events that carry the response object with its ID.
7
+ */
8
+ export function extractResponseId(responseData) {
9
+ if (!responseData)
10
+ return null;
11
+ // Non-streaming: direct JSON response with id field
12
+ if (responseData.id)
13
+ return responseData.id;
14
+ if (responseData.response_id)
15
+ return responseData.response_id;
16
+ // Streaming: scan SSE chunks for response events
17
+ if (responseData.streaming && typeof responseData.chunks === "string") {
18
+ const lines = responseData.chunks.split("\n");
19
+ for (const line of lines) {
20
+ if (!line.startsWith("data: "))
21
+ continue;
22
+ const data = line.slice(6).trim();
23
+ if (data === "[DONE]")
24
+ continue;
25
+ try {
26
+ const parsed = JSON.parse(data);
27
+ // OpenAI Responses API: response.completed / response.created events
28
+ // carry the full response object including its id
29
+ if (parsed.response?.id)
30
+ return parsed.response.id;
31
+ // Direct id on the event object (some streaming formats)
32
+ if (parsed.type === "response.completed" ||
33
+ parsed.type === "response.created") {
34
+ if (parsed.id)
35
+ return parsed.id;
36
+ }
37
+ }
38
+ catch {
39
+ // Skip unparseable lines
40
+ }
41
+ }
42
+ }
43
+ return null;
44
+ }
1
45
  export function parseResponseUsage(responseData) {
2
46
  const result = {
3
47
  inputTokens: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/lhar/response.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/lhar/response.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import type { ToolCallEntry, ToolDefinitionEntry } from "../lhar-types.generated.js";
2
+ import type { ContextInfo } from "../types.js";
3
+ /**
4
+ * Extract structured tool definition summaries from a ContextInfo.
5
+ *
6
+ * Returns one entry per tool schema available to the model, with name and
7
+ * description only (no full input_schema, keeping the LHAR lightweight).
8
+ */
9
+ export declare function extractToolDefinitions(contextInfo: ContextInfo): ToolDefinitionEntry[];
10
+ /**
11
+ * Extract structured tool call entries from a ContextInfo's parsed messages.
12
+ *
13
+ * Scans contentBlocks for tool_use blocks and returns each invocation with
14
+ * its name, call ID, and arguments.
15
+ */
16
+ export declare function extractToolCalls(contextInfo: ContextInfo): ToolCallEntry[];
17
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/lhar/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAiB,WAAW,EAAc,MAAM,aAAa,CAAC;AAE1E;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,WAAW,GACvB,mBAAmB,EAAE,CAiBvB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,WAAW,GAAG,aAAa,EAAE,CAe1E"}