@strands-agents/sdk 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (215) hide show
  1. package/README.md +43 -0
  2. package/dist/src/__fixtures__/mock-hook-provider.d.ts +3 -7
  3. package/dist/src/__fixtures__/mock-hook-provider.d.ts.map +1 -1
  4. package/dist/src/__fixtures__/mock-hook-provider.js +3 -9
  5. package/dist/src/__fixtures__/mock-hook-provider.js.map +1 -1
  6. package/dist/src/__fixtures__/mock-message-model.d.ts +8 -2
  7. package/dist/src/__fixtures__/mock-message-model.d.ts.map +1 -1
  8. package/dist/src/__fixtures__/mock-message-model.js +1 -0
  9. package/dist/src/__fixtures__/mock-message-model.js.map +1 -1
  10. package/dist/src/__fixtures__/mock-storage-provider.d.ts +37 -0
  11. package/dist/src/__fixtures__/mock-storage-provider.d.ts.map +1 -0
  12. package/dist/src/__fixtures__/mock-storage-provider.js +105 -0
  13. package/dist/src/__fixtures__/mock-storage-provider.js.map +1 -0
  14. package/dist/src/__fixtures__/slim-types.d.ts +50 -0
  15. package/dist/src/__fixtures__/slim-types.d.ts.map +1 -0
  16. package/dist/src/__fixtures__/slim-types.js +6 -0
  17. package/dist/src/__fixtures__/slim-types.js.map +1 -0
  18. package/dist/src/__fixtures__/tool-helpers.d.ts +8 -3
  19. package/dist/src/__fixtures__/tool-helpers.d.ts.map +1 -1
  20. package/dist/src/__fixtures__/tool-helpers.js +1 -1
  21. package/dist/src/__fixtures__/tool-helpers.js.map +1 -1
  22. package/dist/src/agent/__tests__/agent.hook.test.js +18 -18
  23. package/dist/src/agent/__tests__/agent.hook.test.js.map +1 -1
  24. package/dist/src/agent/__tests__/agent.test.js +124 -8
  25. package/dist/src/agent/__tests__/agent.test.js.map +1 -1
  26. package/dist/src/agent/__tests__/printer.test.js +5 -9
  27. package/dist/src/agent/__tests__/printer.test.js.map +1 -1
  28. package/dist/src/agent/__tests__/snapshot.test.d.ts +2 -0
  29. package/dist/src/agent/__tests__/snapshot.test.d.ts.map +1 -0
  30. package/dist/src/agent/__tests__/snapshot.test.js +249 -0
  31. package/dist/src/agent/__tests__/snapshot.test.js.map +1 -0
  32. package/dist/src/agent/__tests__/state.test.js +19 -0
  33. package/dist/src/agent/__tests__/state.test.js.map +1 -1
  34. package/dist/src/agent/agent.d.ts +19 -4
  35. package/dist/src/agent/agent.d.ts.map +1 -1
  36. package/dist/src/agent/agent.js +104 -34
  37. package/dist/src/agent/agent.js.map +1 -1
  38. package/dist/src/agent/printer.d.ts +4 -0
  39. package/dist/src/agent/printer.d.ts.map +1 -1
  40. package/dist/src/agent/printer.js +18 -6
  41. package/dist/src/agent/printer.js.map +1 -1
  42. package/dist/src/agent/snapshot.d.ts +132 -0
  43. package/dist/src/agent/snapshot.d.ts.map +1 -0
  44. package/dist/src/agent/snapshot.js +151 -0
  45. package/dist/src/agent/snapshot.js.map +1 -0
  46. package/dist/src/agent/state.d.ts +14 -1
  47. package/dist/src/agent/state.d.ts.map +1 -1
  48. package/dist/src/agent/state.js +21 -0
  49. package/dist/src/agent/state.js.map +1 -1
  50. package/dist/src/errors.d.ts +15 -0
  51. package/dist/src/errors.d.ts.map +1 -1
  52. package/dist/src/errors.js +18 -0
  53. package/dist/src/errors.js.map +1 -1
  54. package/dist/src/hooks/__tests__/events.test.js +102 -21
  55. package/dist/src/hooks/__tests__/events.test.js.map +1 -1
  56. package/dist/src/hooks/events.d.ts +156 -22
  57. package/dist/src/hooks/events.d.ts.map +1 -1
  58. package/dist/src/hooks/events.js +158 -18
  59. package/dist/src/hooks/events.js.map +1 -1
  60. package/dist/src/hooks/index.d.ts +12 -4
  61. package/dist/src/hooks/index.d.ts.map +1 -1
  62. package/dist/src/hooks/index.js +11 -3
  63. package/dist/src/hooks/index.js.map +1 -1
  64. package/dist/src/hooks/registry.d.ts +5 -5
  65. package/dist/src/hooks/registry.d.ts.map +1 -1
  66. package/dist/src/hooks/registry.js.map +1 -1
  67. package/dist/src/hooks/types.d.ts +5 -5
  68. package/dist/src/hooks/types.d.ts.map +1 -1
  69. package/dist/src/index.d.ts +4 -2
  70. package/dist/src/index.d.ts.map +1 -1
  71. package/dist/src/index.js +4 -3
  72. package/dist/src/index.js.map +1 -1
  73. package/dist/src/models/__tests__/anthropic.test.js +31 -42
  74. package/dist/src/models/__tests__/anthropic.test.js.map +1 -1
  75. package/dist/src/models/__tests__/bedrock.test.js +70 -107
  76. package/dist/src/models/__tests__/bedrock.test.js.map +1 -1
  77. package/dist/src/models/__tests__/gemini.test.js +18 -18
  78. package/dist/src/models/__tests__/gemini.test.js.map +1 -1
  79. package/dist/src/models/__tests__/model.test.js +14 -13
  80. package/dist/src/models/__tests__/model.test.js.map +1 -1
  81. package/dist/src/models/__tests__/openai.test.js +73 -83
  82. package/dist/src/models/__tests__/openai.test.js.map +1 -1
  83. package/dist/src/models/streaming.d.ts +8 -0
  84. package/dist/src/models/streaming.d.ts.map +1 -1
  85. package/dist/src/models/streaming.js +17 -0
  86. package/dist/src/models/streaming.js.map +1 -1
  87. package/dist/src/multiagent/__tests__/nodes.test.d.ts +2 -0
  88. package/dist/src/multiagent/__tests__/nodes.test.d.ts.map +1 -0
  89. package/dist/src/multiagent/__tests__/nodes.test.js +98 -0
  90. package/dist/src/multiagent/__tests__/nodes.test.js.map +1 -0
  91. package/dist/src/multiagent/events.d.ts +24 -0
  92. package/dist/src/multiagent/events.d.ts.map +1 -0
  93. package/dist/src/multiagent/events.js +19 -0
  94. package/dist/src/multiagent/events.js.map +1 -0
  95. package/dist/src/multiagent/index.d.ts +11 -0
  96. package/dist/src/multiagent/index.d.ts.map +1 -0
  97. package/dist/src/multiagent/index.js +7 -0
  98. package/dist/src/multiagent/index.js.map +1 -0
  99. package/dist/src/multiagent/nodes.d.ts +75 -0
  100. package/dist/src/multiagent/nodes.d.ts.map +1 -0
  101. package/dist/src/multiagent/nodes.js +101 -0
  102. package/dist/src/multiagent/nodes.js.map +1 -0
  103. package/dist/src/multiagent/state.d.ts +55 -0
  104. package/dist/src/multiagent/state.d.ts.map +1 -0
  105. package/dist/src/multiagent/state.js +43 -0
  106. package/dist/src/multiagent/state.js.map +1 -0
  107. package/dist/src/multiagent/types.d.ts +5 -0
  108. package/dist/src/multiagent/types.d.ts.map +1 -0
  109. package/dist/src/multiagent/types.js +2 -0
  110. package/dist/src/multiagent/types.js.map +1 -0
  111. package/dist/src/registry/tool-registry.d.ts +2 -1
  112. package/dist/src/registry/tool-registry.d.ts.map +1 -1
  113. package/dist/src/registry/tool-registry.js +4 -2
  114. package/dist/src/registry/tool-registry.js.map +1 -1
  115. package/dist/src/session/__tests__/file-storage.test.node.d.ts +2 -0
  116. package/dist/src/session/__tests__/file-storage.test.node.d.ts.map +1 -0
  117. package/dist/src/session/__tests__/file-storage.test.node.js +218 -0
  118. package/dist/src/session/__tests__/file-storage.test.node.js.map +1 -0
  119. package/dist/src/session/__tests__/s3-storage.test.node.d.ts +2 -0
  120. package/dist/src/session/__tests__/s3-storage.test.node.d.ts.map +1 -0
  121. package/dist/src/session/__tests__/s3-storage.test.node.js +375 -0
  122. package/dist/src/session/__tests__/s3-storage.test.node.js.map +1 -0
  123. package/dist/src/session/__tests__/validation.test.d.ts +2 -0
  124. package/dist/src/session/__tests__/validation.test.d.ts.map +1 -0
  125. package/dist/src/session/__tests__/validation.test.js +20 -0
  126. package/dist/src/session/__tests__/validation.test.js.map +1 -0
  127. package/dist/src/session/file-storage.d.ts +79 -0
  128. package/dist/src/session/file-storage.d.ts.map +1 -0
  129. package/dist/src/session/file-storage.js +144 -0
  130. package/dist/src/session/file-storage.js.map +1 -0
  131. package/dist/src/session/index.d.ts +19 -0
  132. package/dist/src/session/index.d.ts.map +1 -0
  133. package/dist/src/session/index.js +18 -0
  134. package/dist/src/session/index.js.map +1 -0
  135. package/dist/src/session/s3-storage.d.ts +93 -0
  136. package/dist/src/session/s3-storage.d.ts.map +1 -0
  137. package/dist/src/session/s3-storage.js +150 -0
  138. package/dist/src/session/s3-storage.js.map +1 -0
  139. package/dist/src/session/storage.d.ts +91 -0
  140. package/dist/src/session/storage.d.ts.map +1 -0
  141. package/dist/src/session/storage.js +2 -0
  142. package/dist/src/session/storage.js.map +1 -0
  143. package/dist/src/session/types.d.ts +49 -0
  144. package/dist/src/session/types.d.ts.map +1 -0
  145. package/dist/src/session/types.js +2 -0
  146. package/dist/src/session/types.js.map +1 -0
  147. package/dist/src/session/validation.d.ts +10 -0
  148. package/dist/src/session/validation.d.ts.map +1 -0
  149. package/dist/src/session/validation.js +16 -0
  150. package/dist/src/session/validation.js.map +1 -0
  151. package/dist/src/structured-output/__tests__/context.test.d.ts +2 -0
  152. package/dist/src/structured-output/__tests__/context.test.d.ts.map +1 -0
  153. package/dist/src/structured-output/__tests__/context.test.js +201 -0
  154. package/dist/src/structured-output/__tests__/context.test.js.map +1 -0
  155. package/dist/src/structured-output/__tests__/exceptions.test.d.ts +2 -0
  156. package/dist/src/structured-output/__tests__/exceptions.test.d.ts.map +1 -0
  157. package/dist/src/structured-output/__tests__/exceptions.test.js +103 -0
  158. package/dist/src/structured-output/__tests__/exceptions.test.js.map +1 -0
  159. package/dist/src/structured-output/__tests__/tool.test.d.ts +2 -0
  160. package/dist/src/structured-output/__tests__/tool.test.d.ts.map +1 -0
  161. package/dist/src/structured-output/__tests__/tool.test.js +256 -0
  162. package/dist/src/structured-output/__tests__/tool.test.js.map +1 -0
  163. package/dist/src/structured-output/__tests__/utils.test.d.ts +2 -0
  164. package/dist/src/structured-output/__tests__/utils.test.d.ts.map +1 -0
  165. package/dist/src/structured-output/__tests__/utils.test.js +183 -0
  166. package/dist/src/structured-output/__tests__/utils.test.js.map +1 -0
  167. package/dist/src/structured-output/context.d.ts +91 -0
  168. package/dist/src/structured-output/context.d.ts.map +1 -0
  169. package/dist/src/structured-output/context.js +112 -0
  170. package/dist/src/structured-output/context.js.map +1 -0
  171. package/dist/src/structured-output/exceptions.d.ts +18 -0
  172. package/dist/src/structured-output/exceptions.d.ts.map +1 -0
  173. package/dist/src/structured-output/exceptions.js +28 -0
  174. package/dist/src/structured-output/exceptions.js.map +1 -0
  175. package/dist/src/structured-output/tool.d.ts +33 -0
  176. package/dist/src/structured-output/tool.d.ts.map +1 -0
  177. package/dist/src/structured-output/tool.js +73 -0
  178. package/dist/src/structured-output/tool.js.map +1 -0
  179. package/dist/src/structured-output/utils.d.ts +23 -0
  180. package/dist/src/structured-output/utils.d.ts.map +1 -0
  181. package/dist/src/structured-output/utils.js +104 -0
  182. package/dist/src/structured-output/utils.js.map +1 -0
  183. package/dist/src/tools/zod-tool.d.ts.map +1 -1
  184. package/dist/src/tools/zod-tool.js +2 -5
  185. package/dist/src/tools/zod-tool.js.map +1 -1
  186. package/dist/src/tsconfig.tsbuildinfo +1 -1
  187. package/dist/src/types/__tests__/media.test.js +216 -1
  188. package/dist/src/types/__tests__/media.test.js.map +1 -1
  189. package/dist/src/types/__tests__/messages.test.js +193 -4
  190. package/dist/src/types/__tests__/messages.test.js.map +1 -1
  191. package/dist/src/types/agent.d.ts +13 -7
  192. package/dist/src/types/agent.d.ts.map +1 -1
  193. package/dist/src/types/agent.js +8 -1
  194. package/dist/src/types/agent.js.map +1 -1
  195. package/dist/src/types/json.d.ts +61 -0
  196. package/dist/src/types/json.d.ts.map +1 -1
  197. package/dist/src/types/json.js +24 -0
  198. package/dist/src/types/json.js.map +1 -1
  199. package/dist/src/types/media.d.ts +84 -4
  200. package/dist/src/types/media.d.ts.map +1 -1
  201. package/dist/src/types/media.js +194 -0
  202. package/dist/src/types/media.js.map +1 -1
  203. package/dist/src/types/messages.d.ts +148 -9
  204. package/dist/src/types/messages.d.ts.map +1 -1
  205. package/dist/src/types/messages.js +234 -7
  206. package/dist/src/types/messages.js.map +1 -1
  207. package/dist/src/types/serializable.d.ts +31 -0
  208. package/dist/src/types/serializable.d.ts.map +1 -0
  209. package/dist/src/types/serializable.js +19 -0
  210. package/dist/src/types/serializable.js.map +1 -0
  211. package/dist/src/utils/zod.d.ts +11 -0
  212. package/dist/src/utils/zod.d.ts.map +1 -0
  213. package/dist/src/utils/zod.js +14 -0
  214. package/dist/src/utils/zod.js.map +1 -0
  215. package/package.json +7 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.test.d.ts","sourceRoot":"","sources":["../../../../src/structured-output/__tests__/context.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,201 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { z } from 'zod';
