@inbrowser/agent 0.3.0 → 0.4.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.
@@ -0,0 +1,309 @@
1
+ import type { ModelUsage, TurnMetrics } from '../types/llm.js';
2
+ import type { TraceEvent } from '../types/trace.js';
3
+ export type ContextWindowBasis = 'estimated-next-send';
4
+ export type ContextWindowStatus = 'unknown' | 'low' | 'medium' | 'high' | 'critical';
5
+ export interface RequestCompositionMessageLike {
6
+ role?: string;
7
+ text?: string;
8
+ callId?: string;
9
+ toolCallId?: string;
10
+ name?: string;
11
+ toolCalls?: unknown;
12
+ resultJson?: string;
13
+ }
14
+ export interface RequestCompositionToolLike {
15
+ name?: string;
16
+ description?: string;
17
+ parameters?: unknown;
18
+ }
19
+ export interface RequestCompositionTraceLike {
20
+ systemPrompt?: string;
21
+ messages?: readonly RequestCompositionMessageLike[];
22
+ tools?: readonly RequestCompositionToolLike[];
23
+ toolDeclarations?: readonly RequestCompositionToolLike[];
24
+ }
25
+ export interface RequestInputComposition {
26
+ system: number;
27
+ history: number;
28
+ resentToolResults: number;
29
+ currentPrompt: number;
30
+ toolSchemas: number;
31
+ }
32
+ export interface ContextWindowBreakdownRow {
33
+ id: 'system' | 'history' | 'tool-results' | 'tool-schemas' | 'draft';
34
+ label: string;
35
+ tokens: number;
36
+ color: string;
37
+ estimated: boolean;
38
+ }
39
+ export interface ModelContextToolCallLike {
40
+ id: string;
41
+ name: string;
42
+ argsJson: string;
43
+ resultJson?: string;
44
+ summary?: string;
45
+ thinkingUpToHere?: string;
46
+ }
47
+ export interface ModelContextMessageLike {
48
+ id: string;
49
+ role: string;
50
+ text: string;
51
+ thinking?: string;
52
+ toolCalls?: readonly ModelContextToolCallLike[];
53
+ createdAt?: number;
54
+ }
55
+ export interface ModelContextCompactionOptions<TMessage extends ModelContextMessageLike = ModelContextMessageLike> {
56
+ force?: boolean;
57
+ thresholdChars?: number;
58
+ keepRecentUserTurns?: number;
59
+ summarizeToolCall?: (call: ModelContextToolCallLike) => string;
60
+ createMemoryMessage?: (input: {
61
+ id: string;
62
+ role: 'assistant';
63
+ text: string;
64
+ createdAt: number;
65
+ }, older: readonly TMessage[]) => TMessage;
66
+ }
67
+ export interface ModelContextCompactionStats {
68
+ compacted: boolean;
69
+ originalChars: number;
70
+ compactedChars: number;
71
+ bytesSaved: number;
72
+ turnsCompacted: number;
73
+ messagesCompacted: number;
74
+ }
75
+ export interface ModelContextCompactionResult<TMessage extends ModelContextMessageLike = ModelContextMessageLike> {
76
+ messages: TMessage[];
77
+ stats: ModelContextCompactionStats;
78
+ }
79
+ export interface ContextWindowCompactionPreview {
80
+ rawTokens: number;
81
+ currentTokens: number;
82
+ compactedTokens: number;
83
+ automaticSavedTokens: number;
84
+ manualSavedTokens: number;
85
+ savedTokens: number;
86
+ stats: ModelContextCompactionStats;
87
+ retains: string[];
88
+ loses: string[];
89
+ }
90
+ export interface ContextWindowPromptCostEstimate {
91
+ costUsd: number;
92
+ estimated: boolean;
93
+ source: string;
94
+ inputPricePerMillion: number;
95
+ cacheReadPricePerMillion: number;
96
+ }
97
+ export interface ContextWindowPricing {
98
+ current: ContextWindowPromptCostEstimate | null;
99
+ compacted: ContextWindowPromptCostEstimate | null;
100
+ savedCostUsd: number | null;
101
+ }
102
+ export interface SessionTurnUsage {
103
+ id: string;
104
+ label: string;
105
+ requestCount: number | null;
106
+ inputTokens: number;
107
+ outputTokens: number;
108
+ cachedInputTokens: number;
109
+ reasoningTokens: number;
110
+ freshInputTokens: number;
111
+ visibleOutputTokens: number;
112
+ tokensTotal: number;
113
+ costUsd?: number;
114
+ multiplierContribution?: number;
115
+ }
116
+ export type ContextWindowInputComposition = RequestInputComposition;
117
+ export type SessionUsageCategoryId = 'fresh-input' | 'cached-input' | 'visible-output' | 'reasoning-output' | 'reported-total';
118
+ export type ContextWindowSessionSpendCategoryId = SessionUsageCategoryId;
119
+ export interface SessionUsageDetailRow {
120
+ id: string;
121
+ label: string;
122
+ tokens: number;
123
+ color: string;
124
+ estimated: boolean;
125
+ source: 'provider-reported' | 'estimated-from-traces';
126
+ description: string;
127
+ }
128
+ export interface SessionUsageCategoryDetail {
129
+ id: SessionUsageCategoryId;
130
+ label: string;
131
+ source: 'provider-reported' | 'estimated-from-traces' | 'mixed' | 'unavailable';
132
+ note: string;
133
+ rows: SessionUsageDetailRow[];
134
+ }
135
+ export interface SessionRequestUsage {
136
+ id: string;
137
+ requestId: string;
138
+ turnId: string;
139
+ iteration: number;
140
+ ts?: number;
141
+ providerId?: string;
142
+ providerLabel?: string;
143
+ modelLabel?: string;
144
+ strategy?: string;
145
+ strategySource?: string;
146
+ inputTokens: number;
147
+ outputTokens: number;
148
+ cachedInputTokens: number;
149
+ reasoningTokens: number;
150
+ freshInputTokens: number;
151
+ visibleOutputTokens: number;
152
+ tokensTotal: number;
153
+ costUsd?: number;
154
+ usageSource: 'provider' | 'estimate';
155
+ composition: ContextWindowInputComposition;
156
+ messageCount: number;
157
+ toolResultMessageCount: number;
158
+ toolNames: string[];
159
+ toolSchemaNames: string[];
160
+ emittedToolCalls: SessionToolRef[];
161
+ resentToolResults: SessionToolRef[];
162
+ cacheInsight?: SessionCacheInsight;
163
+ }
164
+ export interface SessionCacheInsight {
165
+ hitRate: number;
166
+ cachedTokens: number;
167
+ freshTokens: number;
168
+ knownMinimumTokens?: number;
169
+ meetsKnownMinimum?: boolean;
170
+ likelyStablePrefixTokens: number;
171
+ providerMode: string;
172
+ explanation: string;
173
+ }
174
+ export interface SessionToolRef {
175
+ name: string;
176
+ callId?: string;
177
+ messageId?: string;
178
+ tokensEstimated?: number;
179
+ }
180
+ export interface SessionTokenUsage {
181
+ turns: number;
182
+ requests: number | null;
183
+ tokensTotal: number;
184
+ inputTokens: number;
185
+ outputTokens: number;
186
+ cachedInputTokens: number;
187
+ reasoningTokens: number;
188
+ costUsdTotal?: number;
189
+ workMultiplier?: number;
190
+ averageRequestTokens?: number;
191
+ turnRows: SessionTurnUsage[];
192
+ requestRows: SessionRequestUsage[];
193
+ categoryDetails: Partial<Record<SessionUsageCategoryId, SessionUsageCategoryDetail>>;
194
+ teachingNotes: {
195
+ providerUsage: string;
196
+ estimatedComposition: string;
197
+ contextVsSpend: string;
198
+ };
199
+ }
200
+ export interface ContextWindowSnapshot {
201
+ basis: ContextWindowBasis;
202
+ usedTokens: number;
203
+ limitTokens?: number;
204
+ percentFull?: number;
205
+ status: ContextWindowStatus;
206
+ breakdown: ContextWindowBreakdownRow[];
207
+ compaction: ModelContextCompactionStats;
208
+ compactionPreview: ContextWindowCompactionPreview;
209
+ pricing: ContextWindowPricing;
210
+ toolCount: number;
211
+ sessionUsage?: SessionTokenUsage;
212
+ }
213
+ export interface ContextWindowRequestLike extends RequestCompositionTraceLike {
214
+ requestId?: string;
215
+ turnId?: string;
216
+ iteration?: number;
217
+ ts?: number;
218
+ }
219
+ export interface ContextWindowResponseLike {
220
+ requestId?: string;
221
+ text?: string;
222
+ thinking?: string;
223
+ toolCalls?: unknown;
224
+ usage?: Partial<ModelUsage>;
225
+ }
226
+ export interface ContextWindowTraceLike {
227
+ turnId: string;
228
+ requests: readonly ContextWindowRequestLike[];
229
+ responses: readonly ContextWindowResponseLike[];
230
+ hostCtx?: {
231
+ providerId?: string;
232
+ providerLabel?: string;
233
+ modelLabel?: string;
234
+ strategy?: string;
235
+ strategySource?: string;
236
+ };
237
+ }
238
+ export type ContextWindowTraceHostContext = NonNullable<ContextWindowTraceLike['hostCtx']>;
239
+ export type ContextWindowTraceHostContextByTurn = Record<string, ContextWindowTraceHostContext | undefined> | ((event: TraceEvent, turnId: string) => ContextWindowTraceHostContext | undefined);
240
+ export type ContextWindowTokenEstimator = (value: string | undefined | null) => number;
241
+ export type ContextWindowPromptCostEstimator = (input: {
242
+ providerId: string;
243
+ modelId: string;
244
+ promptTokens: number;
245
+ cachedTokens: number;
246
+ }) => ContextWindowPromptCostEstimate | null;
247
+ export interface BuildContextWindowSnapshotOptions<TMessage extends ModelContextMessageLike = ModelContextMessageLike> {
248
+ messages: readonly TMessage[];
249
+ currentPrompt?: string;
250
+ systemPrompt: string;
251
+ tools: readonly RequestCompositionToolLike[];
252
+ limitTokens?: number;
253
+ providerId?: string;
254
+ modelId?: string;
255
+ estimateTokens?: ContextWindowTokenEstimator;
256
+ estimatePromptInputCost?: ContextWindowPromptCostEstimator;
257
+ compactHistory?: (messages: readonly TMessage[], opts?: ModelContextCompactionOptions<TMessage>) => ModelContextCompactionResult<TMessage>;
258
+ compactionOptions?: ModelContextCompactionOptions<TMessage>;
259
+ sessionTurns?: number;
260
+ sessionRequests?: number | null;
261
+ sessionTokensTotal?: number;
262
+ sessionInputTokens?: number;
263
+ sessionOutputTokens?: number;
264
+ sessionCachedInputTokens?: number;
265
+ sessionReasoningTokens?: number;
266
+ sessionCostUsdTotal?: number;
267
+ tracesByTurn?: Record<string, ContextWindowTraceLike>;
268
+ }
269
+ export type ContextWindowSessionTurn = SessionTurnUsage;
270
+ export type ContextWindowSessionDetailRow = SessionUsageDetailRow;
271
+ export type ContextWindowSessionCategoryDetail = SessionUsageCategoryDetail;
272
+ export type ContextWindowSessionRequest = SessionRequestUsage;
273
+ export type ContextWindowSessionCacheInsight = SessionCacheInsight;
274
+ export type ContextWindowSessionToolRef = SessionToolRef;
275
+ export type ContextWindowSessionUsage = SessionTokenUsage;
276
+ export declare const MODEL_CONTEXT_COMPACTION_THRESHOLD_CHARS = 80000;
277
+ export declare const MODEL_CONTEXT_RECENT_USER_TURNS = 2;
278
+ export declare function estimateRequestInputComposition(request: RequestCompositionTraceLike, opts?: {
279
+ estimateTokens?: ContextWindowTokenEstimator;
280
+ }): RequestInputComposition;
281
+ export declare function requestInputCompositionTotal(composition: RequestInputComposition): number;
282
+ export declare function collectRequestToolNames(request: RequestCompositionTraceLike): string[];
283
+ export declare function appendContextWindowTraceEvent(tracesByTurn: Record<string, ContextWindowTraceLike>, event: TraceEvent, hostCtx?: ContextWindowTraceHostContext): Record<string, ContextWindowTraceLike>;
284
+ export declare function contextWindowTraceEventsToTraces(events: Iterable<TraceEvent>, hostCtxByTurn?: ContextWindowTraceHostContextByTurn): Record<string, ContextWindowTraceLike>;
285
+ export declare function buildContextWindowSnapshot<TMessage extends ModelContextMessageLike>(opts: BuildContextWindowSnapshotOptions<TMessage>): ContextWindowSnapshot;
286
+ export declare function formatContextTokens(n: number): string;
287
+ export declare function formatContextRatio(snapshot: ContextWindowSnapshot): string;
288
+ export declare function formatContextPercent(snapshot: ContextWindowSnapshot): string;
289
+ export declare function compactHistoryForModel<TMessage extends ModelContextMessageLike>(messages: readonly TMessage[], opts?: ModelContextCompactionOptions<TMessage>): ModelContextCompactionResult<TMessage>;
290
+ export declare function estimateHistoryChars(messages: readonly ModelContextMessageLike[]): number;
291
+ export interface AggregatedTurnMetrics {
292
+ tokensIn: number;
293
+ tokensOut: number;
294
+ tokensCached: number;
295
+ tokensReasoning: number;
296
+ costUsd: number;
297
+ costEstimated: boolean;
298
+ isByok?: boolean;
299
+ iterations: number;
300
+ }
301
+ export interface TurnMetricsAccumulator {
302
+ add(metrics: TurnMetrics): AggregatedTurnMetrics;
303
+ totals(): AggregatedTurnMetrics;
304
+ reset(): void;
305
+ }
306
+ export declare function createTurnMetricsAccumulator(): TurnMetricsAccumulator;
307
+ export declare function tokenEstimate(value: string | undefined | null, estimateTokens?: ContextWindowTokenEstimator): number;
308
+ export declare function safeStringify(value: unknown): string;
309
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/usage/index.ts"],"names":[],"mappings":"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"}