@copilotkit/aimock 1.10.0 → 1.12.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 (167) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/README.md +4 -2
  4. package/dist/a2a-types.d.cts.map +1 -1
  5. package/dist/a2a-types.d.ts.map +1 -1
  6. package/dist/agui-handler.cjs +340 -0
  7. package/dist/agui-handler.cjs.map +1 -0
  8. package/dist/agui-handler.d.cts +96 -0
  9. package/dist/agui-handler.d.cts.map +1 -0
  10. package/dist/agui-handler.d.ts +96 -0
  11. package/dist/agui-handler.d.ts.map +1 -0
  12. package/dist/agui-handler.js +326 -0
  13. package/dist/agui-handler.js.map +1 -0
  14. package/dist/agui-mock.cjs +190 -0
  15. package/dist/agui-mock.cjs.map +1 -0
  16. package/dist/agui-mock.d.cts +50 -0
  17. package/dist/agui-mock.d.cts.map +1 -0
  18. package/dist/agui-mock.d.ts +50 -0
  19. package/dist/agui-mock.d.ts.map +1 -0
  20. package/dist/agui-mock.js +188 -0
  21. package/dist/agui-mock.js.map +1 -0
  22. package/dist/agui-recorder.cjs +153 -0
  23. package/dist/agui-recorder.cjs.map +1 -0
  24. package/dist/agui-recorder.d.cts +19 -0
  25. package/dist/agui-recorder.d.cts.map +1 -0
  26. package/dist/agui-recorder.d.ts +19 -0
  27. package/dist/agui-recorder.d.ts.map +1 -0
  28. package/dist/agui-recorder.js +147 -0
  29. package/dist/agui-recorder.js.map +1 -0
  30. package/dist/agui-types.d.cts +231 -0
  31. package/dist/agui-types.d.cts.map +1 -0
  32. package/dist/agui-types.d.ts +231 -0
  33. package/dist/agui-types.d.ts.map +1 -0
  34. package/dist/bedrock-converse.cjs +2 -0
  35. package/dist/bedrock-converse.cjs.map +1 -1
  36. package/dist/bedrock-converse.d.cts.map +1 -1
  37. package/dist/bedrock-converse.d.ts.map +1 -1
  38. package/dist/bedrock-converse.js +2 -0
  39. package/dist/bedrock-converse.js.map +1 -1
  40. package/dist/bedrock.cjs +2 -0
  41. package/dist/bedrock.cjs.map +1 -1
  42. package/dist/bedrock.d.cts.map +1 -1
  43. package/dist/bedrock.d.ts.map +1 -1
  44. package/dist/bedrock.js +2 -0
  45. package/dist/bedrock.js.map +1 -1
  46. package/dist/cli.cjs +32 -1
  47. package/dist/cli.cjs.map +1 -1
  48. package/dist/cli.js +32 -1
  49. package/dist/cli.js.map +1 -1
  50. package/dist/cohere.cjs +1 -0
  51. package/dist/cohere.cjs.map +1 -1
  52. package/dist/cohere.js +1 -0
  53. package/dist/cohere.js.map +1 -1
  54. package/dist/config-loader.cjs +19 -0
  55. package/dist/config-loader.cjs.map +1 -1
  56. package/dist/config-loader.d.cts +16 -0
  57. package/dist/config-loader.d.cts.map +1 -1
  58. package/dist/config-loader.d.ts +16 -0
  59. package/dist/config-loader.d.ts.map +1 -1
  60. package/dist/config-loader.js +19 -0
  61. package/dist/config-loader.js.map +1 -1
  62. package/dist/embeddings.cjs +2 -1
  63. package/dist/embeddings.cjs.map +1 -1
  64. package/dist/embeddings.js +2 -1
  65. package/dist/embeddings.js.map +1 -1
  66. package/dist/gemini.cjs +1 -0
  67. package/dist/gemini.cjs.map +1 -1
  68. package/dist/gemini.js +1 -0
  69. package/dist/gemini.js.map +1 -1
  70. package/dist/helpers.cjs +16 -0
  71. package/dist/helpers.cjs.map +1 -1
  72. package/dist/helpers.d.cts +6 -2
  73. package/dist/helpers.d.cts.map +1 -1
  74. package/dist/helpers.d.ts +6 -2
  75. package/dist/helpers.d.ts.map +1 -1
  76. package/dist/helpers.js +13 -1
  77. package/dist/helpers.js.map +1 -1
  78. package/dist/images.cjs +166 -0
  79. package/dist/images.cjs.map +1 -0
  80. package/dist/images.d.cts +11 -0
  81. package/dist/images.d.cts.map +1 -0
  82. package/dist/images.d.ts +11 -0
  83. package/dist/images.d.ts.map +1 -0
  84. package/dist/images.js +166 -0
  85. package/dist/images.js.map +1 -0
  86. package/dist/index.cjs +32 -0
  87. package/dist/index.d.cts +11 -3
  88. package/dist/index.d.ts +11 -3
  89. package/dist/index.js +9 -2
  90. package/dist/llmock.cjs +37 -1
  91. package/dist/llmock.cjs.map +1 -1
  92. package/dist/llmock.d.cts +5 -1
  93. package/dist/llmock.d.cts.map +1 -1
  94. package/dist/llmock.d.ts +5 -1
  95. package/dist/llmock.d.ts.map +1 -1
  96. package/dist/llmock.js +37 -1
  97. package/dist/llmock.js.map +1 -1
  98. package/dist/messages.cjs +1 -0
  99. package/dist/messages.cjs.map +1 -1
  100. package/dist/messages.js +1 -0
  101. package/dist/messages.js.map +1 -1
  102. package/dist/ollama.cjs +2 -0
  103. package/dist/ollama.cjs.map +1 -1
  104. package/dist/ollama.d.cts.map +1 -1
  105. package/dist/ollama.d.ts.map +1 -1
  106. package/dist/ollama.js +2 -0
  107. package/dist/ollama.js.map +1 -1
  108. package/dist/recorder.cjs +50 -7
  109. package/dist/recorder.cjs.map +1 -1
  110. package/dist/recorder.js +50 -7
  111. package/dist/recorder.js.map +1 -1
  112. package/dist/responses.cjs +1 -0
  113. package/dist/responses.cjs.map +1 -1
  114. package/dist/responses.js +1 -0
  115. package/dist/responses.js.map +1 -1
  116. package/dist/router.cjs +8 -0
  117. package/dist/router.cjs.map +1 -1
  118. package/dist/router.d.cts.map +1 -1
  119. package/dist/router.d.ts.map +1 -1
  120. package/dist/router.js +9 -0
  121. package/dist/router.js.map +1 -1
  122. package/dist/server.cjs +80 -3
  123. package/dist/server.cjs.map +1 -1
  124. package/dist/server.d.cts +2 -0
  125. package/dist/server.d.cts.map +1 -1
  126. package/dist/server.d.ts +2 -0
  127. package/dist/server.d.ts.map +1 -1
  128. package/dist/server.js +80 -3
  129. package/dist/server.js.map +1 -1
  130. package/dist/speech.cjs +144 -0
  131. package/dist/speech.cjs.map +1 -0
  132. package/dist/speech.d.cts +11 -0
  133. package/dist/speech.d.cts.map +1 -0
  134. package/dist/speech.d.ts +11 -0
  135. package/dist/speech.d.ts.map +1 -0
  136. package/dist/speech.js +144 -0
  137. package/dist/speech.js.map +1 -0
  138. package/dist/suite.cjs +8 -0
  139. package/dist/suite.cjs.map +1 -1
  140. package/dist/suite.d.cts +4 -0
  141. package/dist/suite.d.cts.map +1 -1
  142. package/dist/suite.d.ts +4 -0
  143. package/dist/suite.d.ts.map +1 -1
  144. package/dist/suite.js +8 -0
  145. package/dist/suite.js.map +1 -1
  146. package/dist/transcription.cjs +134 -0
  147. package/dist/transcription.cjs.map +1 -0
  148. package/dist/transcription.d.cts +11 -0
  149. package/dist/transcription.d.cts.map +1 -0
  150. package/dist/transcription.d.ts +11 -0
  151. package/dist/transcription.d.ts.map +1 -0
  152. package/dist/transcription.js +134 -0
  153. package/dist/transcription.js.map +1 -0
  154. package/dist/types.d.cts +44 -2
  155. package/dist/types.d.cts.map +1 -1
  156. package/dist/types.d.ts +44 -2
  157. package/dist/types.d.ts.map +1 -1
  158. package/dist/vector-types.d.ts.map +1 -1
  159. package/dist/video.cjs +196 -0
  160. package/dist/video.cjs.map +1 -0
  161. package/dist/video.d.cts +14 -0
  162. package/dist/video.d.cts.map +1 -0
  163. package/dist/video.d.ts +14 -0
  164. package/dist/video.d.ts.map +1 -0
  165. package/dist/video.js +195 -0
  166. package/dist/video.js.map +1 -0
  167. package/package.json +2 -2
