context-lens 0.6.0 → 0.6.2
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/README.md +74 -4
- package/dist/analysis/ingest.d.ts.map +1 -1
- package/dist/analysis/ingest.js +4 -3
- package/dist/analysis/ingest.js.map +1 -1
- package/dist/analysis/server.js +5 -0
- package/dist/analysis/server.js.map +1 -1
- package/dist/cli-utils.d.ts +5 -0
- package/dist/cli-utils.d.ts.map +1 -1
- package/dist/cli-utils.js +59 -4
- package/dist/cli-utils.js.map +1 -1
- package/dist/cli.js +124 -34
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +35 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +113 -0
- package/dist/config.js.map +1 -0
- package/dist/core/models.d.ts +6 -38
- package/dist/core/models.d.ts.map +1 -1
- package/dist/core/models.js +6 -213
- package/dist/core/models.js.map +1 -1
- package/dist/core/parse.d.ts.map +1 -1
- package/dist/core/parse.js +26 -25
- package/dist/core/parse.js.map +1 -1
- package/dist/core/routing.d.ts.map +1 -1
- package/dist/core/routing.js +7 -1
- package/dist/core/routing.js.map +1 -1
- package/dist/core/source.d.ts +1 -0
- package/dist/core/source.d.ts.map +1 -1
- package/dist/core/source.js +9 -1
- package/dist/core/source.js.map +1 -1
- package/dist/core/tokenizer.d.ts +30 -0
- package/dist/core/tokenizer.d.ts.map +1 -0
- package/dist/core/tokenizer.js +149 -0
- package/dist/core/tokenizer.js.map +1 -0
- package/dist/core/tokens.d.ts +11 -5
- package/dist/core/tokens.d.ts.map +1 -1
- package/dist/core/tokens.js +14 -7
- package/dist/core/tokens.js.map +1 -1
- package/dist/core.d.ts +2 -1
- package/dist/core.d.ts.map +1 -1
- package/dist/core.js +2 -1
- package/dist/core.js.map +1 -1
- package/dist/http/headers.d.ts +9 -17
- package/dist/http/headers.d.ts.map +1 -1
- package/dist/http/headers.js +10 -38
- package/dist/http/headers.js.map +1 -1
- package/dist/lhar/composition.d.ts.map +1 -1
- package/dist/lhar/composition.js +40 -39
- package/dist/lhar/composition.js.map +1 -1
- package/dist/lhar/export.js +1 -1
- package/dist/lhar/export.js.map +1 -1
- package/dist/proxy/config.d.ts.map +1 -1
- package/dist/proxy/config.js +13 -0
- package/dist/proxy/config.js.map +1 -1
- package/dist/proxy/server.js +22 -0
- package/dist/proxy/server.js.map +1 -1
- package/dist/schemas.d.ts +14 -0
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +8 -0
- package/dist/schemas.js.map +1 -1
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js.map +1 -1
- package/dist/server/projection.d.ts.map +1 -1
- package/dist/server/projection.js +1 -0
- package/dist/server/projection.js.map +1 -1
- package/dist/server/store.d.ts.map +1 -1
- package/dist/server/store.js +97 -18
- package/dist/server/store.js.map +1 -1
- package/dist/server/webui.js +1 -1
- package/dist/server/webui.js.map +1 -1
- package/dist/types.d.ts +13 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/version.generated.d.ts +1 -1
- package/dist/version.generated.js +1 -1
- package/mitm_addon.py +19 -10
- package/package.json +6 -2
- package/ui/dist/assets/index-C2HhFk_P.js +52 -0
- package/ui/dist/assets/index-xYrXQJL_.css +1 -0
- package/ui/dist/index.html +2 -2
- package/ui/dist/assets/index-CC_AtJBy.css +0 -1
- package/ui/dist/assets/index-If9FfL3y.js +0 -36
package/dist/core/source.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/core/source.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;IACpE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAC5D,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;IAC1D,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE;CACpE,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,EAAE,OAAO,EAAE,qCAAqC,EAAE,MAAM,EAAE,OAAO,EAAE;IACnE,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,QAAQ,EAAE;IACpD,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,EAAE;IACpD,EAAE,OAAO,EAAE,6CAA6C,EAAE,MAAM,EAAE,IAAI,EAAE;CACzE,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,YAAY,CAC1B,WAAwB,EACxB,MAAqB,EACrB,OAAgC;IAEhC,IAAI,MAAM,IAAI,MAAM,KAAK,SAAS;
|
|
1
|
+
{"version":3,"file":"source.js","sourceRoot":"","sources":["../../src/core/source.ts"],"names":[],"mappings":"AAMA;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;IACpE,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE;IAC5D,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;IAC1D,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE;CACpE,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAsB;IAClD,EAAE,OAAO,EAAE,qCAAqC,EAAE,MAAM,EAAE,OAAO,EAAE;IACnE,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,QAAQ,EAAE;IACpD,EAAE,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,MAAM,EAAE;IACpD,EAAE,OAAO,EAAE,6CAA6C,EAAE,MAAM,EAAE,IAAI,EAAE;CACzE,CAAC;AAEF;;;;;;;;GAQG;AACH,oEAAoE;AACpE,mEAAmE;AACnE,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IACpC,WAAW;IACX,QAAQ;IACR,QAAQ;IACR,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,UAAU,YAAY,CAC1B,WAAwB,EACxB,MAAqB,EACrB,OAAgC;IAEhC,IAAI,MAAM,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC;QAC/D,OAAO,MAAM,CAAC;IAEhB,iCAAiC;IACjC,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG;gBAAE,SAAS;YACnB,IACE,GAAG,CAAC,OAAO,YAAY,MAAM;gBAC3B,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;gBACvB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,EAC7B,CAAC;gBACD,OAAO,GAAG,CAAC,MAAM,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,wCAAwC;IACxC,MAAM,UAAU,GAAG,CAAC,WAAW,CAAC,aAAa,IAAI,EAAE,CAAC;SACjD,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC;SACvB,IAAI,CAAC,IAAI,CAAC,CAAC;IACd,KAAK,MAAM,GAAG,IAAI,iBAAiB,EAAE,CAAC;QACpC,IAAI,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC;IAC1D,CAAC;IACD,OAAO,MAAM,IAAI,SAAS,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tiktoken-based tokenizer with lazy loading and model-to-encoding mapping.
|
|
3
|
+
*
|
|
4
|
+
* Encoders are cached per encoding name (not per model) since many models
|
|
5
|
+
* share the same encoding. Falls back to chars/4 for unknown encodings.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Initialize the tokenizer by preloading the most commonly used encodings.
|
|
9
|
+
*
|
|
10
|
+
* Call this once at analysis server startup. Non-blocking: if loading fails,
|
|
11
|
+
* the tokenizer falls back to chars/4 estimation.
|
|
12
|
+
*/
|
|
13
|
+
export declare function initTokenizer(): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Count tokens for a string using the appropriate encoding for the model.
|
|
16
|
+
*
|
|
17
|
+
* If the tokenizer hasn't been initialized yet (or loading failed), falls
|
|
18
|
+
* back to chars/4. The model parameter is optional; when omitted, uses
|
|
19
|
+
* cl100k_base.
|
|
20
|
+
*
|
|
21
|
+
* This is synchronous when encoders are preloaded (the normal case after
|
|
22
|
+
* initTokenizer()). The encoder lookup is a Map.get(), and encoding is
|
|
23
|
+
* a pure CPU operation.
|
|
24
|
+
*/
|
|
25
|
+
export declare function countTokens(text: string, model?: string): number;
|
|
26
|
+
/**
|
|
27
|
+
* Check if the tokenizer is ready (at least one encoding loaded).
|
|
28
|
+
*/
|
|
29
|
+
export declare function isTokenizerReady(): boolean;
|
|
30
|
+
//# sourceMappingURL=tokenizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.d.ts","sourceRoot":"","sources":["../../src/core/tokenizer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAwGH;;;;;GAKG;AACH,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CAWnD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tiktoken-based tokenizer with lazy loading and model-to-encoding mapping.
|
|
3
|
+
*
|
|
4
|
+
* Encoders are cached per encoding name (not per model) since many models
|
|
5
|
+
* share the same encoding. Falls back to chars/4 for unknown encodings.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Map model name prefixes to tiktoken encoding names.
|
|
9
|
+
*
|
|
10
|
+
* Order: most specific first (longest prefix match wins).
|
|
11
|
+
*
|
|
12
|
+
* - cl100k_base: GPT-4, GPT-3.5-turbo, Claude (approximation)
|
|
13
|
+
* - o200k_base: GPT-4o, GPT-4.1, GPT-5, o1, o3, o4
|
|
14
|
+
*
|
|
15
|
+
* Anthropic hasn't published their tokenizer, but cl100k_base is a
|
|
16
|
+
* reasonable approximation (~5-10% off). Still much better than chars/4.
|
|
17
|
+
*
|
|
18
|
+
* Gemini models also use a proprietary tokenizer; cl100k_base is used
|
|
19
|
+
* as a best-effort approximation.
|
|
20
|
+
*/
|
|
21
|
+
const MODEL_ENCODING_MAP = [
|
|
22
|
+
// OpenAI: o200k_base models
|
|
23
|
+
["gpt-5", "o200k_base"],
|
|
24
|
+
["gpt-4.1", "o200k_base"],
|
|
25
|
+
["gpt-4o", "o200k_base"],
|
|
26
|
+
["o4-", "o200k_base"],
|
|
27
|
+
["o3-", "o200k_base"],
|
|
28
|
+
["o3", "o200k_base"],
|
|
29
|
+
["o1-", "o200k_base"],
|
|
30
|
+
["o1", "o200k_base"],
|
|
31
|
+
// OpenAI: cl100k_base models
|
|
32
|
+
["gpt-4-turbo", "cl100k_base"],
|
|
33
|
+
["gpt-4", "cl100k_base"],
|
|
34
|
+
["gpt-3.5", "cl100k_base"],
|
|
35
|
+
// Anthropic: cl100k_base as approximation
|
|
36
|
+
["claude-", "cl100k_base"],
|
|
37
|
+
// Gemini: cl100k_base as approximation
|
|
38
|
+
["gemini-", "cl100k_base"],
|
|
39
|
+
];
|
|
40
|
+
/** Cached encoder instances keyed by encoding name. */
|
|
41
|
+
const encoderCache = new Map();
|
|
42
|
+
/** In-flight loading promises to avoid duplicate loads. */
|
|
43
|
+
const loadingPromises = new Map();
|
|
44
|
+
/** Whether the tokenizer has been initialized (at least one encoding loaded). */
|
|
45
|
+
let initialized = false;
|
|
46
|
+
/**
|
|
47
|
+
* Resolve a model string to an encoding name.
|
|
48
|
+
*/
|
|
49
|
+
function getEncodingForModel(model) {
|
|
50
|
+
const lower = model.toLowerCase();
|
|
51
|
+
for (const [prefix, encoding] of MODEL_ENCODING_MAP) {
|
|
52
|
+
if (lower.includes(prefix))
|
|
53
|
+
return encoding;
|
|
54
|
+
}
|
|
55
|
+
// Default fallback: cl100k_base (most widely applicable)
|
|
56
|
+
return "cl100k_base";
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Dynamically import the rank data for an encoding name.
|
|
60
|
+
* Returns the Tiktoken constructor args.
|
|
61
|
+
*/
|
|
62
|
+
async function loadEncoding(encoding) {
|
|
63
|
+
const { Tiktoken } = await import("js-tiktoken/lite");
|
|
64
|
+
let ranks;
|
|
65
|
+
switch (encoding) {
|
|
66
|
+
case "o200k_base":
|
|
67
|
+
ranks = (await import("js-tiktoken/ranks/o200k_base")).default;
|
|
68
|
+
break;
|
|
69
|
+
case "cl100k_base":
|
|
70
|
+
ranks = (await import("js-tiktoken/ranks/cl100k_base")).default;
|
|
71
|
+
break;
|
|
72
|
+
default:
|
|
73
|
+
// Fallback to cl100k_base for unknown encodings
|
|
74
|
+
ranks = (await import("js-tiktoken/ranks/cl100k_base")).default;
|
|
75
|
+
break;
|
|
76
|
+
}
|
|
77
|
+
return new Tiktoken(ranks);
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get or lazily load an encoder for the given encoding name.
|
|
81
|
+
*/
|
|
82
|
+
async function getEncoder(encoding) {
|
|
83
|
+
const cached = encoderCache.get(encoding);
|
|
84
|
+
if (cached)
|
|
85
|
+
return cached;
|
|
86
|
+
// Deduplicate concurrent loads
|
|
87
|
+
let promise = loadingPromises.get(encoding);
|
|
88
|
+
if (!promise) {
|
|
89
|
+
promise = loadEncoding(encoding).then((enc) => {
|
|
90
|
+
encoderCache.set(encoding, enc);
|
|
91
|
+
loadingPromises.delete(encoding);
|
|
92
|
+
initialized = true;
|
|
93
|
+
return enc;
|
|
94
|
+
});
|
|
95
|
+
loadingPromises.set(encoding, promise);
|
|
96
|
+
}
|
|
97
|
+
return promise;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Initialize the tokenizer by preloading the most commonly used encodings.
|
|
101
|
+
*
|
|
102
|
+
* Call this once at analysis server startup. Non-blocking: if loading fails,
|
|
103
|
+
* the tokenizer falls back to chars/4 estimation.
|
|
104
|
+
*/
|
|
105
|
+
export async function initTokenizer() {
|
|
106
|
+
try {
|
|
107
|
+
// Preload both encodings in parallel
|
|
108
|
+
await Promise.all([getEncoder("cl100k_base"), getEncoder("o200k_base")]);
|
|
109
|
+
console.log("🔤 Tokenizer initialized (cl100k_base + o200k_base)");
|
|
110
|
+
}
|
|
111
|
+
catch (err) {
|
|
112
|
+
console.warn("Tokenizer init failed, using estimation fallback:", err instanceof Error ? err.message : String(err));
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Count tokens for a string using the appropriate encoding for the model.
|
|
117
|
+
*
|
|
118
|
+
* If the tokenizer hasn't been initialized yet (or loading failed), falls
|
|
119
|
+
* back to chars/4. The model parameter is optional; when omitted, uses
|
|
120
|
+
* cl100k_base.
|
|
121
|
+
*
|
|
122
|
+
* This is synchronous when encoders are preloaded (the normal case after
|
|
123
|
+
* initTokenizer()). The encoder lookup is a Map.get(), and encoding is
|
|
124
|
+
* a pure CPU operation.
|
|
125
|
+
*/
|
|
126
|
+
export function countTokens(text, model) {
|
|
127
|
+
if (!text)
|
|
128
|
+
return 0;
|
|
129
|
+
const encoding = model ? getEncodingForModel(model) : "cl100k_base";
|
|
130
|
+
const encoder = encoderCache.get(encoding);
|
|
131
|
+
if (encoder) {
|
|
132
|
+
try {
|
|
133
|
+
return encoder.encode(text).length;
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
// Encoding failure (unlikely): fall back to estimation
|
|
137
|
+
return Math.ceil(text.length / 4);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
// Encoder not loaded yet: fall back to chars/4
|
|
141
|
+
return Math.ceil(text.length / 4);
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Check if the tokenizer is ready (at least one encoding loaded).
|
|
145
|
+
*/
|
|
146
|
+
export function isTokenizerReady() {
|
|
147
|
+
return initialized;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=tokenizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokenizer.js","sourceRoot":"","sources":["../../src/core/tokenizer.ts"],"names":[],"mappings":"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"}
|
package/dist/core/tokens.d.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Token estimator used throughout Context Lens.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
* uses
|
|
4
|
+
* When the tiktoken-based tokenizer is initialized (analysis server),
|
|
5
|
+
* uses accurate BPE tokenization for the given model. Falls back to
|
|
6
|
+
* `ceil(chars / 4)` when the tokenizer hasn't loaded yet or for
|
|
7
|
+
* unknown models.
|
|
8
|
+
*
|
|
9
|
+
* For image content blocks, uses a fixed per-image estimate instead
|
|
10
|
+
* of stringifying base64 data.
|
|
6
11
|
*
|
|
7
12
|
* @param text - Value to estimate tokens for. Objects are stringified as JSON.
|
|
8
|
-
* @
|
|
13
|
+
* @param model - Optional model name for encoding selection.
|
|
14
|
+
* @returns Token count (>= 0).
|
|
9
15
|
*/
|
|
10
|
-
export declare function estimateTokens(text: unknown): number;
|
|
16
|
+
export declare function estimateTokens(text: unknown, model?: string): number;
|
|
11
17
|
/**
|
|
12
18
|
* Rescale all token sub-fields in a ContextInfo so they are internally
|
|
13
19
|
* consistent with an authoritative total (typically from API usage data).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/core/tokens.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/core/tokens.ts"],"names":[],"mappings":"AAgEA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAqBpE;AAiCD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,EAAE;IACF,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAChC,EACD,aAAa,EAAE,MAAM,GACpB,IAAI,CAyCN"}
|
package/dist/core/tokens.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { countTokens } from "./tokenizer.js";
|
|
1
2
|
/**
|
|
2
3
|
* Approximate token cost for a single image.
|
|
3
4
|
*
|
|
@@ -56,20 +57,26 @@ function stripImageData(val) {
|
|
|
56
57
|
return obj;
|
|
57
58
|
}
|
|
58
59
|
/**
|
|
59
|
-
*
|
|
60
|
+
* Token estimator used throughout Context Lens.
|
|
60
61
|
*
|
|
61
|
-
*
|
|
62
|
-
* uses
|
|
62
|
+
* When the tiktoken-based tokenizer is initialized (analysis server),
|
|
63
|
+
* uses accurate BPE tokenization for the given model. Falls back to
|
|
64
|
+
* `ceil(chars / 4)` when the tokenizer hasn't loaded yet or for
|
|
65
|
+
* unknown models.
|
|
66
|
+
*
|
|
67
|
+
* For image content blocks, uses a fixed per-image estimate instead
|
|
68
|
+
* of stringifying base64 data.
|
|
63
69
|
*
|
|
64
70
|
* @param text - Value to estimate tokens for. Objects are stringified as JSON.
|
|
65
|
-
* @
|
|
71
|
+
* @param model - Optional model name for encoding selection.
|
|
72
|
+
* @returns Token count (>= 0).
|
|
66
73
|
*/
|
|
67
|
-
export function estimateTokens(text) {
|
|
74
|
+
export function estimateTokens(text, model) {
|
|
68
75
|
if (!text)
|
|
69
76
|
return 0;
|
|
70
77
|
// Fast path: plain strings never contain image data
|
|
71
78
|
if (typeof text === "string") {
|
|
72
|
-
return
|
|
79
|
+
return countTokens(text, model);
|
|
73
80
|
}
|
|
74
81
|
// Single image block
|
|
75
82
|
if (isImageBlock(text)) {
|
|
@@ -78,7 +85,7 @@ export function estimateTokens(text) {
|
|
|
78
85
|
// Object/array: strip image data, then stringify the rest
|
|
79
86
|
const cleaned = stripImageData(text);
|
|
80
87
|
const s = JSON.stringify(cleaned);
|
|
81
|
-
const baseTokens =
|
|
88
|
+
const baseTokens = countTokens(s, model);
|
|
82
89
|
// Count image blocks and add fixed estimate for each
|
|
83
90
|
const imageCount = countImages(text);
|
|
84
91
|
return baseTokens + imageCount * IMAGE_TOKEN_ESTIMATE;
|
package/dist/core/tokens.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/core/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,oBAAoB,GAAG,KAAK,CAAC;AAEnC;;;;;;GAMG;AACH,SAAS,YAAY,CAAC,GAAY;IAChC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,MAAM,GAAG,GAAG,GAA8B,CAAC;IAC3C,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,IAAI,CAAC;IAClE,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAC;IAChD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,SAAS,cAAc,CAAC,GAAY;IAClC,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IAEhD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACjC,CAAC;IAED,gDAAgD;IAChD,IAAI,YAAY,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,OAAO;YACL,IAAI,EAAG,GAA+B,CAAC,IAAI,IAAI,OAAO;YACtD,MAAM,EAAE,IAAI;SACb,CAAC;IACJ,CAAC;IAED,MAAM,GAAG,GAAG,GAA8B,CAAC;IAE3C,sEAAsE;IACtE,IAAI,GAAG,CAAC,IAAI,KAAK,aAAa,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7D,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;IAC9D,CAAC;IAED,kDAAkD;IAClD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,GAAG,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;IAC1D,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED
|
|
1
|
+
{"version":3,"file":"tokens.js","sourceRoot":"","sources":["../../src/core/tokens.ts"],"names":[],"mappings":"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"}
|
package/dist/core.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ export type { AgentPathStep, AnalyzeOptions, CacheStats, CompactionEvent, Growth
|
|
|
14
14
|
export { analyzeSession, buildAgentPaths, findCompactions, findGrowthBlocks, identifyUserTurns, } from "./core/session-analysis.js";
|
|
15
15
|
export type { FormatOptions } from "./core/session-format.js";
|
|
16
16
|
export { fmtCost, fmtDuration, fmtTokens, formatSessionAnalysis, shortModel, } from "./core/session-format.js";
|
|
17
|
-
export { detectSource } from "./core/source.js";
|
|
17
|
+
export { detectSource, PROVIDER_NAMES } from "./core/source.js";
|
|
18
|
+
export { initTokenizer, isTokenizerReady } from "./core/tokenizer.js";
|
|
18
19
|
export { estimateTokens, rescaleContextTokens } from "./core/tokens.js";
|
|
19
20
|
//# sourceMappingURL=core.d.ts.map
|
package/dist/core.d.ts.map
CHANGED
|
@@ -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,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;
|
|
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,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/core.js
CHANGED
|
@@ -12,6 +12,7 @@ export { detectApiFormat, detectProvider, extractSource, resolveTargetUrl, } fro
|
|
|
12
12
|
export { scanSecurity } from "./core/security.js";
|
|
13
13
|
export { analyzeSession, buildAgentPaths, findCompactions, findGrowthBlocks, identifyUserTurns, } from "./core/session-analysis.js";
|
|
14
14
|
export { fmtCost, fmtDuration, fmtTokens, formatSessionAnalysis, shortModel, } from "./core/session-format.js";
|
|
15
|
-
export { detectSource } from "./core/source.js";
|
|
15
|
+
export { detectSource, PROVIDER_NAMES } from "./core/source.js";
|
|
16
|
+
export { initTokenizer, isTokenizerReady } from "./core/tokenizer.js";
|
|
16
17
|
export { estimateTokens, rescaleContextTokens } from "./core/tokens.js";
|
|
17
18
|
//# 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;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;
|
|
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,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC"}
|
package/dist/http/headers.d.ts
CHANGED
|
@@ -1,25 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Header redaction utilities for captures and LHAR export.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* `selectHeaders` and `SENSITIVE_HEADERS` are re-exported from @contextio/core
|
|
5
|
+
* (single source of truth). `redactHeaders` is context-lens-specific: it
|
|
6
|
+
* strips sensitive headers from an already-string-valued map (used in LHAR
|
|
7
|
+
* export where multi-value arrays are not possible).
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
export declare const SENSITIVE_HEADERS: Set<string>;
|
|
9
|
+
export { SENSITIVE_HEADERS, selectHeaders } from "@contextio/core";
|
|
11
10
|
/**
|
|
12
|
-
* Remove sensitive headers from a header map.
|
|
11
|
+
* Remove sensitive headers from a string-valued header map.
|
|
13
12
|
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
13
|
+
* Unlike `selectHeaders`, this does not filter non-string values —
|
|
14
|
+
* it assumes all values are already strings (as in LHAR export).
|
|
16
15
|
*/
|
|
17
16
|
export declare function redactHeaders(headers: Record<string, string>): Record<string, string>;
|
|
18
|
-
/**
|
|
19
|
-
* Select a safe subset of request/response headers for capture.
|
|
20
|
-
*
|
|
21
|
-
* - Drops sensitive headers (see `SENSITIVE_HEADERS`)
|
|
22
|
-
* - Keeps only string-valued headers (Node can represent multi-valued headers as arrays)
|
|
23
|
-
*/
|
|
24
|
-
export declare function selectHeaders(headers: Record<string, any>): Record<string, string>;
|
|
25
17
|
//# sourceMappingURL=headers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/http/headers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,
|
|
1
|
+
{"version":3,"file":"headers.d.ts","sourceRoot":"","sources":["../../src/http/headers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAInE;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB"}
|
package/dist/http/headers.js
CHANGED
|
@@ -1,30 +1,18 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Header redaction utilities for captures and LHAR export.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* `selectHeaders` and `SENSITIVE_HEADERS` are re-exported from @contextio/core
|
|
5
|
+
* (single source of truth). `redactHeaders` is context-lens-specific: it
|
|
6
|
+
* strips sensitive headers from an already-string-valued map (used in LHAR
|
|
7
|
+
* export where multi-value arrays are not possible).
|
|
8
8
|
*/
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
"authorization",
|
|
12
|
-
"x-api-key",
|
|
13
|
-
"cookie",
|
|
14
|
-
"set-cookie",
|
|
15
|
-
"x-target-url",
|
|
16
|
-
"proxy-authorization",
|
|
17
|
-
"x-auth-token",
|
|
18
|
-
"x-forwarded-authorization",
|
|
19
|
-
"www-authenticate",
|
|
20
|
-
"proxy-authenticate",
|
|
21
|
-
"x-goog-api-key",
|
|
22
|
-
]);
|
|
9
|
+
export { SENSITIVE_HEADERS, selectHeaders } from "@contextio/core";
|
|
10
|
+
import { SENSITIVE_HEADERS } from "@contextio/core";
|
|
23
11
|
/**
|
|
24
|
-
* Remove sensitive headers from a header map.
|
|
12
|
+
* Remove sensitive headers from a string-valued header map.
|
|
25
13
|
*
|
|
26
|
-
*
|
|
27
|
-
*
|
|
14
|
+
* Unlike `selectHeaders`, this does not filter non-string values —
|
|
15
|
+
* it assumes all values are already strings (as in LHAR export).
|
|
28
16
|
*/
|
|
29
17
|
export function redactHeaders(headers) {
|
|
30
18
|
const result = {};
|
|
@@ -35,20 +23,4 @@ export function redactHeaders(headers) {
|
|
|
35
23
|
}
|
|
36
24
|
return result;
|
|
37
25
|
}
|
|
38
|
-
/**
|
|
39
|
-
* Select a safe subset of request/response headers for capture.
|
|
40
|
-
*
|
|
41
|
-
* - Drops sensitive headers (see `SENSITIVE_HEADERS`)
|
|
42
|
-
* - Keeps only string-valued headers (Node can represent multi-valued headers as arrays)
|
|
43
|
-
*/
|
|
44
|
-
export function selectHeaders(headers) {
|
|
45
|
-
const result = {};
|
|
46
|
-
for (const [key, val] of Object.entries(headers)) {
|
|
47
|
-
if (SENSITIVE_HEADERS.has(key.toLowerCase()))
|
|
48
|
-
continue;
|
|
49
|
-
if (typeof val === "string")
|
|
50
|
-
result[key] = val;
|
|
51
|
-
}
|
|
52
|
-
return result;
|
|
53
|
-
}
|
|
54
26
|
//# sourceMappingURL=headers.js.map
|
package/dist/http/headers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/http/headers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,
|
|
1
|
+
{"version":3,"file":"headers.js","sourceRoot":"","sources":["../../src/http/headers.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAC3B,OAA+B;IAE/B,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACjD,IAAI,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;YAAE,SAAS;QACvD,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/lhar/composition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GACvC,gBAAgB,EAAE,
|
|
1
|
+
{"version":3,"file":"composition.d.ts","sourceRoot":"","sources":["../../src/lhar/composition.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,gBAAgB,EACjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,wBAAgB,kBAAkB,CAChC,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,SAAS,GACvC,gBAAgB,EAAE,CA4EpB;AAiLD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,gBAAgB,EAAE,EAC/B,aAAa,EAAE,MAAM,GACpB,IAAI,CAgCN"}
|