@cogitator-ai/core 0.15.0 → 0.17.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/cogitator/initializers.d.ts +4 -0
- package/dist/cogitator/initializers.d.ts.map +1 -1
- package/dist/cogitator/initializers.js +13 -0
- package/dist/cogitator/initializers.js.map +1 -1
- package/dist/cogitator/message-builder.d.ts +8 -1
- package/dist/cogitator/message-builder.d.ts.map +1 -1
- package/dist/cogitator/message-builder.js +63 -4
- package/dist/cogitator/message-builder.js.map +1 -1
- package/dist/cogitator.d.ts.map +1 -1
- package/dist/cogitator.js +10 -1
- package/dist/cogitator.js.map +1 -1
- package/dist/context/context-manager.d.ts +16 -0
- package/dist/context/context-manager.d.ts.map +1 -0
- package/dist/context/context-manager.js +113 -0
- package/dist/context/context-manager.js.map +1 -0
- package/dist/context/index.d.ts +4 -0
- package/dist/context/index.d.ts.map +1 -0
- package/dist/context/index.js +3 -0
- package/dist/context/index.js.map +1 -0
- package/dist/context/strategies/hybrid.d.ts +9 -0
- package/dist/context/strategies/hybrid.d.ts.map +1 -0
- package/dist/context/strategies/hybrid.js +38 -0
- package/dist/context/strategies/hybrid.js.map +1 -0
- package/dist/context/strategies/index.d.ts +6 -0
- package/dist/context/strategies/index.d.ts.map +1 -0
- package/dist/context/strategies/index.js +6 -0
- package/dist/context/strategies/index.js.map +1 -0
- package/dist/context/strategies/sliding-window.d.ts +8 -0
- package/dist/context/strategies/sliding-window.d.ts.map +1 -0
- package/dist/context/strategies/sliding-window.js +120 -0
- package/dist/context/strategies/sliding-window.js.map +1 -0
- package/dist/context/strategies/summarize.d.ts +9 -0
- package/dist/context/strategies/summarize.d.ts.map +1 -0
- package/dist/context/strategies/summarize.js +142 -0
- package/dist/context/strategies/summarize.js.map +1 -0
- package/dist/context/strategies/token-utils.d.ts +5 -0
- package/dist/context/strategies/token-utils.d.ts.map +1 -0
- package/dist/context/strategies/token-utils.js +23 -0
- package/dist/context/strategies/token-utils.js.map +1 -0
- package/dist/context/strategies/truncate.d.ts +6 -0
- package/dist/context/strategies/truncate.d.ts.map +1 -0
- package/dist/context/strategies/truncate.js +61 -0
- package/dist/context/strategies/truncate.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/llm/bedrock.d.ts.map +1 -1
- package/dist/llm/bedrock.js +22 -12
- package/dist/llm/bedrock.js.map +1 -1
- package/dist/llm/ollama.d.ts.map +1 -1
- package/dist/llm/ollama.js +14 -8
- package/dist/llm/ollama.js.map +1 -1
- package/dist/llm/plugin.d.ts +1 -3
- package/dist/llm/plugin.d.ts.map +1 -1
- package/dist/llm/plugin.js.map +1 -1
- package/dist/security/patterns.js +2 -2
- package/dist/security/patterns.js.map +1 -1
- package/dist/security/prompt-injection-detector.d.ts +1 -2
- package/dist/security/prompt-injection-detector.d.ts.map +1 -1
- package/dist/security/prompt-injection-detector.js.map +1 -1
- package/dist/tools/audio-generate.d.ts +25 -0
- package/dist/tools/audio-generate.d.ts.map +1 -0
- package/dist/tools/audio-generate.js +82 -0
- package/dist/tools/audio-generate.js.map +1 -0
- package/dist/tools/audio-transcribe.d.ts +27 -0
- package/dist/tools/audio-transcribe.d.ts.map +1 -0
- package/dist/tools/audio-transcribe.js +71 -0
- package/dist/tools/audio-transcribe.js.map +1 -0
- package/dist/tools/datetime.d.ts +1 -1
- package/dist/tools/filesystem.d.ts +2 -2
- package/dist/tools/http.d.ts +1 -1
- package/dist/tools/image-analyze.d.ts +56 -0
- package/dist/tools/image-analyze.d.ts.map +1 -0
- package/dist/tools/image-analyze.js +72 -0
- package/dist/tools/image-analyze.js.map +1 -0
- package/dist/tools/image-generate.d.ts +35 -0
- package/dist/tools/image-generate.d.ts.map +1 -0
- package/dist/tools/image-generate.js +69 -0
- package/dist/tools/image-generate.js.map +1 -0
- package/dist/tools/index.d.ts +10 -6
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +4 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/random.d.ts +2 -2
- package/dist/tools/web-scrape.js +3 -3
- package/dist/tools/web-scrape.js.map +1 -1
- package/dist/utils/audio-fetch.d.ts +17 -0
- package/dist/utils/audio-fetch.d.ts.map +1 -0
- package/dist/utils/audio-fetch.js +103 -0
- package/dist/utils/audio-fetch.js.map +1 -0
- package/dist/utils/image-fetch.d.ts +16 -0
- package/dist/utils/image-fetch.d.ts.map +1 -0
- package/dist/utils/image-fetch.js +68 -0
- package/dist/utils/image-fetch.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { CompressionContext, CompressionResult, CompressionStrategyHandler } from '@cogitator-ai/types';
|
|
2
|
+
export declare class SlidingWindowStrategy implements CompressionStrategyHandler {
|
|
3
|
+
readonly name: "sliding-window";
|
|
4
|
+
compress(ctx: CompressionContext): Promise<CompressionResult>;
|
|
5
|
+
private generateSummary;
|
|
6
|
+
private createBasicSummary;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=sliding-window.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sliding-window.d.ts","sourceRoot":"","sources":["../../../src/context/strategies/sliding-window.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAQ7B,qBAAa,qBAAsB,YAAW,0BAA0B;IACtE,QAAQ,CAAC,IAAI,EAAG,gBAAgB,CAAU;IAEpC,QAAQ,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAoFrD,eAAe;IAsB7B,OAAO,CAAC,kBAAkB;CAwB3B"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { countMessagesTokens, countTokens } from './token-utils';
|
|
2
|
+
const SUMMARY_PROMPT = `Summarize the following conversation history concisely, preserving key facts, decisions, and context that would be important for continuing the conversation. Be brief but include all important details.
|
|
3
|
+
|
|
4
|
+
Conversation:
|
|
5
|
+
`;
|
|
6
|
+
export class SlidingWindowStrategy {
|
|
7
|
+
name = 'sliding-window';
|
|
8
|
+
async compress(ctx) {
|
|
9
|
+
const { messages, targetTokens, windowSize, backend, summaryModel } = ctx;
|
|
10
|
+
if (messages.length === 0) {
|
|
11
|
+
return {
|
|
12
|
+
messages: [],
|
|
13
|
+
originalTokens: 0,
|
|
14
|
+
compressedTokens: 0,
|
|
15
|
+
strategy: this.name,
|
|
16
|
+
summarized: 0,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
const originalTokens = countMessagesTokens(messages);
|
|
20
|
+
const systemMessages = [];
|
|
21
|
+
const conversationMessages = [];
|
|
22
|
+
for (const msg of messages) {
|
|
23
|
+
if (msg.role === 'system') {
|
|
24
|
+
systemMessages.push(msg);
|
|
25
|
+
}
|
|
26
|
+
else {
|
|
27
|
+
conversationMessages.push(msg);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const systemTokens = countMessagesTokens(systemMessages);
|
|
31
|
+
const effectiveWindowSize = Math.min(windowSize, conversationMessages.length);
|
|
32
|
+
const recentMessages = conversationMessages.slice(-effectiveWindowSize);
|
|
33
|
+
const olderMessages = conversationMessages.slice(0, -effectiveWindowSize);
|
|
34
|
+
if (olderMessages.length === 0) {
|
|
35
|
+
return {
|
|
36
|
+
messages: [...systemMessages, ...recentMessages],
|
|
37
|
+
originalTokens,
|
|
38
|
+
compressedTokens: originalTokens,
|
|
39
|
+
strategy: this.name,
|
|
40
|
+
summarized: 0,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
const recentTokens = countMessagesTokens(recentMessages);
|
|
44
|
+
const availableForSummary = targetTokens - systemTokens - recentTokens;
|
|
45
|
+
if (availableForSummary <= 100) {
|
|
46
|
+
return {
|
|
47
|
+
messages: [...systemMessages, ...recentMessages],
|
|
48
|
+
originalTokens,
|
|
49
|
+
compressedTokens: systemTokens + recentTokens,
|
|
50
|
+
strategy: this.name,
|
|
51
|
+
summarized: olderMessages.length,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
let summaryContent;
|
|
55
|
+
if (backend && summaryModel) {
|
|
56
|
+
summaryContent = await this.generateSummary(olderMessages, backend, summaryModel);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
summaryContent = this.createBasicSummary(olderMessages);
|
|
60
|
+
}
|
|
61
|
+
const summaryTokens = countTokens(summaryContent);
|
|
62
|
+
if (summaryTokens > availableForSummary) {
|
|
63
|
+
const maxChars = availableForSummary * 4;
|
|
64
|
+
summaryContent = summaryContent.slice(0, maxChars) + '...';
|
|
65
|
+
}
|
|
66
|
+
const summaryMessage = {
|
|
67
|
+
role: 'system',
|
|
68
|
+
content: `[Previous conversation summary]\n${summaryContent}`,
|
|
69
|
+
};
|
|
70
|
+
const result = [...systemMessages, summaryMessage, ...recentMessages];
|
|
71
|
+
return {
|
|
72
|
+
messages: result,
|
|
73
|
+
originalTokens,
|
|
74
|
+
compressedTokens: countMessagesTokens(result),
|
|
75
|
+
strategy: this.name,
|
|
76
|
+
summarized: olderMessages.length,
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
async generateSummary(messages, backend, model) {
|
|
80
|
+
const conversationText = messages
|
|
81
|
+
.map((m) => {
|
|
82
|
+
const content = typeof m.content === 'string' ? m.content : '[complex content]';
|
|
83
|
+
return `${m.role}: ${content}`;
|
|
84
|
+
})
|
|
85
|
+
.join('\n');
|
|
86
|
+
try {
|
|
87
|
+
const response = await backend.chat({
|
|
88
|
+
model,
|
|
89
|
+
messages: [{ role: 'user', content: SUMMARY_PROMPT + conversationText }],
|
|
90
|
+
maxTokens: 500,
|
|
91
|
+
temperature: 0.3,
|
|
92
|
+
});
|
|
93
|
+
return response.content;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return this.createBasicSummary(messages);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
createBasicSummary(messages) {
|
|
100
|
+
const userMessages = messages.filter((m) => m.role === 'user');
|
|
101
|
+
const assistantMessages = messages.filter((m) => m.role === 'assistant');
|
|
102
|
+
const topics = [];
|
|
103
|
+
for (const msg of userMessages.slice(-3)) {
|
|
104
|
+
const content = typeof msg.content === 'string' ? msg.content : '';
|
|
105
|
+
if (content.length > 0) {
|
|
106
|
+
const preview = content.slice(0, 100) + (content.length > 100 ? '...' : '');
|
|
107
|
+
topics.push(`User asked: ${preview}`);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
for (const msg of assistantMessages.slice(-2)) {
|
|
111
|
+
const content = typeof msg.content === 'string' ? msg.content : '';
|
|
112
|
+
if (content.length > 0) {
|
|
113
|
+
const preview = content.slice(0, 100) + (content.length > 100 ? '...' : '');
|
|
114
|
+
topics.push(`Assistant responded: ${preview}`);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
return `Earlier in this conversation (${messages.length} messages):\n${topics.join('\n')}`;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=sliding-window.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sliding-window.js","sourceRoot":"","sources":["../../../src/context/strategies/sliding-window.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CompressionContext, CompressionResult, CompressionStrategyHandler } from '@cogitator-ai/types';
|
|
2
|
+
export declare class SummarizeStrategy implements CompressionStrategyHandler {
|
|
3
|
+
readonly name: "summarize";
|
|
4
|
+
compress(ctx: CompressionContext): Promise<CompressionResult>;
|
|
5
|
+
private generateLLMSummary;
|
|
6
|
+
private formatConversation;
|
|
7
|
+
private generateFallbackSummary;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=summarize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarize.d.ts","sourceRoot":"","sources":["../../../src/context/strategies/summarize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAgB7B,qBAAa,iBAAkB,YAAW,0BAA0B;IAClE,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAU;IAE/B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;YAuFrD,kBAAkB;IA2BhC,OAAO,CAAC,kBAAkB;IAU1B,OAAO,CAAC,uBAAuB;CAuChC"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { countMessagesTokens, countTokens } from './token-utils';
|
|
2
|
+
const SUMMARY_SYSTEM_PROMPT = `You are a conversation summarizer. Your task is to create a concise but comprehensive summary of a conversation that preserves:
|
|
3
|
+
- Key facts and information shared
|
|
4
|
+
- Important decisions made
|
|
5
|
+
- User preferences and requirements mentioned
|
|
6
|
+
- Any pending questions or tasks
|
|
7
|
+
- Critical context needed to continue the conversation
|
|
8
|
+
|
|
9
|
+
Be concise but thorough. Focus on information that would be essential for continuing the conversation naturally.`;
|
|
10
|
+
const SUMMARY_USER_PROMPT = `Summarize the following conversation. Focus on preserving all important context:
|
|
11
|
+
|
|
12
|
+
`;
|
|
13
|
+
export class SummarizeStrategy {
|
|
14
|
+
name = 'summarize';
|
|
15
|
+
async compress(ctx) {
|
|
16
|
+
const { messages, targetTokens, windowSize, backend, summaryModel } = ctx;
|
|
17
|
+
if (messages.length === 0) {
|
|
18
|
+
return {
|
|
19
|
+
messages: [],
|
|
20
|
+
originalTokens: 0,
|
|
21
|
+
compressedTokens: 0,
|
|
22
|
+
strategy: this.name,
|
|
23
|
+
summarized: 0,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
const originalTokens = countMessagesTokens(messages);
|
|
27
|
+
const systemMessages = [];
|
|
28
|
+
const conversationMessages = [];
|
|
29
|
+
for (const msg of messages) {
|
|
30
|
+
if (msg.role === 'system') {
|
|
31
|
+
systemMessages.push(msg);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
conversationMessages.push(msg);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
const systemTokens = countMessagesTokens(systemMessages);
|
|
38
|
+
const keepRecent = Math.min(windowSize, Math.max(2, Math.floor(conversationMessages.length * 0.2)));
|
|
39
|
+
const recentMessages = conversationMessages.slice(-keepRecent);
|
|
40
|
+
const olderMessages = conversationMessages.slice(0, -keepRecent);
|
|
41
|
+
if (olderMessages.length === 0) {
|
|
42
|
+
return {
|
|
43
|
+
messages: [...systemMessages, ...recentMessages],
|
|
44
|
+
originalTokens,
|
|
45
|
+
compressedTokens: originalTokens,
|
|
46
|
+
strategy: this.name,
|
|
47
|
+
summarized: 0,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const recentTokens = countMessagesTokens(recentMessages);
|
|
51
|
+
const availableForSummary = targetTokens - systemTokens - recentTokens - 100;
|
|
52
|
+
if (availableForSummary <= 50) {
|
|
53
|
+
return {
|
|
54
|
+
messages: [...systemMessages, ...recentMessages],
|
|
55
|
+
originalTokens,
|
|
56
|
+
compressedTokens: systemTokens + recentTokens,
|
|
57
|
+
strategy: this.name,
|
|
58
|
+
summarized: olderMessages.length,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
let summaryContent;
|
|
62
|
+
if (backend && summaryModel) {
|
|
63
|
+
summaryContent = await this.generateLLMSummary(olderMessages, backend, summaryModel, availableForSummary);
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
summaryContent = this.generateFallbackSummary(olderMessages, availableForSummary);
|
|
67
|
+
}
|
|
68
|
+
const summaryMessage = {
|
|
69
|
+
role: 'system',
|
|
70
|
+
content: `[Conversation Summary - ${olderMessages.length} previous messages]\n\n${summaryContent}`,
|
|
71
|
+
};
|
|
72
|
+
const result = [...systemMessages, summaryMessage, ...recentMessages];
|
|
73
|
+
return {
|
|
74
|
+
messages: result,
|
|
75
|
+
originalTokens,
|
|
76
|
+
compressedTokens: countMessagesTokens(result),
|
|
77
|
+
strategy: this.name,
|
|
78
|
+
summarized: olderMessages.length,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async generateLLMSummary(messages, backend, model, maxTokens) {
|
|
82
|
+
const conversationText = this.formatConversation(messages);
|
|
83
|
+
try {
|
|
84
|
+
const targetSummaryTokens = Math.min(maxTokens, 800);
|
|
85
|
+
const response = await backend.chat({
|
|
86
|
+
model,
|
|
87
|
+
messages: [
|
|
88
|
+
{ role: 'system', content: SUMMARY_SYSTEM_PROMPT },
|
|
89
|
+
{ role: 'user', content: SUMMARY_USER_PROMPT + conversationText },
|
|
90
|
+
],
|
|
91
|
+
maxTokens: targetSummaryTokens,
|
|
92
|
+
temperature: 0.2,
|
|
93
|
+
});
|
|
94
|
+
return response.content;
|
|
95
|
+
}
|
|
96
|
+
catch {
|
|
97
|
+
return this.generateFallbackSummary(messages, maxTokens);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
formatConversation(messages) {
|
|
101
|
+
return messages
|
|
102
|
+
.map((m) => {
|
|
103
|
+
const content = typeof m.content === 'string' ? m.content : '[complex content]';
|
|
104
|
+
const role = m.role.charAt(0).toUpperCase() + m.role.slice(1);
|
|
105
|
+
return `${role}: ${content}`;
|
|
106
|
+
})
|
|
107
|
+
.join('\n\n');
|
|
108
|
+
}
|
|
109
|
+
generateFallbackSummary(messages, maxTokens) {
|
|
110
|
+
const sections = [];
|
|
111
|
+
const userMessages = messages.filter((m) => m.role === 'user');
|
|
112
|
+
const assistantMessages = messages.filter((m) => m.role === 'assistant');
|
|
113
|
+
const toolMessages = messages.filter((m) => m.role === 'tool');
|
|
114
|
+
if (userMessages.length > 0) {
|
|
115
|
+
sections.push(`User requests (${userMessages.length} messages):`);
|
|
116
|
+
for (const msg of userMessages.slice(-5)) {
|
|
117
|
+
const content = typeof msg.content === 'string' ? msg.content : '';
|
|
118
|
+
const preview = content.slice(0, 150) + (content.length > 150 ? '...' : '');
|
|
119
|
+
sections.push(` - ${preview}`);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
if (assistantMessages.length > 0) {
|
|
123
|
+
sections.push(`\nAssistant responses (${assistantMessages.length} messages):`);
|
|
124
|
+
for (const msg of assistantMessages.slice(-3)) {
|
|
125
|
+
const content = typeof msg.content === 'string' ? msg.content : '';
|
|
126
|
+
const preview = content.slice(0, 200) + (content.length > 200 ? '...' : '');
|
|
127
|
+
sections.push(` - ${preview}`);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (toolMessages.length > 0) {
|
|
131
|
+
sections.push(`\nTool interactions: ${toolMessages.length} tool calls were made`);
|
|
132
|
+
}
|
|
133
|
+
let summary = sections.join('\n');
|
|
134
|
+
const currentTokens = countTokens(summary);
|
|
135
|
+
if (currentTokens > maxTokens) {
|
|
136
|
+
const maxChars = maxTokens * 4;
|
|
137
|
+
summary = summary.slice(0, maxChars) + '\n[Summary truncated]';
|
|
138
|
+
}
|
|
139
|
+
return summary;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=summarize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"summarize.js","sourceRoot":"","sources":["../../../src/context/strategies/summarize.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Message } from '@cogitator-ai/types';
|
|
2
|
+
export declare function countTokens(text: string): number;
|
|
3
|
+
export declare function countMessageTokens(message: Message): number;
|
|
4
|
+
export declare function countMessagesTokens(messages: Message[]): number;
|
|
5
|
+
//# sourceMappingURL=token-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-utils.d.ts","sourceRoot":"","sources":["../../../src/context/strategies/token-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAenD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAGhD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAE3D;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,CAE/D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
const CHARS_PER_TOKEN = 4;
|
|
2
|
+
const MESSAGE_OVERHEAD = 4;
|
|
3
|
+
function getTextContent(content) {
|
|
4
|
+
if (typeof content === 'string') {
|
|
5
|
+
return content;
|
|
6
|
+
}
|
|
7
|
+
return content
|
|
8
|
+
.filter((part) => part.type === 'text')
|
|
9
|
+
.map((part) => part.text)
|
|
10
|
+
.join(' ');
|
|
11
|
+
}
|
|
12
|
+
export function countTokens(text) {
|
|
13
|
+
if (!text)
|
|
14
|
+
return 0;
|
|
15
|
+
return Math.ceil(text.length / CHARS_PER_TOKEN);
|
|
16
|
+
}
|
|
17
|
+
export function countMessageTokens(message) {
|
|
18
|
+
return countTokens(getTextContent(message.content)) + MESSAGE_OVERHEAD;
|
|
19
|
+
}
|
|
20
|
+
export function countMessagesTokens(messages) {
|
|
21
|
+
return messages.reduce((sum, msg) => sum + countMessageTokens(msg), 0);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=token-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../../../src/context/strategies/token-utils.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,gBAAgB,GAAG,CAAC,CAAC;AAE3B,SAAS,cAAc,CAAC,OAA2B;IACjD,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,OAAO;SACX,MAAM,CAAC,CAAC,IAAI,EAA0C,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC;SAC9E,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;SACxB,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,OAAO,WAAW,CAAC,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,gBAAgB,CAAC;AACzE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,QAAmB;IACrD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;AACzE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { CompressionContext, CompressionResult, CompressionStrategyHandler } from '@cogitator-ai/types';
|
|
2
|
+
export declare class TruncateStrategy implements CompressionStrategyHandler {
|
|
3
|
+
readonly name: "truncate";
|
|
4
|
+
compress(ctx: CompressionContext): Promise<CompressionResult>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=truncate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncate.d.ts","sourceRoot":"","sources":["../../../src/context/strategies/truncate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,0BAA0B,EAE3B,MAAM,qBAAqB,CAAC;AAG7B,qBAAa,gBAAiB,YAAW,0BAA0B;IACjE,QAAQ,CAAC,IAAI,EAAG,UAAU,CAAU;IAE9B,QAAQ,CAAC,GAAG,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAiEpE"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { countMessageTokens } from './token-utils';
|
|
2
|
+
export class TruncateStrategy {
|
|
3
|
+
name = 'truncate';
|
|
4
|
+
async compress(ctx) {
|
|
5
|
+
const { messages, targetTokens } = ctx;
|
|
6
|
+
if (messages.length === 0) {
|
|
7
|
+
return {
|
|
8
|
+
messages: [],
|
|
9
|
+
originalTokens: 0,
|
|
10
|
+
compressedTokens: 0,
|
|
11
|
+
strategy: this.name,
|
|
12
|
+
truncated: 0,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
const originalTokens = messages.reduce((sum, m) => sum + countMessageTokens(m), 0);
|
|
16
|
+
const systemMessages = [];
|
|
17
|
+
const otherMessages = [];
|
|
18
|
+
for (const msg of messages) {
|
|
19
|
+
if (msg.role === 'system') {
|
|
20
|
+
systemMessages.push(msg);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
otherMessages.push(msg);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const systemTokens = systemMessages.reduce((sum, m) => sum + countMessageTokens(m), 0);
|
|
27
|
+
const availableForHistory = targetTokens - systemTokens;
|
|
28
|
+
if (availableForHistory <= 0) {
|
|
29
|
+
return {
|
|
30
|
+
messages: systemMessages,
|
|
31
|
+
originalTokens,
|
|
32
|
+
compressedTokens: systemTokens,
|
|
33
|
+
strategy: this.name,
|
|
34
|
+
truncated: otherMessages.length,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const kept = [];
|
|
38
|
+
let usedTokens = 0;
|
|
39
|
+
for (let i = otherMessages.length - 1; i >= 0; i--) {
|
|
40
|
+
const msg = otherMessages[i];
|
|
41
|
+
const msgTokens = countMessageTokens(msg);
|
|
42
|
+
if (usedTokens + msgTokens <= availableForHistory) {
|
|
43
|
+
kept.unshift(msg);
|
|
44
|
+
usedTokens += msgTokens;
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
const result = [...systemMessages, ...kept];
|
|
51
|
+
const compressedTokens = systemTokens + usedTokens;
|
|
52
|
+
return {
|
|
53
|
+
messages: result,
|
|
54
|
+
originalTokens,
|
|
55
|
+
compressedTokens,
|
|
56
|
+
strategy: this.name,
|
|
57
|
+
truncated: otherMessages.length - kept.length,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=truncate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"truncate.js","sourceRoot":"","sources":["../../../src/context/strategies/truncate.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnD,MAAM,OAAO,gBAAgB;IAClB,IAAI,GAAG,UAAmB,CAAC;IAEpC,KAAK,CAAC,QAAQ,CAAC,GAAuB;QACpC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;QAEvC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO;gBACL,QAAQ,EAAE,EAAE;gBACZ,cAAc,EAAE,CAAC;gBACjB,gBAAgB,EAAE,CAAC;gBACnB,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,SAAS,EAAE,CAAC;aACb,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAEnF,MAAM,cAAc,GAAc,EAAE,CAAC;QACrC,MAAM,aAAa,GAAc,EAAE,CAAC;QAEpC,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC1B,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,kBAAkB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvF,MAAM,mBAAmB,GAAG,YAAY,GAAG,YAAY,CAAC;QAExD,IAAI,mBAAmB,IAAI,CAAC,EAAE,CAAC;YAC7B,OAAO;gBACL,QAAQ,EAAE,cAAc;gBACxB,cAAc;gBACd,gBAAgB,EAAE,YAAY;gBAC9B,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,SAAS,EAAE,aAAa,CAAC,MAAM;aAChC,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAc,EAAE,CAAC;QAC3B,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,IAAI,CAAC,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACnD,MAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAE1C,IAAI,UAAU,GAAG,SAAS,IAAI,mBAAmB,EAAE,CAAC;gBAClD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;gBAClB,UAAU,IAAI,SAAS,CAAC;YAC1B,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,GAAG,cAAc,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5C,MAAM,gBAAgB,GAAG,YAAY,GAAG,UAAU,CAAC;QAEnD,OAAO;YACL,QAAQ,EAAE,MAAM;YAChB,cAAc;YACd,gBAAgB;YAChB,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,SAAS,EAAE,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM;SAC9C,CAAC;IACJ,CAAC;CACF"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,10 @@ export { agentAsTool } from './agent-tool';
|
|
|
10
10
|
export type { AgentAsToolOptions, AgentToolResult } from './agent-tool';
|
|
11
11
|
export { ToolRegistry } from './registry';
|
|
12
12
|
export { calculator, datetime, builtinTools } from './tools/index';
|
|
13
|
+
export { createAnalyzeImageTool, createGenerateImageTool, createTranscribeAudioTool, createGenerateSpeechTool, } from './tools/index';
|
|
14
|
+
export type { AnalyzeImageConfig, GenerateImageConfig, TranscribeAudioConfig, TranscriptionModel, TranscriptionResult, GenerateSpeechConfig, TTSModel, TTSVoice, TTSFormat, SpeechResult, } from './tools/index';
|
|
15
|
+
export { fetchImageAsBase64, fetchAudioAsBuffer, audioInputToBuffer, isValidAudioFormat, getAudioMimeType, } from './utils/index';
|
|
16
|
+
export type { FetchedImage, FetchedAudio } from './utils/index';
|
|
13
17
|
export { Logger, getLogger, setLogger, createLogger } from './logger';
|
|
14
18
|
export type { LogLevel, LogContext, LogEntry, LoggerOptions } from './logger';
|
|
15
19
|
export { ReflectionEngine, InMemoryInsightStore } from './reflection/index';
|
|
@@ -49,4 +53,7 @@ export { PromptInjectionDetector, LocalInjectionClassifier, LLMInjectionClassifi
|
|
|
49
53
|
export type { PromptInjectionDetectorOptions } from './security/index';
|
|
50
54
|
export type { InjectionThreatType, InjectionAction, InjectionThreat, InjectionDetectionResult, PromptInjectionConfig, InjectionClassifier, InjectionPattern, } from '@cogitator-ai/types';
|
|
51
55
|
export { DEFAULT_INJECTION_CONFIG } from '@cogitator-ai/types';
|
|
56
|
+
export { ContextManager } from './context/index';
|
|
57
|
+
export { TruncateStrategy, SlidingWindowStrategy, SummarizeStrategy, HybridStrategy, } from './context/index';
|
|
58
|
+
export type { CompressionStrategy, ContextManagerConfig, CompressionResult, ContextState, CompressionContext, CompressionStrategyHandler, } from '@cogitator-ai/types';
|
|
52
59
|
//# 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;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,YAAY,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9E,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,YAAY,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAC1F,YAAY,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,qBAAqB,EACrB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,GAC5B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EACV,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,uBAAuB,EACvB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EACL,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,GACf,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,sBAAsB,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAElG,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,SAAS,EACT,SAAS,EACT,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,EACZ,cAAc,EACd,iBAAiB,GAClB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE/E,YAAY,EACV,WAAW,EACX,cAAc,EACd,IAAI,EACJ,UAAU,EACV,WAAW,EACX,UAAU,EACV,OAAO,EACP,WAAW,EACX,QAAQ,EACR,UAAU,EACV,UAAU,EACV,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,eAAe,EACf,eAAe,EACf,UAAU,EACV,SAAS,EACT,IAAI,EACJ,SAAS,EACT,SAAS,EACT,QAAQ,EACR,aAAa,EACb,WAAW,EACX,WAAW,EACX,aAAa,EACb,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,aAAa,EACb,UAAU,EACV,YAAY,EACZ,UAAU,EACV,eAAe,EACf,IAAI,EACJ,QAAQ,EACR,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,gBAAgB,EAChB,qBAAqB,EACrB,aAAa,EACb,cAAc,EACd,6BAA6B,EAC7B,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EACf,aAAa,EACb,YAAY,EACZ,UAAU,EACV,WAAW,EACX,UAAU,EACV,SAAS,EACT,QAAQ,EACR,cAAc,EACd,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAE7B,YAAY,EACV,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,uBAAuB,EACvB,YAAY,EACZ,SAAS,EACT,YAAY,EACZ,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,YAAY,EACV,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,WAAW,EACX,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,cAAc,EACd,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACX,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,GACd,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,qBAAqB,EACrB,4BAA4B,EAC5B,sBAAsB,EACtB,0BAA0B,EAC1B,sBAAsB,EACtB,iBAAiB,EACjB,WAAW,EACX,sBAAsB,EACtB,sBAAsB,EACtB,oBAAoB,EACpB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AAExB,YAAY,EACV,kBAAkB,EAClB,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,UAAU,EACV,UAAU,EACV,eAAe,EACf,WAAW,EACX,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,aAAa,EACb,eAAe,EACf,sBAAsB,EACtB,SAAS,EACT,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,aAAa,GACd,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAEhF,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,2BAA2B,EAAE,MAAM,eAAe,CAAC;AAEjE,YAAY,EACV,aAAa,EACb,cAAc,EACd,eAAe,EACf,UAAU,EACV,UAAU,EACV,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,8BAA8B,EAAE,MAAM,kBAAkB,CAAC;AAEvE,YAAY,EACV,mBAAmB,EACnB,eAAe,EACf,eAAe,EACf,wBAAwB,EACxB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,8 @@ export { tool, toolToSchema } from './tool';
|
|
|
9
9
|
export { agentAsTool } from './agent-tool';
|
|
10
10
|
export { ToolRegistry } from './registry';
|
|
11
11
|
export { calculator, datetime, builtinTools } from './tools/index';
|
|
12
|
+
export { createAnalyzeImageTool, createGenerateImageTool, createTranscribeAudioTool, createGenerateSpeechTool, } from './tools/index';
|
|
13
|
+
export { fetchImageAsBase64, fetchAudioAsBuffer, audioInputToBuffer, isValidAudioFormat, getAudioMimeType, } from './utils/index';
|
|
12
14
|
export { Logger, getLogger, setLogger, createLogger } from './logger';
|
|
13
15
|
export { ReflectionEngine, InMemoryInsightStore } from './reflection/index';
|
|
14
16
|
export { ThoughtTreeExecutor, BranchGenerator, BranchEvaluator } from './reasoning/index';
|
|
@@ -28,4 +30,6 @@ export { LangfuseExporter, createLangfuseExporter, OTLPExporter, createOTLPExpor
|
|
|
28
30
|
export { withCache, createToolCacheStorage, InMemoryToolCacheStorage, RedisToolCacheStorage, generateCacheKey, paramsToQueryString, cosineSimilarity, parseDuration, } from './cache/index';
|
|
29
31
|
export { PromptInjectionDetector, LocalInjectionClassifier, LLMInjectionClassifier, INJECTION_PATTERNS, detectEncodingThreats, detectUnicodeThreats, matchPatterns, } from './security/index';
|
|
30
32
|
export { DEFAULT_INJECTION_CONFIG } from '@cogitator-ai/types';
|
|
33
|
+
export { ContextManager } from './context/index';
|
|
34
|
+
export { TruncateStrategy, SlidingWindowStrategy, SummarizeStrategy, HybridStrategy, } from './context/index';
|
|
31
35
|
//# 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":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE1C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,GACzB,MAAM,eAAe,CAAC;AAcvB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,eAAe,CAAC;AAGvB,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAGtE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAG5E,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAG1F,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,YAAY,EACZ,oBAAoB,EACpB,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAQ1B,OAAO,EACL,UAAU,EACV,uBAAuB,EACvB,iBAAiB,EACjB,eAAe,EACf,eAAe,GAChB,MAAM,qBAAqB,CAAC;AAQ7B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,SAAS,EACT,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,qBAAqB,GACtB,MAAM,wBAAwB,CAAC;AAShC,OAAO,EACL,eAAe,EACf,YAAY,EACZ,aAAa,EACb,WAAW,EACX,cAAc,GACf,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,cAAc,EACd,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,UAAU,GACX,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,SAAS,EACT,SAAS,EACT,cAAc,EACd,sBAAsB,EACtB,YAAY,EACZ,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,eAAe,CAAC;AAUvB,OAAO,EACL,cAAc,EACd,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,GACd,MAAM,qBAAqB,CAAC;AA0D7B,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AA+B7B,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAc/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,OAAO,EACL,cAAc,EACd,eAAe,EACf,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,yBAAyB,EACzB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,wBAAwB,EACxB,0BAA0B,EAC1B,uBAAuB,EACvB,WAAW,EACX,wBAAwB,EACxB,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,sBAAsB,EACtB,aAAa,GACd,MAAM,gBAAgB,CAAC;AAiDxB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,YAAY,EACZ,kBAAkB,GACnB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,SAAS,EACT,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,GACd,MAAM,eAAe,CAAC;AAevB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,EACpB,aAAa,GACd,MAAM,kBAAkB,CAAC;AAY1B,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,GACf,MAAM,iBAAiB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bedrock.d.ts","sourceRoot":"","sources":["../../src/llm/bedrock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EAOhB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"bedrock.d.ts","sourceRoot":"","sources":["../../src/llm/bedrock.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,eAAe,EAOhB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AA2BxC,UAAU,aAAa;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,qBAAa,cAAe,SAAQ,cAAc;IAChD,QAAQ,CAAC,QAAQ,EAAG,SAAS,CAAU;IACvC,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,aAAa,CAAkD;gBAE3D,MAAM,EAAE,aAAa;YAKnB,SAAS;IA8BjB,IAAI,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAmDhD,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,cAAc,CAAC,eAAe,CAAC;YA0H1D,eAAe;YA8Cf,sBAAsB;YAStB,kBAAkB;IAoChC,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,aAAa;IAgCrB,OAAO,CAAC,aAAa;IAarB,OAAO,CAAC,YAAY;IAQpB,OAAO,CAAC,gBAAgB;CA0BzB"}
|
package/dist/llm/bedrock.js
CHANGED
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { BaseLLMBackend } from './base';
|
|
8
8
|
import { createLLMError, llmUnavailable, llmConfigError } from './errors';
|
|
9
|
+
import { fetchImageAsBase64 } from '../utils/image-fetch';
|
|
9
10
|
export class BedrockBackend extends BaseLLMBackend {
|
|
10
11
|
provider = 'bedrock';
|
|
11
12
|
config;
|
|
@@ -46,7 +47,7 @@ export class BedrockBackend extends BaseLLMBackend {
|
|
|
46
47
|
};
|
|
47
48
|
const client = await this.getClient();
|
|
48
49
|
const { ConverseCommand } = await import('@aws-sdk/client-bedrock-runtime');
|
|
49
|
-
const { system, messages } = this.convertMessages(request.messages);
|
|
50
|
+
const { system, messages } = await this.convertMessages(request.messages);
|
|
50
51
|
const input = {
|
|
51
52
|
modelId: request.model,
|
|
52
53
|
messages,
|
|
@@ -92,7 +93,7 @@ export class BedrockBackend extends BaseLLMBackend {
|
|
|
92
93
|
};
|
|
93
94
|
const client = await this.getClient();
|
|
94
95
|
const { ConverseStreamCommand } = await import('@aws-sdk/client-bedrock-runtime');
|
|
95
|
-
const { system, messages } = this.convertMessages(request.messages);
|
|
96
|
+
const { system, messages } = await this.convertMessages(request.messages);
|
|
96
97
|
const input = {
|
|
97
98
|
modelId: request.model,
|
|
98
99
|
messages,
|
|
@@ -194,7 +195,7 @@ export class BedrockBackend extends BaseLLMBackend {
|
|
|
194
195
|
}
|
|
195
196
|
}
|
|
196
197
|
}
|
|
197
|
-
convertMessages(messages) {
|
|
198
|
+
async convertMessages(messages) {
|
|
198
199
|
let system = null;
|
|
199
200
|
const bedrockMessages = [];
|
|
200
201
|
for (const msg of messages) {
|
|
@@ -205,13 +206,13 @@ export class BedrockBackend extends BaseLLMBackend {
|
|
|
205
206
|
case 'user':
|
|
206
207
|
bedrockMessages.push({
|
|
207
208
|
role: 'user',
|
|
208
|
-
content: this.convertContentToBlocks(msg.content),
|
|
209
|
+
content: await this.convertContentToBlocks(msg.content),
|
|
209
210
|
});
|
|
210
211
|
break;
|
|
211
212
|
case 'assistant':
|
|
212
213
|
bedrockMessages.push({
|
|
213
214
|
role: 'assistant',
|
|
214
|
-
content: this.convertContentToBlocks(msg.content),
|
|
215
|
+
content: await this.convertContentToBlocks(msg.content),
|
|
215
216
|
});
|
|
216
217
|
break;
|
|
217
218
|
case 'tool':
|
|
@@ -231,15 +232,14 @@ export class BedrockBackend extends BaseLLMBackend {
|
|
|
231
232
|
}
|
|
232
233
|
return { system, messages: bedrockMessages };
|
|
233
234
|
}
|
|
234
|
-
convertContentToBlocks(content) {
|
|
235
|
+
async convertContentToBlocks(content) {
|
|
235
236
|
if (typeof content === 'string') {
|
|
236
237
|
return content ? [{ text: content }] : [];
|
|
237
238
|
}
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
.filter((b) => b !== null);
|
|
239
|
+
const blocks = await Promise.all(content.map((part) => this.convertContentPart(part)));
|
|
240
|
+
return blocks.filter((b) => b !== null);
|
|
241
241
|
}
|
|
242
|
-
convertContentPart(part) {
|
|
242
|
+
async convertContentPart(part) {
|
|
243
243
|
switch (part.type) {
|
|
244
244
|
case 'text':
|
|
245
245
|
return { text: part.text };
|
|
@@ -252,8 +252,18 @@ export class BedrockBackend extends BaseLLMBackend {
|
|
|
252
252
|
},
|
|
253
253
|
},
|
|
254
254
|
};
|
|
255
|
-
case 'image_url':
|
|
256
|
-
|
|
255
|
+
case 'image_url': {
|
|
256
|
+
const fetched = await fetchImageAsBase64(part.image_url.url);
|
|
257
|
+
const format = (fetched.mediaType.split('/')[1] || 'png');
|
|
258
|
+
return {
|
|
259
|
+
image: {
|
|
260
|
+
format,
|
|
261
|
+
source: {
|
|
262
|
+
bytes: Uint8Array.from(atob(fetched.data), (c) => c.charCodeAt(0)),
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
257
267
|
}
|
|
258
268
|
}
|
|
259
269
|
getTextContent(content) {
|