@tashiscool/agents 0.1.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 (46) hide show
  1. package/README.md +186 -0
  2. package/dist/conversation.d.ts +146 -0
  3. package/dist/conversation.d.ts.map +1 -0
  4. package/dist/conversation.js +239 -0
  5. package/dist/conversation.js.map +1 -0
  6. package/dist/events.d.ts +218 -0
  7. package/dist/events.d.ts.map +1 -0
  8. package/dist/events.js +299 -0
  9. package/dist/events.js.map +1 -0
  10. package/dist/executor.d.ts +144 -0
  11. package/dist/executor.d.ts.map +1 -0
  12. package/dist/executor.js +362 -0
  13. package/dist/executor.js.map +1 -0
  14. package/dist/index.d.ts +26 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +27 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/langchain.d.ts +210 -0
  19. package/dist/langchain.d.ts.map +1 -0
  20. package/dist/langchain.js +333 -0
  21. package/dist/langchain.js.map +1 -0
  22. package/dist/mcp.d.ts +208 -0
  23. package/dist/mcp.d.ts.map +1 -0
  24. package/dist/mcp.js +266 -0
  25. package/dist/mcp.js.map +1 -0
  26. package/dist/memory.d.ts +96 -0
  27. package/dist/memory.d.ts.map +1 -0
  28. package/dist/memory.js +248 -0
  29. package/dist/memory.js.map +1 -0
  30. package/dist/oauth.d.ts +158 -0
  31. package/dist/oauth.d.ts.map +1 -0
  32. package/dist/oauth.js +344 -0
  33. package/dist/oauth.js.map +1 -0
  34. package/dist/output.d.ts +262 -0
  35. package/dist/output.d.ts.map +1 -0
  36. package/dist/output.js +249 -0
  37. package/dist/output.js.map +1 -0
  38. package/dist/session.d.ts +212 -0
  39. package/dist/session.d.ts.map +1 -0
  40. package/dist/session.js +347 -0
  41. package/dist/session.js.map +1 -0
  42. package/dist/tools.d.ts +125 -0
  43. package/dist/tools.d.ts.map +1 -0
  44. package/dist/tools.js +195 -0
  45. package/dist/tools.js.map +1 -0
  46. package/package.json +45 -0
