@strands-agents/sdk 0.7.0 → 1.0.0-rc.1

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 (250) hide show
  1. package/README.md +7 -7
  2. package/dist/src/__fixtures__/agent-helpers.d.ts +44 -0
  3. package/dist/src/__fixtures__/agent-helpers.d.ts.map +1 -1
  4. package/dist/src/__fixtures__/agent-helpers.js +45 -0
  5. package/dist/src/__fixtures__/agent-helpers.js.map +1 -1
  6. package/dist/src/__fixtures__/mock-plugin.d.ts.map +1 -1
  7. package/dist/src/__fixtures__/mock-plugin.js +3 -1
  8. package/dist/src/__fixtures__/mock-plugin.js.map +1 -1
  9. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  10. package/dist/src/__fixtures__/tool-helpers.js +1 -0
  11. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  12. package/dist/src/a2a/__tests__/events.test.d.ts +2 -0
  13. package/dist/src/a2a/__tests__/events.test.d.ts.map +1 -0
  14. package/dist/src/a2a/__tests__/events.test.js +66 -0
  15. package/dist/src/a2a/__tests__/events.test.js.map +1 -0
  16. package/dist/src/a2a/a2a-agent.d.ts.map +1 -1
  17. package/dist/src/a2a/a2a-agent.js +1 -1
  18. package/dist/src/a2a/a2a-agent.js.map +1 -1
  19. package/dist/src/a2a/events.d.ts +2 -0
  20. package/dist/src/a2a/events.d.ts.map +1 -1
  21. package/dist/src/a2a/events.js +6 -0
  22. package/dist/src/a2a/events.js.map +1 -1
  23. package/dist/src/a2a/index.d.ts +0 -1
  24. package/dist/src/a2a/index.d.ts.map +1 -1
  25. package/dist/src/a2a/index.js +0 -1
  26. package/dist/src/a2a/index.js.map +1 -1
  27. package/dist/src/a2a/server.d.ts +1 -1
  28. package/dist/src/a2a/server.js +1 -1
  29. package/dist/src/agent/__tests__/agent.hook.test.js +229 -1
  30. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  31. package/dist/src/agent/__tests__/agent.test.js +215 -42
  32. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  33. package/dist/src/agent/__tests__/agent.tracer.test.node.d.ts +2 -0
  34. package/dist/src/agent/__tests__/agent.tracer.test.node.d.ts.map +1 -0
  35. package/dist/src/agent/__tests__/{agent.tracer.test.js → agent.tracer.test.node.js} +52 -40
  36. package/dist/src/agent/__tests__/agent.tracer.test.node.js.map +1 -0
  37. package/dist/src/agent/__tests__/printer.test.js +7 -7
  38. package/dist/src/agent/__tests__/printer.test.js.map +1 -1
  39. package/dist/src/agent/__tests__/snapshot.test.js +39 -2
  40. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -1
  41. package/dist/src/agent/agent.d.ts +16 -1
  42. package/dist/src/agent/agent.d.ts.map +1 -1
  43. package/dist/src/agent/agent.js +170 -94
  44. package/dist/src/agent/agent.js.map +1 -1
  45. package/dist/src/agent/printer.d.ts.map +1 -1
  46. package/dist/src/agent/printer.js +3 -0
  47. package/dist/src/agent/printer.js.map +1 -1
  48. package/dist/src/agent/snapshot.d.ts +3 -3
  49. package/dist/src/agent/snapshot.d.ts.map +1 -1
  50. package/dist/src/agent/snapshot.js +14 -7
  51. package/dist/src/agent/snapshot.js.map +1 -1
  52. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js +72 -46
  53. package/dist/src/conversation-manager/__tests__/sliding-window-conversation-manager.test.js.map +1 -1
  54. package/dist/src/conversation-manager/sliding-window-conversation-manager.d.ts.map +1 -1
  55. package/dist/src/conversation-manager/sliding-window-conversation-manager.js +14 -7
  56. package/dist/src/conversation-manager/sliding-window-conversation-manager.js.map +1 -1
  57. package/dist/src/errors.d.ts +8 -0
  58. package/dist/src/errors.d.ts.map +1 -1
  59. package/dist/src/errors.js +11 -0
  60. package/dist/src/errors.js.map +1 -1
  61. package/dist/src/hooks/__tests__/events.test.js +387 -0
  62. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  63. package/dist/src/hooks/events.d.ts +104 -0
  64. package/dist/src/hooks/events.d.ts.map +1 -1
  65. package/dist/src/hooks/events.js +137 -0
  66. package/dist/src/hooks/events.js.map +1 -1
  67. package/dist/src/index.d.ts +2 -2
  68. package/dist/src/index.d.ts.map +1 -1
  69. package/dist/src/index.js +4 -4
  70. package/dist/src/index.js.map +1 -1
  71. package/dist/src/models/__tests__/anthropic.test.js +1 -2
  72. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  73. package/dist/src/models/__tests__/bedrock.test.js +18 -18
  74. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  75. package/dist/src/models/__tests__/google.test.d.ts +2 -0
  76. package/dist/src/models/__tests__/google.test.d.ts.map +1 -0
  77. package/dist/src/models/__tests__/{gemini.test.js → google.test.js} +55 -21
  78. package/dist/src/models/__tests__/google.test.js.map +1 -0
  79. package/dist/src/models/__tests__/openai.test.js +78 -71
  80. package/dist/src/models/__tests__/openai.test.js.map +1 -1
  81. package/dist/src/models/anthropic.d.ts.map +1 -1
  82. package/dist/src/models/anthropic.js +8 -7
  83. package/dist/src/models/anthropic.js.map +1 -1
  84. package/dist/src/models/bedrock.d.ts +3 -3
  85. package/dist/src/models/bedrock.d.ts.map +1 -1
  86. package/dist/src/models/bedrock.js +7 -7
  87. package/dist/src/models/bedrock.js.map +1 -1
  88. package/dist/src/models/{gemini → google}/adapters.d.ts +3 -3
  89. package/dist/src/models/{gemini → google}/adapters.d.ts.map +1 -1
  90. package/dist/src/models/{gemini → google}/adapters.js +1 -1
  91. package/dist/src/models/{gemini → google}/adapters.js.map +1 -1
  92. package/dist/src/models/{gemini → google}/errors.d.ts +7 -7
  93. package/dist/src/models/google/errors.d.ts.map +1 -0
  94. package/dist/src/models/{gemini → google}/errors.js +11 -5
  95. package/dist/src/models/google/errors.js.map +1 -0
  96. package/dist/src/models/google/index.d.ts +15 -0
  97. package/dist/src/models/google/index.d.ts.map +1 -0
  98. package/dist/src/models/google/index.js +15 -0
  99. package/dist/src/models/google/index.js.map +1 -0
  100. package/dist/src/models/{gemini → google}/model.d.ts +18 -18
  101. package/dist/src/models/{gemini → google}/model.d.ts.map +1 -1
  102. package/dist/src/models/{gemini → google}/model.js +22 -19
  103. package/dist/src/models/google/model.js.map +1 -0
  104. package/dist/src/models/{gemini → google}/types.d.ts +9 -9
  105. package/dist/src/models/{gemini → google}/types.d.ts.map +1 -1
  106. package/dist/src/models/google/types.js +5 -0
  107. package/dist/src/models/google/types.js.map +1 -0
  108. package/dist/src/models/model.js +2 -2
  109. package/dist/src/models/model.js.map +1 -1
  110. package/dist/src/models/openai.d.ts +29 -11
  111. package/dist/src/models/openai.d.ts.map +1 -1
  112. package/dist/src/models/openai.js +25 -15
  113. package/dist/src/models/openai.js.map +1 -1
  114. package/dist/src/models/streaming.d.ts +13 -0
  115. package/dist/src/models/streaming.d.ts.map +1 -1
  116. package/dist/src/models/streaming.js +29 -0
  117. package/dist/src/models/streaming.js.map +1 -1
  118. package/dist/src/multiagent/__tests__/events.test.js +177 -0
  119. package/dist/src/multiagent/__tests__/events.test.js.map +1 -1
  120. package/dist/src/multiagent/__tests__/graph.tracer.test.d.ts +2 -0
  121. package/dist/src/multiagent/__tests__/graph.tracer.test.d.ts.map +1 -0
  122. package/dist/src/multiagent/__tests__/graph.tracer.test.js +204 -0
  123. package/dist/src/multiagent/__tests__/graph.tracer.test.js.map +1 -0
  124. package/dist/src/multiagent/__tests__/nodes.test.js +48 -5
  125. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -1
  126. package/dist/src/multiagent/__tests__/swarm.test.js +34 -6
  127. package/dist/src/multiagent/__tests__/swarm.test.js.map +1 -1
  128. package/dist/src/multiagent/__tests__/swarm.tracer.test.d.ts +2 -0
  129. package/dist/src/multiagent/__tests__/swarm.tracer.test.d.ts.map +1 -0
  130. package/dist/src/multiagent/__tests__/swarm.tracer.test.js +235 -0
  131. package/dist/src/multiagent/__tests__/swarm.tracer.test.js.map +1 -0
  132. package/dist/src/multiagent/events.d.ts +14 -0
  133. package/dist/src/multiagent/events.d.ts.map +1 -1
  134. package/dist/src/multiagent/events.js +34 -0
  135. package/dist/src/multiagent/events.js.map +1 -1
  136. package/dist/src/multiagent/graph.d.ts +4 -0
  137. package/dist/src/multiagent/graph.d.ts.map +1 -1
  138. package/dist/src/multiagent/graph.js +42 -16
  139. package/dist/src/multiagent/graph.js.map +1 -1
  140. package/dist/src/multiagent/index.d.ts +1 -1
  141. package/dist/src/multiagent/index.d.ts.map +1 -1
  142. package/dist/src/multiagent/index.js.map +1 -1
  143. package/dist/src/multiagent/nodes.d.ts +23 -9
  144. package/dist/src/multiagent/nodes.d.ts.map +1 -1
  145. package/dist/src/multiagent/nodes.js +25 -14
  146. package/dist/src/multiagent/nodes.js.map +1 -1
  147. package/dist/src/multiagent/state.d.ts +8 -3
  148. package/dist/src/multiagent/state.d.ts.map +1 -1
  149. package/dist/src/multiagent/state.js +18 -4
  150. package/dist/src/multiagent/state.js.map +1 -1
  151. package/dist/src/multiagent/swarm.d.ts +15 -1
  152. package/dist/src/multiagent/swarm.d.ts.map +1 -1
  153. package/dist/src/multiagent/swarm.js +71 -30
  154. package/dist/src/multiagent/swarm.js.map +1 -1
  155. package/dist/src/session/__tests__/session-manager.test.js +36 -0
  156. package/dist/src/session/__tests__/session-manager.test.js.map +1 -1
  157. package/dist/src/session/session-manager.d.ts +2 -3
  158. package/dist/src/session/session-manager.d.ts.map +1 -1
  159. package/dist/src/session/session-manager.js +11 -9
  160. package/dist/src/session/session-manager.js.map +1 -1
  161. package/dist/src/telemetry/__tests__/local-trace.test.d.ts +2 -0
  162. package/dist/src/telemetry/__tests__/local-trace.test.d.ts.map +1 -0
  163. package/dist/src/telemetry/__tests__/local-trace.test.js +158 -0
  164. package/dist/src/telemetry/__tests__/local-trace.test.js.map +1 -0
  165. package/dist/src/telemetry/__tests__/tracer.test.node.js +28 -0
  166. package/dist/src/telemetry/__tests__/tracer.test.node.js.map +1 -1
  167. package/dist/src/telemetry/config.js +1 -1
  168. package/dist/src/telemetry/config.js.map +1 -1
  169. package/dist/src/telemetry/meter.d.ts +0 -13
  170. package/dist/src/telemetry/meter.d.ts.map +1 -1
  171. package/dist/src/telemetry/meter.js +8 -36
  172. package/dist/src/telemetry/meter.js.map +1 -1
  173. package/dist/src/telemetry/tracer.d.ts +107 -18
  174. package/dist/src/telemetry/tracer.d.ts.map +1 -1
  175. package/dist/src/telemetry/tracer.js +245 -33
  176. package/dist/src/telemetry/tracer.js.map +1 -1
  177. package/dist/src/telemetry/types.d.ts +49 -0
  178. package/dist/src/telemetry/types.d.ts.map +1 -1
  179. package/dist/src/tools/__tests__/structured-output-tool.test.d.ts +2 -0
  180. package/dist/src/tools/__tests__/structured-output-tool.test.d.ts.map +1 -0
  181. package/dist/src/tools/__tests__/structured-output-tool.test.js +84 -0
  182. package/dist/src/tools/__tests__/structured-output-tool.test.js.map +1 -0
  183. package/dist/src/tools/structured-output-tool.d.ts +41 -0
  184. package/dist/src/tools/structured-output-tool.d.ts.map +1 -0
  185. package/dist/src/tools/structured-output-tool.js +82 -0
  186. package/dist/src/tools/structured-output-tool.js.map +1 -0
  187. package/dist/src/tools/zod-tool.js +1 -1
  188. package/dist/src/tools/zod-tool.js.map +1 -1
  189. package/dist/src/{utils/zod.d.ts → tools/zod-utils.d.ts} +1 -1
  190. package/dist/src/tools/zod-utils.d.ts.map +1 -0
  191. package/dist/src/{utils/zod.js → tools/zod-utils.js} +1 -1
  192. package/dist/src/tools/zod-utils.js.map +1 -0
  193. package/dist/src/tsconfig.tsbuildinfo +1 -1
  194. package/dist/src/types/__tests__/agent.test.js +127 -0
  195. package/dist/src/types/__tests__/agent.test.js.map +1 -1
  196. package/dist/src/types/agent.d.ts +27 -1
  197. package/dist/src/types/agent.d.ts.map +1 -1
  198. package/dist/src/types/agent.js +26 -0
  199. package/dist/src/types/agent.js.map +1 -1
  200. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js +12 -0
  201. package/dist/src/vended-tools/bash/__tests__/bash.test.node.js.map +1 -1
  202. package/dist/src/vended-tools/bash/bash.d.ts.map +1 -1
  203. package/dist/src/vended-tools/bash/bash.js +16 -14
  204. package/dist/src/vended-tools/bash/bash.js.map +1 -1
  205. package/package.json +12 -8
  206. package/dist/src/agent/__tests__/agent.tracer.test.d.ts +0 -2
  207. package/dist/src/agent/__tests__/agent.tracer.test.d.ts.map +0 -1
  208. package/dist/src/agent/__tests__/agent.tracer.test.js.map +0 -1
  209. package/dist/src/models/__tests__/gemini.test.d.ts +0 -2
  210. package/dist/src/models/__tests__/gemini.test.d.ts.map +0 -1
  211. package/dist/src/models/__tests__/gemini.test.js.map +0 -1
  212. package/dist/src/models/gemini/errors.d.ts.map +0 -1
  213. package/dist/src/models/gemini/errors.js.map +0 -1
  214. package/dist/src/models/gemini/model.js.map +0 -1
  215. package/dist/src/models/gemini/types.js +0 -5
  216. package/dist/src/models/gemini/types.js.map +0 -1
  217. package/dist/src/structured-output/__tests__/context.test.d.ts +0 -2
  218. package/dist/src/structured-output/__tests__/context.test.d.ts.map +0 -1
  219. package/dist/src/structured-output/__tests__/context.test.js +0 -201
  220. package/dist/src/structured-output/__tests__/context.test.js.map +0 -1
  221. package/dist/src/structured-output/__tests__/exceptions.test.d.ts +0 -2
  222. package/dist/src/structured-output/__tests__/exceptions.test.d.ts.map +0 -1
  223. package/dist/src/structured-output/__tests__/exceptions.test.js +0 -103
  224. package/dist/src/structured-output/__tests__/exceptions.test.js.map +0 -1
  225. package/dist/src/structured-output/__tests__/tool.test.d.ts +0 -2
  226. package/dist/src/structured-output/__tests__/tool.test.d.ts.map +0 -1
  227. package/dist/src/structured-output/__tests__/tool.test.js +0 -256
  228. package/dist/src/structured-output/__tests__/tool.test.js.map +0 -1
  229. package/dist/src/structured-output/__tests__/utils.test.d.ts +0 -2
  230. package/dist/src/structured-output/__tests__/utils.test.d.ts.map +0 -1
  231. package/dist/src/structured-output/__tests__/utils.test.js +0 -183
  232. package/dist/src/structured-output/__tests__/utils.test.js.map +0 -1
  233. package/dist/src/structured-output/context.d.ts +0 -91
  234. package/dist/src/structured-output/context.d.ts.map +0 -1
  235. package/dist/src/structured-output/context.js +0 -112
  236. package/dist/src/structured-output/context.js.map +0 -1
  237. package/dist/src/structured-output/exceptions.d.ts +0 -18
  238. package/dist/src/structured-output/exceptions.d.ts.map +0 -1
  239. package/dist/src/structured-output/exceptions.js +0 -28
  240. package/dist/src/structured-output/exceptions.js.map +0 -1
  241. package/dist/src/structured-output/tool.d.ts +0 -33
  242. package/dist/src/structured-output/tool.d.ts.map +0 -1
  243. package/dist/src/structured-output/tool.js +0 -73
  244. package/dist/src/structured-output/tool.js.map +0 -1
  245. package/dist/src/structured-output/utils.d.ts +0 -23
  246. package/dist/src/structured-output/utils.d.ts.map +0 -1
  247. package/dist/src/structured-output/utils.js +0 -104
  248. package/dist/src/structured-output/utils.js.map +0 -1
  249. package/dist/src/utils/zod.d.ts.map +0 -1
  250. package/dist/src/utils/zod.js.map +0 -1