@@ -0,0 +1,231 @@
1
+ //#region src/agui-types.d.ts
2
+ type AGUIEventType = "RUN_STARTED" | "RUN_FINISHED" | "RUN_ERROR" | "STEP_STARTED" | "STEP_FINISHED" | "TEXT_MESSAGE_START" | "TEXT_MESSAGE_CONTENT" | "TEXT_MESSAGE_END" | "TEXT_MESSAGE_CHUNK" | "TOOL_CALL_START" | "TOOL_CALL_ARGS" | "TOOL_CALL_END" | "TOOL_CALL_CHUNK" | "TOOL_CALL_RESULT" | "STATE_SNAPSHOT" | "STATE_DELTA" | "MESSAGES_SNAPSHOT" | "ACTIVITY_SNAPSHOT" | "ACTIVITY_DELTA" | "REASONING_START" | "REASONING_MESSAGE_START" | "REASONING_MESSAGE_CONTENT" | "REASONING_MESSAGE_END" | "REASONING_MESSAGE_CHUNK" | "REASONING_END" | "REASONING_ENCRYPTED_VALUE" | "RAW" | "CUSTOM" | "THINKING_START" | "THINKING_END" | "THINKING_TEXT_MESSAGE_START" | "THINKING_TEXT_MESSAGE_CONTENT" | "THINKING_TEXT_MESSAGE_END";
3
+ interface AGUIBaseEvent {
4
+ type: AGUIEventType;
5
+ timestamp?: number;
6
+ rawEvent?: unknown;
7
+ }
8
+ interface AGUIRunStartedEvent extends AGUIBaseEvent {
9
+ type: "RUN_STARTED";
10
+ threadId: string;
11
+ runId: string;
12
+ parentRunId?: string;
13
+ input?: AGUIRunAgentInput;
14
+ }
15
+ interface AGUIRunFinishedEvent extends AGUIBaseEvent {
16
+ type: "RUN_FINISHED";
17
+ threadId: string;
18
+ runId: string;
19
+ result?: unknown;
20
+ }
21
+ interface AGUIRunErrorEvent extends AGUIBaseEvent {
22
+ type: "RUN_ERROR";
23
+ message: string;
24
+ code?: string;
25
+ }
26
+ interface AGUIStepStartedEvent extends AGUIBaseEvent {
27
+ type: "STEP_STARTED";
28
+ stepName: string;
29
+ }
30
+ interface AGUIStepFinishedEvent extends AGUIBaseEvent {
31
+ type: "STEP_FINISHED";
32
+ stepName: string;
33
+ }
34
+ type AGUITextMessageRole = "developer" | "system" | "assistant" | "user";
35
+ interface AGUITextMessageStartEvent extends AGUIBaseEvent {
36
+ type: "TEXT_MESSAGE_START";
37
+ messageId: string;
38
+ role: AGUITextMessageRole;
39
+ name?: string;
40
+ }
41
+ interface AGUITextMessageContentEvent extends AGUIBaseEvent {
42
+ type: "TEXT_MESSAGE_CONTENT";
43
+ messageId: string;
44
+ delta: string;
45
+ }
46
+ interface AGUITextMessageEndEvent extends AGUIBaseEvent {
47
+ type: "TEXT_MESSAGE_END";
48
+ messageId: string;
49
+ }
50
+ interface AGUITextMessageChunkEvent extends AGUIBaseEvent {
51
+ type: "TEXT_MESSAGE_CHUNK";
52
+ messageId?: string;
53
+ role?: AGUITextMessageRole;
54
+ delta?: string;
55
+ name?: string;
56
+ }
57
+ interface AGUIToolCallStartEvent extends AGUIBaseEvent {
58
+ type: "TOOL_CALL_START";
59
+ toolCallId: string;
60
+ toolCallName: string;
61
+ parentMessageId?: string;
62
+ }
63
+ interface AGUIToolCallArgsEvent extends AGUIBaseEvent {
64
+ type: "TOOL_CALL_ARGS";
65
+ toolCallId: string;
66
+ delta: string;
67
+ }
68
+ interface AGUIToolCallEndEvent extends AGUIBaseEvent {
69
+ type: "TOOL_CALL_END";
70
+ toolCallId: string;
71
+ }
72
+ interface AGUIToolCallChunkEvent extends AGUIBaseEvent {
73
+ type: "TOOL_CALL_CHUNK";
74
+ toolCallId?: string;
75
+ toolCallName?: string;
76
+ parentMessageId?: string;
77
+ delta?: string;
78
+ }
79
+ interface AGUIToolCallResultEvent extends AGUIBaseEvent {
80
+ type: "TOOL_CALL_RESULT";
81
+ messageId: string;
82
+ toolCallId: string;
83
+ content: string;
84
+ role?: "tool";
85
+ }
86
+ interface AGUIStateSnapshotEvent extends AGUIBaseEvent {
87
+ type: "STATE_SNAPSHOT";
88
+ snapshot: unknown;
89
+ }
90
+ interface AGUIStateDeltaEvent extends AGUIBaseEvent {
91
+ type: "STATE_DELTA";
92
+ delta: unknown[];
93
+ }
94
+ interface AGUIMessagesSnapshotEvent extends AGUIBaseEvent {
95
+ type: "MESSAGES_SNAPSHOT";
96
+ messages: AGUIMessage[];
97
+ }
98
+ interface AGUIActivitySnapshotEvent extends AGUIBaseEvent {
99
+ type: "ACTIVITY_SNAPSHOT";
100
+ messageId: string;
101
+ activityType: string;
102
+ content: Record<string, unknown>;
103
+ replace?: boolean;
104
+ }
105
+ interface AGUIActivityDeltaEvent extends AGUIBaseEvent {
106
+ type: "ACTIVITY_DELTA";
107
+ messageId: string;
108
+ activityType: string;
109
+ patch: unknown[];
110
+ }
111
+ interface AGUIReasoningStartEvent extends AGUIBaseEvent {
112
+ type: "REASONING_START";
113
+ messageId: string;
114
+ }
115
+ interface AGUIReasoningMessageStartEvent extends AGUIBaseEvent {
116
+ type: "REASONING_MESSAGE_START";
117
+ messageId: string;
118
+ role: "reasoning";
119
+ }
120
+ interface AGUIReasoningMessageContentEvent extends AGUIBaseEvent {
121
+ type: "REASONING_MESSAGE_CONTENT";
122
+ messageId: string;
123
+ delta: string;
124
+ }
125
+ interface AGUIReasoningMessageEndEvent extends AGUIBaseEvent {
126
+ type: "REASONING_MESSAGE_END";
127
+ messageId: string;
128
+ }
129
+ interface AGUIReasoningMessageChunkEvent extends AGUIBaseEvent {
130
+ type: "REASONING_MESSAGE_CHUNK";
131
+ messageId?: string;
132
+ delta?: string;
133
+ }
134
+ interface AGUIReasoningEndEvent extends AGUIBaseEvent {
135
+ type: "REASONING_END";
136
+ messageId: string;
137
+ }
138
+ type AGUIReasoningEncryptedValueSubtype = "tool-call" | "message";
139
+ interface AGUIReasoningEncryptedValueEvent extends AGUIBaseEvent {
140
+ type: "REASONING_ENCRYPTED_VALUE";
141
+ subtype: AGUIReasoningEncryptedValueSubtype;
142
+ entityId: string;
143
+ encryptedValue: string;
144
+ }
145
+ interface AGUIRawEvent extends AGUIBaseEvent {
146
+ type: "RAW";
147
+ event: unknown;
148
+ source?: string;
149
+ }
150
+ interface AGUICustomEvent extends AGUIBaseEvent {
151
+ type: "CUSTOM";
152
+ name: string;
153
+ value: unknown;
154
+ }
155
+ interface AGUIThinkingStartEvent extends AGUIBaseEvent {
156
+ type: "THINKING_START";
157
+ title?: string;
158
+ }
159
+ interface AGUIThinkingEndEvent extends AGUIBaseEvent {
160
+ type: "THINKING_END";
161
+ }
162
+ interface AGUIThinkingTextMessageStartEvent extends AGUIBaseEvent {
163
+ type: "THINKING_TEXT_MESSAGE_START";
164
+ }
165
+ interface AGUIThinkingTextMessageContentEvent extends AGUIBaseEvent {
166
+ type: "THINKING_TEXT_MESSAGE_CONTENT";
167
+ delta: string;
168
+ }
169
+ interface AGUIThinkingTextMessageEndEvent extends AGUIBaseEvent {
170
+ type: "THINKING_TEXT_MESSAGE_END";
171
+ }
172
+ type AGUIEvent = AGUIRunStartedEvent | AGUIRunFinishedEvent | AGUIRunErrorEvent | AGUIStepStartedEvent | AGUIStepFinishedEvent | AGUITextMessageStartEvent | AGUITextMessageContentEvent | AGUITextMessageEndEvent | AGUITextMessageChunkEvent | AGUIToolCallStartEvent | AGUIToolCallArgsEvent | AGUIToolCallEndEvent | AGUIToolCallChunkEvent | AGUIToolCallResultEvent | AGUIStateSnapshotEvent | AGUIStateDeltaEvent | AGUIMessagesSnapshotEvent | AGUIActivitySnapshotEvent | AGUIActivityDeltaEvent | AGUIReasoningStartEvent | AGUIReasoningMessageStartEvent | AGUIReasoningMessageContentEvent | AGUIReasoningMessageEndEvent | AGUIReasoningMessageChunkEvent | AGUIReasoningEndEvent | AGUIReasoningEncryptedValueEvent | AGUIRawEvent | AGUICustomEvent | AGUIThinkingStartEvent | AGUIThinkingEndEvent | AGUIThinkingTextMessageStartEvent | AGUIThinkingTextMessageContentEvent | AGUIThinkingTextMessageEndEvent;
173
+ interface AGUIRunAgentInput {
174
+ threadId?: string;
175
+ runId?: string;
176
+ parentRunId?: string;
177
+ state?: unknown;
178
+ messages?: AGUIMessage[];
179
+ tools?: AGUIToolDefinition[];
180
+ context?: Array<{
181
+ description: string;
182
+ value: string;
183
+ }>;
184
+ forwardedProps?: unknown;
185
+ }
186
+ interface AGUIToolCall {
187
+ id: string;
188
+ type: "function";
189
+ function: {
190
+ name: string;
191
+ arguments: string;
192
+ };
193
+ encryptedValue?: string;
194
+ }
195
+ interface AGUIMessage {
196
+ id?: string;
197
+ role: string;
198
+ content?: string;
199
+ name?: string;
200
+ toolCallId?: string;
201
+ toolCalls?: AGUIToolCall[];
202
+ }
203
+ interface AGUIToolDefinition {
204
+ name: string;
205
+ description?: string;
206
+ parameters?: unknown;
207
+ }
208
+ interface AGUIFixtureMatch {
209
+ message?: string | RegExp;
210
+ toolName?: string;
211
+ stateKey?: string;
212
+ predicate?: (input: AGUIRunAgentInput) => boolean;
213
+ }
214
+ interface AGUIFixture {
215
+ match: AGUIFixtureMatch;
216
+ events: AGUIEvent[];
217
+ delayMs?: number;
218
+ }
219
+ interface AGUIMockOptions {
220
+ port?: number;
221
+ host?: string;
222
+ }
223
+ interface AGUIRecordConfig {
224
+ upstream: string;
225
+ fixturePath?: string;
226
+ proxyOnly?: boolean;
227
+ }
228
+ //# sourceMappingURL=agui-types.d.ts.map
229
+ //#endregion
230
+ export { AGUIActivityDeltaEvent, AGUIActivitySnapshotEvent, AGUIEvent, AGUIEventType, AGUIFixture, AGUIFixtureMatch, AGUIMessage, AGUIMessagesSnapshotEvent, AGUIMockOptions, AGUIRecordConfig, AGUIRunAgentInput, AGUIRunErrorEvent, AGUIRunFinishedEvent, AGUIRunStartedEvent, AGUIStateDeltaEvent, AGUIStateSnapshotEvent, AGUITextMessageChunkEvent, AGUITextMessageContentEvent, AGUITextMessageEndEvent, AGUITextMessageStartEvent, AGUIToolCall, AGUIToolCallArgsEvent, AGUIToolCallEndEvent, AGUIToolCallResultEvent, AGUIToolCallStartEvent, AGUIToolDefinition };
231
+ //# sourceMappingURL=agui-types.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agui-types.d.cts","names":[],"sources":["../src/agui-types.ts"],"sourcesContent":[],"mappings":"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"}
@@ -0,0 +1,231 @@
1
+ //#region src/agui-types.d.ts
2
+ type AGUIEventType = "RUN_STARTED" | "RUN_FINISHED" | "RUN_ERROR" | "STEP_STARTED" | "STEP_FINISHED" | "TEXT_MESSAGE_START" | "TEXT_MESSAGE_CONTENT" | "TEXT_MESSAGE_END" | "TEXT_MESSAGE_CHUNK" | "TOOL_CALL_START" | "TOOL_CALL_ARGS" | "TOOL_CALL_END" | "TOOL_CALL_CHUNK" | "TOOL_CALL_RESULT" | "STATE_SNAPSHOT" | "STATE_DELTA" | "MESSAGES_SNAPSHOT" | "ACTIVITY_SNAPSHOT" | "ACTIVITY_DELTA" | "REASONING_START" | "REASONING_MESSAGE_START" | "REASONING_MESSAGE_CONTENT" | "REASONING_MESSAGE_END" | "REASONING_MESSAGE_CHUNK" | "REASONING_END" | "REASONING_ENCRYPTED_VALUE" | "RAW" | "CUSTOM" | "THINKING_START" | "THINKING_END" | "THINKING_TEXT_MESSAGE_START" | "THINKING_TEXT_MESSAGE_CONTENT" | "THINKING_TEXT_MESSAGE_END";
3
+ interface AGUIBaseEvent {
4
+ type: AGUIEventType;
5
+ timestamp?: number;
6
+ rawEvent?: unknown;
7
+ }
8
+ interface AGUIRunStartedEvent extends AGUIBaseEvent {
9
+ type: "RUN_STARTED";
10
+ threadId: string;
11
+ runId: string;
12
+ parentRunId?: string;
13
+ input?: AGUIRunAgentInput;
14
+ }
15
+ interface AGUIRunFinishedEvent extends AGUIBaseEvent {
16
+ type: "RUN_FINISHED";
17
+ threadId: string;
18
+ runId: string;
19
+ result?: unknown;
20
+ }
21
+ interface AGUIRunErrorEvent extends AGUIBaseEvent {
22
+ type: "RUN_ERROR";
23
+ message: string;
24
+ code?: string;
25
+ }
26
+ interface AGUIStepStartedEvent extends AGUIBaseEvent {
27
+ type: "STEP_STARTED";
28
+ stepName: string;
29
+ }
30
+ interface AGUIStepFinishedEvent extends AGUIBaseEvent {
31
+ type: "STEP_FINISHED";
32
+ stepName: string;
33
+ }
34
+ type AGUITextMessageRole = "developer" | "system" | "assistant" | "user";
35
+ interface AGUITextMessageStartEvent extends AGUIBaseEvent {
36
+ type: "TEXT_MESSAGE_START";
37
+ messageId: string;
38
+ role: AGUITextMessageRole;
39
+ name?: string;
40
+ }
41
+ interface AGUITextMessageContentEvent extends AGUIBaseEvent {
42
+ type: "TEXT_MESSAGE_CONTENT";
43
+ messageId: string;
44
+ delta: string;
45
+ }
46
+ interface AGUITextMessageEndEvent extends AGUIBaseEvent {
47
+ type: "TEXT_MESSAGE_END";
48
+ messageId: string;
49
+ }
50
+ interface AGUITextMessageChunkEvent extends AGUIBaseEvent {
51
+ type: "TEXT_MESSAGE_CHUNK";
52
+ messageId?: string;
53
+ role?: AGUITextMessageRole;
54
+ delta?: string;
55
+ name?: string;
56
+ }
57
+ interface AGUIToolCallStartEvent extends AGUIBaseEvent {
58
+ type: "TOOL_CALL_START";
59
+ toolCallId: string;
60
+ toolCallName: string;
61
+ parentMessageId?: string;
62
+ }
63
+ interface AGUIToolCallArgsEvent extends AGUIBaseEvent {
64
+ type: "TOOL_CALL_ARGS";
65
+ toolCallId: string;
66
+ delta: string;
67
+ }
68
+ interface AGUIToolCallEndEvent extends AGUIBaseEvent {
69
+ type: "TOOL_CALL_END";
70
+ toolCallId: string;
71
+ }
72
+ interface AGUIToolCallChunkEvent extends AGUIBaseEvent {
73
+ type: "TOOL_CALL_CHUNK";
74
+ toolCallId?: string;
75
+ toolCallName?: string;
76
+ parentMessageId?: string;
77
+ delta?: string;
78
+ }
79
+ interface AGUIToolCallResultEvent extends AGUIBaseEvent {
80
+ type: "TOOL_CALL_RESULT";
81
+ messageId: string;
82
+ toolCallId: string;
83
+ content: string;
84
+ role?: "tool";
85
+ }
86
+ interface AGUIStateSnapshotEvent extends AGUIBaseEvent {
87
+ type: "STATE_SNAPSHOT";
88
+ snapshot: unknown;
89
+ }
90
+ interface AGUIStateDeltaEvent extends AGUIBaseEvent {
91
+ type: "STATE_DELTA";
92
+ delta: unknown[];
93
+ }
94
+ interface AGUIMessagesSnapshotEvent extends AGUIBaseEvent {
95
+ type: "MESSAGES_SNAPSHOT";
96
+ messages: AGUIMessage[];
97
+ }
98
+ interface AGUIActivitySnapshotEvent extends AGUIBaseEvent {
99
+ type: "ACTIVITY_SNAPSHOT";
100
+ messageId: string;
101
+ activityType: string;
102
+ content: Record<string, unknown>;
103
+ replace?: boolean;
104
+ }
105
+ interface AGUIActivityDeltaEvent extends AGUIBaseEvent {
106
+ type: "ACTIVITY_DELTA";
107
+ messageId: string;
108
+ activityType: string;
109
+ patch: unknown[];
110
+ }
111
+ interface AGUIReasoningStartEvent extends AGUIBaseEvent {
112
+ type: "REASONING_START";
113
+ messageId: string;
114
+ }
115
+ interface AGUIReasoningMessageStartEvent extends AGUIBaseEvent {
116
+ type: "REASONING_MESSAGE_START";
117
+ messageId: string;
118
+ role: "reasoning";
119
+ }
120
+ interface AGUIReasoningMessageContentEvent extends AGUIBaseEvent {
121
+ type: "REASONING_MESSAGE_CONTENT";
122
+ messageId: string;
123
+ delta: string;
124
+ }
125
+ interface AGUIReasoningMessageEndEvent extends AGUIBaseEvent {
126
+ type: "REASONING_MESSAGE_END";
127
+ messageId: string;
128
+ }
129
+ interface AGUIReasoningMessageChunkEvent extends AGUIBaseEvent {
130
+ type: "REASONING_MESSAGE_CHUNK";
131
+ messageId?: string;
132
+ delta?: string;
133
+ }
134
+ interface AGUIReasoningEndEvent extends AGUIBaseEvent {
135
+ type: "REASONING_END";
136
+ messageId: string;
137
+ }
138
+ type AGUIReasoningEncryptedValueSubtype = "tool-call" | "message";
139
+ interface AGUIReasoningEncryptedValueEvent extends AGUIBaseEvent {
140
+ type: "REASONING_ENCRYPTED_VALUE";
141
+ subtype: AGUIReasoningEncryptedValueSubtype;
142
+ entityId: string;
143
+ encryptedValue: string;
144
+ }
145
+ interface AGUIRawEvent extends AGUIBaseEvent {
146
+ type: "RAW";
147
+ event: unknown;
148
+ source?: string;
149
+ }
150
+ interface AGUICustomEvent extends AGUIBaseEvent {
151
+ type: "CUSTOM";
152
+ name: string;
153
+ value: unknown;
154
+ }
155
+ interface AGUIThinkingStartEvent extends AGUIBaseEvent {
156
+ type: "THINKING_START";
157
+ title?: string;
158
+ }
159
+ interface AGUIThinkingEndEvent extends AGUIBaseEvent {
160
+ type: "THINKING_END";
161
+ }
162
+ interface AGUIThinkingTextMessageStartEvent extends AGUIBaseEvent {
163
+ type: "THINKING_TEXT_MESSAGE_START";
164
+ }
165
+ interface AGUIThinkingTextMessageContentEvent extends AGUIBaseEvent {
166
+ type: "THINKING_TEXT_MESSAGE_CONTENT";
167
+ delta: string;
168
+ }
169
+ interface AGUIThinkingTextMessageEndEvent extends AGUIBaseEvent {
170
+ type: "THINKING_TEXT_MESSAGE_END";
171
+ }
172
+ type AGUIEvent = AGUIRunStartedEvent | AGUIRunFinishedEvent | AGUIRunErrorEvent | AGUIStepStartedEvent | AGUIStepFinishedEvent | AGUITextMessageStartEvent | AGUITextMessageContentEvent | AGUITextMessageEndEvent | AGUITextMessageChunkEvent | AGUIToolCallStartEvent | AGUIToolCallArgsEvent | AGUIToolCallEndEvent | AGUIToolCallChunkEvent | AGUIToolCallResultEvent | AGUIStateSnapshotEvent | AGUIStateDeltaEvent | AGUIMessagesSnapshotEvent | AGUIActivitySnapshotEvent | AGUIActivityDeltaEvent | AGUIReasoningStartEvent | AGUIReasoningMessageStartEvent | AGUIReasoningMessageContentEvent | AGUIReasoningMessageEndEvent | AGUIReasoningMessageChunkEvent | AGUIReasoningEndEvent | AGUIReasoningEncryptedValueEvent | AGUIRawEvent | AGUICustomEvent | AGUIThinkingStartEvent | AGUIThinkingEndEvent | AGUIThinkingTextMessageStartEvent | AGUIThinkingTextMessageContentEvent | AGUIThinkingTextMessageEndEvent;
173
+ interface AGUIRunAgentInput {
174
+ threadId?: string;
175
+ runId?: string;
176
+ parentRunId?: string;
177
+ state?: unknown;
178
+ messages?: AGUIMessage[];
179
+ tools?: AGUIToolDefinition[];
180
+ context?: Array<{
181
+ description: string;
182
+ value: string;
183
+ }>;
184
+ forwardedProps?: unknown;
185
+ }
186
+ interface AGUIToolCall {
187
+ id: string;
188
+ type: "function";
189
+ function: {
190
+ name: string;
191
+ arguments: string;
192
+ };
193
+ encryptedValue?: string;
194
+ }
195
+ interface AGUIMessage {
196
+ id?: string;
197
+ role: string;
198
+ content?: string;
199
+ name?: string;
200
+ toolCallId?: string;
201
+ toolCalls?: AGUIToolCall[];
202
+ }
203
+ interface AGUIToolDefinition {
204
+ name: string;
205
+ description?: string;
206
+ parameters?: unknown;
207
+ }
208
+ interface AGUIFixtureMatch {
209
+ message?: string | RegExp;
210
+ toolName?: string;
211
+ stateKey?: string;
212
+ predicate?: (input: AGUIRunAgentInput) => boolean;
213
+ }
214
+ interface AGUIFixture {
215
+ match: AGUIFixtureMatch;
216
+ events: AGUIEvent[];
217
+ delayMs?: number;
218
+ }
219
+ interface AGUIMockOptions {
220
+ port?: number;
221
+ host?: string;
222
+ }
223
+ interface AGUIRecordConfig {
224
+ upstream: string;
225
+ fixturePath?: string;
226
+ proxyOnly?: boolean;
227
+ }
228
+ //# sourceMappingURL=agui-types.d.ts.map
229
+ //#endregion
230
+ export { AGUIActivityDeltaEvent, AGUIActivitySnapshotEvent, AGUIEvent, AGUIEventType, AGUIFixture, AGUIFixtureMatch, AGUIMessage, AGUIMessagesSnapshotEvent, AGUIMockOptions, AGUIRecordConfig, AGUIRunAgentInput, AGUIRunErrorEvent, AGUIRunFinishedEvent, AGUIRunStartedEvent, AGUIStateDeltaEvent, AGUIStateSnapshotEvent, AGUITextMessageChunkEvent, AGUITextMessageContentEvent, AGUITextMessageEndEvent, AGUITextMessageStartEvent, AGUIToolCall, AGUIToolCallArgsEvent, AGUIToolCallEndEvent, AGUIToolCallResultEvent, AGUIToolCallStartEvent, AGUIToolDefinition };
231
+ //# sourceMappingURL=agui-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agui-types.d.ts","names":[],"sources":["../src/agui-types.ts"],"sourcesContent":[],"mappings":"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"}
@@ -164,6 +164,7 @@ async function handleConverse(req, res, raw, modelId, fixtures, journal, default
164
164
  return;
165
165
  }