package/dist/mcp.js ADDED
@@ -0,0 +1,266 @@
1
+ /**
2
+ * MCP Client
3
+ * Model Context Protocol client for tool registration and calling
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Mock MCP client for development/testing
8
+ */
9
+ export class MockMcpClient {
10
+ state = 'disconnected';
11
+ tools = [];
12
+ resources = [];
13
+ prompts = [];
14
+ toolHandlers = new Map();
15
+ constructor(config) {
16
+ // Config used for identification
17
+ }
18
+ /**
19
+ * Register a mock tool
20
+ */
21
+ registerTool(tool, handler) {
22
+ this.tools.push(tool);
23
+ this.toolHandlers.set(tool.name, handler);
24
+ }
25
+ /**
26
+ * Register a mock resource
27
+ */
28
+ registerResource(resource) {
29
+ this.resources.push(resource);
30
+ }
31
+ /**
32
+ * Register a mock prompt
33
+ */
34
+ registerPrompt(prompt) {
35
+ this.prompts.push(prompt);
36
+ }
37
+ getState() {
38
+ return this.state;
39
+ }
40
+ async connect() {
41
+ this.state = 'connecting';
42
+ // Simulate connection delay
43
+ await new Promise((resolve) => setTimeout(resolve, 100));
44
+ this.state = 'connected';
45
+ }
46
+ async disconnect() {
47
+ this.state = 'disconnected';
48
+ }
49
+ async listTools() {
50
+ if (this.state !== 'connected') {
51
+ throw new Error('Not connected to MCP server');
52
+ }
53
+ return [...this.tools];
54
+ }
55
+ async callTool(name, args) {
56
+ if (this.state !== 'connected') {
57
+ throw new Error('Not connected to MCP server');
58
+ }
59
+ const handler = this.toolHandlers.get(name);
60
+ if (!handler) {
61
+ return {
62
+ content: [{ type: 'text', text: `Unknown tool: ${name}` }],
63
+ isError: true,
64
+ };
65
+ }
66
+ return handler(args);
67
+ }
68
+ async listResources() {
69
+ if (this.state !== 'connected') {
70
+ throw new Error('Not connected to MCP server');
71
+ }
72
+ return [...this.resources];
73
+ }
74
+ async readResource(uri) {
75
+ if (this.state !== 'connected') {
76
+ throw new Error('Not connected to MCP server');
77
+ }
78
+ return {
79
+ content: [{ type: 'resource', uri, text: `Content of ${uri}` }],
80
+ };
81
+ }
82
+ async listPrompts() {
83
+ if (this.state !== 'connected') {
84
+ throw new Error('Not connected to MCP server');
85
+ }
86
+ return [...this.prompts];
87
+ }
88
+ async getPrompt(name, args) {
89
+ if (this.state !== 'connected') {
90
+ throw new Error('Not connected to MCP server');
91
+ }
92
+ return {
93
+ messages: [
94
+ {
95
+ role: 'user',
96
+ content: `Prompt: ${name}, Args: ${JSON.stringify(args)}`,
97
+ },
98
+ ],
99
+ };
100
+ }
101
+ }
102
+ /**
103
+ * MCP Tool adapter - converts MCP tools to standard ToolDefinition
104
+ */
105
+ export class McpToolAdapter {
106
+ client;
107
+ prefix;
108
+ constructor(client, prefix = '') {
109
+ this.client = client;
110
+ this.prefix = prefix;
111
+ }
112
+ /**
113
+ * Convert MCP tool to ToolDefinition
114
+ */
115
+ convertTool(mcpTool) {
116
+ const toolName = this.prefix
117
+ ? `${this.prefix}_${mcpTool.name}`
118
+ : mcpTool.name;
119
+ // Convert JSON Schema to Zod schema (basic conversion)
120
+ const zodSchema = this.jsonSchemaToZod(mcpTool.inputSchema);
121
+ return {
122
+ name: toolName,
123
+ description: mcpTool.description || `MCP tool: ${mcpTool.name}`,
124
+ parameters: zodSchema,
125
+ execute: async (params) => {
126
+ const result = await this.client.callTool(mcpTool.name, params);
127
+ if (result.isError) {
128
+ throw new Error(result.content.find((c) => c.type === 'text')?.text || 'MCP tool error');
129
+ }
130
+ // Extract text content
131
+ const textContent = result.content
132
+ .filter((c) => c.type === 'text')
133
+ .map((c) => c.text)
134
+ .join('\n');
135
+ return textContent || result.content;
136
+ },
137
+ };
138
+ }
139
+ /**
140
+ * Basic JSON Schema to Zod conversion
141
+ */
142
+ jsonSchemaToZod(schema) {
143
+ if (!schema || schema.type === 'object') {
144
+ const shape = {};
145
+ if (schema?.properties) {
146
+ for (const [key, propSchema] of Object.entries(schema.properties)) {
147
+ let zodProp = this.jsonSchemaToZod(propSchema);
148
+ // Check if required
149
+ if (!schema.required?.includes(key)) {
150
+ zodProp = zodProp.optional();
151
+ }
152
+ shape[key] = zodProp;
153
+ }
154
+ }
155
+ return z.object(shape);
156
+ }
157
+ switch (schema.type) {
158
+ case 'string':
159
+ if (schema.enum) {
160
+ return z.enum(schema.enum);
161
+ }
162
+ return z.string();
163
+ case 'number':
164
+ return z.number();
165
+ case 'boolean':
166
+ return z.boolean();
167
+ case 'array':
168
+ return z.array(schema.items ? this.jsonSchemaToZod(schema.items) : z.unknown());
169
+ default:
170
+ return z.unknown();
171
+ }
172
+ }
173
+ /**
174
+ * Get all tools as ToolDefinitions
175
+ */
176
+ async getTools() {
177
+ const mcpTools = await this.client.listTools();
178
+ return mcpTools.map((t) => this.convertTool(t));
179
+ }
180
+ /**
181
+ * Get a specific tool by name
182
+ */
183
+ async getTool(name) {
184
+ const tools = await this.getTools();
185
+ return tools.find((t) => t.name === name || t.name === `${this.prefix}_${name}`);
186
+ }
187
+ }
188
+ /**
189
+ * MCP Server manager for multiple servers
190
+ */
191
+ export class McpServerManager {
192
+ clients = new Map();
193
+ adapters = new Map();
194
+ /**
195
+ * Add an MCP server
196
+ */
197
+ addServer(name, client) {
198
+ this.clients.set(name, client);
199
+ this.adapters.set(name, new McpToolAdapter(client, name));
200
+ }
201
+ /**
202
+ * Get a client by name
203
+ */
204
+ getClient(name) {
205
+ return this.clients.get(name);
206
+ }
207
+ /**
208
+ * Connect to all servers
209
+ */
210
+ async connectAll() {
211
+ const promises = Array.from(this.clients.values()).map((c) => c.connect());
212
+ await Promise.all(promises);
213
+ }
214
+ /**
215
+ * Disconnect from all servers
216
+ */
217
+ async disconnectAll() {
218
+ const promises = Array.from(this.clients.values()).map((c) => c.disconnect());
219
+ await Promise.all(promises);
220
+ }
221
+ /**
222
+ * Get all tools from all servers
223
+ */
224
+ async getAllTools() {
225
+ const toolArrays = await Promise.all(Array.from(this.adapters.values()).map((a) => a.getTools()));
226
+ return toolArrays.flat();
227
+ }
228
+ /**
229
+ * Get tools from a specific server
230
+ */
231
+ async getToolsFromServer(name) {
232
+ const adapter = this.adapters.get(name);
233
+ if (!adapter) {
234
+ throw new Error(`Unknown MCP server: ${name}`);
235
+ }
236
+ return adapter.getTools();
237
+ }
238
+ /**
239
+ * List all connected servers
240
+ */
241
+ listServers() {
242
+ return Array.from(this.clients.entries()).map(([name, client]) => ({
243
+ name,
244
+ state: client.getState(),
245
+ }));
246
+ }
247
+ }
248
+ /**
249
+ * Create an MCP server manager
250
+ */
251
+ export function createMcpManager() {
252
+ return new McpServerManager();
253
+ }
254
+ /**
255
+ * Create a mock MCP client for testing
256
+ */
257
+ export function createMockMcpClient(config) {
258
+ return new MockMcpClient(config);
259
+ }
260
+ /**
261
+ * Create an MCP tool adapter
262
+ */
263
+ export function createMcpToolAdapter(client, prefix) {
264
+ return new McpToolAdapter(client, prefix);
265
+ }
266
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Conversation Memory
3
+ * Manage conversation history with token-aware windowing
4
+ */
5
+ /**
6
+ * Message role
7
+ */
8
+ export type MessageRole = 'system' | 'user' | 'assistant' | 'tool';
9
+ /**
10
+ * Base message structure
11
+ */
12
+ export interface Message {
13
+ role: MessageRole;
14
+ content: string;
15
+ name?: string;
16
+ toolCallId?: string;
17
+ metadata?: Record<string, unknown>;
18
+ }
19
+ /**
20
+ * Message with token count
21
+ */
22
+ export interface TokenizedMessage extends Message {
23
+ tokens: number;
24
+ }
25
+ /**
26
+ * Token counter function
27
+ */
28
+ export type TokenCounter = (text: string) => number;
29
+ /**
30
+ * Simple token estimation (4 chars per token)
31
+ */
32
+ export declare function estimateTokens(text: string): number;
33
+ /**
34
+ * Memory configuration
35
+ */
36
+ export interface MemoryConfig {
37
+ /** Maximum tokens to keep in memory */
38
+ maxTokens: number;
39
+ /** Token counter function */
40
+ tokenCounter?: TokenCounter;
41
+ /** System message to always include */
42
+ systemMessage?: string;
43
+ /** Number of recent messages to always keep */
44
+ preserveRecent?: number;
45
+ }
46
+ /**
47
+ * Memory statistics
48
+ */
49
+ export interface MemoryStats {
50
+ messageCount: number;
51
+ totalTokens: number;
52
+ maxTokens: number;
53
+ utilizationPercent: number;
54
+ }
55
+ /**
56
+ * Conversation memory interface
57
+ */
58
+ export interface ConversationMemory {
59
+ /** Add a message to memory */
60
+ add: (message: Message) => void;
61
+ /** Add multiple messages */
62
+ addAll: (messages: Message[]) => void;
63
+ /** Get messages within token budget */
64
+ getMessages: () => Message[];
65
+ /** Get all messages without windowing */
66
+ getAllMessages: () => Message[];
67
+ /** Clear all messages */
68
+ clear: () => void;
69
+ /** Get memory statistics */
70
+ getStats: () => MemoryStats;
71
+ /** Set system message */
72
+ setSystemMessage: (content: string) => void;
73
+ }
74
+ /**
75
+ * Create a token-aware conversation memory
76
+ */
77
+ export declare function createMemory(config: MemoryConfig): ConversationMemory;
78
+ /**
79
+ * Create a sliding window memory that keeps the last N messages
80
+ */
81
+ export declare function createSlidingWindowMemory(windowSize: number, systemMessage?: string): ConversationMemory;
82
+ /**
83
+ * Create a summary-based memory that compresses old messages
84
+ */
85
+ export interface SummaryMemoryConfig {
86
+ /** Maximum messages before summarization */
87
+ maxMessages: number;
88
+ /** Function to summarize messages */
89
+ summarizer: (messages: Message[]) => Promise<string>;
90
+ /** System message */
91
+ systemMessage?: string;
92
+ }
93
+ export declare function createSummaryMemory(config: SummaryMemoryConfig): ConversationMemory & {
94
+ summarize: () => Promise<void>;
95
+ };
96
+ //# sourceMappingURL=memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;AAEnE;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,OAAO;IAC/C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;AAEpD;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,6BAA6B;IAC7B,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,uCAAuC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,8BAA8B;IAC9B,GAAG,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAChC,4BAA4B;IAC5B,MAAM,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,IAAI,CAAC;IACtC,uCAAuC;IACvC,WAAW,EAAE,MAAM,OAAO,EAAE,CAAC;IAC7B,yCAAyC;IACzC,cAAc,EAAE,MAAM,OAAO,EAAE,CAAC;IAChC,yBAAyB;IACzB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,WAAW,CAAC;IAC5B,yBAAyB;IACzB,gBAAgB,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7C;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,kBAAkB,CAoIrE;AAED;;GAEG;AACH,wBAAgB,yBAAyB,CACvC,UAAU,EAAE,MAAM,EAClB,aAAa,CAAC,EAAE,MAAM,GACrB,kBAAkB,CA8DpB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,CAAC;IACpB,qCAAqC;IACrC,UAAU,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,qBAAqB;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,kBAAkB,GAAG;IAAE,SAAS,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAoFzD"}
package/dist/memory.js ADDED
@@ -0,0 +1,248 @@
1
+ /**
2
+ * Conversation Memory
3
+ * Manage conversation history with token-aware windowing
4
+ */
5
+ /**
6
+ * Simple token estimation (4 chars per token)
7
+ */
8
+ export function estimateTokens(text) {
9
+ return Math.ceil(text.length / 4);
10
+ }
11
+ /**
12
+ * Create a token-aware conversation memory
13
+ */
14
+ export function createMemory(config) {
15
+ const { maxTokens, preserveRecent = 2 } = config;
16
+ const tokenCounter = config.tokenCounter || estimateTokens;
17
+ let messages = [];
18
+ let systemMessage = null;
19
+ if (config.systemMessage) {
20
+ systemMessage = {
21
+ role: 'system',
22
+ content: config.systemMessage,
23
+ tokens: tokenCounter(config.systemMessage),
24
+ };
25
+ }
26
+ function add(message) {
27
+ const tokens = tokenCounter(message.content);
28
+ messages.push({ ...message, tokens });
29
+ }
30
+ function addAll(newMessages) {
31
+ for (const message of newMessages) {
32
+ add(message);
33
+ }
34
+ }
35
+ function getMessages() {
36
+ // Start with system message tokens
37
+ let availableTokens = maxTokens;
38
+ if (systemMessage) {
39
+ availableTokens -= systemMessage.tokens;
40
+ }
41
+ // Always include the most recent messages
42
+ const recentMessages = messages.slice(-preserveRecent);
43
+ const olderMessages = messages.slice(0, -preserveRecent);
44
+ // Calculate tokens for recent messages
45
+ const recentTokens = recentMessages.reduce((sum, m) => sum + m.tokens, 0);
46
+ availableTokens -= recentTokens;
47
+ // Add older messages from most recent, within budget
48
+ const includedOlder = [];
49
+ for (let i = olderMessages.length - 1; i >= 0; i--) {
50
+ const msg = olderMessages[i];
51
+ if (msg && msg.tokens <= availableTokens) {
52
+ includedOlder.unshift(msg);
53
+ availableTokens -= msg.tokens;
54
+ }
55
+ }
56
+ // Build final message list
57
+ const result = [];
58
+ if (systemMessage) {
59
+ result.push({
60
+ role: systemMessage.role,
61
+ content: systemMessage.content,
62
+ name: systemMessage.name,
63
+ });
64
+ }
65
+ for (const msg of [...includedOlder, ...recentMessages]) {
66
+ result.push({
67
+ role: msg.role,
68
+ content: msg.content,
69
+ name: msg.name,
70
+ toolCallId: msg.toolCallId,
71
+ metadata: msg.metadata,
72
+ });
73
+ }
74
+ return result;
75
+ }
76
+ function getAllMessages() {
77
+ const result = [];
78
+ if (systemMessage) {
79
+ result.push({
80
+ role: systemMessage.role,
81
+ content: systemMessage.content,
82
+ });
83
+ }
84
+ for (const msg of messages) {
85
+ result.push({
86
+ role: msg.role,
87
+ content: msg.content,
88
+ name: msg.name,
89
+ toolCallId: msg.toolCallId,
90
+ metadata: msg.metadata,
91
+ });
92
+ }
93
+ return result;
94
+ }
95
+ function clear() {
96
+ messages = [];
97
+ }
98
+ function getStats() {
99
+ const messageTokens = messages.reduce((sum, m) => sum + m.tokens, 0);
100
+ const systemTokens = systemMessage?.tokens || 0;
101
+ const totalTokens = messageTokens + systemTokens;
102
+ return {
103
+ messageCount: messages.length + (systemMessage ? 1 : 0),
104
+ totalTokens,
105
+ maxTokens,
106
+ utilizationPercent: Math.round((totalTokens / maxTokens) * 100),
107
+ };
108
+ }
109
+ function setSystemMessage(content) {
110
+ systemMessage = {
111
+ role: 'system',
112
+ content,
113
+ tokens: tokenCounter(content),
114
+ };
115
+ }
116
+ return {
117
+ add,
118
+ addAll,
119
+ getMessages,
120
+ getAllMessages,
121
+ clear,
122
+ getStats,
123
+ setSystemMessage,
124
+ };
125
+ }
126
+ /**
127
+ * Create a sliding window memory that keeps the last N messages
128
+ */
129
+ export function createSlidingWindowMemory(windowSize, systemMessage) {
130
+ let messages = [];
131
+ let system = null;
132
+ if (systemMessage) {
133
+ system = { role: 'system', content: systemMessage };
134
+ }
135
+ function add(message) {
136
+ messages.push(message);
137
+ if (messages.length > windowSize) {
138
+ messages = messages.slice(-windowSize);
139
+ }
140
+ }
141
+ function addAll(newMessages) {
142
+ for (const message of newMessages) {
143
+ add(message);
144
+ }
145
+ }
146
+ function getMessages() {
147
+ if (system) {
148
+ return [system, ...messages];
149
+ }
150
+ return [...messages];
151
+ }
152
+ function getAllMessages() {
153
+ return getMessages();
154
+ }
155
+ function clear() {
156
+ messages = [];
157
+ }
158
+ function getStats() {
159
+ const totalTokens = messages.reduce((sum, m) => sum + estimateTokens(m.content), 0);
160
+ return {
161
+ messageCount: messages.length + (system ? 1 : 0),
162
+ totalTokens,
163
+ maxTokens: windowSize * 500, // Rough estimate
164
+ utilizationPercent: Math.round((messages.length / windowSize) * 100),
165
+ };
166
+ }
167
+ function setSystemMessage(content) {
168
+ system = { role: 'system', content };
169
+ }
170
+ return {
171
+ add,
172
+ addAll,
173
+ getMessages,
174
+ getAllMessages,
175
+ clear,
176
+ getStats,
177
+ setSystemMessage,
178
+ };
179
+ }
180
+ export function createSummaryMemory(config) {
181
+ const { maxMessages, summarizer } = config;
182
+ let messages = [];
183
+ let summary = null;
184
+ let system = null;
185
+ if (config.systemMessage) {
186
+ system = { role: 'system', content: config.systemMessage };
187
+ }
188
+ function add(message) {
189
+ messages.push(message);
190
+ }
191
+ function addAll(newMessages) {
192
+ messages.push(...newMessages);
193
+ }
194
+ async function summarize() {
195
+ if (messages.length <= maxMessages)
196
+ return;
197
+ const toSummarize = messages.slice(0, -maxMessages);
198
+ const toKeep = messages.slice(-maxMessages);
199
+ const newSummary = await summarizer(toSummarize);
200
+ summary = summary ? `${summary}\n\n${newSummary}` : newSummary;
201
+ messages = toKeep;
202
+ }
203
+ function getMessages() {
204
+ const result = [];
205
+ if (system) {
206
+ result.push(system);
207
+ }
208
+ if (summary) {
209
+ result.push({
210
+ role: 'system',
211
+ content: `Previous conversation summary:\n${summary}`,
212
+ });
213
+ }
214
+ result.push(...messages);
215
+ return result;
216
+ }
217
+ function getAllMessages() {
218
+ return getMessages();
219
+ }
220
+ function clear() {
221
+ messages = [];
222
+ summary = null;
223
+ }
224
+ function getStats() {
225
+ const totalTokens = messages.reduce((sum, m) => sum + estimateTokens(m.content), 0) +
226
+ (summary ? estimateTokens(summary) : 0);
227
+ return {
228
+ messageCount: messages.length + (system ? 1 : 0) + (summary ? 1 : 0),
229
+ totalTokens,
230
+ maxTokens: maxMessages * 500,
231
+ utilizationPercent: Math.round((messages.length / maxMessages) * 100),
232
+ };
233
+ }
234
+ function setSystemMessage(content) {
235
+ system = { role: 'system', content };
236
+ }
237
+ return {
238
+ add,
239
+ addAll,
240
+ getMessages,
241
+ getAllMessages,
242
+ clear,
243
+ getStats,
244
+ setSystemMessage,
245
+ summarize,
246
+ };
247
+ }
248
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}