@@ -1,256 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { z } from 'zod';
3
- import { StructuredOutputTool } from '../tool.js';
4
- import { StructuredOutputContext } from '../context.js';
5
- import { TextBlock, ToolResultBlock } from '../../types/messages.js';
6
- describe('StructuredOutputTool', () => {
7
- describe('constructor', () => {
8
- it('creates tool with schema and name', () => {
9
- const schema = z.object({ name: z.string() });
10
- const context = new StructuredOutputContext(schema);
11
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
12
- expect(tool.name).toBe('TestTool');
13
- expect(tool.description).toContain('StructuredOutputTool');
14
- expect(tool.toolSpec).toBeDefined();
15
- });
16
- it('sets tool spec from schema', () => {
17
- const schema = z.object({ name: z.string(), age: z.number() });
18
- const context = new StructuredOutputContext(schema);
19
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
20
- expect(tool.toolSpec.name).toBe('TestTool');
21
- expect(tool.toolSpec.inputSchema).toBeDefined();
22
- });
23
- });
24
- describe('stream', () => {
25
- it('validates and stores valid input', async () => {
26
- const schema = z.object({ name: z.string(), age: z.number() });
27
- const context = new StructuredOutputContext(schema);
28
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
29
- const toolContext = {
30
- toolUse: {
31
- name: 'TestTool',
32
- toolUseId: 'tool-1',
33
- input: { name: 'John', age: 30 },
34
- },
35
- agent: {},
36
- };
37
- const generator = tool.stream(toolContext);
38
- const result = await generator.next();
39
- expect(result.done).toBe(true);
40
- if (result.done) {
41
- expect(result.value).toBeInstanceOf(ToolResultBlock);
42
- expect(result.value.status).toBe('success');
43
- expect(result.value.toolUseId).toBe('tool-1');
44
- expect(context.hasResult()).toBe(true);
45
- expect(context.getResult()).toEqual({ name: 'John', age: 30 });
46
- }
47
- });
48
- it('returns error for invalid input', async () => {
49
- const schema = z.object({ name: z.string(), age: z.number() });
50
- const context = new StructuredOutputContext(schema);
51
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
52
- const toolContext = {
53
- toolUse: {
54
- name: 'TestTool',
55
- toolUseId: 'tool-1',
56
- input: { name: 'John', age: 'invalid' },
57
- },
58
- agent: {},
59
- };
60
- const generator = tool.stream(toolContext);
61
- const result = await generator.next();
62
- expect(result.done).toBe(true);
63
- if (result.done) {
64
- expect(result.value).toBeInstanceOf(ToolResultBlock);
65
- expect(result.value.status).toBe('error');
66
- expect(result.value.toolUseId).toBe('tool-1');
67
- expect(result.value.content[0]).toBeInstanceOf(TextBlock);
68
- expect(result.value.content[0].text).toContain('Validation failed');
69
- expect(result.value.content[0].text).toContain('age');
70
- expect(context.hasResult()).toBe(false);
71
- }
72
- });
73
- it('returns formatted validation errors', async () => {
74
- const schema = z.object({
75
- name: z.string(),
76
- age: z.number(),
77
- email: z.string().email(),
78
- });
79
- const context = new StructuredOutputContext(schema);
80
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
81
- const toolContext = {
82
- toolUse: {
83
- name: 'TestTool',
84
- toolUseId: 'tool-1',
85
- input: { name: 123, age: 'invalid', email: 'not-email' },
86
- },
87
- agent: {},
88
- };
89
- const generator = tool.stream(toolContext);
90
- const result = await generator.next();
91
- expect(result.done).toBe(true);
92
- if (result.done) {
93
- expect(result.value.status).toBe('error');
94
- const errorText = result.value.content[0].text;
95
- expect(errorText).toContain("Field 'name':");
96
- expect(errorText).toContain("Field 'age':");
97
- expect(errorText).toContain("Field 'email':");
98
- }
99
- });
100
- it('validates nested objects', async () => {
101
- const schema = z.object({
102
- user: z.object({
103
- name: z.string(),
104
- age: z.number(),
105
- }),
106
- });
107
- const context = new StructuredOutputContext(schema);
108
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
109
- const toolContext = {
110
- toolUse: {
111
- name: 'TestTool',
112
- toolUseId: 'tool-1',
113
- input: { user: { name: 'John', age: 30 } },
114
- },
115
- agent: {},
116
- };
117
- const generator = tool.stream(toolContext);
118
- const result = await generator.next();
119
- expect(result.done).toBe(true);
120
- if (result.done) {
121
- expect(result.value.status).toBe('success');
122
- expect(context.getResult()).toEqual({ user: { name: 'John', age: 30 } });
123
- }
124
- });
125
- it('validates arrays', async () => {
126
- const schema = z.object({
127
- items: z.array(z.string()),
128
- });
129
- const context = new StructuredOutputContext(schema);
130
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
131
- const toolContext = {
132
- toolUse: {
133
- name: 'TestTool',
134
- toolUseId: 'tool-1',
135
- input: { items: ['a', 'b', 'c'] },
136
- },
137
- agent: {},
138
- };
139
- const generator = tool.stream(toolContext);
140
- const result = await generator.next();
141
- expect(result.done).toBe(true);
142
- if (result.done) {
143
- expect(result.value.status).toBe('success');
144
- expect(context.getResult()).toEqual({ items: ['a', 'b', 'c'] });
145
- }
146
- });
147
- it('handles optional fields', async () => {
148
- const schema = z.object({
149
- name: z.string(),
150
- age: z.number().optional(),
151
- });
152
- const context = new StructuredOutputContext(schema);
153
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
154
- const toolContext = {
155
- toolUse: {
156
- name: 'TestTool',
157
- toolUseId: 'tool-1',
158
- input: { name: 'John' },
159
- },
160
- agent: {},
161
- };
162
- const generator = tool.stream(toolContext);
163
- const result = await generator.next();
164
- expect(result.done).toBe(true);
165
- if (result.done) {
166
- expect(result.value.status).toBe('success');
167
- expect(context.getResult()).toEqual({ name: 'John' });
168
- }
169
- });
170
- it('stores error in result block on validation failure', async () => {
171
- const schema = z.object({ name: z.string() });
172
- const context = new StructuredOutputContext(schema);
173
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
174
- const toolContext = {
175
- toolUse: {
176
- name: 'TestTool',
177
- toolUseId: 'tool-1',
178
- input: { name: 123 },
179
- },
180
- agent: {},
181
- };
182
- const generator = tool.stream(toolContext);
183
- const result = await generator.next();
184
- expect(result.done).toBe(true);
185
- if (result.done) {
186
- expect(result.value.error).toBeDefined();
187
- expect(result.value.error).toBeInstanceOf(z.ZodError);
188
- }
189
- });
190
- it('overwrites previous result on multiple calls', async () => {
191
- const schema = z.object({ value: z.number() });
192
- const context = new StructuredOutputContext(schema);
193
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
194
- // First call
195
- const toolContext1 = {
196
- toolUse: {
197
- name: 'TestTool',
198
- toolUseId: 'tool-1',
199
- input: { value: 1 },
200
- },
201
- agent: {},
202
- };
203
- const generator1 = tool.stream(toolContext1);
204
- await generator1.next();
205
- expect(context.getResult()).toEqual({ value: 1 });
206
- // Second call
207
- const toolContext2 = {
208
- toolUse: {
209
- name: 'TestTool',
210
- toolUseId: 'tool-2',
211
- input: { value: 2 },
212
- },
213
- agent: {},
214
- };
215
- const generator2 = tool.stream(toolContext2);
216
- await generator2.next();
217
- expect(context.getResult()).toEqual({ value: 2 });
218
- expect(context.hasResult()).toBe(true);
219
- });
220
- it('does not store result when validation fails', async () => {
221
- const schema = z.object({ value: z.number() });
222
- const context = new StructuredOutputContext(schema);
223
- const tool = new StructuredOutputTool(schema, 'TestTool', context);
224
- // First call succeeds
225
- const toolContext1 = {
226
- toolUse: {
227
- name: 'TestTool',
228
- toolUseId: 'tool-1',
229
- input: { value: 1 },
230
- },
231
- agent: {},
232
- };
233
- const generator1 = tool.stream(toolContext1);
234
- await generator1.next();
235
- expect(context.hasResult()).toBe(true);
236
- expect(context.getResult()).toEqual({ value: 1 });
237
- // Second call fails
238
- const toolContext2 = {
239
- toolUse: {
240
- name: 'TestTool',
241
- toolUseId: 'tool-2',
242
- input: { value: 'invalid' },
243
- },
244
- agent: {},
245
- };
246
- const generator2 = tool.stream(toolContext2);
247
- const result = await generator2.next();
248
- expect(result.done).toBe(true);
249
- if (result.done) {
250
- expect(result.value.status).toBe('error');
251
- }
252
- expect(context.getResult()).toEqual({ value: 1 });
253
- });
254
- });
255
- });
256
- //# sourceMappingURL=tool.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tool.test.js","sourceRoot":"","sources":["../../../../src/structured-output/__tests__/tool.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AACjD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAGpE,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;YAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC7C,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAClC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAA;YAC1D,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;QACrC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC9D,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;YAC3C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAA;QACjD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE;QACtB,EAAE,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;YAChD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC9D,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,MAAM,WAAW,GAAgB;gBAC/B,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE;iBACjC;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;gBACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC3C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC7C,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACtC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;YAChE,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iCAAiC,EAAE,KAAK,IAAI,EAAE;YAC/C,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC9D,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,MAAM,WAAW,GAAgB;gBAC/B,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE;iBACxC;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,CAAA;gBACpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACzC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;gBAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,SAAS,CAAC,CAAA;gBACzD,MAAM,CAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAA;gBAClF,MAAM,CAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAe,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;gBACpE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACzC,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE;YACnD,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;gBACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;gBACf,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE;aAC1B,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,MAAM,WAAW,GAAgB;gBAC/B,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE;iBACzD;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBACzC,MAAM,SAAS,GAAI,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAe,CAAC,IAAI,CAAA;gBAC7D,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAA;gBAC5C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAA;gBAC3C,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;YAC/C,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0BAA0B,EAAE,KAAK,IAAI,EAAE;YACxC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;gBACtB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;oBACb,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;oBAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE;iBAChB,CAAC;aACH,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,MAAM,WAAW,GAAgB;gBAC/B,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;iBAC3C;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC3C,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,CAAC,CAAA;YAC1E,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,kBAAkB,EAAE,KAAK,IAAI,EAAE;YAChC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;gBACtB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;aAC3B,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,MAAM,WAAW,GAAgB;gBAC/B,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE;iBAClC;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC3C,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YACjE,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;YACvC,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC;gBACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;gBAChB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;aAC3B,CAAC,CAAA;YACF,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,MAAM,WAAW,GAAgB;gBAC/B,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;iBACxB;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBAC3C,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YACvD,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;YAClE,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC7C,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,MAAM,WAAW,GAAgB;gBAC/B,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE;iBACrB;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAA;YAC1C,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;YAErC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAA;gBACxC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YACvD,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;YAC5D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC9C,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,aAAa;YACb,MAAM,YAAY,GAAgB;gBAChC,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;iBACpB;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC5C,MAAM,UAAU,CAAC,IAAI,EAAE,CAAA;YAEvB,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YAEjD,cAAc;YACd,MAAM,YAAY,GAAgB;gBAChC,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;iBACpB;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC5C,MAAM,UAAU,CAAC,IAAI,EAAE,CAAA;YAEvB,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YACjD,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,6CAA6C,EAAE,KAAK,IAAI,EAAE;YAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;YAC9C,MAAM,OAAO,GAAG,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAA;YACnD,MAAM,IAAI,GAAG,IAAI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,CAAA;YAElE,sBAAsB;YACtB,MAAM,YAAY,GAAgB;gBAChC,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE;iBACpB;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC5C,MAAM,UAAU,CAAC,IAAI,EAAE,CAAA;YAEvB,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YAEjD,oBAAoB;YACpB,MAAM,YAAY,GAAgB;gBAChC,OAAO,EAAE;oBACP,IAAI,EAAE,UAAU;oBAChB,SAAS,EAAE,QAAQ;oBACnB,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;iBAC5B;gBACD,KAAK,EAAE,EAAS;aACjB,CAAA;YAED,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;YAC5C,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAA;YAEtC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC3C,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=utils.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../src/structured-output/__tests__/utils.test.ts"],"names":[],"mappings":""}
@@ -1,183 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { z } from 'zod';
3
- import { convertSchemaToToolSpec, getSchemaDescription } from '../utils.js';
4
- import { StructuredOutputException } from '../exceptions.js';
5
- describe('convertSchemaToToolSpec', () => {
6
- it('converts basic schema to tool spec', () => {
7
- const schema = z.object({
8
- name: z.string(),
9
- age: z.number(),
10
- });
11
- const toolSpec = convertSchemaToToolSpec(schema, 'TestTool');
12
- expect(toolSpec.name).toBe('TestTool');
13
- expect(toolSpec.description).toContain('StructuredOutputTool');
14
- expect(toolSpec.inputSchema).toStrictEqual({
15
- type: 'object',
16
- properties: {
17
- name: { type: 'string' },
18
- age: { type: 'number' },
19
- },
20
- required: ['name', 'age'],
21
- additionalProperties: false,
22
- });
23
- });
24
- it('includes schema description in tool spec', () => {
25
- const schema = z
26
- .object({
27
- name: z.string(),
28
- })
29
- .describe('A person object');
30
- const toolSpec = convertSchemaToToolSpec(schema, 'TestTool');
31
- expect(toolSpec.description).toContain('A person object');
32
- });
33
- it('throws error for schema with refinements', () => {
34
- const schema = z.object({
35
- name: z.string().refine((val) => val.length > 0, 'Name cannot be empty'),
36
- });
37
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).toThrow(StructuredOutputException);
38
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).toThrow('Zod refinements and transforms are not supported');
39
- });
40
- it('throws error for schema with transforms', () => {
41
- const schema = z.string().transform((val) => val.toUpperCase());
42
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).toThrow(StructuredOutputException);
43
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).toThrow('Zod refinements and transforms are not supported');
44
- });
45
- it('throws error for schema with superRefine', () => {
46
- const schema = z.object({ name: z.string() }).superRefine((val, ctx) => {
47
- if (val.name.length === 0) {
48
- ctx.addIssue({ code: z.ZodIssueCode.custom, message: 'Name required' });
49
- }
50
- });
51
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).toThrow(StructuredOutputException);
52
- });
53
- it('accepts schema with basic validations', () => {
54
- const schema = z.object({
55
- name: z.string().min(1).max(100),
56
- age: z.number().int().positive(),
57
- email: z.string().email(),
58
- });
59
- const toolSpec = convertSchemaToToolSpec(schema, 'TestTool');
60
- expect(toolSpec.inputSchema).toMatchObject({
61
- type: 'object',
62
- properties: {
63
- name: {
64
- type: 'string',
65
- minLength: 1,
66
- maxLength: 100,
67
- },
68
- age: {
69
- type: 'integer',
70
- },
71
- email: {
72
- type: 'string',
73
- format: 'email',
74
- },
75
- },
76
- required: ['name', 'age', 'email'],
77
- additionalProperties: false,
78
- });
79
- });
80
- it('throws error for nested schema with refinements', () => {
81
- const schema = z.object({
82
- user: z.object({
83
- name: z.string().refine((val) => val.length > 0),
84
- }),
85
- });
86
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).toThrow(StructuredOutputException);
87
- });
88
- it('accepts nested schema without refinements', () => {
89
- const schema = z.object({
90
- user: z.object({
91
- name: z.string(),
92
- age: z.number(),
93
- }),
94
- items: z.array(z.string()),
95
- });
96
- const toolSpec = convertSchemaToToolSpec(schema, 'TestTool');
97
- expect(toolSpec.inputSchema).toStrictEqual({
98
- type: 'object',
99
- properties: {
100
- user: {
101
- type: 'object',
102
- properties: {
103
- name: { type: 'string' },
104
- age: { type: 'number' },
105
- },
106
- required: ['name', 'age'],
107
- additionalProperties: false,
108
- },
109
- items: {
110
- type: 'array',
111
- items: { type: 'string' },
112
- },
113
- },
114
- required: ['user', 'items'],
115
- additionalProperties: false,
116
- });
117
- });
118
- it('throws error for array with refinements', () => {
119
- const schema = z.array(z.string().refine((val) => val.length > 0));
120
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).toThrow(StructuredOutputException);
121
- });
122
- it('accepts union types', () => {
123
- const schema = z.union([z.string(), z.number()]);
124
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).not.toThrow();
125
- });
126
- it('accepts optional fields', () => {
127
- const schema = z.object({
128
- name: z.string(),
129
- age: z.number().optional(),
130
- });
131
- const toolSpec = convertSchemaToToolSpec(schema, 'TestTool');
132
- expect(toolSpec.inputSchema).toStrictEqual({
133
- type: 'object',
134
- properties: {
135
- name: { type: 'string' },
136
- age: { type: 'number' },
137
- },
138
- required: ['name'],
139
- additionalProperties: false,
140
- });
141
- });
142
- it('throws error for deeply nested refinements', () => {
143
- const schema = z.object({
144
- level1: z.object({
145
- level2: z.object({
146
- level3: z.string().refine((val) => val.length > 0),
147
- }),
148
- }),
149
- });
150
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).toThrow(StructuredOutputException);
151
- });
152
- it('throws error for refinements in union types', () => {
153
- const schema = z.union([z.string().refine((val) => val.length > 0), z.number()]);
154
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).toThrow(StructuredOutputException);
155
- });
156
- it('throws error for refinements in array items', () => {
157
- const schema = z.object({
158
- items: z.array(z.object({
159
- name: z.string().refine((val) => val.length > 0),
160
- })),
161
- });
162
- expect(() => convertSchemaToToolSpec(schema, 'TestTool')).toThrow(StructuredOutputException);
163
- });
164
- });
165
- describe('getSchemaDescription', () => {
166
- it('returns description from schema metadata', () => {
167
- const schema = z.object({ name: z.string() }).describe('Test description');
168
- const description = getSchemaDescription(schema);
169
- expect(description).toBe('Test description');
170
- });
171
- it('returns empty string when no description', () => {
172
- const schema = z.object({ name: z.string() });
173
- const description = getSchemaDescription(schema);
174
- expect(description).toBe('');
175
- });
176
- it('returns description from _def', () => {
177
- const schema = z.object({ name: z.string() });
178
- schema._def.description = 'Description in _def';
179
- const description = getSchemaDescription(schema);
180
- expect(description).toBe('Description in _def');
181
- });
182
- });
183
- //# sourceMappingURL=utils.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"utils.test.js","sourceRoot":"","sources":["../../../../src/structured-output/__tests__/utils.test.ts"],"names":[],"mappings":"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"}
@@ -1,91 +0,0 @@
1
- import { z } from 'zod';
2
- import type { ToolRegistry } from '../registry/tool-registry.js';
3
- /**
4
- * Interface for structured output context operations.
5
- * Allows for null object pattern implementation.
6
- */
7
- export interface IStructuredOutputContext {
8
- registerTool(registry: ToolRegistry): void;
9
- storeResult(toolUseId: string, result: unknown): void;
10
- hasResult(): boolean;
11
- getResult(): unknown | undefined;
12
- getToolName(): string;
13
- cleanup(registry: ToolRegistry): void;
14
- readonly isEnabled: boolean;
15
- }
16
- /**
17
- * Null object implementation that does nothing.
18
- * Used when no structured output schema is provided.
19
- */
20
- export declare class NullStructuredOutputContext implements IStructuredOutputContext {
21
- readonly isEnabled = false;
22
- registerTool(_registry: ToolRegistry): void;
23
- storeResult(_toolUseId: string, _result: unknown): void;
24
- hasResult(): boolean;
25
- getResult(): unknown | undefined;
26
- getToolName(): string;
27
- cleanup(_registry: ToolRegistry): void;
28
- }
29
- /**
30
- * Context for managing structured output tool lifecycle per-invocation.
31
- * Handles tool registration, result storage, and cleanup.
32
- */
33
- export declare class StructuredOutputContext implements IStructuredOutputContext {
34
- readonly isEnabled = true;
35
- private _schema;
36
- private _tool?;
37
- private _result;
38
- /**
39
- * Creates a new StructuredOutputContext.
40
- *
41
- * @param schema - Zod schema for structured output
42
- */
43
- constructor(schema: z.ZodSchema);
44
- /**
45
- * Registers the structured output tool with the tool registry.
46
- *
47
- * @param registry - The tool registry to register with
48
- */
49
- registerTool(registry: ToolRegistry): void;
50
- /**
51
- * Stores the validated result from the structured output tool.
52
- * If called multiple times, only the latest result is kept.
53
- *
54
- * @param toolUseId - The tool use ID (unused, kept for interface compatibility)
55
- * @param result - The validated result
56
- */
57
- storeResult(toolUseId: string, result: unknown): void;
58
- /**
59
- * Checks if a result has been stored.
60
- *
61
- * @returns true if a result has been stored
62
- */
63
- hasResult(): boolean;
64
- /**
65
- * Retrieves the stored result, if available.
66
- *
67
- * @returns The validated result or undefined if not yet stored
68
- */
69
- getResult(): unknown | undefined;
70
- /**
71
- * Gets the tool name for forcing.
72
- *
73
- * @returns The tool name or 'strands_structured_output' as fallback
74
- */
75
- getToolName(): string;
76
- /**
77
- * Cleans up the structured output tool by removing it from the registry.
78
- * Should be called in a finally block to ensure cleanup happens regardless of success/failure.
79
- *
80
- * @param registry - The tool registry to clean up from
81
- */
82
- cleanup(registry: ToolRegistry): void;
83
- }
84
- /**
85
- * Factory function to create the appropriate context based on schema presence.
86
- *
87
- * @param schema - Optional Zod schema for structured output
88
- * @returns StructuredOutputContext if schema provided, NullStructuredOutputContext otherwise
89
- */
90
- export declare function createStructuredOutputContext(schema?: z.ZodSchema): IStructuredOutputContext;
91
- //# sourceMappingURL=context.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/structured-output/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAGhE;;;GAGG;AACH,MAAM,WAAW,wBAAwB;IACvC,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IAC1C,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI,CAAA;IACrD,SAAS,IAAI,OAAO,CAAA;IACpB,SAAS,IAAI,OAAO,GAAG,SAAS,CAAA;IAChC,WAAW,IAAI,MAAM,CAAA;IACrB,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAAA;IACrC,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAA;CAC5B;AAED;;;GAGG;AACH,qBAAa,2BAA4B,YAAW,wBAAwB;IAC1E,QAAQ,CAAC,SAAS,SAAQ;IAE1B,YAAY,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;IAI3C,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI;IAIvD,SAAS,IAAI,OAAO;IAIpB,SAAS,IAAI,OAAO,GAAG,SAAS;IAIhC,WAAW,IAAI,MAAM;IAIrB,OAAO,CAAC,SAAS,EAAE,YAAY,GAAG,IAAI;CAGvC;AAED;;;GAGG;AACH,qBAAa,uBAAwB,YAAW,wBAAwB;IACtE,QAAQ,CAAC,SAAS,QAAO;IAEzB,OAAO,CAAC,OAAO,CAAa;IAE5B,OAAO,CAAC,KAAK,CAAC,CAAkC;IAChD,OAAO,CAAC,OAAO,CAAqB;IAEpC;;;;OAIG;gBACS,MAAM,EAAE,CAAC,CAAC,SAAS;IAI/B;;;;OAIG;IACH,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAO1C;;;;;;OAMG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAG,IAAI;IAIrD;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,SAAS,IAAI,OAAO,GAAG,SAAS;IAIhC;;;;OAIG;IACH,WAAW,IAAI,MAAM;IAIrB;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;CAMtC;AAED;;;;;GAKG;AACH,wBAAgB,6BAA6B,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,GAAG,wBAAwB,CAE5F"}