@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.
Files changed (100) hide show
  1. package/dist/cogitator/initializers.d.ts +4 -0
  2. package/dist/cogitator/initializers.d.ts.map +1 -1
  3. package/dist/cogitator/initializers.js +13 -0
  4. package/dist/cogitator/initializers.js.map +1 -1
  5. package/dist/cogitator/message-builder.d.ts +8 -1
  6. package/dist/cogitator/message-builder.d.ts.map +1 -1
  7. package/dist/cogitator/message-builder.js +63 -4
  8. package/dist/cogitator/message-builder.js.map +1 -1
  9. package/dist/cogitator.d.ts.map +1 -1
  10. package/dist/cogitator.js +10 -1
  11. package/dist/cogitator.js.map +1 -1
  12. package/dist/context/context-manager.d.ts +16 -0
  13. package/dist/context/context-manager.d.ts.map +1 -0
  14. package/dist/context/context-manager.js +113 -0
  15. package/dist/context/context-manager.js.map +1 -0
  16. package/dist/context/index.d.ts +4 -0
  17. package/dist/context/index.d.ts.map +1 -0
  18. package/dist/context/index.js +3 -0
  19. package/dist/context/index.js.map +1 -0
  20. package/dist/context/strategies/hybrid.d.ts +9 -0
  21. package/dist/context/strategies/hybrid.d.ts.map +1 -0
  22. package/dist/context/strategies/hybrid.js +38 -0
  23. package/dist/context/strategies/hybrid.js.map +1 -0
  24. package/dist/context/strategies/index.d.ts +6 -0
  25. package/dist/context/strategies/index.d.ts.map +1 -0
  26. package/dist/context/strategies/index.js +6 -0
  27. package/dist/context/strategies/index.js.map +1 -0
  28. package/dist/context/strategies/sliding-window.d.ts +8 -0
  29. package/dist/context/strategies/sliding-window.d.ts.map +1 -0
  30. package/dist/context/strategies/sliding-window.js +120 -0
  31. package/dist/context/strategies/sliding-window.js.map +1 -0
  32. package/dist/context/strategies/summarize.d.ts +9 -0
  33. package/dist/context/strategies/summarize.d.ts.map +1 -0
  34. package/dist/context/strategies/summarize.js +142 -0
  35. package/dist/context/strategies/summarize.js.map +1 -0
  36. package/dist/context/strategies/token-utils.d.ts +5 -0
  37. package/dist/context/strategies/token-utils.d.ts.map +1 -0
  38. package/dist/context/strategies/token-utils.js +23 -0
  39. package/dist/context/strategies/token-utils.js.map +1 -0
  40. package/dist/context/strategies/truncate.d.ts +6 -0
  41. package/dist/context/strategies/truncate.d.ts.map +1 -0
  42. package/dist/context/strategies/truncate.js +61 -0
  43. package/dist/context/strategies/truncate.js.map +1 -0
  44. package/dist/index.d.ts +7 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +4 -0
  47. package/dist/index.js.map +1 -1
  48. package/dist/llm/bedrock.d.ts.map +1 -1
  49. package/dist/llm/bedrock.js +22 -12
  50. package/dist/llm/bedrock.js.map +1 -1
  51. package/dist/llm/ollama.d.ts.map +1 -1
  52. package/dist/llm/ollama.js +14 -8
  53. package/dist/llm/ollama.js.map +1 -1
  54. package/dist/llm/plugin.d.ts +1 -3
  55. package/dist/llm/plugin.d.ts.map +1 -1
  56. package/dist/llm/plugin.js.map +1 -1
  57. package/dist/security/patterns.js +2 -2
  58. package/dist/security/patterns.js.map +1 -1
  59. package/dist/security/prompt-injection-detector.d.ts +1 -2
  60. package/dist/security/prompt-injection-detector.d.ts.map +1 -1
  61. package/dist/security/prompt-injection-detector.js.map +1 -1
  62. package/dist/tools/audio-generate.d.ts +25 -0
  63. package/dist/tools/audio-generate.d.ts.map +1 -0
  64. package/dist/tools/audio-generate.js +82 -0
  65. package/dist/tools/audio-generate.js.map +1 -0
  66. package/dist/tools/audio-transcribe.d.ts +27 -0
  67. package/dist/tools/audio-transcribe.d.ts.map +1 -0
  68. package/dist/tools/audio-transcribe.js +71 -0
  69. package/dist/tools/audio-transcribe.js.map +1 -0
  70. package/dist/tools/datetime.d.ts +1 -1
  71. package/dist/tools/filesystem.d.ts +2 -2
  72. package/dist/tools/http.d.ts +1 -1
  73. package/dist/tools/image-analyze.d.ts +56 -0
  74. package/dist/tools/image-analyze.d.ts.map +1 -0
  75. package/dist/tools/image-analyze.js +72 -0
  76. package/dist/tools/image-analyze.js.map +1 -0
  77. package/dist/tools/image-generate.d.ts +35 -0
  78. package/dist/tools/image-generate.d.ts.map +1 -0
  79. package/dist/tools/image-generate.js +69 -0
  80. package/dist/tools/image-generate.js.map +1 -0
  81. package/dist/tools/index.d.ts +10 -6
  82. package/dist/tools/index.d.ts.map +1 -1
  83. package/dist/tools/index.js +4 -0
  84. package/dist/tools/index.js.map +1 -1
  85. package/dist/tools/random.d.ts +2 -2
  86. package/dist/tools/web-scrape.js +3 -3
  87. package/dist/tools/web-scrape.js.map +1 -1
  88. package/dist/utils/audio-fetch.d.ts +17 -0
  89. package/dist/utils/audio-fetch.d.ts.map +1 -0
  90. package/dist/utils/audio-fetch.js +103 -0
  91. package/dist/utils/audio-fetch.js.map +1 -0
  92. package/dist/utils/image-fetch.d.ts +16 -0
  93. package/dist/utils/image-fetch.d.ts.map +1 -0
  94. package/dist/utils/image-fetch.js +68 -0
  95. package/dist/utils/image-fetch.js.map +1 -0
  96. package/dist/utils/index.d.ts +2 -0
  97. package/dist/utils/index.d.ts.map +1 -1
  98. package/dist/utils/index.js +2 -0
  99. package/dist/utils/index.js.map +1 -1
  100. 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":"AAMA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjE,MAAM,cAAc,GAAG;;;CAGtB,CAAC;AAEF,MAAM,OAAO,qBAAqB;IACvB,IAAI,GAAG,gBAAyB,CAAC;IAE1C,KAAK,CAAC,QAAQ,CAAC,GAAuB;QACpC,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,GAAG,CAAC;QAE1E,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,UAAU,EAAE,CAAC;aACd,CAAC;QACJ,CAAC;QAED,MAAM,cAAc,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAErD,MAAM,cAAc,GAAc,EAAE,CAAC;QACrC,MAAM,oBAAoB,GAAc,EAAE,CAAC;QAE3C,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,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,MAAM,YAAY,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;QAC9E,MAAM,cAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,CAAC;QACxE,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC;QAE1E,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,QAAQ,EAAE,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC;gBAChD,cAAc;gBACd,gBAAgB,EAAE,cAAc;gBAChC,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,UAAU,EAAE,CAAC;aACd,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,mBAAmB,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,mBAAmB,GAAG,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;QAEvE,IAAI,mBAAmB,IAAI,GAAG,EAAE,CAAC;YAC/B,OAAO;gBACL,QAAQ,EAAE,CAAC,GAAG,cAAc,EAAE,GAAG,cAAc,CAAC;gBAChD,cAAc;gBACd,gBAAgB,EAAE,YAAY,GAAG,YAAY;gBAC7C,QAAQ,EAAE,IAAI,CAAC,IAAI;gBACnB,UAAU,EAAE,aAAa,CAAC,MAAM;aACjC,CAAC;QACJ,CAAC;QAED,IAAI,cAAsB,CAAC;QAE3B,IAAI,OAAO,IAAI,YAAY,EAAE,CAAC;YAC5B,cAAc,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;QACpF,CAAC;aAAM,CAAC;YACN,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAC1D,CAAC;QAED,MAAM,aAAa,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,aAAa,GAAG,mBAAmB,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,mBAAmB,GAAG,CAAC,CAAC;YACzC,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC7D,CAAC;QAED,MAAM,cAAc,GAAY;YAC9B,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,oCAAoC,cAAc,EAAE;SAC9D,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,GAAG,cAAc,EAAE,cAAc,EAAE,GAAG,cAAc,CAAC,CAAC;QAEtE,OAAO;YACL,QAAQ,EAAE,MAAM;YAChB,cAAc;YACd,gBAAgB,EAAE,mBAAmB,CAAC,MAAM,CAAC;YAC7C,QAAQ,EAAE,IAAI,CAAC,IAAI;YACnB,UAAU,EAAE,aAAa,CAAC,MAAM;SACjC,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,QAAmB,EAAE,OAAY,EAAE,KAAa;QAC5E,MAAM,gBAAgB,GAAG,QAAQ;aAC9B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;YACT,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;YAChF,OAAO,GAAG,CAAC,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QACjC,CAAC,CAAC;aACD,IAAI,CAAC,IAAI,CAAC,CAAC;QAEd,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;gBAClC,KAAK;gBACL,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,gBAAgB,EAAE,CAAC;gBACxE,SAAS,EAAE,GAAG;gBACd,WAAW,EAAE,GAAG;aACjB,CAAC,CAAC;YAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAEO,kBAAkB,CAAC,QAAmB;QAC5C,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAC/D,MAAM,iBAAiB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC;QAEzE,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC5E,MAAM,CAAC,IAAI,CAAC,eAAe,OAAO,EAAE,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,KAAK,MAAM,GAAG,IAAI,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAC5E,MAAM,CAAC,IAAI,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,OAAO,iCAAiC,QAAQ,CAAC,MAAM,gBAAgB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC7F,CAAC;CACF"}
@@ -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
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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":"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"}
@@ -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;AAwBxC,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;IA0HxE,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,kBAAkB;IAsB1B,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"}
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"}
@@ -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
- return content
239
- .map((part) => this.convertContentPart(part))
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
- return null;
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) {