@mohanscodex/spectra-agent 0.4.6 → 0.4.7

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.
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent-edge-cases.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-edge-cases.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/agent-edge-cases.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,302 @@
1
+ import { describe, it, expect, vi, beforeEach } from 'vitest';
2
+ import { Agent } from '../agent.js';
3
+ import { defineTool } from '../define-tool.js';
4
+ import { z } from 'zod';
5
+ const testModel = {
6
+ id: 'edge-test-model',
7
+ name: 'Edge Test Model',
8
+ provider: 'edge-test',
9
+ api: 'edge-test',
10
+ };
11
+ beforeEach(() => {
12
+ vi.restoreAllMocks();
13
+ });
14
+ describe('Agent: registration and lifecycle', () => {
15
+ it('should register multiple tools and track them', () => {
16
+ const agent = new Agent({ model: testModel });
17
+ const toolA = defineTool({
18
+ name: 'tool_a',
19
+ description: 'A',
20
+ parameters: z.object({}),
21
+ execute: async () => ({ content: [{ type: 'text', text: 'a' }] }),
22
+ });
23
+ const toolB = defineTool({
24
+ name: 'tool_b',
25
+ description: 'B',
26
+ parameters: z.object({ x: z.number() }),
27
+ execute: async () => ({ content: [{ type: 'text', text: 'b' }] }),
28
+ });
29
+ agent.registerTool(toolA);
30
+ agent.registerTool(toolB);
31
+ expect(agent).toBeDefined();
32
+ });
33
+ it('should reset state between runs', () => {
34
+ const agent = new Agent({ model: testModel, systemPrompt: 'test' });
35
+ agent.reset();
36
+ expect(agent.messages).toEqual([]);
37
+ expect(agent.isStreaming).toBe(false);
38
+ expect(agent.errorMessage).toBeUndefined();
39
+ });
40
+ it('should restore message history', () => {
41
+ const agent = new Agent({ model: testModel });
42
+ const history = [
43
+ { role: 'user', content: 'hello', timestamp: Date.now() },
44
+ { role: 'user', content: 'world', timestamp: Date.now() },
45
+ ];
46
+ agent.restoreHistory(history);
47
+ expect(agent.messages).toHaveLength(2);
48
+ expect(agent.messages[0].content).toBe('hello');
49
+ });
50
+ it('should store and return a copy of messages', () => {
51
+ const agent = new Agent({ model: testModel });
52
+ const msgs1 = agent.messages;
53
+ msgs1.push({ role: 'user', content: 'mutated', timestamp: Date.now() });
54
+ const msgs2 = agent.messages;
55
+ expect(msgs2).toEqual([]);
56
+ });
57
+ it('should support subscribe with signal', () => {
58
+ const agent = new Agent({ model: testModel });
59
+ const listener = vi.fn();
60
+ const unsub = agent.subscribe(listener);
61
+ expect(typeof unsub).toBe('function');
62
+ unsub();
63
+ });
64
+ });
65
+ describe('Agent: steering and follow-up queuing', () => {
66
+ it('should accept steering messages as string', () => {
67
+ const agent = new Agent({ model: testModel });
68
+ expect(() => agent.steer('Be more concise')).not.toThrow();
69
+ });
70
+ it('should accept steering messages as Message object', () => {
71
+ const agent = new Agent({ model: testModel });
72
+ const msg = { role: 'user', content: 'Custom steer', timestamp: Date.now() };
73
+ expect(() => agent.steer(msg)).not.toThrow();
74
+ });
75
+ it('should accept follow-up messages as string', () => {
76
+ const agent = new Agent({ model: testModel });
77
+ expect(() => agent.followUp('One more thing')).not.toThrow();
78
+ });
79
+ it('should accept follow-up messages as Message object', () => {
80
+ const agent = new Agent({ model: testModel });
81
+ const msg = { role: 'user', content: 'Follow', timestamp: Date.now() };
82
+ expect(() => agent.followUp(msg)).not.toThrow();
83
+ });
84
+ it('should configure one-at-a-time steering mode', () => {
85
+ const agent = new Agent({ model: testModel, steeringMode: 'one-at-a-time' });
86
+ agent.steer('A');
87
+ agent.steer('B');
88
+ expect(agent).toBeDefined();
89
+ });
90
+ it('should configure all-at-once steering mode', () => {
91
+ const agent = new Agent({ model: testModel, steeringMode: 'all' });
92
+ agent.steer('A');
93
+ agent.steer('B');
94
+ expect(agent).toBeDefined();
95
+ });
96
+ it('should configure all-at-once follow-up mode', () => {
97
+ const agent = new Agent({ model: testModel, followUpMode: 'all' });
98
+ agent.followUp('A');
99
+ agent.followUp('B');
100
+ expect(agent).toBeDefined();
101
+ });
102
+ });
103
+ describe('Agent: max turns enforcement', () => {
104
+ it('should stop after maxTurns is reached', async () => {
105
+ let turnCount = 0;
106
+ const events = [];
107
+ let agentEndSeen = false;
108
+ const tool = defineTool({
109
+ name: 'loop_tool',
110
+ description: 'Causes loops',
111
+ parameters: z.object({}),
112
+ execute: async () => {
113
+ turnCount++;
114
+ return { content: [{ type: 'text', text: 'looping' }] };
115
+ },
116
+ });
117
+ const agent = new Agent({ model: testModel, systemPrompt: 'test', tools: [tool], maxTurns: 2 });
118
+ const { registerProvider, AssistantMessageEventStream } = await import('@mohanscodex/spectra-ai');
119
+ registerProvider({
120
+ name: testModel.provider,
121
+ stream: () => {
122
+ const partial = {
123
+ role: 'assistant',
124
+ content: [{ type: 'toolCall', id: 'loop-call', name: 'loop_tool', arguments: {} }],
125
+ provider: testModel.provider,
126
+ model: testModel.id,
127
+ stopReason: 'toolUse',
128
+ usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0 },
129
+ timestamp: Date.now(),
130
+ };
131
+ const tc = { type: 'toolCall', id: 'loop-call', name: 'loop_tool', arguments: {} };
132
+ const stream = new AssistantMessageEventStream();
133
+ stream.push({ type: 'start', partial });
134
+ stream.push({ type: 'toolcall_start', contentIndex: 0, partial });
135
+ stream.push({ type: 'toolcall_end', contentIndex: 0, toolCall: tc, partial });
136
+ stream.end(partial);
137
+ return stream;
138
+ },
139
+ });
140
+ for await (const ev of agent.run('test max turns')) {
141
+ events.push(ev);
142
+ if (ev.type === 'agent_end')
143
+ agentEndSeen = true;
144
+ }
145
+ expect(agentEndSeen).toBe(true);
146
+ expect(turnCount).toBeLessThanOrEqual(2);
147
+ });
148
+ it('should allow unlimited turns when maxTurns is undefined', async () => {
149
+ const events = [];
150
+ let agentEndSeen = false;
151
+ const { registerProvider, AssistantMessageEventStream } = await import('@mohanscodex/spectra-ai');
152
+ registerProvider({
153
+ name: testModel.provider,
154
+ stream: () => {
155
+ const partial = {
156
+ role: 'assistant',
157
+ content: [{ type: 'text', text: 'Done' }],
158
+ provider: testModel.provider,
159
+ model: testModel.id,
160
+ stopReason: 'stop',
161
+ usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0 },
162
+ timestamp: Date.now(),
163
+ };
164
+ const stream = new AssistantMessageEventStream();
165
+ stream.push({ type: 'start', partial });
166
+ stream.end(partial);
167
+ return stream;
168
+ },
169
+ });
170
+ const agent = new Agent({ model: testModel, systemPrompt: 'test' });
171
+ for await (const ev of agent.run('test')) {
172
+ events.push(ev);
173
+ if (ev.type === 'agent_end')
174
+ agentEndSeen = true;
175
+ }
176
+ expect(agentEndSeen).toBe(true);
177
+ });
178
+ });
179
+ describe('Agent: error handling', () => {
180
+ it('should NOT retry on non-retryable errors', async () => {
181
+ let attemptCount = 0;
182
+ const { registerProvider, AssistantMessageEventStream } = await import('@mohanscodex/spectra-ai');
183
+ registerProvider({
184
+ name: testModel.provider,
185
+ stream: () => {
186
+ attemptCount++;
187
+ const errMsg = {
188
+ role: 'assistant',
189
+ content: [],
190
+ provider: testModel.provider,
191
+ model: testModel.id,
192
+ stopReason: 'error',
193
+ usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0 },
194
+ timestamp: Date.now(),
195
+ errorMessage: '400 Bad Request',
196
+ };
197
+ const errStream = new AssistantMessageEventStream();
198
+ errStream.push({ type: 'error', reason: 'error', error: errMsg });
199
+ errStream.end(errMsg);
200
+ return errStream;
201
+ },
202
+ });
203
+ const agent = new Agent({ model: testModel, systemPrompt: 'test', maxRetryDelayMs: 10 });
204
+ for await (const _ of agent.run('test error')) {
205
+ // consume
206
+ }
207
+ expect(attemptCount).toBe(1);
208
+ });
209
+ it('should handle abort signal during run', async () => {
210
+ let attemptCount = 0;
211
+ const { registerProvider, AssistantMessageEventStream } = await import('@mohanscodex/spectra-ai');
212
+ registerProvider({
213
+ name: testModel.provider,
214
+ stream: () => {
215
+ attemptCount++;
216
+ const errMsg = {
217
+ role: 'assistant',
218
+ content: [],
219
+ provider: testModel.provider,
220
+ model: testModel.id,
221
+ stopReason: 'error',
222
+ usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0 },
223
+ timestamp: Date.now(),
224
+ errorMessage: '502 Bad Gateway',
225
+ };
226
+ const errStream = new AssistantMessageEventStream();
227
+ errStream.push({ type: 'error', reason: 'error', error: errMsg });
228
+ errStream.end(errMsg);
229
+ return errStream;
230
+ },
231
+ });
232
+ const agent = new Agent({ model: testModel, systemPrompt: 'test', maxRetryDelayMs: 1000 });
233
+ setTimeout(() => agent.abort(), 50);
234
+ for await (const _ of agent.run('test abort retry')) {
235
+ // consume
236
+ }
237
+ expect(attemptCount).toBeLessThanOrEqual(2);
238
+ });
239
+ it('should reject concurrent runs while streaming', async () => {
240
+ const { registerProvider, AssistantMessageEventStream } = await import('@mohanscodex/spectra-ai');
241
+ let running = false;
242
+ registerProvider({
243
+ name: testModel.provider,
244
+ stream: () => {
245
+ running = true;
246
+ const partial = {
247
+ role: 'assistant',
248
+ content: [{ type: 'text', text: 'Response' }],
249
+ provider: testModel.provider,
250
+ model: testModel.id,
251
+ stopReason: 'stop',
252
+ usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0 },
253
+ timestamp: Date.now(),
254
+ };
255
+ const stream = new AssistantMessageEventStream();
256
+ stream.push({ type: 'start', partial });
257
+ stream.end(partial);
258
+ return stream;
259
+ },
260
+ });
261
+ const agent = new Agent({ model: testModel, systemPrompt: 'test' });
262
+ await expect((async () => {
263
+ const run1 = agent.run('first');
264
+ const run2 = agent.run('second');
265
+ await Promise.all([
266
+ (async () => { for await (const _ of run1) { } })(),
267
+ (async () => { for await (const _ of run2) { } })(),
268
+ ]);
269
+ })()).rejects.toThrow('already processing');
270
+ });
271
+ it('should complete a simple text response', async () => {
272
+ const events = [];
273
+ let agentEndSeen = false;
274
+ const { registerProvider, AssistantMessageEventStream } = await import('@mohanscodex/spectra-ai');
275
+ registerProvider({
276
+ name: testModel.provider,
277
+ stream: () => {
278
+ const partial = {
279
+ role: 'assistant',
280
+ content: [{ type: 'text', text: 'Hello from test' }],
281
+ provider: testModel.provider,
282
+ model: testModel.id,
283
+ stopReason: 'stop',
284
+ usage: { input: 5, output: 3, cacheRead: 0, cacheWrite: 0, totalTokens: 8 },
285
+ timestamp: Date.now(),
286
+ };
287
+ const stream = new AssistantMessageEventStream();
288
+ stream.push({ type: 'start', partial });
289
+ stream.end(partial);
290
+ return stream;
291
+ },
292
+ });
293
+ const agent = new Agent({ model: testModel, systemPrompt: 'You are helpful' });
294
+ for await (const ev of agent.run('Hi')) {
295
+ events.push(ev);
296
+ if (ev.type === 'agent_end')
297
+ agentEndSeen = true;
298
+ }
299
+ expect(agentEndSeen).toBe(true);
300
+ });
301
+ });
302
+ //# sourceMappingURL=agent-edge-cases.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-edge-cases.test.js","sourceRoot":"","sources":["../../src/__tests__/agent-edge-cases.test.ts"],"names":[],"mappings":"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"}
@@ -1,70 +1,70 @@
1
- import { describe, it, expect } from "vitest";
2
- import { Agent } from "../agent.js";
1
+ import { describe, it, expect } from 'vitest';
2
+ import { Agent } from '../agent.js';
3
3
  const testModel = {
4
- id: "test-model",
5
- name: "Test Model",
6
- provider: "test",
7
- api: "test",
4
+ id: 'test-model',
5
+ name: 'Test Model',
6
+ provider: 'test',
7
+ api: 'test',
8
8
  };
