@strands-agents/sdk 0.4.0 → 0.6.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/src/__fixtures__/agent-helpers.d.ts +10 -1
- package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/agent-helpers.js +13 -2
- package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
- package/dist/src/__fixtures__/metrics-helpers.d.ts +25 -0
- package/dist/src/__fixtures__/metrics-helpers.d.ts.map +1 -0
- package/dist/src/__fixtures__/metrics-helpers.js +34 -0
- package/dist/src/__fixtures__/metrics-helpers.js.map +1 -0
- package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
- package/dist/src/__fixtures__/mock-message-model.js +12 -0
- package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
- package/dist/src/__fixtures__/mock-span.d.ts +78 -0
- package/dist/src/__fixtures__/mock-span.d.ts.map +1 -0
- package/dist/src/__fixtures__/mock-span.js +93 -0
- package/dist/src/__fixtures__/mock-span.js.map +1 -0
- package/dist/src/__fixtures__/mock-storage-provider.d.ts +5 -0
- package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +1 -1
- package/dist/src/__fixtures__/mock-storage-provider.js +23 -6
- package/dist/src/__fixtures__/mock-storage-provider.js.map +1 -1
- package/dist/src/__fixtures__/slim-types.d.ts +2 -1
- package/dist/src/__fixtures__/slim-types.d.ts.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.d.ts +2 -2
- package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
- package/dist/src/__fixtures__/tool-helpers.js +4 -4
- package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
- package/dist/src/__tests__/app-state.test.d.ts +2 -0
- package/dist/src/__tests__/app-state.test.d.ts.map +1 -0
- package/dist/src/{agent/__tests__/state.test.js → __tests__/app-state.test.js} +46 -46
- package/dist/src/__tests__/app-state.test.js.map +1 -0
- package/dist/src/__tests__/mcp.test.js +129 -18
- package/dist/src/__tests__/mcp.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.test.js +119 -11
- package/dist/src/agent/__tests__/agent.test.js.map +1 -1
- package/dist/src/agent/__tests__/agent.tracer.test.d.ts +2 -0
- package/dist/src/agent/__tests__/agent.tracer.test.d.ts.map +1 -0
- package/dist/src/agent/__tests__/agent.tracer.test.js +470 -0
- package/dist/src/agent/__tests__/agent.tracer.test.js.map +1 -0
- package/dist/src/agent/agent.d.ts +79 -9
- package/dist/src/agent/agent.d.ts.map +1 -1
- package/dist/src/agent/agent.js +253 -68
- package/dist/src/agent/agent.js.map +1 -1
- package/dist/src/{agent/state.d.ts → app-state.d.ts} +7 -7
- package/dist/src/app-state.d.ts.map +1 -0
- package/dist/src/{agent/state.js → app-state.js} +6 -6
- package/dist/src/app-state.js.map +1 -0
- package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts +1 -1
- package/dist/src/conversation-manager/sliding-window-conversation-manager.js +1 -1
- package/dist/src/errors.d.ts +6 -0
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +9 -0
- package/dist/src/errors.js.map +1 -1
- package/dist/src/hooks/__tests__/events.test.js +2 -0
- package/dist/src/hooks/__tests__/events.test.js.map +1 -1
- package/dist/src/hooks/events.d.ts +16 -0
- package/dist/src/hooks/events.d.ts.map +1 -1
- package/dist/src/hooks/events.js.map +1 -1
- package/dist/src/hooks/index.d.ts +1 -1
- package/dist/src/hooks/index.d.ts.map +1 -1
- package/dist/src/index.d.ts +23 -7
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +19 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcp.d.ts +41 -0
- package/dist/src/mcp.d.ts.map +1 -1
- package/dist/src/mcp.js +60 -6
- package/dist/src/mcp.js.map +1 -1
- package/dist/src/models/__tests__/bedrock.test.js +688 -0
- package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
- package/dist/src/models/__tests__/model.test.js +113 -0
- package/dist/src/models/__tests__/model.test.js.map +1 -1
- package/dist/src/models/__tests__/streaming.test.d.ts +2 -0
- package/dist/src/models/__tests__/streaming.test.d.ts.map +1 -0
- package/dist/src/models/__tests__/streaming.test.js +50 -0
- package/dist/src/models/__tests__/streaming.test.js.map +1 -0
- package/dist/src/models/bedrock.d.ts +80 -1
- package/dist/src/models/bedrock.d.ts.map +1 -1
- package/dist/src/models/bedrock.js +214 -5
- package/dist/src/models/bedrock.js.map +1 -1
- package/dist/src/models/model.d.ts +10 -0
- package/dist/src/models/model.d.ts.map +1 -1
- package/dist/src/models/model.js +58 -2
- package/dist/src/models/model.js.map +1 -1
- package/dist/src/models/streaming.d.ts +84 -3
- package/dist/src/models/streaming.d.ts.map +1 -1
- package/dist/src/models/streaming.js +26 -0
- package/dist/src/models/streaming.js.map +1 -1
- package/dist/src/multiagent/__tests__/events.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/events.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/events.test.js +205 -0
- package/dist/src/multiagent/__tests__/events.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/graph.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/graph.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/graph.test.js +438 -0
- package/dist/src/multiagent/__tests__/graph.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/nodes.test.js +105 -9
- package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
- package/dist/src/multiagent/__tests__/queue.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/queue.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/queue.test.js +118 -0
- package/dist/src/multiagent/__tests__/queue.test.js.map +1 -0
- package/dist/src/multiagent/__tests__/swarm.test.d.ts +2 -0
- package/dist/src/multiagent/__tests__/swarm.test.d.ts.map +1 -0
- package/dist/src/multiagent/__tests__/swarm.test.js +241 -0
- package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -0
- package/dist/src/multiagent/base.d.ts +25 -0
- package/dist/src/multiagent/base.d.ts.map +1 -0
- package/dist/src/multiagent/base.js +2 -0
- package/dist/src/multiagent/base.js.map +1 -0
- package/dist/src/multiagent/edge.d.ts +36 -0
- package/dist/src/multiagent/edge.d.ts.map +1 -0
- package/dist/src/multiagent/edge.js +15 -0
- package/dist/src/multiagent/edge.js.map +1 -0
- package/dist/src/multiagent/events.d.ts +129 -4
- package/dist/src/multiagent/events.d.ts.map +1 -1
- package/dist/src/multiagent/events.js +140 -2
- package/dist/src/multiagent/events.js.map +1 -1
- package/dist/src/multiagent/graph.d.ts +125 -0
- package/dist/src/multiagent/graph.d.ts.map +1 -0
- package/dist/src/multiagent/graph.js +394 -0
- package/dist/src/multiagent/graph.js.map +1 -0
- package/dist/src/multiagent/index.d.ts +12 -6
- package/dist/src/multiagent/index.d.ts.map +1 -1
- package/dist/src/multiagent/index.js +6 -3
- package/dist/src/multiagent/index.js.map +1 -1
- package/dist/src/multiagent/nodes.d.ts +66 -16
- package/dist/src/multiagent/nodes.d.ts.map +1 -1
- package/dist/src/multiagent/nodes.js +82 -24
- package/dist/src/multiagent/nodes.js.map +1 -1
- package/dist/src/multiagent/queue.d.ts +73 -0
- package/dist/src/multiagent/queue.d.ts.map +1 -0
- package/dist/src/multiagent/queue.js +72 -0
- package/dist/src/multiagent/queue.js.map +1 -0
- package/dist/src/multiagent/state.d.ts +79 -10
- package/dist/src/multiagent/state.d.ts.map +1 -1
- package/dist/src/multiagent/state.js +101 -9
- package/dist/src/multiagent/state.js.map +1 -1
- package/dist/src/multiagent/swarm.d.ts +102 -0
- package/dist/src/multiagent/swarm.d.ts.map +1 -0
- package/dist/src/multiagent/swarm.js +238 -0
- package/dist/src/multiagent/swarm.js.map +1 -0
- package/dist/src/registry/__tests__/tool-registry.test.d.ts +2 -0
- package/dist/src/registry/__tests__/tool-registry.test.d.ts.map +1 -0
- package/dist/src/registry/__tests__/tool-registry.test.js +124 -0
- package/dist/src/registry/__tests__/tool-registry.test.js.map +1 -0
- package/dist/src/registry/tool-registry.d.ts +32 -20
- package/dist/src/registry/tool-registry.d.ts.map +1 -1
- package/dist/src/registry/tool-registry.js +60 -158
- package/dist/src/registry/tool-registry.js.map +1 -1
- package/dist/src/session/__tests__/file-storage.test.node.js +75 -15
- package/dist/src/session/__tests__/file-storage.test.node.js.map +1 -1
- package/dist/src/session/__tests__/s3-storage.test.d.ts +2 -0
- package/dist/src/session/__tests__/s3-storage.test.d.ts.map +1 -0
- package/dist/src/session/__tests__/{s3-storage.test.node.js → s3-storage.test.js} +161 -75
- package/dist/src/session/__tests__/s3-storage.test.js.map +1 -0
- package/dist/src/session/__tests__/session-manager.test.d.ts +2 -0
- package/dist/src/session/__tests__/session-manager.test.d.ts.map +1 -0
- package/dist/src/session/__tests__/session-manager.test.js +461 -0
- package/dist/src/session/__tests__/session-manager.test.js.map +1 -0
- package/dist/src/session/__tests__/validation.test.js +28 -1
- package/dist/src/session/__tests__/validation.test.js.map +1 -1
- package/dist/src/session/file-storage.d.ts +53 -27
- package/dist/src/session/file-storage.d.ts.map +1 -1
- package/dist/src/session/file-storage.js +103 -52
- package/dist/src/session/file-storage.js.map +1 -1
- package/dist/src/session/index.d.ts +6 -13
- package/dist/src/session/index.d.ts.map +1 -1
- package/dist/src/session/index.js +4 -12
- package/dist/src/session/index.js.map +1 -1
- package/dist/src/session/s3-storage.d.ts +49 -20
- package/dist/src/session/s3-storage.d.ts.map +1 -1
- package/dist/src/session/s3-storage.js +120 -35
- package/dist/src/session/s3-storage.js.map +1 -1
- package/dist/src/session/session-manager.d.ts +83 -0
- package/dist/src/session/session-manager.d.ts.map +1 -0
- package/dist/src/session/session-manager.js +122 -0
- package/dist/src/session/session-manager.js.map +1 -0
- package/dist/src/session/storage.d.ts +19 -11
- package/dist/src/session/storage.d.ts.map +1 -1
- package/dist/src/session/types.d.ts +6 -18
- package/dist/src/session/types.d.ts.map +1 -1
- package/dist/src/session/validation.d.ts +7 -0
- package/dist/src/session/validation.d.ts.map +1 -1
- package/dist/src/session/validation.js +12 -0
- package/dist/src/session/validation.js.map +1 -1
- package/dist/src/structured-output/__tests__/context.test.js +13 -13
- package/dist/src/structured-output/__tests__/context.test.js.map +1 -1
- package/dist/src/structured-output/context.js +1 -1
- package/dist/src/structured-output/context.js.map +1 -1
- package/dist/src/telemetry/__tests__/config.test.d.ts +2 -0
- package/dist/src/telemetry/__tests__/config.test.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/config.test.js +40 -0
- package/dist/src/telemetry/__tests__/config.test.js.map +1 -0
- package/dist/src/telemetry/__tests__/config.test.node.d.ts +2 -0
- package/dist/src/telemetry/__tests__/config.test.node.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/config.test.node.js +103 -0
- package/dist/src/telemetry/__tests__/config.test.node.js.map +1 -0
- package/dist/src/telemetry/__tests__/json.test.d.ts +2 -0
- package/dist/src/telemetry/__tests__/json.test.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/json.test.js +89 -0
- package/dist/src/telemetry/__tests__/json.test.js.map +1 -0
- package/dist/src/telemetry/__tests__/meter.test.d.ts +2 -0
- package/dist/src/telemetry/__tests__/meter.test.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/meter.test.js +457 -0
- package/dist/src/telemetry/__tests__/meter.test.js.map +1 -0
- package/dist/src/telemetry/__tests__/tracer.test.node.d.ts +2 -0
- package/dist/src/telemetry/__tests__/tracer.test.node.d.ts.map +1 -0
- package/dist/src/telemetry/__tests__/tracer.test.node.js +611 -0
- package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -0
- package/dist/src/telemetry/config.d.ts +82 -0
- package/dist/src/telemetry/config.d.ts.map +1 -0
- package/dist/src/telemetry/config.js +133 -0
- package/dist/src/telemetry/config.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +34 -0
- package/dist/src/telemetry/index.d.ts.map +1 -0
- package/dist/src/telemetry/index.js +33 -0
- package/dist/src/telemetry/index.js.map +1 -0
- package/dist/src/telemetry/json.d.ts +11 -0
- package/dist/src/telemetry/json.d.ts.map +1 -0
- package/dist/src/telemetry/json.js +25 -0
- package/dist/src/telemetry/json.js.map +1 -0
- package/dist/src/telemetry/meter.d.ts +277 -0
- package/dist/src/telemetry/meter.d.ts.map +1 -0
- package/dist/src/telemetry/meter.js +292 -0
- package/dist/src/telemetry/meter.js.map +1 -0
- package/dist/src/telemetry/tracer.d.ts +219 -0
- package/dist/src/telemetry/tracer.d.ts.map +1 -0
- package/dist/src/telemetry/tracer.js +610 -0
- package/dist/src/telemetry/tracer.js.map +1 -0
- package/dist/src/telemetry/types.d.ts +101 -0
- package/dist/src/telemetry/types.d.ts.map +1 -0
- package/dist/src/telemetry/types.js +5 -0
- package/dist/src/{multiagent → telemetry}/types.js.map +1 -1
- package/dist/src/tools/__tests__/tool-factory.test.d.ts +2 -0
- package/dist/src/tools/__tests__/tool-factory.test.d.ts.map +1 -0
- package/dist/src/tools/__tests__/tool-factory.test.js +98 -0
- package/dist/src/tools/__tests__/tool-factory.test.js.map +1 -0
- package/dist/src/tools/__tests__/zod-tool.test-d.js +1 -1
- package/dist/src/tools/__tests__/zod-tool.test-d.js.map +1 -1
- package/dist/src/tools/__tests__/zod-tool.test.js +3 -4
- package/dist/src/tools/__tests__/zod-tool.test.js.map +1 -1
- package/dist/src/tools/function-tool.d.ts +15 -2
- package/dist/src/tools/function-tool.d.ts.map +1 -1
- package/dist/src/tools/function-tool.js +24 -0
- package/dist/src/tools/function-tool.js.map +1 -1
- package/dist/src/tools/tool-factory.d.ts +22 -0
- package/dist/src/tools/tool-factory.d.ts.map +1 -0
- package/dist/src/tools/tool-factory.js +55 -0
- package/dist/src/tools/tool-factory.js.map +1 -0
- package/dist/src/tools/tool.d.ts +1 -1
- package/dist/src/tools/tool.js +1 -1
- package/dist/src/tools/zod-tool.d.ts +55 -52
- package/dist/src/tools/zod-tool.d.ts.map +1 -1
- package/dist/src/tools/zod-tool.js +7 -61
- package/dist/src/tools/zod-tool.js.map +1 -1
- package/dist/src/tsconfig.tsbuildinfo +1 -1
- package/dist/src/types/__tests__/agent.test.js +11 -0
- package/dist/src/types/__tests__/agent.test.js.map +1 -1
- package/dist/src/types/__tests__/citations.test.d.ts +2 -0
- package/dist/src/types/__tests__/citations.test.d.ts.map +1 -0
- package/dist/src/types/__tests__/citations.test.js +104 -0
- package/dist/src/types/__tests__/citations.test.js.map +1 -0
- package/dist/src/types/__tests__/messages.test.js +26 -0
- package/dist/src/types/__tests__/messages.test.js.map +1 -1
- package/dist/src/types/agent.d.ts +10 -3
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/agent.js +9 -0
- package/dist/src/types/agent.js.map +1 -1
- package/dist/src/types/citations.d.ts +180 -0
- package/dist/src/types/citations.d.ts.map +1 -0
- package/dist/src/types/citations.js +45 -0
- package/dist/src/types/citations.js.map +1 -0
- package/dist/src/types/messages.d.ts +9 -5
- package/dist/src/types/messages.d.ts.map +1 -1
- package/dist/src/types/messages.js +5 -1
- package/dist/src/types/messages.js.map +1 -1
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +2 -2
- package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
- package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
- package/dist/src/vended-tools/bash/bash.js +1 -2
- package/dist/src/vended-tools/bash/bash.js.map +1 -1
- package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js +4 -4
- package/dist/src/vended-tools/file_editor/__tests__/file-editor.test.node.js.map +1 -1
- package/dist/src/vended-tools/file_editor/file-editor.js +1 -1
- package/dist/src/vended-tools/file_editor/file-editor.js.map +1 -1
- package/dist/src/vended-tools/http_request/http-request.d.ts.map +1 -1
- package/dist/src/vended-tools/http_request/http-request.js +1 -2
- package/dist/src/vended-tools/http_request/http-request.js.map +1 -1
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js +2 -2
- package/dist/src/vended-tools/notebook/__tests__/notebook.test.js.map +1 -1
- package/dist/src/vended-tools/notebook/notebook.d.ts +1 -1
- package/package.json +25 -4
- package/dist/src/agent/__tests__/state.test.d.ts +0 -2
- package/dist/src/agent/__tests__/state.test.d.ts.map +0 -1
- package/dist/src/agent/__tests__/state.test.js.map +0 -1
- package/dist/src/agent/state.d.ts.map +0 -1
- package/dist/src/agent/state.js.map +0 -1
- package/dist/src/multiagent/types.d.ts +0 -5
- package/dist/src/multiagent/types.d.ts.map +0 -1
- package/dist/src/multiagent/types.js +0 -2
- package/dist/src/registry/registry.d.ts +0 -117
- package/dist/src/registry/registry.d.ts.map +0 -1
- package/dist/src/registry/registry.js +0 -298
- package/dist/src/registry/registry.js.map +0 -1
- package/dist/src/session/__tests__/s3-storage.test.node.d.ts +0 -2
- package/dist/src/session/__tests__/s3-storage.test.node.d.ts.map +0 -1
- package/dist/src/session/__tests__/s3-storage.test.node.js.map +0 -1
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { describe, expect, it } from 'vitest';
|
|
2
|
-
import {
|
|
3
|
-
describe('
|
|
2
|
+
import { AppState } from '../app-state.js';
|
|
3
|
+
describe('AppState', () => {
|
|
4
4
|
describe('constructor', () => {
|
|
5
5
|
it('creates empty state when no initial state provided', () => {
|
|
6
|
-
const state = new
|
|
6
|
+
const state = new AppState();
|
|
7
7
|
expect(state.keys()).toEqual([]);
|
|
8
8
|
});
|
|
9
9
|
it('creates state with initial values', () => {
|
|
10
|
-
const state = new
|
|
10
|
+
const state = new AppState({ key1: 'value1', key2: 42 });
|
|
11
11
|
expect(state.get('key1')).toBe('value1');
|
|
12
12
|
expect(state.get('key2')).toBe(42);
|
|
13
13
|
});
|
|
14
14
|
it('stores deep copy of initial state', () => {
|
|
15
15
|
const initial = { nested: { value: 'test' } };
|
|
16
|
-
const state = new
|
|
16
|
+
const state = new AppState(initial);
|
|
17
17
|
// Mutate original
|
|
18
18
|
initial.nested.value = 'changed';
|
|
19
19
|
// State should not be affected
|
|
@@ -21,42 +21,42 @@ describe('AgentState', () => {
|
|
|
21
21
|
});
|
|
22
22
|
it('throws error for function in initial state', () => {
|
|
23
23
|
const invalidState = { func: () => 'test', value: 'keep' };
|
|
24
|
-
expect(() => new
|
|
24
|
+
expect(() => new AppState(invalidState)).toThrow('initialState.func contains a function which cannot be serialized');
|
|
25
25
|
});
|
|
26
26
|
it('throws error for symbol in initial state', () => {
|
|
27
27
|
const sym = Symbol('test');
|
|
28
28
|
const invalidState = { sym, value: 'keep' };
|
|
29
|
-
expect(() => new
|
|
29
|
+
expect(() => new AppState(invalidState)).toThrow('initialState.sym contains a symbol which cannot be serialized');
|
|
30
30
|
});
|
|
31
31
|
it('throws error for undefined in initial state', () => {
|
|
32
32
|
const invalidState = { undef: undefined, value: 'keep' };
|
|
33
|
-
expect(() => new
|
|
33
|
+
expect(() => new AppState(invalidState)).toThrow('initialState.undef is undefined which cannot be serialized');
|
|
34
34
|
});
|
|
35
35
|
it('throws error for nested function in initial state', () => {
|
|
36
36
|
const invalidState = { nested: { func: () => 'test' } };
|
|
37
|
-
expect(() => new
|
|
37
|
+
expect(() => new AppState(invalidState)).toThrow('initialState.nested.func contains a function which cannot be serialized');
|
|
38
38
|
});
|
|
39
39
|
it('throws error for function in array in initial state', () => {
|
|
40
40
|
const invalidState = { arr: [1, () => 'test', 3] };
|
|
41
|
-
expect(() => new
|
|
41
|
+
expect(() => new AppState(invalidState)).toThrow('initialState.arr[1] contains a function which cannot be serialized');
|
|
42
42
|
});
|
|
43
43
|
});
|
|
44
44
|
describe('get', () => {
|
|
45
45
|
it('throws error when key is null or undefined', () => {
|
|
46
|
-
const state = new
|
|
46
|
+
const state = new AppState();
|
|
47
47
|
expect(() => state.get(null)).toThrow('key is required');
|
|
48
48
|
expect(() => state.get(undefined)).toThrow('key is required');
|
|
49
49
|
});
|
|
50
50
|
it('returns undefined when key does not exist', () => {
|
|
51
|
-
const state = new
|
|
51
|
+
const state = new AppState();
|
|
52
52
|
expect(state.get('nonexistent')).toBeUndefined();
|
|
53
53
|
});
|
|
54
54
|
it('returns value when key exists', () => {
|
|
55
|
-
const state = new
|
|
55
|
+
const state = new AppState({ key1: 'value1' });
|
|
56
56
|
expect(state.get('key1')).toBe('value1');
|
|
57
57
|
});
|
|
58
58
|
it('returns deep copy that cannot mutate stored state', () => {
|
|
59
|
-
const state = new
|
|
59
|
+
const state = new AppState({ nested: { value: 'test' } });
|
|
60
60
|
const retrieved = state.get('nested');
|
|
61
61
|
// Mutate retrieved value
|
|
62
62
|
retrieved.value = 'changed';
|
|
@@ -64,7 +64,7 @@ describe('AgentState', () => {
|
|
|
64
64
|
expect(state.get('nested')).toEqual({ value: 'test' });
|
|
65
65
|
});
|
|
66
66
|
it('infers correct type with generic state interface', () => {
|
|
67
|
-
const state = new
|
|
67
|
+
const state = new AppState({ user: { name: 'John', age: 30 }, count: 5, items: ['a', 'b'] });
|
|
68
68
|
// Type inference tests
|
|
69
69
|
const user = state.get('user');
|
|
70
70
|
const count = state.get('count');
|
|
@@ -74,11 +74,11 @@ describe('AgentState', () => {
|
|
|
74
74
|
expect(items).toEqual(['a', 'b']);
|
|
75
75
|
});
|
|
76
76
|
it('returns undefined for non-existent key with typed interface', () => {
|
|
77
|
-
const state = new
|
|
77
|
+
const state = new AppState({ existing: 'value' });
|
|
78
78
|
const result = state.get('existing');
|
|
79
79
|
expect(result).toBe('value');
|
|
80
80
|
// Non-existent key
|
|
81
|
-
const state2 = new
|
|
81
|
+
const state2 = new AppState();
|
|
82
82
|
const missing = state2.get('existing');
|
|
83
83
|
expect(missing).toBeUndefined();
|
|
84
84
|
// @ts-expect-error properties not on the TestsState are an error
|
|
@@ -87,42 +87,42 @@ describe('AgentState', () => {
|
|
|
87
87
|
});
|
|
88
88
|
describe('set', () => {
|
|
89
89
|
it('sets string value successfully', () => {
|
|
90
|
-
const state = new
|
|
90
|
+
const state = new AppState();
|
|
91
91
|
state.set('key1', 'value1');
|
|
92
92
|
expect(state.get('key1')).toBe('value1');
|
|
93
93
|
});
|
|
94
94
|
it('sets number value successfully', () => {
|
|
95
|
-
const state = new
|
|
95
|
+
const state = new AppState();
|
|
96
96
|
state.set('key1', 42);
|
|
97
97
|
expect(state.get('key1')).toBe(42);
|
|
98
98
|
});
|
|
99
99
|
it('sets boolean value successfully', () => {
|
|
100
|
-
const state = new
|
|
100
|
+
const state = new AppState();
|
|
101
101
|
state.set('key1', true);
|
|
102
102
|
expect(state.get('key1')).toBe(true);
|
|
103
103
|
});
|
|
104
104
|
it('sets null value successfully', () => {
|
|
105
|
-
const state = new
|
|
105
|
+
const state = new AppState();
|
|
106
106
|
state.set('key1', null);
|
|
107
107
|
expect(state.get('key1')).toBeNull();
|
|
108
108
|
});
|
|
109
109
|
it('sets object value successfully', () => {
|
|
110
|
-
const state = new
|
|
110
|
+
const state = new AppState();
|
|
111
111
|
state.set('key1', { nested: 'value' });
|
|
112
112
|
expect(state.get('key1')).toEqual({ nested: 'value' });
|
|
113
113
|
});
|
|
114
114
|
it('sets array value successfully', () => {
|
|
115
|
-
const state = new
|
|
115
|
+
const state = new AppState();
|
|
116
116
|
state.set('key1', [1, 2, 3]);
|
|
117
117
|
expect(state.get('key1')).toEqual([1, 2, 3]);
|
|
118
118
|
});
|
|
119
119
|
it('overwrites existing value', () => {
|
|
120
|
-
const state = new
|
|
120
|
+
const state = new AppState({ key1: 'old' });
|
|
121
121
|
state.set('key1', 'new');
|
|
122
122
|
expect(state.get('key1')).toBe('new');
|
|
123
123
|
});
|
|
124
124
|
it('stores deep copy that cannot mutate stored state', () => {
|
|
125
|
-
const state = new
|
|
125
|
+
const state = new AppState();
|
|
126
126
|
const value = { nested: { value: 'test' } };
|
|
127
127
|
state.set('key1', value);
|
|
128
128
|
// Mutate original
|
|
@@ -131,35 +131,35 @@ describe('AgentState', () => {
|
|
|
131
131
|
expect(state.get('key1')).toEqual({ nested: { value: 'test' } });
|
|
132
132
|
});
|
|
133
133
|
it('throws error for function in value', () => {
|
|
134
|
-
const state = new
|
|
134
|
+
const state = new AppState({ existing: 'value' });
|
|
135
135
|
const obj = { func: () => 'test', value: 'keep' };
|
|
136
136
|
expect(() => state.set('key1', obj)).toThrow('value for key "key1".func contains a function which cannot be serialized');
|
|
137
137
|
});
|
|
138
138
|
it('throws error for symbol in value', () => {
|
|
139
|
-
const state = new
|
|
139
|
+
const state = new AppState();
|
|
140
140
|
const sym = Symbol('test');
|
|
141
141
|
expect(() => state.set('key1', { sym })).toThrow('value for key "key1".sym contains a symbol which cannot be serialized');
|
|
142
142
|
});
|
|
143
143
|
it('throws error for nested function in value', () => {
|
|
144
|
-
const state = new
|
|
144
|
+
const state = new AppState();
|
|
145
145
|
const obj = { nested: { func: () => 'test' } };
|
|
146
146
|
expect(() => state.set('key1', obj)).toThrow('value for key "key1".nested.func contains a function which cannot be serialized');
|
|
147
147
|
});
|
|
148
148
|
it('throws error for function in array', () => {
|
|
149
|
-
const state = new
|
|
149
|
+
const state = new AppState();
|
|
150
150
|
const arr = [1, () => 'test', 3];
|
|
151
151
|
expect(() => state.set('key1', arr)).toThrow('value for key "key1"[1] contains a function which cannot be serialized');
|
|
152
152
|
});
|
|
153
153
|
it('throws error for top-level symbol values', () => {
|
|
154
|
-
const state = new
|
|
154
|
+
const state = new AppState();
|
|
155
155
|
expect(() => state.set('key1', Symbol('test'))).toThrow('value for key "key1" contains a symbol which cannot be serialized');
|
|
156
156
|
});
|
|
157
157
|
it('throws error for top-level undefined values', () => {
|
|
158
|
-
const state = new
|
|
158
|
+
const state = new AppState();
|
|
159
159
|
expect(() => state.set('key1', undefined)).toThrow('value for key "key1" is undefined which cannot be serialized');
|
|
160
160
|
});
|
|
161
161
|
it('accepts typed value with generic state interface', () => {
|
|
162
|
-
const state = new
|
|
162
|
+
const state = new AppState();
|
|
163
163
|
state.set('user', { name: 'Alice', age: 25 });
|
|
164
164
|
state.set('count', 10);
|
|
165
165
|
expect(state.get('user')).toEqual({ name: 'Alice', age: 25 });
|
|
@@ -170,17 +170,17 @@ describe('AgentState', () => {
|
|
|
170
170
|
});
|
|
171
171
|
describe('delete', () => {
|
|
172
172
|
it('removes existing key', () => {
|
|
173
|
-
const state = new
|
|
173
|
+
const state = new AppState({ key1: 'value1', key2: 'value2' });
|
|
174
174
|
state.delete('key1');
|
|
175
175
|
expect(state.get('key1')).toBeUndefined();
|
|
176
176
|
expect(state.get('key2')).toBe('value2');
|
|
177
177
|
});
|
|
178
178
|
it('does not throw error for non-existent key', () => {
|
|
179
|
-
const state = new
|
|
179
|
+
const state = new AppState();
|
|
180
180
|
expect(() => state.delete('nonexistent')).not.toThrow();
|
|
181
181
|
});
|
|
182
182
|
it('supports typed usage with generic state interface', () => {
|
|
183
|
-
const state = new
|
|
183
|
+
const state = new AppState({ user: { name: 'Alice' }, count: 5 });
|
|
184
184
|
// Typed delete
|
|
185
185
|
state.delete('user');
|
|
186
186
|
expect(state.get('user')).toBeUndefined();
|
|
@@ -189,39 +189,39 @@ describe('AgentState', () => {
|
|
|
189
189
|
});
|
|
190
190
|
describe('clear', () => {
|
|
191
191
|
it('removes all values', () => {
|
|
192
|
-
const state = new
|
|
192
|
+
const state = new AppState({ key1: 'value1', key2: 'value2' });
|
|
193
193
|
state.clear();
|
|
194
194
|
expect(state.keys()).toEqual([]);
|
|
195
195
|
expect(state.get('key1')).toBeUndefined();
|
|
196
196
|
expect(state.get('key2')).toBeUndefined();
|
|
197
197
|
});
|
|
198
198
|
it('works on empty state', () => {
|
|
199
|
-
const state = new
|
|
199
|
+
const state = new AppState();
|
|
200
200
|
expect(() => state.clear()).not.toThrow();
|
|
201
201
|
expect(state.keys()).toEqual([]);
|
|
202
202
|
});
|
|
203
203
|
});
|
|
204
204
|
describe('getAll', () => {
|
|
205
205
|
it('returns object with all state', () => {
|
|
206
|
-
const state = new
|
|
206
|
+
const state = new AppState({ key1: 'value1', key2: 42 });
|
|
207
207
|
expect(state.getAll()).toEqual({ key1: 'value1', key2: 42 });
|
|
208
208
|
});
|
|
209
209
|
it('returns empty object for empty state', () => {
|
|
210
|
-
const state = new
|
|
210
|
+
const state = new AppState();
|
|
211
211
|
expect(state.getAll()).toEqual({});
|
|
212
212
|
});
|
|
213
213
|
});
|
|
214
214
|
describe('keys', () => {
|
|
215
215
|
it('returns array of all keys', () => {
|
|
216
|
-
const state = new
|
|
216
|
+
const state = new AppState({ key1: 'value1', key2: 'value2' });
|
|
217
217
|
expect(state.keys().sort()).toEqual(['key1', 'key2']);
|
|
218
218
|
});
|
|
219
219
|
it('returns empty array for empty state', () => {
|
|
220
|
-
const state = new
|
|
220
|
+
const state = new AppState();
|
|
221
221
|
expect(state.keys()).toEqual([]);
|
|
222
222
|
});
|
|
223
223
|
it('returns new array each time', () => {
|
|
224
|
-
const state = new
|
|
224
|
+
const state = new AppState({ key1: 'value1' });
|
|
225
225
|
const keys1 = state.keys();
|
|
226
226
|
const keys2 = state.keys();
|
|
227
227
|
expect(keys1).not.toBe(keys2);
|
|
@@ -229,22 +229,22 @@ describe('AgentState', () => {
|
|
|
229
229
|
});
|
|
230
230
|
describe('toJSON', () => {
|
|
231
231
|
it('returns deep copy of state', () => {
|
|
232
|
-
const state = new
|
|
232
|
+
const state = new AppState({ key1: 'value1', nested: { deep: true } });
|
|
233
233
|
const json = state.toJSON();
|
|
234
234
|
expect(json).toEqual({ key1: 'value1', nested: { deep: true } });
|
|
235
235
|
});
|
|
236
236
|
});
|
|
237
237
|
describe('loadStateFromJson', () => {
|
|
238
238
|
it('replaces state with json data', () => {
|
|
239
|
-
const state = new
|
|
239
|
+
const state = new AppState({ old: 'data' });
|
|
240
240
|
state.loadStateFromJson({ new: 'data', count: 42 });
|
|
241
241
|
expect(state.getAll()).toEqual({ new: 'data', count: 42 });
|
|
242
242
|
});
|
|
243
243
|
it('clears state when given non-object', () => {
|
|
244
|
-
const state = new
|
|
244
|
+
const state = new AppState({ key: 'value' });
|
|
245
245
|
state.loadStateFromJson(null);
|
|
246
246
|
expect(state.getAll()).toEqual({});
|
|
247
247
|
});
|
|
248
248
|
});
|
|
249
249
|
});
|
|
250
|
-
//# sourceMappingURL=state.test.js.map
|
|
250
|
+
//# sourceMappingURL=app-state.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-state.test.js","sourceRoot":"","sources":["../../../src/__tests__/app-state.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
1
|
+
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
2
2
|
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
3
3
|
import { McpClient } from '../mcp.js';
|
|
4
4
|
import { McpTool } from '../tools/mcp-tool.js';
|
|
5
5
|
import { JsonBlock } from '../types/messages.js';
|
|
6
|
+
import { context, propagation, trace, TraceFlags } from '@opentelemetry/api';
|
|
6
7
|
/**
|
|
7
8
|
* Helper to create a mock async generator that yields a result message.
|
|
8
9
|
* This simulates the behavior of callToolStream returning a stream that ends with a result.
|
|
@@ -18,6 +19,7 @@ vi.mock('@modelcontextprotocol/sdk/client/index.js', () => ({
|
|
|
18
19
|
connect: vi.fn(),
|
|
19
20
|
close: vi.fn(),
|
|
20
21
|
listTools: vi.fn(),
|
|
22
|
+
callTool: vi.fn(),
|
|
21
23
|
experimental: {
|
|
22
24
|
tasks: {
|
|
23
25
|
callToolStream: vi.fn(),
|
|
@@ -27,10 +29,8 @@ vi.mock('@modelcontextprotocol/sdk/client/index.js', () => ({
|
|
|
27
29
|
}),
|
|
28
30
|
}));
|
|
29
31
|
vi.mock('../tools/tool.js', () => ({
|
|
30
|
-
// Mock the abstract base class
|
|
31
32
|
Tool: class {
|
|
32
33
|
},
|
|
33
|
-
// Mock helper to return a valid ToolResultBlock structure without prepending "Error: "
|
|
34
34
|
createErrorResult: (err, toolUseId) => ({
|
|
35
35
|
type: 'toolResultBlock',
|
|
36
36
|
status: 'error',
|
|
@@ -38,20 +38,36 @@ vi.mock('../tools/tool.js', () => ({
|
|
|
38
38
|
content: [{ type: 'textBlock', text: err instanceof Error ? err.message : String(err) }],
|
|
39
39
|
}),
|
|
40
40
|
}));
|
|
41
|
-
vi.mock('../../__fixtures__/environment.js', () => ({ isNode: true }));
|
|
42
41
|
/**
|
|
43
42
|
* Executes a tool stream to completion and returns the final result.
|
|
44
|
-
* We use a Generic <T> and cast the return value to ensure TypeScript
|
|
45
|
-
* knows the result is defined (and matches the Tool's return type).
|
|
46
43
|
*/
|
|
47
44
|
async function runTool(gen) {
|
|
48
45
|
let result = await gen.next();
|
|
49
46
|
while (!result.done) {
|
|
50
47
|
result = await gen.next();
|
|
51
48
|
}
|
|
52
|
-
// Force cast because we know our McpTool always returns a value when done
|
|
53
49
|
return result.value;
|
|
54
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Mock an active span with a valid trace ID via trace.getSpan,
|
|
53
|
+
* and stub propagation.inject to populate the carrier with a traceparent.
|
|
54
|
+
*/
|
|
55
|
+
function mockActiveSpan(traceId = '1234567890abcdef1234567890abcdef', traceFlags = TraceFlags.SAMPLED) {
|
|
56
|
+
const mockSpan = {
|
|
57
|
+
spanContext: () => ({
|
|
58
|
+
traceId,
|
|
59
|
+
spanId: '1234567890abcdef',
|
|
60
|
+
traceFlags,
|
|
61
|
+
}),
|
|
62
|
+
};
|
|
63
|
+
vi.spyOn(trace, 'getSpan').mockReturnValue(mockSpan);
|
|
64
|
+
vi.spyOn(propagation, 'inject').mockImplementation((_context, carrier) => {
|
|
65
|
+
if (carrier && typeof carrier === 'object') {
|
|
66
|
+
;
|
|
67
|
+
carrier.traceparent = `00-${traceId}-1234567890abcdef-01`;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
}
|
|
55
71
|
const mockTransport = {
|
|
56
72
|
connect: vi.fn(),
|
|
57
73
|
close: vi.fn(),
|
|
@@ -61,6 +77,9 @@ describe('MCP Integration', () => {
|
|
|
61
77
|
beforeEach(() => {
|
|
62
78
|
vi.clearAllMocks();
|
|
63
79
|
});
|
|
80
|
+
afterEach(() => {
|
|
81
|
+
vi.restoreAllMocks();
|
|
82
|
+
});
|
|
64
83
|
describe('McpClient', () => {
|
|
65
84
|
let client;
|
|
66
85
|
let sdkClientMock;
|
|
@@ -74,6 +93,70 @@ describe('MCP Integration', () => {
|
|
|
74
93
|
it('initializes SDK client with correct configuration', () => {
|
|
75
94
|
expect(Client).toHaveBeenCalledWith({ name: 'TestApp', version: '0.0.1' });
|
|
76
95
|
});
|
|
96
|
+
it('injects trace context into tool arguments when active span exists', async () => {
|
|
97
|
+
mockActiveSpan();
|
|
98
|
+
const tool = new McpTool({ name: 'calc', description: '', inputSchema: {}, client });
|
|
99
|
+
sdkClientMock.callTool.mockResolvedValue({ content: [] });
|
|
100
|
+
await client.callTool(tool, { op: 'add' });
|
|
101
|
+
const callArgs = sdkClientMock.callTool.mock.calls[0][0];
|
|
102
|
+
expect(callArgs.arguments).toStrictEqual({
|
|
103
|
+
op: 'add',
|
|
104
|
+
_meta: { traceparent: '00-1234567890abcdef1234567890abcdef-1234567890abcdef-01' },
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
it('merges trace context with existing _meta field', async () => {
|
|
108
|
+
mockActiveSpan();
|
|
109
|
+
const tool = new McpTool({ name: 'calc', description: '', inputSchema: {}, client });
|
|
110
|
+
sdkClientMock.callTool.mockResolvedValue({ content: [] });
|
|
111
|
+
await client.callTool(tool, { op: 'add', _meta: { progressToken: 'tok-1' } });
|
|
112
|
+
const callArgs = sdkClientMock.callTool.mock.calls[0][0];
|
|
113
|
+
expect(callArgs.arguments).toStrictEqual({
|
|
114
|
+
op: 'add',
|
|
115
|
+
_meta: {
|
|
116
|
+
progressToken: 'tok-1',
|
|
117
|
+
traceparent: '00-1234567890abcdef1234567890abcdef-1234567890abcdef-01',
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
it('passes args unchanged when no active span exists', async () => {
|
|
122
|
+
const tool = new McpTool({ name: 'calc', description: '', inputSchema: {}, client });
|
|
123
|
+
sdkClientMock.callTool.mockResolvedValue({ content: [] });
|
|
124
|
+
await client.callTool(tool, { op: 'add' });
|
|
125
|
+
const callArgs = sdkClientMock.callTool.mock.calls[0][0];
|
|
126
|
+
expect(callArgs.arguments).toStrictEqual({ op: 'add' });
|
|
127
|
+
});
|
|
128
|
+
it('passes args unchanged when span has empty trace ID', async () => {
|
|
129
|
+
mockActiveSpan('', TraceFlags.NONE);
|
|
130
|
+
const tool = new McpTool({ name: 'calc', description: '', inputSchema: {}, client });
|
|
131
|
+
sdkClientMock.callTool.mockResolvedValue({ content: [] });
|
|
132
|
+
await client.callTool(tool, { op: 'add' });
|
|
133
|
+
const callArgs = sdkClientMock.callTool.mock.calls[0][0];
|
|
134
|
+
expect(callArgs.arguments).toStrictEqual({ op: 'add' });
|
|
135
|
+
});
|
|
136
|
+
it('passes args unchanged when context injection fails', async () => {
|
|
137
|
+
vi.spyOn(context, 'active').mockImplementation(() => {
|
|
138
|
+
throw new Error('Context error');
|
|
139
|
+
});
|
|
140
|
+
const tool = new McpTool({ name: 'calc', description: '', inputSchema: {}, client });
|
|
141
|
+
sdkClientMock.callTool.mockResolvedValue({ content: [] });
|
|
142
|
+
await client.callTool(tool, { op: 'add' });
|
|
143
|
+
const callArgs = sdkClientMock.callTool.mock.calls[0][0];
|
|
144
|
+
expect(callArgs.arguments).toStrictEqual({ op: 'add' });
|
|
145
|
+
});
|
|
146
|
+
it('skips trace context injection when disableMcpInstrumentation is true', async () => {
|
|
147
|
+
mockActiveSpan();
|
|
148
|
+
const noInstrClient = new McpClient({
|
|
149
|
+
applicationName: 'TestApp',
|
|
150
|
+
transport: mockTransport,
|
|
151
|
+
disableMcpInstrumentation: true,
|
|
152
|
+
});
|
|
153
|
+
const noInstrSdkMock = vi.mocked(Client).mock.results.at(-1).value;
|
|
154
|
+
noInstrSdkMock.callTool.mockResolvedValue({ content: [] });
|
|
155
|
+
const tool = new McpTool({ name: 'calc', description: '', inputSchema: {}, client: noInstrClient });
|
|
156
|
+
await noInstrClient.callTool(tool, { op: 'add' });
|
|
157
|
+
const callArgs = noInstrSdkMock.callTool.mock.calls[0][0];
|
|
158
|
+
expect(callArgs.arguments).toStrictEqual({ op: 'add' });
|
|
159
|
+
});
|
|
77
160
|
it('manages connection state lazily', async () => {
|
|
78
161
|
await client.connect();
|
|
79
162
|
expect(sdkClientMock.connect).toHaveBeenCalledTimes(1);
|
|
@@ -96,15 +179,44 @@ describe('MCP Integration', () => {
|
|
|
96
179
|
expect(tools[0]).toBeInstanceOf(McpTool);
|
|
97
180
|
expect(tools[0].name).toBe('weather');
|
|
98
181
|
});
|
|
99
|
-
it('
|
|
182
|
+
it('uses callTool when tasksConfig is undefined (default)', async () => {
|
|
100
183
|
const tool = new McpTool({ name: 'calc', description: '', inputSchema: {}, client });
|
|
101
|
-
sdkClientMock.
|
|
184
|
+
sdkClientMock.callTool.mockResolvedValue({ content: [] });
|
|
102
185
|
await client.callTool(tool, { op: 'add' });
|
|
103
186
|
expect(sdkClientMock.connect).toHaveBeenCalled();
|
|
104
|
-
expect(sdkClientMock.
|
|
187
|
+
expect(sdkClientMock.callTool).toHaveBeenCalledWith({
|
|
105
188
|
name: 'calc',
|
|
106
189
|
arguments: { op: 'add' },
|
|
107
190
|
});
|
|
191
|
+
expect(sdkClientMock.experimental.tasks.callToolStream).not.toHaveBeenCalled();
|
|
192
|
+
});
|
|
193
|
+
it('uses callToolStream when tasksConfig is provided (empty object)', async () => {
|
|
194
|
+
const resultsLengthBefore = vi.mocked(Client).mock.results.length;
|
|
195
|
+
const taskClient = new McpClient({
|
|
196
|
+
applicationName: 'TestApp',
|
|
197
|
+
transport: mockTransport,
|
|
198
|
+
tasksConfig: {},
|
|
199
|
+
});
|
|
200
|
+
const taskSdkClientMock = vi.mocked(Client).mock.results[resultsLengthBefore].value;
|
|
201
|
+
const tool = new McpTool({ name: 'calc', description: '', inputSchema: {}, client: taskClient });
|
|
202
|
+
taskSdkClientMock.experimental.tasks.callToolStream.mockReturnValue(createMockCallToolStream({ content: [] })());
|
|
203
|
+
await taskClient.callTool(tool, { op: 'add' });
|
|
204
|
+
expect(taskSdkClientMock.connect).toHaveBeenCalled();
|
|
205
|
+
expect(taskSdkClientMock.experimental.tasks.callToolStream).toHaveBeenCalledWith({ name: 'calc', arguments: { op: 'add' } }, undefined, { timeout: 60000, maxTotalTimeout: 300000, resetTimeoutOnProgress: true });
|
|
206
|
+
expect(taskSdkClientMock.callTool).not.toHaveBeenCalled();
|
|
207
|
+
});
|
|
208
|
+
it('passes custom TTL and pollTimeout to callToolStream', async () => {
|
|
209
|
+
const resultsLengthBefore = vi.mocked(Client).mock.results.length;
|
|
210
|
+
const taskClient = new McpClient({
|
|
211
|
+
applicationName: 'TestApp',
|
|
212
|
+
transport: mockTransport,
|
|
213
|
+
tasksConfig: { ttl: 30000, pollTimeout: 120000 },
|
|
214
|
+
});
|
|
215
|
+
const taskSdkClientMock = vi.mocked(Client).mock.results[resultsLengthBefore].value;
|
|
216
|
+
const tool = new McpTool({ name: 'calc', description: '', inputSchema: {}, client: taskClient });
|
|
217
|
+
taskSdkClientMock.experimental.tasks.callToolStream.mockReturnValue(createMockCallToolStream({ content: [] })());
|
|
218
|
+
await taskClient.callTool(tool, { op: 'add' });
|
|
219
|
+
expect(taskSdkClientMock.experimental.tasks.callToolStream).toHaveBeenCalledWith({ name: 'calc', arguments: { op: 'add' } }, undefined, { timeout: 30000, maxTotalTimeout: 120000, resetTimeoutOnProgress: true });
|
|
108
220
|
});
|
|
109
221
|
it('validates tool arguments', async () => {
|
|
110
222
|
const tool = new McpTool({ name: 't', description: '', inputSchema: {}, client });
|
|
@@ -124,7 +236,7 @@ describe('MCP Integration', () => {
|
|
|
124
236
|
inputSchema: {},
|
|
125
237
|
client: mockClientWrapper,
|
|
126
238
|
});
|
|
127
|
-
const
|
|
239
|
+
const toolContext = {
|
|
128
240
|
toolUse: { toolUseId: 'id-123', name: 'weather', input: { city: 'NYC' } },
|
|
129
241
|
agent: {},
|
|
130
242
|
};
|
|
@@ -132,8 +244,7 @@ describe('MCP Integration', () => {
|
|
|
132
244
|
vi.mocked(mockClientWrapper.callTool).mockResolvedValue({
|
|
133
245
|
content: [{ type: 'text', text: 'Sunny' }],
|
|
134
246
|
});
|
|
135
|
-
|
|
136
|
-
const result = await runTool(tool.stream(context));
|
|
247
|
+
const result = await runTool(tool.stream(toolContext));
|
|
137
248
|
expect(result).toBeDefined();
|
|
138
249
|
expect(result.status).toBe('success');
|
|
139
250
|
expect(result.content[0].text).toBe('Sunny');
|
|
@@ -143,14 +254,14 @@ describe('MCP Integration', () => {
|
|
|
143
254
|
vi.mocked(mockClientWrapper.callTool).mockResolvedValue({
|
|
144
255
|
content: [{ type: 'data', value: data }],
|
|
145
256
|
});
|
|
146
|
-
const result = await runTool(tool.stream(
|
|
257
|
+
const result = await runTool(tool.stream(toolContext));
|
|
147
258
|
const content = result.content[0];
|
|
148
259
|
expect(content).toBeInstanceOf(JsonBlock);
|
|
149
260
|
expect(content.json).toEqual(expect.objectContaining({ value: data }));
|
|
150
261
|
});
|
|
151
262
|
it('provides default message for empty output', async () => {
|
|
152
263
|
vi.mocked(mockClientWrapper.callTool).mockResolvedValue({ content: [] });
|
|
153
|
-
const result = await runTool(tool.stream(
|
|
264
|
+
const result = await runTool(tool.stream(toolContext));
|
|
154
265
|
expect(result.content[0].text).toContain('completed successfully');
|
|
155
266
|
});
|
|
156
267
|
it('handles protocol-level errors', async () => {
|
|
@@ -158,19 +269,19 @@ describe('MCP Integration', () => {
|
|
|
158
269
|
isError: true,
|
|
159
270
|
content: [{ type: 'text', text: 'Service Unavailable' }],
|
|
160
271
|
});
|
|
161
|
-
const result = await runTool(tool.stream(
|
|
272
|
+
const result = await runTool(tool.stream(toolContext));
|
|
162
273
|
expect(result.status).toBe('error');
|
|
163
274
|
expect(result.content[0].text).toBe('Service Unavailable');
|
|
164
275
|
});
|
|
165
276
|
it('catches and wraps client exceptions', async () => {
|
|
166
277
|
vi.mocked(mockClientWrapper.callTool).mockRejectedValue(new Error('Network Error'));
|
|
167
|
-
const result = await runTool(tool.stream(
|
|
278
|
+
const result = await runTool(tool.stream(toolContext));
|
|
168
279
|
expect(result.status).toBe('error');
|
|
169
280
|
expect(result.content[0].text).toBe('Network Error');
|
|
170
281
|
});
|
|
171
282
|
it('validates SDK response format', async () => {
|
|
172
283
|
vi.mocked(mockClientWrapper.callTool).mockResolvedValue({ content: null });
|
|
173
|
-
const result = await runTool(tool.stream(
|
|
284
|
+
const result = await runTool(tool.stream(toolContext));
|
|
174
285
|
expect(result.status).toBe('error');
|
|
175
286
|
expect(result.content[0].text).toContain('missing content array');
|
|
176
287
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.test.js","sourceRoot":"","sources":["../../../src/__tests__/mcp.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAA;AAElE,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAwC,MAAM,sBAAsB,CAAA;AAItF;;;GAGG;AACH,SAAS,wBAAwB,CAAC,MAAe;IAC/C,OAAO,KAAK,SAAS,CAAC;QACpB,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAA;IAClC,CAAC,CAAA;AACH,CAAC;AAED,EAAE,CAAC,IAAI,CAAC,2CAA2C,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1D,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;QACZ,OAAO;YACL,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;YAChB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;YACd,SAAS,EAAE,EAAE,CAAC,EAAE,EAAE;YAClB,YAAY,EAAE;gBACZ,KAAK,EAAE;oBACL,cAAc,EAAE,EAAE,CAAC,EAAE,EAAE;iBACxB;aACF;SACF,CAAA;IACH,CAAC,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,GAAG,EAAE,CAAC,CAAC;IACjC,+BAA+B;IAC/B,IAAI,EAAE;KAAQ;IACd,uFAAuF;IACvF,iBAAiB,EAAE,CAAC,GAAY,EAAE,SAAiB,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,EAAE,iBAAiB;QACvB,MAAM,EAAE,OAAO;QACf,SAAS;QACT,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;KACzF,CAAC;CACH,CAAC,CAAC,CAAA;AAEH,EAAE,CAAC,IAAI,CAAC,mCAAmC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;AAEtE;;;;GAIG;AACH,KAAK,UAAU,OAAO,CAAI,GAAwC;IAChE,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;IAC7B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACpB,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;IAC3B,CAAC;IACD,0EAA0E;IAC1E,OAAO,MAAM,CAAC,KAAU,CAAA;AAC1B,CAAC;AAED,MAAM,aAAa,GAAG;IACpB,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;IAChB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE;IACd,IAAI,EAAE,EAAE,CAAC,EAAE,EAAE;CACU,CAAA;AAEzB,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,aAAa,EAAE,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,IAAI,MAAiB,CAAA;QACrB,IAAI,aAAkB,CAAA;QAEtB,UAAU,CAAC,GAAG,EAAE;YACd,MAAM,GAAG,IAAI,SAAS,CAAC;gBACrB,eAAe,EAAE,SAAS;gBAC1B,SAAS,EAAE,aAAa;aACzB,CAAC,CAAA;YACF,aAAa,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAE,CAAC,KAAK,CAAA;QAC1D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;YACtB,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;YAEtD,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;YACtB,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;YAC5C,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;YACtB,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAE1B,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAA;YAC9C,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,aAAa,CAAC,SAAS,CAAC,iBAAiB,CAAC;gBACxC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,aAAa,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC;aAC1E,CAAC,CAAA;YAEF,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;YAEtC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAA;YAChD,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC7B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAA;YACxC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0EAA0E,EAAE,KAAK,IAAI,EAAE;YACxF,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;YACpF,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,eAAe,CAAC,wBAAwB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAA;YAE5G,MAAM,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,CAAA;YAE1C,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,CAAA;YAChD,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,oBAAoB,CAAC;gBAC3E,IAAI,EAAE,MAAM;gBACZ,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE;aACzB,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAAA;YACjF,MAAM,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAA;QACvF,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qBAAqB,EAAE,KAAK,IAAI,EAAE;YACnC,MAAM,MAAM,CAAC,UAAU,EAAE,CAAA;YACzB,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAA;YAC9C,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,CAAA;QAChD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,MAAM,iBAAiB,GAAG,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,EAA0B,CAAA;QACvE,MAAM,IAAI,GAAG,IAAI,OAAO,CAAC;YACvB,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,aAAa;YAC1B,WAAW,EAAE,EAAE;YACf,MAAM,EAAE,iBAAiB;SAC1B,CAAC,CAAA;QAEF,MAAM,OAAO,GAAgB;YAC3B,OAAO,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;YACzE,KAAK,EAAE,EAAe;SACvB,CAAA;QAED,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC;gBACtD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;aAC3C,CAAC,CAAA;YAEF,+DAA+D;YAC/D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YAEnE,MAAM,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,CAAA;YAC5B,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrC,MAAM,CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAC7D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;YAC1D,MAAM,IAAI,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,CAAA;YAChC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC;gBACtD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;aACzC,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YACnE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAc,CAAA;YAE9C,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;YACzC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QACxE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,2CAA2C,EAAE,KAAK,IAAI,EAAE;YACzD,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAA;YAExE,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YAEnE,MAAM,CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAA;QACnF,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC;gBACtD,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAC;aACzD,CAAC,CAAA;YAEF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YAEnE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnC,MAAM,CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAA;QAC3E,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAA;YAEnF,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YAEnE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnC,MAAM,CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAe,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QACrE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,+BAA+B,EAAE,KAAK,IAAI,EAAE;YAC7C,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAA;YAE1E,MAAM,MAAM,GAAG,MAAM,OAAO,CAAkB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YAEnE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YACnC,MAAM,CAAE,MAAM,CAAC,OAAO,CAAC,CAAC,CAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAA;QAClF,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"mcp.test.js","sourceRoot":"","sources":["../../../src/__tests__/mcp.test.ts"],"names":[],"mappings":"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"}
|