3
+ import { StructuredOutputContext, NullStructuredOutputContext, createStructuredOutputContext } from '../context.js';
4
+ import { ToolRegistry } from '../../registry/tool-registry.js';
5
+ import { StructuredOutputTool } from '../tool.js';
6
+ describe('NullStructuredOutputContext', () => {
7
+ it('has isEnabled set to false', () => {
8
+ const context = new NullStructuredOutputContext();
9
+ expect(context.isEnabled).toBe(false);
10
+ });
11
+ it('registerTool does nothing', () => {
12
+ const context = new NullStructuredOutputContext();
13
+ const registry = new ToolRegistry();
14
+ context.registerTool(registry);
15
+ expect(registry.values()).toEqual([]);
16
+ });
17
+ it('storeResult does nothing', () => {
18
+ const context = new NullStructuredOutputContext();
19
+ expect(() => context.storeResult('tool-1', { data: 'test' })).not.toThrow();
20
+ });
21
+ it('hasResult always returns true', () => {
22
+ const context = new NullStructuredOutputContext();
23
+ expect(context.hasResult()).toBe(true);
24
+ });
25
+ it('getResult returns undefined', () => {
26
+ const context = new NullStructuredOutputContext();
27
+ expect(context.getResult()).toBeUndefined();
28
+ });
29
+ it('getToolName returns default name', () => {
30
+ const context = new NullStructuredOutputContext();
31
+ expect(context.getToolName()).toBe('strands_structured_output');
32
+ });
33
+ it('cleanup does nothing', () => {
34
+ const context = new NullStructuredOutputContext();
35
+ const registry = new ToolRegistry();
36
+ expect(() => context.cleanup(registry)).not.toThrow();
37
+ });
38
+ });
39
+ describe('StructuredOutputContext', () => {
40
+ describe('constructor', () => {
41
+ it('creates context with schema', () => {
42
+ const schema = z.object({ name: z.string() });
43
+ const context = new StructuredOutputContext(schema);
44
+ expect(context.isEnabled).toBe(true);
45
+ });
46
+ });
47
+ describe('registerTool', () => {
48
+ it('registers structured output tool with registry', () => {
49
+ const schema = z.object({ name: z.string() });
50
+ const context = new StructuredOutputContext(schema);
51
+ const registry = new ToolRegistry();
52
+ context.registerTool(registry);
53
+ const tools = registry.values();
54
+ expect(tools.length).toBe(1);
55
+ expect(tools[0]).toBeInstanceOf(StructuredOutputTool);
56
+ expect(tools[0]?.name).toBe('strands_structured_output');
57
+ });
58
+ it('does not register duplicate tools on multiple calls', () => {
59
+ const schema = z.object({ name: z.string() });
60
+ const context = new StructuredOutputContext(schema);
61
+ const registry = new ToolRegistry();
62
+ context.registerTool(registry);
63
+ expect(registry.values().length).toBe(1);
64
+ expect(() => context.registerTool(registry)).toThrow('already registered');
65
+ });
66
+ });
67
+ describe('storeResult', () => {
68
+ it('stores validated result', () => {
69
+ const schema = z.object({ name: z.string() });
70
+ const context = new StructuredOutputContext(schema);
71
+ context.storeResult('tool-1', { name: 'John' });
72
+ expect(context.hasResult()).toBe(true);
73
+ expect(context.getResult()).toEqual({ name: 'John' });
74
+ });
75
+ it('overwrites previous result', () => {
76
+ const schema = z.object({ value: z.number() });
77
+ const context = new StructuredOutputContext(schema);
78
+ context.storeResult('tool-1', { value: 1 });
79
+ expect(context.getResult()).toEqual({ value: 1 });
80
+ expect(context.hasResult()).toBe(true);
81
+ context.storeResult('tool-2', { value: 2 });
82
+ expect(context.getResult()).toEqual({ value: 2 });
83
+ expect(context.hasResult()).toBe(true);
84
+ });
85
+ });
86
+ describe('hasResult', () => {
87
+ it('returns false when no result stored', () => {
88
+ const schema = z.object({ name: z.string() });
89
+ const context = new StructuredOutputContext(schema);
90
+ expect(context.hasResult()).toBe(false);
91
+ });
92
+ it('returns true when result stored', () => {
93
+ const schema = z.object({ name: z.string() });
94
+ const context = new StructuredOutputContext(schema);
95
+ context.storeResult('tool-1', { name: 'John' });
96
+ expect(context.hasResult()).toBe(true);
97
+ });
98
+ });
99
+ describe('getResult', () => {
100
+ it('returns undefined when no result stored', () => {
101
+ const schema = z.object({ name: z.string() });
102
+ const context = new StructuredOutputContext(schema);
103
+ expect(context.getResult()).toBeUndefined();
104
+ });
105
+ it('returns stored result', () => {
106
+ const schema = z.object({ name: z.string(), age: z.number() });
107
+ const context = new StructuredOutputContext(schema);
108
+ context.storeResult('tool-1', { name: 'John', age: 30 });
109
+ expect(context.getResult()).toEqual({ name: 'John', age: 30 });
110
+ });
111
+ });
112
+ describe('getToolName', () => {
113
+ it('returns tool name after registration', () => {
114
+ const schema = z.object({ name: z.string() });
115
+ const context = new StructuredOutputContext(schema);
116
+ const registry = new ToolRegistry();
117
+ context.registerTool(registry);
118
+ expect(context.getToolName()).toBe('strands_structured_output');
119
+ });
120
+ it('returns fallback before registration', () => {
121
+ const schema = z.object({ name: z.string() });
122
+ const context = new StructuredOutputContext(schema);
123
+ expect(context.getToolName()).toBe('strands_structured_output');
124
+ });
125
+ });
126
+ describe('cleanup', () => {
127
+ it('removes tool from registry', () => {
128
+ const schema = z.object({ name: z.string() });
129
+ const context = new StructuredOutputContext(schema);
130
+ const registry = new ToolRegistry();
131
+ context.registerTool(registry);
132
+ expect(registry.values().length).toBe(1);
133
+ context.cleanup(registry);
134
+ expect(registry.values().length).toBe(0);
135
+ });
136
+ it('can be called multiple times safely', () => {
137
+ const schema = z.object({ name: z.string() });
138
+ const context = new StructuredOutputContext(schema);
139
+ const registry = new ToolRegistry();
140
+ context.registerTool(registry);
141
+ context.cleanup(registry);
142
+ expect(registry.values().length).toBe(0);
143
+ context.cleanup(registry);
144
+ expect(registry.values().length).toBe(0);
145
+ });
146
+ it('does nothing if tool not registered', () => {
147
+ const schema = z.object({ name: z.string() });
148
+ const context = new StructuredOutputContext(schema);
149
+ const registry = new ToolRegistry();
150
+ context.cleanup(registry);
151
+ expect(registry.values().length).toBe(0);
152
+ });
153
+ it('supports register-cleanup-register cycle', () => {
154
+ const schema = z.object({ name: z.string() });
155
+ const context = new StructuredOutputContext(schema);
156
+ const registry = new ToolRegistry();
157
+ context.registerTool(registry);
158
+ expect(registry.values().length).toBe(1);
159
+ context.cleanup(registry);
160
+ expect(registry.values().length).toBe(0);
161
+ context.registerTool(registry);
162
+ expect(registry.values().length).toBe(1);
163
+ });
164
+ });
165
+ describe('lifecycle', () => {
166
+ it('supports full register-use-cleanup lifecycle', () => {
167
+ const schema = z.object({ name: z.string() });
168
+ const context = new StructuredOutputContext(schema);
169
+ const registry = new ToolRegistry();
170
+ // Register
171
+ context.registerTool(registry);
172
+ expect(registry.values().length).toBe(1);
173
+ // Use
174
+ context.storeResult('tool-1', { name: 'John' });
175
+ expect(context.hasResult()).toBe(true);
176
+ expect(context.getResult()).toEqual({ name: 'John' });
177
+ // Cleanup
178
+ context.cleanup(registry);
179
+ expect(registry.values().length).toBe(0);
180
+ });
181
+ });
182
+ });
183
+ describe('createStructuredOutputContext', () => {
184
+ it('returns StructuredOutputContext when schema provided', () => {
185
+ const schema = z.object({ name: z.string() });
186
+ const context = createStructuredOutputContext(schema);
187
+ expect(context).toBeInstanceOf(StructuredOutputContext);
188
+ expect(context.isEnabled).toBe(true);
189
+ });
190
+ it('returns NullStructuredOutputContext when no schema provided', () => {
191
+ const context = createStructuredOutputContext();
192
+ expect(context).toBeInstanceOf(NullStructuredOutputContext);
193
+ expect(context.isEnabled).toBe(false);
194
+ });
195
+ it('returns NullStructuredOutputContext when undefined schema', () => {
196
+ const context = createStructuredOutputContext(undefined);
197
+ expect(context).toBeInstanceOf(NullStructuredOutputContext);
198
+ expect(context.isEnabled).toBe(false);
199
+ });
200
+ });
201
+ //# sourceMappingURL=context.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.test.js","sourceRoot":"","sources":["../../../../src/structured-output/__tests__/context.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,uBAAuB,EAAE,2BAA2B,EAAE,6BAA6B,EAAE,MAAM,eAAe,CAAA;AACnH,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAA;AAEjD,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAA;QACjD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2BAA2B,EAAE,GAAG,EAAE;QACnC,MAAM,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAA;QACjD,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;QAEnC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;QAE9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,0BAA0B,EAAE,GAAG,EAAE;QAClC,MAAM,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAA;QAEjD,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAA;QAEjD,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACxC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;QACrC,MAAM,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAA;QAEjD,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,EAAE,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAA;QAEjD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAC9B,MAAM,OAAO,GAAG,IAAI,2BAA2B,EAAE,CAAA;QACjD,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;QAEnC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yBAAyB,EAAE,GAAG,EAAE;IACvC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,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;YAEnD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,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,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;YAEnC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAE9B,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAA;YAC/B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAA;YACrD,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QAC1D,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;YAC7D,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,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;YAEnC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAExC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAA;QAC5E,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,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;YAEnD,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YAE/C,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,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;QACvD,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,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;YAEnD,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YAC3C,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;YAEtC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;YAC3C,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;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,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;YAEnD,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,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;YAEnD,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YAE/C,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,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;YAEnD,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,aAAa,EAAE,CAAA;QAC7C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;YAC/B,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;YAEnD,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;YAExD,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAA;QAChE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,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,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;YAEnC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAE9B,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,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;YAEnD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAA;QACjE,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;YACpC,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,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;YAEnC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAExC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,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,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;YAEnC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAC9B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAExC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,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,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;YAEnC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;QAEF,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,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,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;YAEnC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAExC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAExC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QACzB,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,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,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAA;YAEnC,WAAW;YACX,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;YAC9B,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAExC,MAAM;YACN,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YAC/C,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,IAAI,EAAE,MAAM,EAAE,CAAC,CAAA;YAErD,UAAU;YACV,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAA;YACzB,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC1C,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;QAC7C,MAAM,OAAO,GAAG,6BAA6B,CAAC,MAAM,CAAC,CAAA;QAErD,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,uBAAuB,CAAC,CAAA;QACvD,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACtC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,OAAO,GAAG,6BAA6B,EAAE,CAAA;QAE/C,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAA;QAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,MAAM,OAAO,GAAG,6BAA6B,CAAC,SAAS,CAAC,CAAA;QAExD,MAAM,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC,2BAA2B,CAAC,CAAA;QAC3D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=exceptions.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptions.test.d.ts","sourceRoot":"","sources":["../../../../src/structured-output/__tests__/exceptions.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { StructuredOutputException, formatValidationErrors } from '../exceptions.js';
3
+ import { z } from 'zod';
4
+ describe('StructuredOutputException', () => {
5
+ it('creates exception with message', () => {
6
+ const exception = new StructuredOutputException('Test error');
7
+ expect(exception.message).toBe('Test error');
8
+ expect(exception.name).toBe('StructuredOutputException');
9
+ });
10
+ it('is instance of Error', () => {
11
+ const exception = new StructuredOutputException('Test error');
12
+ expect(exception).toBeInstanceOf(Error);
13
+ });
14
+ });
15
+ describe('formatValidationErrors', () => {
16
+ it('formats single field error', () => {
17
+ const schema = z.object({ name: z.string() });
18
+ const result = schema.safeParse({ name: 123 });
19
+ expect(result.success).toBe(false);
20
+ if (!result.success) {
21
+ const formatted = formatValidationErrors(result.error.issues);
22
+ expect(formatted).toBe("- Field 'name': Invalid input: expected string, received number");
23
+ }
24
+ });
25
+ it('formats multiple field errors', () => {
26
+ const schema = z.object({
27
+ name: z.string(),
28
+ age: z.number(),
29
+ });
30
+ const result = schema.safeParse({ name: 123, age: 'invalid' });
31
+ expect(result.success).toBe(false);
32
+ if (!result.success) {
33
+ const formatted = formatValidationErrors(result.error.issues);
34
+ const lines = formatted.split('\n');
35
+ expect(lines).toHaveLength(2);
36
+ expect(lines[0]).toBe("- Field 'name': Invalid input: expected string, received number");
37
+ expect(lines[1]).toBe("- Field 'age': Invalid input: expected number, received string");
38
+ }
39
+ });
40
+ it('formats nested field errors', () => {
41
+ const schema = z.object({
42
+ user: z.object({
43
+ name: z.string(),
44
+ }),
45
+ });
46
+ const result = schema.safeParse({ user: { name: 123 } });
47
+ expect(result.success).toBe(false);
48
+ if (!result.success) {
49
+ const formatted = formatValidationErrors(result.error.issues);
50
+ expect(formatted).toBe("- Field 'user.name': Invalid input: expected string, received number");
51
+ }
52
+ });
53
+ it('formats array field errors', () => {
54
+ const schema = z.object({
55
+ items: z.array(z.string()),
56
+ });
57
+ const result = schema.safeParse({ items: ['valid', 123, 'valid'] });
58
+ expect(result.success).toBe(false);
59
+ if (!result.success) {
60
+ const formatted = formatValidationErrors(result.error.issues);
61
+ expect(formatted).toBe("- Field 'items.1': Invalid input: expected string, received number");
62
+ }
63
+ });
64
+ it('formats root-level errors', () => {
65
+ const schema = z.string();
66
+ const result = schema.safeParse(123);
67
+ expect(result.success).toBe(false);
68
+ if (!result.success) {
69
+ const formatted = formatValidationErrors(result.error.issues);
70
+ expect(formatted).toBe("- Field 'root': Invalid input: expected string, received number");
71
+ }
72
+ });
73
+ it('formats required field errors', () => {
74
+ const schema = z.object({
75
+ name: z.string(),
76
+ age: z.number(),
77
+ });
78
+ const result = schema.safeParse({ name: 'John' });
79
+ expect(result.success).toBe(false);
80
+ if (!result.success) {
81
+ const formatted = formatValidationErrors(result.error.issues);
82
+ expect(formatted).toContain("- Field 'age':");
83
+ }
84
+ });
85
+ it('formats multiple errors with newlines', () => {
86
+ const schema = z.object({
87
+ name: z.string(),
88
+ age: z.number(),
89
+ email: z.string().email(),
90
+ });
91
+ const result = schema.safeParse({ name: 123, age: 'invalid', email: 'not-an-email' });
92
+ expect(result.success).toBe(false);
93
+ if (!result.success) {
94
+ const formatted = formatValidationErrors(result.error.issues);
95
+ const lines = formatted.split('\n');
96
+ expect(lines).toHaveLength(3);
97
+ expect(lines[0]).toBe("- Field 'name': Invalid input: expected string, received number");
98
+ expect(lines[1]).toBe("- Field 'age': Invalid input: expected number, received string");
99
+ expect(lines[2]).toBe("- Field 'email': Invalid email address");
100
+ }
101
+ });
102
+ });
103
+ //# sourceMappingURL=exceptions.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exceptions.test.js","sourceRoot":"","sources":["../../../../src/structured-output/__tests__/exceptions.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.test.d.ts","sourceRoot":"","sources":["../../../../src/structured-output/__tests__/tool.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,256 @@
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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.test.js","sourceRoot":"","sources":["../../../../src/structured-output/__tests__/tool.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=utils.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.test.d.ts","sourceRoot":"","sources":["../../../../src/structured-output/__tests__/utils.test.ts"],"names":[],"mappings":""}