166
166
  const completionReq = converseToCompletionRequest(converseReq, modelId);
167
+ completionReq._endpointType = "chat";
167
168
  const testId = require_helpers.getTestId(req);
168
169
  const fixture = require_router.matchFixture(fixtures, completionReq, journal.getFixtureMatchCountsForTest(testId), defaults.requestTransform);
169
170
  if (fixture) journal.incrementFixtureMatchCount(fixture, fixtures, testId);
@@ -313,6 +314,7 @@ async function handleConverseStream(req, res, raw, modelId, fixtures, journal, d
313
314
  return;
314
315
  }
315
316
  const completionReq = converseToCompletionRequest(converseReq, modelId);
317
+ completionReq._endpointType = "chat";
316
318
  const testId = require_helpers.getTestId(req);
317
319
  const fixture = require_router.matchFixture(fixtures, completionReq, journal.getFixtureMatchCountsForTest(testId), defaults.requestTransform);
318
320
  if (fixture) journal.incrementFixtureMatchCount(fixture, fixtures, testId);
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-converse.cjs","names":["generateToolUseId","flattenHeaders","getTestId","matchFixture","applyChaos","proxyAndRecord","isErrorResponse","isTextResponse","isToolCallResponse","buildBedrockStreamTextEvents","createInterruptionSignal","writeEventStream","buildBedrockStreamToolCallEvents"],"sources":["../src/bedrock-converse.ts"],"sourcesContent":["/**\n * AWS Bedrock Converse API support.\n *\n * Translates incoming Converse and Converse-stream requests (Bedrock Converse\n * format) into the ChatCompletionRequest format used by the fixture router,\n * and converts fixture responses back into Converse API format — either a\n * single JSON response or an Event Stream binary stream.\n */\n\nimport type * as http from \"node:http\";\nimport type {\n ChatCompletionRequest,\n ChatMessage,\n Fixture,\n HandlerDefaults,\n ToolCall,\n ToolDefinition,\n} from \"./types.js\";\nimport {\n generateToolUseId,\n isTextResponse,\n isToolCallResponse,\n isErrorResponse,\n flattenHeaders,\n getTestId,\n} from \"./helpers.js\";\nimport { matchFixture } from \"./router.js\";\nimport { writeErrorResponse } from \"./sse-writer.js\";\nimport { writeEventStream } from \"./aws-event-stream.js\";\nimport { createInterruptionSignal } from \"./interruption.js\";\nimport type { Journal } from \"./journal.js\";\nimport type { Logger } from \"./logger.js\";\nimport { applyChaos } from \"./chaos.js\";\nimport { proxyAndRecord } from \"./recorder.js\";\nimport { buildBedrockStreamTextEvents, buildBedrockStreamToolCallEvents } from \"./bedrock.js\";\n\n// ─── Converse request types ─────────────────────────────────────────────────\n\ninterface ConverseContentBlock {\n text?: string;\n toolUse?: { toolUseId: string; name: string; input: object };\n toolResult?: { toolUseId: string; content: { text?: string }[] };\n}\n\ninterface ConverseMessage {\n role: \"user\" | \"assistant\";\n content: ConverseContentBlock[];\n}\n\ninterface ConverseToolSpec {\n name: string;\n description?: string;\n inputSchema?: object;\n}\n\ninterface ConverseRequest {\n messages: ConverseMessage[];\n system?: { text: string }[];\n inferenceConfig?: { maxTokens?: number; temperature?: number };\n toolConfig?: { tools: { toolSpec: ConverseToolSpec }[] };\n}\n\n// ─── Input conversion: Converse → ChatCompletionRequest ─────────────────────\n\nexport function converseToCompletionRequest(\n req: ConverseRequest,\n modelId: string,\n): ChatCompletionRequest {\n const messages: ChatMessage[] = [];\n\n // system field → system message\n if (req.system && req.system.length > 0) {\n const systemText = req.system.map((s) => s.text).join(\"\");\n if (systemText) {\n messages.push({ role: \"system\", content: systemText });\n }\n }\n\n for (const msg of req.messages) {\n if (msg.role === \"user\") {\n // Check for toolResult blocks\n const toolResults = msg.content.filter((b) => b.toolResult);\n const textBlocks = msg.content.filter((b) => b.text !== undefined && !b.toolResult);\n\n if (toolResults.length > 0) {\n for (const block of toolResults) {\n const tr = block.toolResult!;\n const resultContent = tr.content.map((c) => c.text ?? \"\").join(\"\");\n messages.push({\n role: \"tool\",\n content: resultContent,\n tool_call_id: tr.toolUseId,\n });\n }\n if (textBlocks.length > 0) {\n messages.push({\n role: \"user\",\n content: textBlocks.map((b) => b.text ?? \"\").join(\"\"),\n });\n }\n continue;\n }\n\n // Plain user message\n const text = msg.content\n .filter((b) => b.text !== undefined)\n .map((b) => b.text ?? \"\")\n .join(\"\");\n messages.push({ role: \"user\", content: text });\n } else if (msg.role === \"assistant\") {\n const toolUseBlocks = msg.content.filter((b) => b.toolUse);\n const textContent = msg.content\n .filter((b) => b.text !== undefined)\n .map((b) => b.text ?? \"\")\n .join(\"\");\n\n if (toolUseBlocks.length > 0) {\n messages.push({\n role: \"assistant\",\n content: textContent || null,\n tool_calls: toolUseBlocks.map((b) => ({\n id: b.toolUse!.toolUseId,\n type: \"function\" as const,\n function: {\n name: b.toolUse!.name,\n arguments: JSON.stringify(b.toolUse!.input),\n },\n })),\n });\n } else {\n messages.push({ role: \"assistant\", content: textContent || null });\n }\n }\n }\n\n // Convert tools\n let tools: ToolDefinition[] | undefined;\n if (req.toolConfig?.tools && req.toolConfig.tools.length > 0) {\n tools = req.toolConfig.tools.map((t) => ({\n type: \"function\" as const,\n function: {\n name: t.toolSpec.name,\n description: t.toolSpec.description,\n parameters: t.toolSpec.inputSchema,\n },\n }));\n }\n\n return {\n model: modelId,\n messages,\n stream: false,\n temperature: req.inferenceConfig?.temperature,\n tools,\n };\n}\n\n// ─── Response builders ──────────────────────────────────────────────────────\n\nfunction buildConverseTextResponse(content: string, reasoning?: string): object {\n const contentBlocks: object[] = [];\n if (reasoning) {\n contentBlocks.push({\n reasoningContent: { reasoningText: { text: reasoning } },\n });\n }\n contentBlocks.push({ text: content });\n\n return {\n output: {\n message: {\n role: \"assistant\",\n content: contentBlocks,\n },\n },\n stopReason: \"end_turn\",\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n };\n}\n\nfunction buildConverseToolCallResponse(toolCalls: ToolCall[], logger: Logger): object {\n return {\n output: {\n message: {\n role: \"assistant\",\n content: toolCalls.map((tc) => {\n let argsObj: unknown;\n try {\n argsObj = JSON.parse(tc.arguments || \"{}\");\n } catch {\n logger.warn(\n `Malformed JSON in fixture tool call arguments for \"${tc.name}\": ${tc.arguments}`,\n );\n argsObj = {};\n }\n return {\n toolUse: {\n toolUseId: tc.id || generateToolUseId(),\n name: tc.name,\n input: argsObj,\n },\n };\n }),\n },\n },\n stopReason: \"tool_use\",\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n };\n}\n\n// ─── Request handlers ───────────────────────────────────────────────────────\n\nexport async function handleConverse(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n raw: string,\n modelId: string,\n fixtures: Fixture[],\n journal: Journal,\n defaults: HandlerDefaults,\n setCorsHeaders: (res: http.ServerResponse) => void,\n): Promise<void> {\n const { logger } = defaults;\n setCorsHeaders(res);\n\n const urlPath = req.url ?? `/model/${modelId}/converse`;\n\n let converseReq: ConverseRequest;\n try {\n converseReq = JSON.parse(raw) as ConverseRequest;\n } catch {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: null,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: {\n message: \"Malformed JSON\",\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n if (!converseReq.messages || !Array.isArray(converseReq.messages)) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: null,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: {\n message: \"Invalid request: messages array is required\",\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n const completionReq = converseToCompletionRequest(converseReq, modelId);\n\n const testId = getTestId(req);\n const fixture = matchFixture(\n fixtures,\n completionReq,\n journal.getFixtureMatchCountsForTest(testId),\n defaults.requestTransform,\n );\n\n if (fixture) {\n journal.incrementFixtureMatchCount(fixture, fixtures, testId);\n }\n\n if (\n applyChaos(\n res,\n fixture,\n defaults.chaos,\n req.headers,\n journal,\n {\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n },\n defaults.registry,\n defaults.logger,\n )\n )\n return;\n\n if (!fixture) {\n if (defaults.record) {\n const proxied = await proxyAndRecord(\n req,\n res,\n completionReq,\n \"bedrock\",\n urlPath,\n fixtures,\n defaults,\n raw,\n );\n if (proxied) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: res.statusCode ?? 200, fixture: null },\n });\n return;\n }\n }\n const strictStatus = defaults.strict ? 503 : 404;\n const strictMessage = defaults.strict\n ? \"Strict mode: no fixture matched\"\n : \"No fixture matched\";\n if (defaults.strict) {\n logger.error(`STRICT: No fixture matched for ${req.method ?? \"POST\"} ${urlPath}`);\n }\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: strictStatus, fixture: null },\n });\n writeErrorResponse(\n res,\n strictStatus,\n JSON.stringify({\n error: {\n message: strictMessage,\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n const response = fixture.response;\n\n // Error response\n if (isErrorResponse(response)) {\n const status = response.status ?? 500;\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status, fixture },\n });\n writeErrorResponse(res, status, JSON.stringify(response));\n return;\n }\n\n // Text response\n if (isTextResponse(response)) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 200, fixture },\n });\n const body = buildConverseTextResponse(response.content, response.reasoning);\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(body));\n return;\n }\n\n // Tool call response\n if (isToolCallResponse(response)) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 200, fixture },\n });\n const body = buildConverseToolCallResponse(response.toolCalls, logger);\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(body));\n return;\n }\n\n // Unknown response type\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 500, fixture },\n });\n writeErrorResponse(\n res,\n 500,\n JSON.stringify({\n error: {\n message: \"Fixture response did not match any known type\",\n type: \"server_error\",\n },\n }),\n );\n}\n\nexport async function handleConverseStream(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n raw: string,\n modelId: string,\n fixtures: Fixture[],\n journal: Journal,\n defaults: HandlerDefaults,\n setCorsHeaders: (res: http.ServerResponse) => void,\n): Promise<void> {\n const { logger } = defaults;\n setCorsHeaders(res);\n\n const urlPath = req.url ?? `/model/${modelId}/converse-stream`;\n\n let converseReq: ConverseRequest;\n try {\n converseReq = JSON.parse(raw) as ConverseRequest;\n } catch {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: null,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: {\n message: \"Malformed JSON\",\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n if (!converseReq.messages || !Array.isArray(converseReq.messages)) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: null,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: {\n message: \"Invalid request: messages array is required\",\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n const completionReq = converseToCompletionRequest(converseReq, modelId);\n\n const testId = getTestId(req);\n const fixture = matchFixture(\n fixtures,\n completionReq,\n journal.getFixtureMatchCountsForTest(testId),\n defaults.requestTransform,\n );\n\n if (fixture) {\n journal.incrementFixtureMatchCount(fixture, fixtures, testId);\n }\n\n if (\n applyChaos(\n res,\n fixture,\n defaults.chaos,\n req.headers,\n journal,\n {\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n },\n defaults.registry,\n defaults.logger,\n )\n )\n return;\n\n if (!fixture) {\n if (defaults.record) {\n const proxied = await proxyAndRecord(\n req,\n res,\n completionReq,\n \"bedrock\",\n urlPath,\n fixtures,\n defaults,\n raw,\n );\n if (proxied) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: res.statusCode ?? 200, fixture: null },\n });\n return;\n }\n }\n const strictStatus = defaults.strict ? 503 : 404;\n const strictMessage = defaults.strict\n ? \"Strict mode: no fixture matched\"\n : \"No fixture matched\";\n if (defaults.strict) {\n logger.error(`STRICT: No fixture matched for ${req.method ?? \"POST\"} ${urlPath}`);\n }\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: strictStatus, fixture: null },\n });\n writeErrorResponse(\n res,\n strictStatus,\n JSON.stringify({\n error: {\n message: strictMessage,\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n const response = fixture.response;\n const latency = fixture.latency ?? defaults.latency;\n const chunkSize = Math.max(1, fixture.chunkSize ?? defaults.chunkSize);\n\n // Error response\n if (isErrorResponse(response)) {\n const status = response.status ?? 500;\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status, fixture },\n });\n writeErrorResponse(res, status, JSON.stringify(response));\n return;\n }\n\n // Text response — stream as Event Stream\n if (isTextResponse(response)) {\n const journalEntry = journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 200, fixture },\n });\n const events = buildBedrockStreamTextEvents(response.content, chunkSize, response.reasoning);\n const interruption = createInterruptionSignal(fixture);\n const completed = await writeEventStream(res, events, {\n latency,\n streamingProfile: fixture.streamingProfile,\n signal: interruption?.signal,\n onChunkSent: interruption?.tick,\n });\n if (!completed) {\n if (!res.writableEnded) res.destroy();\n journalEntry.response.interrupted = true;\n journalEntry.response.interruptReason = interruption?.reason();\n }\n interruption?.cleanup();\n return;\n }\n\n // Tool call response — stream as Event Stream\n if (isToolCallResponse(response)) {\n const journalEntry = journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 200, fixture },\n });\n const events = buildBedrockStreamToolCallEvents(response.toolCalls, chunkSize, logger);\n const interruption = createInterruptionSignal(fixture);\n const completed = await writeEventStream(res, events, {\n latency,\n streamingProfile: fixture.streamingProfile,\n signal: interruption?.signal,\n onChunkSent: interruption?.tick,\n });\n if (!completed) {\n if (!res.writableEnded) res.destroy();\n journalEntry.response.interrupted = true;\n journalEntry.response.interruptReason = interruption?.reason();\n }\n interruption?.cleanup();\n return;\n }\n\n // Unknown response type\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 500, fixture },\n });\n writeErrorResponse(\n res,\n 500,\n JSON.stringify({\n error: {\n message: \"Fixture response did not match any known type\",\n type: \"server_error\",\n },\n }),\n );\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"bedrock-converse.cjs","names":["generateToolUseId","flattenHeaders","getTestId","matchFixture","applyChaos","proxyAndRecord","isErrorResponse","isTextResponse","isToolCallResponse","buildBedrockStreamTextEvents","createInterruptionSignal","writeEventStream","buildBedrockStreamToolCallEvents"],"sources":["../src/bedrock-converse.ts"],"sourcesContent":["/**\n * AWS Bedrock Converse API support.\n *\n * Translates incoming Converse and Converse-stream requests (Bedrock Converse\n * format) into the ChatCompletionRequest format used by the fixture router,\n * and converts fixture responses back into Converse API format — either a\n * single JSON response or an Event Stream binary stream.\n */\n\nimport type * as http from \"node:http\";\nimport type {\n ChatCompletionRequest,\n ChatMessage,\n Fixture,\n HandlerDefaults,\n ToolCall,\n ToolDefinition,\n} from \"./types.js\";\nimport {\n generateToolUseId,\n isTextResponse,\n isToolCallResponse,\n isErrorResponse,\n flattenHeaders,\n getTestId,\n} from \"./helpers.js\";\nimport { matchFixture } from \"./router.js\";\nimport { writeErrorResponse } from \"./sse-writer.js\";\nimport { writeEventStream } from \"./aws-event-stream.js\";\nimport { createInterruptionSignal } from \"./interruption.js\";\nimport type { Journal } from \"./journal.js\";\nimport type { Logger } from \"./logger.js\";\nimport { applyChaos } from \"./chaos.js\";\nimport { proxyAndRecord } from \"./recorder.js\";\nimport { buildBedrockStreamTextEvents, buildBedrockStreamToolCallEvents } from \"./bedrock.js\";\n\n// ─── Converse request types ─────────────────────────────────────────────────\n\ninterface ConverseContentBlock {\n text?: string;\n toolUse?: { toolUseId: string; name: string; input: object };\n toolResult?: { toolUseId: string; content: { text?: string }[] };\n}\n\ninterface ConverseMessage {\n role: \"user\" | \"assistant\";\n content: ConverseContentBlock[];\n}\n\ninterface ConverseToolSpec {\n name: string;\n description?: string;\n inputSchema?: object;\n}\n\ninterface ConverseRequest {\n messages: ConverseMessage[];\n system?: { text: string }[];\n inferenceConfig?: { maxTokens?: number; temperature?: number };\n toolConfig?: { tools: { toolSpec: ConverseToolSpec }[] };\n}\n\n// ─── Input conversion: Converse → ChatCompletionRequest ─────────────────────\n\nexport function converseToCompletionRequest(\n req: ConverseRequest,\n modelId: string,\n): ChatCompletionRequest {\n const messages: ChatMessage[] = [];\n\n // system field → system message\n if (req.system && req.system.length > 0) {\n const systemText = req.system.map((s) => s.text).join(\"\");\n if (systemText) {\n messages.push({ role: \"system\", content: systemText });\n }\n }\n\n for (const msg of req.messages) {\n if (msg.role === \"user\") {\n // Check for toolResult blocks\n const toolResults = msg.content.filter((b) => b.toolResult);\n const textBlocks = msg.content.filter((b) => b.text !== undefined && !b.toolResult);\n\n if (toolResults.length > 0) {\n for (const block of toolResults) {\n const tr = block.toolResult!;\n const resultContent = tr.content.map((c) => c.text ?? \"\").join(\"\");\n messages.push({\n role: \"tool\",\n content: resultContent,\n tool_call_id: tr.toolUseId,\n });\n }\n if (textBlocks.length > 0) {\n messages.push({\n role: \"user\",\n content: textBlocks.map((b) => b.text ?? \"\").join(\"\"),\n });\n }\n continue;\n }\n\n // Plain user message\n const text = msg.content\n .filter((b) => b.text !== undefined)\n .map((b) => b.text ?? \"\")\n .join(\"\");\n messages.push({ role: \"user\", content: text });\n } else if (msg.role === \"assistant\") {\n const toolUseBlocks = msg.content.filter((b) => b.toolUse);\n const textContent = msg.content\n .filter((b) => b.text !== undefined)\n .map((b) => b.text ?? \"\")\n .join(\"\");\n\n if (toolUseBlocks.length > 0) {\n messages.push({\n role: \"assistant\",\n content: textContent || null,\n tool_calls: toolUseBlocks.map((b) => ({\n id: b.toolUse!.toolUseId,\n type: \"function\" as const,\n function: {\n name: b.toolUse!.name,\n arguments: JSON.stringify(b.toolUse!.input),\n },\n })),\n });\n } else {\n messages.push({ role: \"assistant\", content: textContent || null });\n }\n }\n }\n\n // Convert tools\n let tools: ToolDefinition[] | undefined;\n if (req.toolConfig?.tools && req.toolConfig.tools.length > 0) {\n tools = req.toolConfig.tools.map((t) => ({\n type: \"function\" as const,\n function: {\n name: t.toolSpec.name,\n description: t.toolSpec.description,\n parameters: t.toolSpec.inputSchema,\n },\n }));\n }\n\n return {\n model: modelId,\n messages,\n stream: false,\n temperature: req.inferenceConfig?.temperature,\n tools,\n };\n}\n\n// ─── Response builders ──────────────────────────────────────────────────────\n\nfunction buildConverseTextResponse(content: string, reasoning?: string): object {\n const contentBlocks: object[] = [];\n if (reasoning) {\n contentBlocks.push({\n reasoningContent: { reasoningText: { text: reasoning } },\n });\n }\n contentBlocks.push({ text: content });\n\n return {\n output: {\n message: {\n role: \"assistant\",\n content: contentBlocks,\n },\n },\n stopReason: \"end_turn\",\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n };\n}\n\nfunction buildConverseToolCallResponse(toolCalls: ToolCall[], logger: Logger): object {\n return {\n output: {\n message: {\n role: \"assistant\",\n content: toolCalls.map((tc) => {\n let argsObj: unknown;\n try {\n argsObj = JSON.parse(tc.arguments || \"{}\");\n } catch {\n logger.warn(\n `Malformed JSON in fixture tool call arguments for \"${tc.name}\": ${tc.arguments}`,\n );\n argsObj = {};\n }\n return {\n toolUse: {\n toolUseId: tc.id || generateToolUseId(),\n name: tc.name,\n input: argsObj,\n },\n };\n }),\n },\n },\n stopReason: \"tool_use\",\n usage: { inputTokens: 0, outputTokens: 0, totalTokens: 0 },\n };\n}\n\n// ─── Request handlers ───────────────────────────────────────────────────────\n\nexport async function handleConverse(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n raw: string,\n modelId: string,\n fixtures: Fixture[],\n journal: Journal,\n defaults: HandlerDefaults,\n setCorsHeaders: (res: http.ServerResponse) => void,\n): Promise<void> {\n const { logger } = defaults;\n setCorsHeaders(res);\n\n const urlPath = req.url ?? `/model/${modelId}/converse`;\n\n let converseReq: ConverseRequest;\n try {\n converseReq = JSON.parse(raw) as ConverseRequest;\n } catch {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: null,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: {\n message: \"Malformed JSON\",\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n if (!converseReq.messages || !Array.isArray(converseReq.messages)) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: null,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: {\n message: \"Invalid request: messages array is required\",\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n const completionReq = converseToCompletionRequest(converseReq, modelId);\n completionReq._endpointType = \"chat\";\n\n const testId = getTestId(req);\n const fixture = matchFixture(\n fixtures,\n completionReq,\n journal.getFixtureMatchCountsForTest(testId),\n defaults.requestTransform,\n );\n\n if (fixture) {\n journal.incrementFixtureMatchCount(fixture, fixtures, testId);\n }\n\n if (\n applyChaos(\n res,\n fixture,\n defaults.chaos,\n req.headers,\n journal,\n {\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n },\n defaults.registry,\n defaults.logger,\n )\n )\n return;\n\n if (!fixture) {\n if (defaults.record) {\n const proxied = await proxyAndRecord(\n req,\n res,\n completionReq,\n \"bedrock\",\n urlPath,\n fixtures,\n defaults,\n raw,\n );\n if (proxied) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: res.statusCode ?? 200, fixture: null },\n });\n return;\n }\n }\n const strictStatus = defaults.strict ? 503 : 404;\n const strictMessage = defaults.strict\n ? \"Strict mode: no fixture matched\"\n : \"No fixture matched\";\n if (defaults.strict) {\n logger.error(`STRICT: No fixture matched for ${req.method ?? \"POST\"} ${urlPath}`);\n }\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: strictStatus, fixture: null },\n });\n writeErrorResponse(\n res,\n strictStatus,\n JSON.stringify({\n error: {\n message: strictMessage,\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n const response = fixture.response;\n\n // Error response\n if (isErrorResponse(response)) {\n const status = response.status ?? 500;\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status, fixture },\n });\n writeErrorResponse(res, status, JSON.stringify(response));\n return;\n }\n\n // Text response\n if (isTextResponse(response)) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 200, fixture },\n });\n const body = buildConverseTextResponse(response.content, response.reasoning);\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(body));\n return;\n }\n\n // Tool call response\n if (isToolCallResponse(response)) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 200, fixture },\n });\n const body = buildConverseToolCallResponse(response.toolCalls, logger);\n res.writeHead(200, { \"Content-Type\": \"application/json\" });\n res.end(JSON.stringify(body));\n return;\n }\n\n // Unknown response type\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 500, fixture },\n });\n writeErrorResponse(\n res,\n 500,\n JSON.stringify({\n error: {\n message: \"Fixture response did not match any known type\",\n type: \"server_error\",\n },\n }),\n );\n}\n\nexport async function handleConverseStream(\n req: http.IncomingMessage,\n res: http.ServerResponse,\n raw: string,\n modelId: string,\n fixtures: Fixture[],\n journal: Journal,\n defaults: HandlerDefaults,\n setCorsHeaders: (res: http.ServerResponse) => void,\n): Promise<void> {\n const { logger } = defaults;\n setCorsHeaders(res);\n\n const urlPath = req.url ?? `/model/${modelId}/converse-stream`;\n\n let converseReq: ConverseRequest;\n try {\n converseReq = JSON.parse(raw) as ConverseRequest;\n } catch {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: null,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: {\n message: \"Malformed JSON\",\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n if (!converseReq.messages || !Array.isArray(converseReq.messages)) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: null,\n response: { status: 400, fixture: null },\n });\n writeErrorResponse(\n res,\n 400,\n JSON.stringify({\n error: {\n message: \"Invalid request: messages array is required\",\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n const completionReq = converseToCompletionRequest(converseReq, modelId);\n completionReq._endpointType = \"chat\";\n\n const testId = getTestId(req);\n const fixture = matchFixture(\n fixtures,\n completionReq,\n journal.getFixtureMatchCountsForTest(testId),\n defaults.requestTransform,\n );\n\n if (fixture) {\n journal.incrementFixtureMatchCount(fixture, fixtures, testId);\n }\n\n if (\n applyChaos(\n res,\n fixture,\n defaults.chaos,\n req.headers,\n journal,\n {\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n },\n defaults.registry,\n defaults.logger,\n )\n )\n return;\n\n if (!fixture) {\n if (defaults.record) {\n const proxied = await proxyAndRecord(\n req,\n res,\n completionReq,\n \"bedrock\",\n urlPath,\n fixtures,\n defaults,\n raw,\n );\n if (proxied) {\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: res.statusCode ?? 200, fixture: null },\n });\n return;\n }\n }\n const strictStatus = defaults.strict ? 503 : 404;\n const strictMessage = defaults.strict\n ? \"Strict mode: no fixture matched\"\n : \"No fixture matched\";\n if (defaults.strict) {\n logger.error(`STRICT: No fixture matched for ${req.method ?? \"POST\"} ${urlPath}`);\n }\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: strictStatus, fixture: null },\n });\n writeErrorResponse(\n res,\n strictStatus,\n JSON.stringify({\n error: {\n message: strictMessage,\n type: \"invalid_request_error\",\n },\n }),\n );\n return;\n }\n\n const response = fixture.response;\n const latency = fixture.latency ?? defaults.latency;\n const chunkSize = Math.max(1, fixture.chunkSize ?? defaults.chunkSize);\n\n // Error response\n if (isErrorResponse(response)) {\n const status = response.status ?? 500;\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status, fixture },\n });\n writeErrorResponse(res, status, JSON.stringify(response));\n return;\n }\n\n // Text response — stream as Event Stream\n if (isTextResponse(response)) {\n const journalEntry = journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 200, fixture },\n });\n const events = buildBedrockStreamTextEvents(response.content, chunkSize, response.reasoning);\n const interruption = createInterruptionSignal(fixture);\n const completed = await writeEventStream(res, events, {\n latency,\n streamingProfile: fixture.streamingProfile,\n signal: interruption?.signal,\n onChunkSent: interruption?.tick,\n });\n if (!completed) {\n if (!res.writableEnded) res.destroy();\n journalEntry.response.interrupted = true;\n journalEntry.response.interruptReason = interruption?.reason();\n }\n interruption?.cleanup();\n return;\n }\n\n // Tool call response — stream as Event Stream\n if (isToolCallResponse(response)) {\n const journalEntry = journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 200, fixture },\n });\n const events = buildBedrockStreamToolCallEvents(response.toolCalls, chunkSize, logger);\n const interruption = createInterruptionSignal(fixture);\n const completed = await writeEventStream(res, events, {\n latency,\n streamingProfile: fixture.streamingProfile,\n signal: interruption?.signal,\n onChunkSent: interruption?.tick,\n });\n if (!completed) {\n if (!res.writableEnded) res.destroy();\n journalEntry.response.interrupted = true;\n journalEntry.response.interruptReason = interruption?.reason();\n }\n interruption?.cleanup();\n return;\n }\n\n // Unknown response type\n journal.add({\n method: req.method ?? \"POST\",\n path: urlPath,\n headers: flattenHeaders(req.headers),\n body: completionReq,\n response: { status: 500, fixture },\n });\n writeErrorResponse(\n res,\n 500,\n JSON.stringify({\n error: {\n message: \"Fixture response did not match any known type\",\n type: \"server_error\",\n },\n }),\n );\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-converse.d.cts","names":[],"sources":["../src/bedrock-converse.ts"],"sourcesContent":[],"mappings":";;;;;;UAsCU,oBAAA,CAqB0B;EAAgB,IAAA,CAAA,EAAA,MAAA;EAKpC,OAAA,CAAA,EAAA;IAA2B,SAAA,EAAA,MAAA;IACpC,IAAA,EAAA,MAAA;IAEJ,KAAA,EAAA,MAAA;EAAqB,CAAA;EAiJF,UAAA,CAAA,EAAA;IAAc,SAAA,EAAA,MAAA;IAC7B,OAAK,EAAA;MACA,IAAA,CAAA,EAAA,MAAA;IAGA,CAAA,EAAA;;;UA7KF,eAAA,CAgLmB;MAC1B,EAAA,MAAA,GAAA,WAAA;EAAO,OAAA,EA/KC,oBA+KD,EAAA;AAwMV;UApXU,gBAAA,CAoXgC;MACnC,EAAA,MAAK;aACA,CAAA,EAAA,MAAA;aAGA,CAAA,EAAA,MAAA;;UAnXF,eAAA,CAqXE;UACiB,EArXjB,eAqXiB,EAAA;QAC1B,CAAA,EAAA;IAAO,IAAA,EAAA,MAAA;;;;;;;;gBAnX0B;;;;iBAKpB,2BAAA,MACT,mCAEJ;iBAiJmB,cAAA,MACf,IAAA,CAAK,sBACL,IAAA,CAAK,wDAGA,oBACD,mBACC,uCACY,IAAA,CAAK,0BAC1B;iBAwMmB,oBAAA,MACf,IAAA,CAAK,sBACL,IAAA,CAAK,wDAGA,oBACD,mBACC,uCACY,IAAA,CAAK,0BAC1B"}
1
+ {"version":3,"file":"bedrock-converse.d.cts","names":[],"sources":["../src/bedrock-converse.ts"],"sourcesContent":[],"mappings":";;;;;;UAsCU,oBAAA,CAqB0B;EAAgB,IAAA,CAAA,EAAA,MAAA;EAKpC,OAAA,CAAA,EAAA;IAA2B,SAAA,EAAA,MAAA;IACpC,IAAA,EAAA,MAAA;IAEJ,KAAA,EAAA,MAAA;EAAqB,CAAA;EAiJF,UAAA,CAAA,EAAA;IAAc,SAAA,EAAA,MAAA;IAC7B,OAAK,EAAA;MACA,IAAA,CAAA,EAAA,MAAA;IAGA,CAAA,EAAA;;;UA7KF,eAAA,CAgLmB;MAC1B,EAAA,MAAA,GAAA,WAAA;EAAO,OAAA,EA/KC,oBA+KD,EAAA;AAyMV;UArXU,gBAAA,CAqXgC;MACnC,EAAA,MAAK;aACA,CAAA,EAAA,MAAA;aAGA,CAAA,EAAA,MAAA;;UApXF,eAAA,CAsXE;UACiB,EAtXjB,eAsXiB,EAAA;QAC1B,CAAA,EAAA;IAAO,IAAA,EAAA,MAAA;;;;;;;;gBApX0B;;;;iBAKpB,2BAAA,MACT,mCAEJ;iBAiJmB,cAAA,MACf,IAAA,CAAK,sBACL,IAAA,CAAK,wDAGA,oBACD,mBACC,uCACY,IAAA,CAAK,0BAC1B;iBAyMmB,oBAAA,MACf,IAAA,CAAK,sBACL,IAAA,CAAK,wDAGA,oBACD,mBACC,uCACY,IAAA,CAAK,0BAC1B"}
@@ -1 +1 @@
1
- {"version":3,"file":"bedrock-converse.d.ts","names":[],"sources":["../src/bedrock-converse.ts"],"sourcesContent":[],"mappings":";;;;;;UAsCU,oBAAA,CAqB0B;EAAgB,IAAA,CAAA,EAAA,MAAA;EAKpC,OAAA,CAAA,EAAA;IAA2B,SAAA,EAAA,MAAA;IACpC,IAAA,EAAA,MAAA;IAEJ,KAAA,EAAA,MAAA;EAAqB,CAAA;EAiJF,UAAA,CAAA,EAAA;IAAc,SAAA,EAAA,MAAA;IAC7B,OAAK,EAAA;MACA,IAAA,CAAA,EAAA,MAAA;IAGA,CAAA,EAAA;;;UA7KF,eAAA,CAgLmB;MAC1B,EAAA,MAAA,GAAA,WAAA;EAAO,OAAA,EA/KC,oBA+KD,EAAA;AAwMV;UApXU,gBAAA,CAoXgC;MACnC,EAAA,MAAK;aACA,CAAA,EAAA,MAAA;aAGA,CAAA,EAAA,MAAA;;UAnXF,eAAA,CAqXE;UACiB,EArXjB,eAqXiB,EAAA;QAC1B,CAAA,EAAA;IAAO,IAAA,EAAA,MAAA;;;;;;;;gBAnX0B;;;;iBAKpB,2BAAA,MACT,mCAEJ;iBAiJmB,cAAA,MACf,IAAA,CAAK,sBACL,IAAA,CAAK,wDAGA,oBACD,mBACC,uCACY,IAAA,CAAK,0BAC1B;iBAwMmB,oBAAA,MACf,IAAA,CAAK,sBACL,IAAA,CAAK,wDAGA,oBACD,mBACC,uCACY,IAAA,CAAK,0BAC1B"}
1
+ {"version":3,"file":"bedrock-converse.d.ts","names":[],"sources":["../src/bedrock-converse.ts"],"sourcesContent":[],"mappings":";;;;;;UAsCU,oBAAA,CAqB0B;EAAgB,IAAA,CAAA,EAAA,MAAA;EAKpC,OAAA,CAAA,EAAA;IAA2B,SAAA,EAAA,MAAA;IACpC,IAAA,EAAA,MAAA;IAEJ,KAAA,EAAA,MAAA;EAAqB,CAAA;EAiJF,UAAA,CAAA,EAAA;IAAc,SAAA,EAAA,MAAA;IAC7B,OAAK,EAAA;MACA,IAAA,CAAA,EAAA,MAAA;IAGA,CAAA,EAAA;;;UA7KF,eAAA,CAgLmB;MAC1B,EAAA,MAAA,GAAA,WAAA;EAAO,OAAA,EA/KC,oBA+KD,EAAA;AAyMV;UArXU,gBAAA,CAqXgC;MACnC,EAAA,MAAK;aACA,CAAA,EAAA,MAAA;aAGA,CAAA,EAAA,MAAA;;UApXF,eAAA,CAsXE;UACiB,EAtXjB,eAsXiB,EAAA;QAC1B,CAAA,EAAA;IAAO,IAAA,EAAA,MAAA;;;;;;;;gBApX0B;;;;iBAKpB,2BAAA,MACT,mCAEJ;iBAiJmB,cAAA,MACf,IAAA,CAAK,sBACL,IAAA,CAAK,wDAGA,oBACD,mBACC,uCACY,IAAA,CAAK,0BAC1B;iBAyMmB,oBAAA,MACf,IAAA,CAAK,sBACL,IAAA,CAAK,wDAGA,oBACD,mBACC,uCACY,IAAA,CAAK,0BAC1B"}
@@ -164,6 +164,7 @@ async function handleConverse(req, res, raw, modelId, fixtures, journal, default
164
164
  return;
165
165
  }
166
166
  const completionReq = converseToCompletionRequest(converseReq, modelId);
167
+ completionReq._endpointType = "chat";
167
168
  const testId = getTestId(req);
168
169
  const fixture = matchFixture(fixtures, completionReq, journal.getFixtureMatchCountsForTest(testId), defaults.requestTransform);
169
170
  if (fixture) journal.incrementFixtureMatchCount(fixture, fixtures, testId);
@@ -313,6 +314,7 @@ async function handleConverseStream(req, res, raw, modelId, fixtures, journal, d
313
314
  return;
314
315
  }
315
316
  const completionReq = converseToCompletionRequest(converseReq, modelId);
317
+ completionReq._endpointType = "chat";
316
318
  const testId = getTestId(req);
317
319
  const fixture = matchFixture(fixtures, completionReq, journal.getFixtureMatchCountsForTest(testId), defaults.requestTransform);
318
320
  if (fixture) journal.incrementFixtureMatchCount(fixture, fixtures, testId);