9
- describe("Agent Steering Queue", () => {
10
- it("should queue steering messages", () => {
9
+ describe('Agent Steering Queue', () => {
10
+ it('should queue steering messages', () => {
11
11
  const agent = new Agent({ model: testModel });
12
- agent.steer("Be more concise");
13
- agent.steer("Use bullet points");
12
+ agent.steer('Be more concise');
13
+ agent.steer('Use bullet points');
14
14
  // Should not throw and should queue internally
15
15
  expect(agent).toBeDefined();
16
16
  });
17
- it("should accept string steering messages", () => {
17
+ it('should accept string steering messages', () => {
18
18
  const agent = new Agent({ model: testModel });
19
- expect(() => agent.steer("Hello")).not.toThrow();
19
+ expect(() => agent.steer('Hello')).not.toThrow();
20
20
  });
21
- it("should accept Message steering messages", () => {
21
+ it('should accept Message steering messages', () => {
22
22
  const agent = new Agent({ model: testModel });
23
23
  const message = {
24
- role: "user",
25
- content: "Custom steering",
24
+ role: 'user',
25
+ content: 'Custom steering',
26
26
  timestamp: Date.now(),
27
27
  };
28
28
  expect(() => agent.steer(message)).not.toThrow();
29
29
  });
30
30
  });
31
- describe("Agent Follow-Up Queue", () => {
32
- it("should queue follow-up messages", () => {
31
+ describe('Agent Follow-Up Queue', () => {
32
+ it('should queue follow-up messages', () => {
33
33
  const agent = new Agent({ model: testModel });
34
- agent.followUp("What about tomorrow?");
35
- agent.followUp("And the weekend?");
34
+ agent.followUp('What about tomorrow?');
35
+ agent.followUp('And the weekend?');
36
36
  expect(agent).toBeDefined();
37
37
  });
38
- it("should accept string follow-up messages", () => {
38
+ it('should accept string follow-up messages', () => {
39
39
  const agent = new Agent({ model: testModel });
40
- expect(() => agent.followUp("Hello")).not.toThrow();
40
+ expect(() => agent.followUp('Hello')).not.toThrow();
41
41
  });
42
- it("should accept Message follow-up messages", () => {
42
+ it('should accept Message follow-up messages', () => {
43
43
  const agent = new Agent({ model: testModel });
44
44
  const message = {
45
- role: "user",
46
- content: "Custom follow-up",
45
+ role: 'user',
46
+ content: 'Custom follow-up',
47
47
  timestamp: Date.now(),
48
48
  };
49
49
  expect(() => agent.followUp(message)).not.toThrow();
50
50
  });
51
51
  });
52
- describe("Agent Configuration", () => {
53
- it("should accept steeringMode option", () => {
52
+ describe('Agent Configuration', () => {
53
+ it('should accept steeringMode option', () => {
54
54
  const agent = new Agent({
55
55
  model: testModel,
56
- steeringMode: "all",
56
+ steeringMode: 'all',
57
57
  });
58
58
  expect(agent).toBeDefined();
59
59
  });
60
- it("should accept followUpMode option", () => {
60
+ it('should accept followUpMode option', () => {
61
61
  const agent = new Agent({
62
62
  model: testModel,
63
- followUpMode: "one-at-a-time",
63
+ followUpMode: 'one-at-a-time',
64
64
  });
65
65
  expect(agent).toBeDefined();
66
66
  });
67
- it("should accept convertToLlm hook", () => {
67
+ it('should accept convertToLlm hook', () => {
68
68
  const convertToLlm = (messages) => messages;
69
69
  const agent = new Agent({
70
70
  model: testModel,
@@ -72,7 +72,7 @@ describe("Agent Configuration", () => {
72
72
  });
73
73
  expect(agent).toBeDefined();
74
74
  });
75
- it("should accept maxRetryDelayMs option", () => {
75
+ it('should accept maxRetryDelayMs option', () => {
76
76
  const agent = new Agent({
77
77
  model: testModel,
78
78
  maxRetryDelayMs: 5000,
@@ -80,8 +80,8 @@ describe("Agent Configuration", () => {
80
80
  expect(agent).toBeDefined();
81
81
  });
82
82
  });
83
- describe("Agent Error Recovery", () => {
84
- it("should configure retry parameters", () => {
83
+ describe('Agent Error Recovery', () => {
84
+ it('should configure retry parameters', () => {
85
85
  const agent = new Agent({
86
86
  model: testModel,
87
87
  maxRetryDelayMs: 10000,
@@ -89,20 +89,20 @@ describe("Agent Error Recovery", () => {
89
89
  expect(agent).toBeDefined();
90
90
  });
91
91
  });
92
- describe("Agent Queue Integration", () => {
93
- it("should handle mixed steer and followUp calls", () => {
92
+ describe('Agent Queue Integration', () => {
93
+ it('should handle mixed steer and followUp calls', () => {
94
94
  const agent = new Agent({ model: testModel });
95
- agent.steer("First steering");
96
- agent.followUp("First follow-up");
97
- agent.steer("Second steering");
98
- agent.followUp("Second follow-up");
95
+ agent.steer('First steering');
96
+ agent.followUp('First follow-up');
97
+ agent.steer('Second steering');
98
+ agent.followUp('Second follow-up');
99
99
  expect(agent).toBeDefined();
100
100
  });
101
- it("should not throw when queuing during non-streaming state", () => {
101
+ it('should not throw when queuing during non-streaming state', () => {
102
102
  const agent = new Agent({ model: testModel });
103
103
  expect(agent.isStreaming).toBe(false);
104
- expect(() => agent.steer("test")).not.toThrow();
105
- expect(() => agent.followUp("test")).not.toThrow();
104
+ expect(() => agent.steer('test')).not.toThrow();
105
+ expect(() => agent.followUp('test')).not.toThrow();
106
106
  });
107
107
  });
108
108
  //# sourceMappingURL=agent-features.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-features.test.js","sourceRoot":"","sources":["../../src/__tests__/agent-features.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-features.test.js","sourceRoot":"","sources":["../../src/__tests__/agent-features.test.ts"],"names":[],"mappings":"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"}