@auxiora/sessions 1.0.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/compaction-summarizer.d.ts +12 -0
- package/dist/compaction-summarizer.d.ts.map +1 -0
- package/dist/compaction-summarizer.js +81 -0
- package/dist/compaction-summarizer.js.map +1 -0
- package/dist/context-degradation.d.ts +19 -0
- package/dist/context-degradation.d.ts.map +1 -0
- package/dist/context-degradation.js +56 -0
- package/dist/context-degradation.js.map +1 -0
- package/dist/db.d.ts +1 -0
- package/dist/db.d.ts.map +1 -1
- package/dist/db.js +6 -1
- package/dist/db.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/manager.d.ts +20 -1
- package/dist/manager.d.ts.map +1 -1
- package/dist/manager.js +62 -8
- package/dist/manager.js.map +1 -1
- package/dist/sanitize-transcript.d.ts +3 -0
- package/dist/sanitize-transcript.d.ts.map +1 -0
- package/dist/sanitize-transcript.js +50 -0
- package/dist/sanitize-transcript.js.map +1 -0
- package/dist/token-estimator.d.ts +16 -0
- package/dist/token-estimator.d.ts.map +1 -0
- package/dist/token-estimator.js +69 -0
- package/dist/token-estimator.js.map +1 -0
- package/package.json +9 -3
- package/src/db.ts +0 -180
- package/src/index.ts +0 -11
- package/src/manager.ts +0 -343
- package/src/types.ts +0 -56
- package/tests/db.test.ts +0 -139
- package/tests/migration.test.ts +0 -114
- package/tests/sessions.test.ts +0 -187
- package/tsconfig.json +0 -8
- package/tsconfig.tsbuildinfo +0 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { Message } from './types.js';
|
|
2
|
+
/** Injected function that summarizes text using an AI provider. */
|
|
3
|
+
export type SummarizeFn = (prompt: string) => Promise<string>;
|
|
4
|
+
/**
|
|
5
|
+
* Summarize a list of messages using AI with progressive fallback.
|
|
6
|
+
*
|
|
7
|
+
* 1. Try summarizing all messages in one call.
|
|
8
|
+
* 2. If too large, chunk into groups and summarize each, then merge.
|
|
9
|
+
* 3. If all calls fail, return a size-only description.
|
|
10
|
+
*/
|
|
11
|
+
export declare function summarizeMessages(messages: Message[], summarize: SummarizeFn): Promise<string>;
|
|
12
|
+
//# sourceMappingURL=compaction-summarizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compaction-summarizer.d.ts","sourceRoot":"","sources":["../src/compaction-summarizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C,mEAAmE;AACnE,MAAM,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAK9D;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,OAAO,EAAE,EACnB,SAAS,EAAE,WAAW,GACrB,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/** Max chars to include in a single summarization prompt. */
|
|
2
|
+
const MAX_PROMPT_CHARS = 50_000;
|
|
3
|
+
/**
|
|
4
|
+
* Summarize a list of messages using AI with progressive fallback.
|
|
5
|
+
*
|
|
6
|
+
* 1. Try summarizing all messages in one call.
|
|
7
|
+
* 2. If too large, chunk into groups and summarize each, then merge.
|
|
8
|
+
* 3. If all calls fail, return a size-only description.
|
|
9
|
+
*/
|
|
10
|
+
export async function summarizeMessages(messages, summarize) {
|
|
11
|
+
if (messages.length === 0) {
|
|
12
|
+
return '[0 messages — nothing to summarize]';
|
|
13
|
+
}
|
|
14
|
+
const formatted = formatMessages(messages);
|
|
15
|
+
// Tier 1: Try single-call summarization
|
|
16
|
+
if (formatted.length <= MAX_PROMPT_CHARS) {
|
|
17
|
+
try {
|
|
18
|
+
return await summarize(buildPrompt(formatted));
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return sizeOnlyDescription(messages);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
// Tier 2: Chunk and summarize
|
|
25
|
+
try {
|
|
26
|
+
return await chunkAndSummarize(messages, summarize);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return sizeOnlyDescription(messages);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function formatMessages(messages) {
|
|
33
|
+
return messages
|
|
34
|
+
.map((m) => `[${m.role}] ${m.content}`)
|
|
35
|
+
.join('\n');
|
|
36
|
+
}
|
|
37
|
+
function buildPrompt(formatted) {
|
|
38
|
+
return ('Summarize the following conversation concisely. ' +
|
|
39
|
+
'Preserve key decisions, user preferences, established facts, and action items. ' +
|
|
40
|
+
'Be factual and brief.\n\n' +
|
|
41
|
+
formatted);
|
|
42
|
+
}
|
|
43
|
+
async function chunkAndSummarize(messages, summarize) {
|
|
44
|
+
const chunks = [];
|
|
45
|
+
let current = [];
|
|
46
|
+
let currentLength = 0;
|
|
47
|
+
for (const msg of messages) {
|
|
48
|
+
const msgLength = msg.content.length + msg.role.length + 10;
|
|
49
|
+
if (currentLength + msgLength > MAX_PROMPT_CHARS && current.length > 0) {
|
|
50
|
+
chunks.push(current);
|
|
51
|
+
current = [];
|
|
52
|
+
currentLength = 0;
|
|
53
|
+
}
|
|
54
|
+
current.push(msg);
|
|
55
|
+
currentLength += msgLength;
|
|
56
|
+
}
|
|
57
|
+
if (current.length > 0)
|
|
58
|
+
chunks.push(current);
|
|
59
|
+
// Summarize each chunk
|
|
60
|
+
const chunkSummaries = [];
|
|
61
|
+
for (const chunk of chunks) {
|
|
62
|
+
const formatted = formatMessages(chunk);
|
|
63
|
+
const summary = await summarize(buildPrompt(formatted));
|
|
64
|
+
chunkSummaries.push(summary);
|
|
65
|
+
}
|
|
66
|
+
// Merge summaries
|
|
67
|
+
if (chunkSummaries.length === 1)
|
|
68
|
+
return chunkSummaries[0];
|
|
69
|
+
const mergePrompt = 'Merge these conversation summaries into one cohesive summary. ' +
|
|
70
|
+
'Preserve key decisions, preferences, and facts.\n\n' +
|
|
71
|
+
chunkSummaries.map((s, i) => `Part ${i + 1}:\n${s}`).join('\n\n');
|
|
72
|
+
return await summarize(mergePrompt);
|
|
73
|
+
}
|
|
74
|
+
function sizeOnlyDescription(messages) {
|
|
75
|
+
const first = messages[0];
|
|
76
|
+
const last = messages[messages.length - 1];
|
|
77
|
+
const from = first ? new Date(first.timestamp).toISOString() : 'unknown';
|
|
78
|
+
const to = last ? new Date(last.timestamp).toISOString() : 'unknown';
|
|
79
|
+
return `[${messages.length} messages from ${from} to ${to} — summarization failed]`;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=compaction-summarizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compaction-summarizer.js","sourceRoot":"","sources":["../src/compaction-summarizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Message } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Create a synthetic system message indicating omitted history.
|
|
4
|
+
* Returns undefined if no messages were omitted.
|
|
5
|
+
*/
|
|
6
|
+
export declare function insertOmissionMarker(allCount: number, selectedCount: number): Message | undefined;
|
|
7
|
+
/**
|
|
8
|
+
* Truncate a message's content if it exceeds maxChars.
|
|
9
|
+
* Keeps the first 40% and last 40%, with a marker in between.
|
|
10
|
+
*/
|
|
11
|
+
export declare function truncateLargeMessage(content: string, maxChars: number): string;
|
|
12
|
+
/**
|
|
13
|
+
* Apply progressive degradation to context messages.
|
|
14
|
+
*
|
|
15
|
+
* Tier 1: Insert omission marker if messages were dropped.
|
|
16
|
+
* Tier 2: Truncate individual messages exceeding maxMessageChars.
|
|
17
|
+
*/
|
|
18
|
+
export declare function degradeContext(allMessages: Message[], selectedMessages: Message[], budget: number, maxMessageChars?: number): Message[];
|
|
19
|
+
//# sourceMappingURL=context-degradation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-degradation.d.ts","sourceRoot":"","sources":["../src/context-degradation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAE1C;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAWjG;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQ9E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,WAAW,EAAE,OAAO,EAAE,EACtB,gBAAgB,EAAE,OAAO,EAAE,EAC3B,MAAM,EAAE,MAAM,EACd,eAAe,GAAE,MAAa,GAC7B,OAAO,EAAE,CAqBX"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Create a synthetic system message indicating omitted history.
|
|
3
|
+
* Returns undefined if no messages were omitted.
|
|
4
|
+
*/
|
|
5
|
+
export function insertOmissionMarker(allCount, selectedCount) {
|
|
6
|
+
const omitted = allCount - selectedCount;
|
|
7
|
+
if (omitted <= 0)
|
|
8
|
+
return undefined;
|
|
9
|
+
const plural = omitted === 1 ? 'message' : 'messages';
|
|
10
|
+
return {
|
|
11
|
+
id: `_omission_marker_${Date.now()}`,
|
|
12
|
+
role: 'system',
|
|
13
|
+
content: `[...${omitted} earlier ${plural} omitted...]`,
|
|
14
|
+
timestamp: Date.now(),
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Truncate a message's content if it exceeds maxChars.
|
|
19
|
+
* Keeps the first 40% and last 40%, with a marker in between.
|
|
20
|
+
*/
|
|
21
|
+
export function truncateLargeMessage(content, maxChars) {
|
|
22
|
+
if (content.length <= maxChars)
|
|
23
|
+
return content;
|
|
24
|
+
const headSize = Math.floor(maxChars * 0.4);
|
|
25
|
+
const tailSize = Math.floor(maxChars * 0.4);
|
|
26
|
+
const omitted = content.length - headSize - tailSize;
|
|
27
|
+
return `${content.slice(0, headSize)}\n[...truncated ${omitted} chars...]\n${content.slice(-tailSize)}`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Apply progressive degradation to context messages.
|
|
31
|
+
*
|
|
32
|
+
* Tier 1: Insert omission marker if messages were dropped.
|
|
33
|
+
* Tier 2: Truncate individual messages exceeding maxMessageChars.
|
|
34
|
+
*/
|
|
35
|
+
export function degradeContext(allMessages, selectedMessages, budget, maxMessageChars = 8000) {
|
|
36
|
+
// Tier 2: Truncate oversized messages
|
|
37
|
+
const truncated = selectedMessages.map((msg) => {
|
|
38
|
+
const newContent = truncateLargeMessage(msg.content, maxMessageChars);
|
|
39
|
+
if (newContent === msg.content)
|
|
40
|
+
return msg;
|
|
41
|
+
return { ...msg, content: newContent };
|
|
42
|
+
});
|
|
43
|
+
// Tier 1: Insert omission marker if messages were dropped
|
|
44
|
+
const marker = insertOmissionMarker(allMessages.length, selectedMessages.length);
|
|
45
|
+
if (!marker)
|
|
46
|
+
return truncated;
|
|
47
|
+
if (truncated.length === 0)
|
|
48
|
+
return [marker];
|
|
49
|
+
// Keep first 2 messages (context anchors), insert marker, then rest
|
|
50
|
+
// Ensure at least one message remains after the marker
|
|
51
|
+
const anchorCount = Math.min(2, Math.max(1, truncated.length - 1));
|
|
52
|
+
const anchors = truncated.slice(0, anchorCount);
|
|
53
|
+
const rest = truncated.slice(anchorCount);
|
|
54
|
+
return [...anchors, marker, ...rest];
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=context-degradation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-degradation.js","sourceRoot":"","sources":["../src/context-degradation.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB,EAAE,aAAqB;IAC1E,MAAM,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;IACzC,IAAI,OAAO,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IAEnC,MAAM,MAAM,GAAG,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IACtD,OAAO;QACL,EAAE,EAAE,oBAAoB,IAAI,CAAC,GAAG,EAAE,EAAE;QACpC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,OAAO,YAAY,MAAM,cAAc;QACvD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAe,EAAE,QAAgB;IACpE,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE/C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAErD,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,mBAAmB,OAAO,eAAe,OAAO,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC;AAC1G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,WAAsB,EACtB,gBAA2B,EAC3B,MAAc,EACd,kBAA0B,IAAI;IAE9B,sCAAsC;IACtC,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7C,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACtE,IAAI,UAAU,KAAK,GAAG,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC;QAC3C,OAAO,EAAE,GAAG,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,0DAA0D;IAC1D,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,CAAC,MAAM,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;IACjF,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAE5C,oEAAoE;IACpE,uDAAuD;IACvD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/db.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare class SessionDatabase {
|
|
|
8
8
|
listChats(options?: ListChatsOptions): Chat[];
|
|
9
9
|
renameChat(id: string, title: string): void;
|
|
10
10
|
archiveChat(id: string): void;
|
|
11
|
+
updateChatMetadata(id: string, metadata: Record<string, unknown>): void;
|
|
11
12
|
deleteChat(id: string): void;
|
|
12
13
|
addMessage(chatId: string, msgId: string, role: string, content: string, timestamp: number, tokensIn?: number, tokensOut?: number): void;
|
|
13
14
|
getMessages(chatId: string): Message[];
|
package/dist/db.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAMlE,qBAAa,eAAe;IAC1B,OAAO,CAAC,EAAE,CAAe;gBAEb,MAAM,EAAE,MAAM;IAO1B,OAAO,CAAC,OAAO;IA+Bf,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IASnE,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAKrC,SAAS,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,EAAE;IAS7C,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAI3C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAI7B,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAKvE,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAM5B,UAAU,CACR,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,IAAI;IAOP,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE;IAItC,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,EAAE;IAchE,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAOnC,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI;IAW/D,gBAAgB,CACd,EAAE,EAAE,MAAM,EACV,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,QAAQ,CAAC,EAAE,MAAM,GAChB,IAAI;IAQP,OAAO,CAAC,SAAS;IAYjB,OAAO,CAAC,YAAY;IAYpB,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/db.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { DatabaseSync } from 'node:sqlite';
|
|
2
2
|
import * as crypto from 'node:crypto';
|
|
3
|
+
import { estimateTokens } from './token-estimator.js';
|
|
3
4
|
function generateId() {
|
|
4
5
|
return crypto.randomUUID();
|
|
5
6
|
}
|
|
@@ -64,6 +65,10 @@ export class SessionDatabase {
|
|
|
64
65
|
archiveChat(id) {
|
|
65
66
|
this.db.prepare('UPDATE chats SET archived = 1, updated_at = ? WHERE id = ?').run(Date.now(), id);
|
|
66
67
|
}
|
|
68
|
+
updateChatMetadata(id, metadata) {
|
|
69
|
+
this.db.prepare('UPDATE chats SET metadata = ?, updated_at = ? WHERE id = ?')
|
|
70
|
+
.run(JSON.stringify(metadata), Date.now(), id);
|
|
71
|
+
}
|
|
67
72
|
deleteChat(id) {
|
|
68
73
|
this.db.prepare('DELETE FROM chats WHERE id = ?').run(id);
|
|
69
74
|
}
|
|
@@ -81,7 +86,7 @@ export class SessionDatabase {
|
|
|
81
86
|
let tokenCount = 0;
|
|
82
87
|
for (const row of rows) {
|
|
83
88
|
const msg = this.rowToMessage(row);
|
|
84
|
-
const msgTokens =
|
|
89
|
+
const msgTokens = estimateTokens(msg.content);
|
|
85
90
|
if (tokenCount + msgTokens > maxTokens)
|
|
86
91
|
break;
|
|
87
92
|
messages.unshift(msg);
|
package/dist/db.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"db.js","sourceRoot":"","sources":["../src/db.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
export { SessionManager } from './manager.js';
|
|
2
2
|
export { SessionDatabase } from './db.js';
|
|
3
|
+
export { estimateTokens } from './token-estimator.js';
|
|
3
4
|
export type { Session, SessionConfig, SessionMetadata, Message, MessageRole, Chat, ListChatsOptions, } from './types.js';
|
|
5
|
+
export { sanitizeTranscript } from './sanitize-transcript.js';
|
|
6
|
+
export { degradeContext, insertOmissionMarker, truncateLargeMessage } from './context-degradation.js';
|
|
7
|
+
export { summarizeMessages, type SummarizeFn } from './compaction-summarizer.js';
|
|
4
8
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,YAAY,EACV,OAAO,EACP,aAAa,EACb,eAAe,EACf,OAAO,EACP,WAAW,EACX,IAAI,EACJ,gBAAgB,GACjB,MAAM,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,YAAY,EACV,OAAO,EACP,aAAa,EACb,eAAe,EACf,OAAO,EACP,WAAW,EACX,IAAI,EACJ,gBAAgB,GACjB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAE,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
export { SessionManager } from './manager.js';
|
|
2
2
|
export { SessionDatabase } from './db.js';
|
|
3
|
+
export { estimateTokens } from './token-estimator.js';
|
|
4
|
+
export { sanitizeTranscript } from './sanitize-transcript.js';
|
|
5
|
+
export { degradeContext, insertOmissionMarker, truncateLargeMessage } from './context-degradation.js';
|
|
6
|
+
export { summarizeMessages } from './compaction-summarizer.js';
|
|
3
7
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAUtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AACtG,OAAO,EAAE,iBAAiB,EAAoB,MAAM,4BAA4B,CAAC"}
|
package/dist/manager.d.ts
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
|
+
import type { SummarizeFn } from './compaction-summarizer.js';
|
|
1
2
|
import type { Session, SessionConfig, Message, MessageRole, SessionMetadata, Chat, ListChatsOptions } from './types.js';
|
|
2
3
|
export declare class SessionManager {
|
|
4
|
+
/** Fixed 20% safety margin for estimation inaccuracy. */
|
|
5
|
+
private static readonly SAFETY_MARGIN;
|
|
6
|
+
/** Reserved tokens for system prompt, tool definitions, etc. */
|
|
7
|
+
private static readonly SYSTEM_RESERVE;
|
|
8
|
+
/** Default output token reserve when not specified. */
|
|
9
|
+
private static readonly DEFAULT_OUTPUT_RESERVE;
|
|
10
|
+
/** Minimum effective budget before warning. */
|
|
11
|
+
private static readonly MIN_BUDGET_WARNING;
|
|
12
|
+
/** Minimum fraction of messages that must be dropped to trigger compaction. */
|
|
13
|
+
private static readonly COMPACTION_THRESHOLD;
|
|
14
|
+
/** Minimum cooldown between compaction attempts per session (ms). */
|
|
15
|
+
private static readonly COMPACTION_COOLDOWN_MS;
|
|
3
16
|
private sessions;
|
|
17
|
+
private summarizer;
|
|
18
|
+
private compactionCooldowns;
|
|
4
19
|
private config;
|
|
5
20
|
private db;
|
|
6
21
|
private sessionsDir;
|
|
@@ -19,7 +34,7 @@ export declare class SessionManager {
|
|
|
19
34
|
output?: number;
|
|
20
35
|
}): Promise<Message>;
|
|
21
36
|
getMessages(sessionId: string): Message[];
|
|
22
|
-
getContextMessages(sessionId: string, maxTokens?: number): Message[];
|
|
37
|
+
getContextMessages(sessionId: string, maxTokens?: number, outputReserve?: number): Message[];
|
|
23
38
|
setSystemPrompt(sessionId: string, prompt: string): Promise<void>;
|
|
24
39
|
save(_sessionId: string): Promise<void>;
|
|
25
40
|
delete(sessionId: string): Promise<boolean>;
|
|
@@ -27,12 +42,16 @@ export declare class SessionManager {
|
|
|
27
42
|
compact(sessionId: string, summary: string): Promise<void>;
|
|
28
43
|
private cleanupExpired;
|
|
29
44
|
getActiveSessions(): Session[];
|
|
45
|
+
getChat(chatId: string): Chat | undefined;
|
|
30
46
|
createChat(title?: string): Chat;
|
|
31
47
|
listChats(options?: ListChatsOptions): Chat[];
|
|
32
48
|
renameChat(chatId: string, title: string): void;
|
|
33
49
|
archiveChat(chatId: string): void;
|
|
50
|
+
updateChatMetadata(chatId: string, metadata: Record<string, unknown>): void;
|
|
34
51
|
deleteChat(chatId: string): void;
|
|
35
52
|
getChatMessages(chatId: string): Message[];
|
|
53
|
+
setSummarizer(fn: SummarizeFn): void;
|
|
54
|
+
private maybeAutoCompact;
|
|
36
55
|
destroy(): void;
|
|
37
56
|
}
|
|
38
57
|
//# sourceMappingURL=manager.d.ts.map
|
package/dist/manager.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
package/dist/manager.js
CHANGED
|
@@ -4,13 +4,30 @@ import * as crypto from 'node:crypto';
|
|
|
4
4
|
import { getSessionsDir } from '@auxiora/core';
|
|
5
5
|
import { audit } from '@auxiora/audit';
|
|
6
6
|
import { SessionDatabase } from './db.js';
|
|
7
|
+
import { estimateTokens } from './token-estimator.js';
|
|
8
|
+
import { degradeContext } from './context-degradation.js';
|
|
9
|
+
import { summarizeMessages } from './compaction-summarizer.js';
|
|
7
10
|
function generateMessageId() {
|
|
8
11
|
const timestamp = Date.now().toString(36);
|
|
9
12
|
const random = crypto.randomBytes(4).toString('hex');
|
|
10
13
|
return `${timestamp}-${random}`;
|
|
11
14
|
}
|
|
12
15
|
export class SessionManager {
|
|
16
|
+
/** Fixed 20% safety margin for estimation inaccuracy. */
|
|
17
|
+
static SAFETY_MARGIN = 0.80;
|
|
18
|
+
/** Reserved tokens for system prompt, tool definitions, etc. */
|
|
19
|
+
static SYSTEM_RESERVE = 2000;
|
|
20
|
+
/** Default output token reserve when not specified. */
|
|
21
|
+
static DEFAULT_OUTPUT_RESERVE = 4096;
|
|
22
|
+
/** Minimum effective budget before warning. */
|
|
23
|
+
static MIN_BUDGET_WARNING = 4000;
|
|
24
|
+
/** Minimum fraction of messages that must be dropped to trigger compaction. */
|
|
25
|
+
static COMPACTION_THRESHOLD = 0.40;
|
|
26
|
+
/** Minimum cooldown between compaction attempts per session (ms). */
|
|
27
|
+
static COMPACTION_COOLDOWN_MS = 5 * 60 * 1000;
|
|
13
28
|
sessions = new Map();
|
|
29
|
+
summarizer = null;
|
|
30
|
+
compactionCooldowns = new Map();
|
|
14
31
|
config;
|
|
15
32
|
db;
|
|
16
33
|
sessionsDir;
|
|
@@ -158,25 +175,34 @@ export class SessionManager {
|
|
|
158
175
|
// Fall back to DB
|
|
159
176
|
return this.db.getMessages(sessionId);
|
|
160
177
|
}
|
|
161
|
-
getContextMessages(sessionId, maxTokens) {
|
|
162
|
-
const
|
|
178
|
+
getContextMessages(sessionId, maxTokens, outputReserve) {
|
|
179
|
+
const rawLimit = maxTokens || this.config.maxContextTokens;
|
|
180
|
+
const reserve = outputReserve ?? SessionManager.DEFAULT_OUTPUT_RESERVE;
|
|
181
|
+
const effectiveBudget = Math.max(rawLimit * SessionManager.SAFETY_MARGIN - reserve - SessionManager.SYSTEM_RESERVE, 0);
|
|
182
|
+
if (effectiveBudget < SessionManager.MIN_BUDGET_WARNING) {
|
|
183
|
+
console.warn(`[auxiora] Context budget very low (${Math.round(effectiveBudget)} tokens). ` +
|
|
184
|
+
`Consider increasing maxContextTokens (current: ${rawLimit}).`);
|
|
185
|
+
}
|
|
163
186
|
// Try in-memory first
|
|
164
187
|
const session = this.sessions.get(sessionId);
|
|
165
188
|
if (session) {
|
|
166
|
-
const
|
|
189
|
+
const selected = [];
|
|
167
190
|
let tokenCount = 0;
|
|
168
191
|
for (let i = session.messages.length - 1; i >= 0; i--) {
|
|
169
192
|
const msg = session.messages[i];
|
|
170
|
-
const msgTokens =
|
|
171
|
-
if (tokenCount + msgTokens >
|
|
193
|
+
const msgTokens = estimateTokens(msg.content);
|
|
194
|
+
if (tokenCount + msgTokens > effectiveBudget)
|
|
172
195
|
break;
|
|
173
|
-
|
|
196
|
+
selected.unshift(msg);
|
|
174
197
|
tokenCount += msgTokens;
|
|
175
198
|
}
|
|
176
|
-
|
|
199
|
+
const degraded = degradeContext(session.messages, selected, effectiveBudget);
|
|
200
|
+
// Auto-compaction: fire-and-forget when too many messages dropped
|
|
201
|
+
this.maybeAutoCompact(sessionId, session.messages, selected);
|
|
202
|
+
return degraded;
|
|
177
203
|
}
|
|
178
204
|
// Fall back to DB
|
|
179
|
-
return this.db.getContextMessages(sessionId,
|
|
205
|
+
return this.db.getContextMessages(sessionId, effectiveBudget);
|
|
180
206
|
}
|
|
181
207
|
async setSystemPrompt(sessionId, prompt) {
|
|
182
208
|
const session = await this.get(sessionId);
|
|
@@ -237,6 +263,9 @@ export class SessionManager {
|
|
|
237
263
|
return Array.from(this.sessions.values());
|
|
238
264
|
}
|
|
239
265
|
// ── Chat management ──
|
|
266
|
+
getChat(chatId) {
|
|
267
|
+
return this.db.getChat(chatId);
|
|
268
|
+
}
|
|
240
269
|
createChat(title) {
|
|
241
270
|
return this.db.createChat(title ?? 'New Chat', 'webchat');
|
|
242
271
|
}
|
|
@@ -250,6 +279,9 @@ export class SessionManager {
|
|
|
250
279
|
this.db.archiveChat(chatId);
|
|
251
280
|
this.sessions.delete(chatId);
|
|
252
281
|
}
|
|
282
|
+
updateChatMetadata(chatId, metadata) {
|
|
283
|
+
this.db.updateChatMetadata(chatId, metadata);
|
|
284
|
+
}
|
|
253
285
|
deleteChat(chatId) {
|
|
254
286
|
this.db.deleteChat(chatId);
|
|
255
287
|
this.sessions.delete(chatId);
|
|
@@ -257,6 +289,28 @@ export class SessionManager {
|
|
|
257
289
|
getChatMessages(chatId) {
|
|
258
290
|
return this.db.getMessages(chatId);
|
|
259
291
|
}
|
|
292
|
+
setSummarizer(fn) {
|
|
293
|
+
this.summarizer = fn;
|
|
294
|
+
}
|
|
295
|
+
maybeAutoCompact(sessionId, allMessages, selected) {
|
|
296
|
+
if (!this.summarizer || !this.config.compactionEnabled)
|
|
297
|
+
return;
|
|
298
|
+
if (allMessages.length === 0)
|
|
299
|
+
return;
|
|
300
|
+
const droppedFraction = 1 - selected.length / allMessages.length;
|
|
301
|
+
if (droppedFraction < SessionManager.COMPACTION_THRESHOLD)
|
|
302
|
+
return;
|
|
303
|
+
// Debounce per session
|
|
304
|
+
const lastCompaction = this.compactionCooldowns.get(sessionId) ?? 0;
|
|
305
|
+
if (Date.now() - lastCompaction < SessionManager.COMPACTION_COOLDOWN_MS)
|
|
306
|
+
return;
|
|
307
|
+
this.compactionCooldowns.set(sessionId, Date.now());
|
|
308
|
+
const droppedMessages = allMessages.slice(0, allMessages.length - selected.length);
|
|
309
|
+
const summarizer = this.summarizer;
|
|
310
|
+
summarizeMessages(droppedMessages, summarizer)
|
|
311
|
+
.then((summary) => this.compact(sessionId, summary))
|
|
312
|
+
.catch(() => { });
|
|
313
|
+
}
|
|
260
314
|
destroy() {
|
|
261
315
|
if (this.cleanupInterval) {
|
|
262
316
|
clearInterval(this.cleanupInterval);
|
package/dist/manager.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"manager.js","sourceRoot":"","sources":["../src/manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-transcript.d.ts","sourceRoot":"","sources":["../src/sanitize-transcript.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAuD1C,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,EAAE,CAKjE"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
const TOOL_RESULTS_PREFIX = '[Tool Results]';
|
|
2
|
+
const TOOL_ANNOUNCE_PATTERN = /I'll use \S+/;
|
|
3
|
+
function dropEmpty(messages) {
|
|
4
|
+
return messages.filter((m) => m.content.trim().length > 0);
|
|
5
|
+
}
|
|
6
|
+
function dropTrailingOrphans(messages) {
|
|
7
|
+
const result = [...messages];
|
|
8
|
+
let changed = true;
|
|
9
|
+
while (changed && result.length > 0) {
|
|
10
|
+
changed = false;
|
|
11
|
+
const last = result[result.length - 1];
|
|
12
|
+
if (last.role === 'user' && last.content.startsWith(TOOL_RESULTS_PREFIX)) {
|
|
13
|
+
result.pop();
|
|
14
|
+
changed = true;
|
|
15
|
+
continue;
|
|
16
|
+
}
|
|
17
|
+
if (last.role === 'assistant' && TOOL_ANNOUNCE_PATTERN.test(last.content)) {
|
|
18
|
+
result.pop();
|
|
19
|
+
changed = true;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
function mergeSameRole(messages) {
|
|
26
|
+
if (messages.length === 0)
|
|
27
|
+
return [];
|
|
28
|
+
const result = [messages[0]];
|
|
29
|
+
for (let i = 1; i < messages.length; i++) {
|
|
30
|
+
const prev = result[result.length - 1];
|
|
31
|
+
const curr = messages[i];
|
|
32
|
+
if (curr.role === prev.role) {
|
|
33
|
+
result[result.length - 1] = {
|
|
34
|
+
...prev,
|
|
35
|
+
content: prev.content + '\n\n' + curr.content,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
result.push(curr);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return result;
|
|
43
|
+
}
|
|
44
|
+
export function sanitizeTranscript(messages) {
|
|
45
|
+
let result = dropEmpty(messages);
|
|
46
|
+
result = dropTrailingOrphans(result);
|
|
47
|
+
result = mergeSameRole(result);
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=sanitize-transcript.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize-transcript.js","sourceRoot":"","sources":["../src/sanitize-transcript.ts"],"names":[],"mappings":"AAEA,MAAM,mBAAmB,GAAG,gBAAgB,CAAC;AAC7C,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAE7C,SAAS,SAAS,CAAC,QAAmB;IACpC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,mBAAmB,CAAC,QAAmB;IAC9C,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC7B,IAAI,OAAO,GAAG,IAAI,CAAC;IAEnB,OAAO,OAAO,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,GAAG,KAAK,CAAC;QAChB,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEvC,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACzE,MAAM,CAAC,GAAG,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;QAED,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAC1E,MAAM,CAAC,GAAG,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,CAAC;YACf,SAAS;QACX,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,aAAa,CAAC,QAAmB;IACxC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAErC,MAAM,MAAM,GAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAExC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAEzB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG;gBAC1B,GAAG,IAAI;gBACP,OAAO,EAAE,IAAI,CAAC,OAAO,GAAG,MAAM,GAAG,IAAI,CAAC,OAAO;aAC9C,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAmB;IACpD,IAAI,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjC,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACrC,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IAC/B,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Content-aware token estimation.
|
|
3
|
+
*
|
|
4
|
+
* Replaces the naive `content.length / 4` heuristic with content-type
|
|
5
|
+
* detection that applies tuned ratios for code, CJK text, and prose.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Estimate the number of tokens in a string using content-aware heuristics.
|
|
9
|
+
*
|
|
10
|
+
* Detects the proportion of CJK characters and code syntax characters,
|
|
11
|
+
* then applies a weighted blend of per-type ratios.
|
|
12
|
+
*
|
|
13
|
+
* @returns Estimated token count (minimum 1).
|
|
14
|
+
*/
|
|
15
|
+
export declare function estimateTokens(content: string): number;
|
|
16
|
+
//# sourceMappingURL=token-estimator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-estimator.d.ts","sourceRoot":"","sources":["../src/token-estimator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAuCH;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA8BtD"}
|