@copilotkit/aimock 1.43.0 → 1.45.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +46 -0
- package/README.md +14 -2
- package/dist/agui-handler.d.ts.map +1 -1
- package/dist/aimock-cli.cjs +31 -5
- package/dist/aimock-cli.cjs.map +1 -1
- package/dist/aimock-cli.d.cts.map +1 -1
- package/dist/aimock-cli.d.ts.map +1 -1
- package/dist/aimock-cli.js +31 -5
- package/dist/aimock-cli.js.map +1 -1
- package/dist/bedrock-converse.cjs +344 -43
- package/dist/bedrock-converse.cjs.map +1 -1
- package/dist/bedrock-converse.d.cts.map +1 -1
- package/dist/bedrock-converse.d.ts.map +1 -1
- package/dist/bedrock-converse.js +345 -44
- package/dist/bedrock-converse.js.map +1 -1
- package/dist/bedrock.cjs +195 -42
- package/dist/bedrock.cjs.map +1 -1
- package/dist/bedrock.d.cts.map +1 -1
- package/dist/bedrock.d.ts.map +1 -1
- package/dist/bedrock.js +196 -43
- package/dist/bedrock.js.map +1 -1
- package/dist/chaos.cjs +9 -5
- package/dist/chaos.cjs.map +1 -1
- package/dist/chaos.d.cts.map +1 -1
- package/dist/chaos.d.ts.map +1 -1
- package/dist/chaos.js +10 -7
- package/dist/chaos.js.map +1 -1
- package/dist/cli.cjs +238 -9
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +242 -13
- package/dist/cli.js.map +1 -1
- package/dist/cohere.cjs +159 -72
- package/dist/cohere.cjs.map +1 -1
- package/dist/cohere.d.cts.map +1 -1
- package/dist/cohere.d.ts.map +1 -1
- package/dist/cohere.js +160 -73
- package/dist/cohere.js.map +1 -1
- package/dist/config-loader.cjs +63 -5
- package/dist/config-loader.cjs.map +1 -1
- package/dist/config-loader.d.cts +37 -4
- package/dist/config-loader.d.cts.map +1 -1
- package/dist/config-loader.d.ts +37 -4
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/config-loader.js +63 -5
- package/dist/config-loader.js.map +1 -1
- package/dist/constants.cjs +8 -0
- package/dist/constants.cjs.map +1 -1
- package/dist/constants.d.cts +6 -2
- package/dist/constants.d.ts +6 -2
- package/dist/constants.js +8 -1
- package/dist/constants.js.map +1 -1
- package/dist/echo-text.cjs +65 -0
- package/dist/echo-text.cjs.map +1 -0
- package/dist/echo-text.d.cts +22 -0
- package/dist/echo-text.d.cts.map +1 -0
- package/dist/echo-text.d.ts +22 -0
- package/dist/echo-text.d.ts.map +1 -0
- package/dist/echo-text.js +65 -0
- package/dist/echo-text.js.map +1 -0
- package/dist/embeddings.cjs +18 -1
- package/dist/embeddings.cjs.map +1 -1
- package/dist/embeddings.d.cts +1 -1
- package/dist/embeddings.d.cts.map +1 -1
- package/dist/embeddings.d.ts +1 -1
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +18 -1
- package/dist/embeddings.js.map +1 -1
- package/dist/fakes-plugin.cjs +131 -0
- package/dist/fakes-plugin.cjs.map +1 -0
- package/dist/fakes-plugin.d.cts +23 -0
- package/dist/fakes-plugin.d.cts.map +1 -0
- package/dist/fakes-plugin.d.ts +23 -0
- package/dist/fakes-plugin.d.ts.map +1 -0
- package/dist/fakes-plugin.js +127 -0
- package/dist/fakes-plugin.js.map +1 -0
- package/dist/files.cjs +9 -11
- package/dist/files.cjs.map +1 -1
- package/dist/files.d.cts.map +1 -1
- package/dist/files.d.ts.map +1 -1
- package/dist/files.js +10 -13
- package/dist/files.js.map +1 -1
- package/dist/fine-tuning.cjs +1 -19
- package/dist/fine-tuning.cjs.map +1 -1
- package/dist/fine-tuning.d.cts.map +1 -1
- package/dist/fine-tuning.d.ts.map +1 -1
- package/dist/fine-tuning.js +2 -20
- package/dist/fine-tuning.js.map +1 -1
- package/dist/fixture-loader-services.cjs +116 -0
- package/dist/fixture-loader-services.cjs.map +1 -0
- package/dist/fixture-loader-services.d.cts +48 -0
- package/dist/fixture-loader-services.d.cts.map +1 -0
- package/dist/fixture-loader-services.d.ts +48 -0
- package/dist/fixture-loader-services.d.ts.map +1 -0
- package/dist/fixture-loader-services.js +114 -0
- package/dist/fixture-loader-services.js.map +1 -0
- package/dist/fixture-loader.cjs +552 -29
- package/dist/fixture-loader.cjs.map +1 -1
- package/dist/fixture-loader.d.cts +140 -2
- package/dist/fixture-loader.d.cts.map +1 -1
- package/dist/fixture-loader.d.ts +140 -2
- package/dist/fixture-loader.d.ts.map +1 -1
- package/dist/fixture-loader.js +542 -31
- package/dist/fixture-loader.js.map +1 -1
- package/dist/gemini-embeddings.cjs +42 -2
- package/dist/gemini-embeddings.cjs.map +1 -1
- package/dist/gemini-embeddings.js +43 -3
- package/dist/gemini-embeddings.js.map +1 -1
- package/dist/gemini-interactions.cjs +288 -52
- package/dist/gemini-interactions.cjs.map +1 -1
- package/dist/gemini-interactions.d.cts.map +1 -1
- package/dist/gemini-interactions.d.ts.map +1 -1
- package/dist/gemini-interactions.js +289 -53
- package/dist/gemini-interactions.js.map +1 -1
- package/dist/gemini.cjs +234 -38
- package/dist/gemini.cjs.map +1 -1
- package/dist/gemini.d.cts.map +1 -1
- package/dist/gemini.d.ts.map +1 -1
- package/dist/gemini.js +235 -39
- package/dist/gemini.js.map +1 -1
- package/dist/helpers.cjs +1157 -12
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.cts +85 -4
- package/dist/helpers.d.cts.map +1 -1
- package/dist/helpers.d.ts +85 -4
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +1113 -14
- package/dist/helpers.js.map +1 -1
- package/dist/images.cjs +3 -2
- package/dist/images.cjs.map +1 -1
- package/dist/images.js +3 -2
- package/dist/images.js.map +1 -1
- package/dist/index.cjs +39 -1
- package/dist/index.d.cts +11 -4
- package/dist/index.d.ts +11 -4
- package/dist/index.js +11 -4
- package/dist/jest.cjs +43 -14
- package/dist/jest.cjs.map +1 -1
- package/dist/jest.d.cts +47 -5
- package/dist/jest.d.cts.map +1 -1
- package/dist/jest.d.ts +47 -5
- package/dist/jest.d.ts.map +1 -1
- package/dist/jest.js +45 -16
- package/dist/jest.js.map +1 -1
- package/dist/journal.cjs +155 -13
- package/dist/journal.cjs.map +1 -1
- package/dist/journal.d.cts +54 -4
- package/dist/journal.d.cts.map +1 -1
- package/dist/journal.d.ts +54 -4
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +155 -13
- package/dist/journal.js.map +1 -1
- package/dist/live-sanitize.cjs +4 -32
- package/dist/live-sanitize.cjs.map +1 -1
- package/dist/live-sanitize.js +4 -32
- package/dist/live-sanitize.js.map +1 -1
- package/dist/llmock.cjs +204 -39
- package/dist/llmock.cjs.map +1 -1
- package/dist/llmock.d.cts +51 -1
- package/dist/llmock.d.cts.map +1 -1
- package/dist/llmock.d.ts +51 -1
- package/dist/llmock.d.ts.map +1 -1
- package/dist/llmock.js +206 -41
- package/dist/llmock.js.map +1 -1
- package/dist/mcp-fakes-mount.cjs +217 -0
- package/dist/mcp-fakes-mount.cjs.map +1 -0
- package/dist/mcp-fakes-mount.js +211 -0
- package/dist/mcp-fakes-mount.js.map +1 -0
- package/dist/mcp-fakes-report.cjs +111 -0
- package/dist/mcp-fakes-report.cjs.map +1 -0
- package/dist/mcp-fakes-report.d.cts +40 -0
- package/dist/mcp-fakes-report.d.cts.map +1 -0
- package/dist/mcp-fakes-report.d.ts +40 -0
- package/dist/mcp-fakes-report.d.ts.map +1 -0
- package/dist/mcp-fakes-report.js +107 -0
- package/dist/mcp-fakes-report.js.map +1 -0
- package/dist/mcp-fakes.cjs +1942 -0
- package/dist/mcp-fakes.cjs.map +1 -0
- package/dist/mcp-fakes.d.cts +504 -0
- package/dist/mcp-fakes.d.cts.map +1 -0
- package/dist/mcp-fakes.d.ts +504 -0
- package/dist/mcp-fakes.d.ts.map +1 -0
- package/dist/mcp-fakes.js +1937 -0
- package/dist/mcp-fakes.js.map +1 -0
- package/dist/mcp-handler.cjs +534 -27
- package/dist/mcp-handler.cjs.map +1 -1
- package/dist/mcp-handler.d.cts +49 -0
- package/dist/mcp-handler.d.cts.map +1 -0
- package/dist/mcp-handler.d.ts +49 -0
- package/dist/mcp-handler.d.ts.map +1 -0
- package/dist/mcp-handler.js +530 -28
- package/dist/mcp-handler.js.map +1 -1
- package/dist/mcp-mock.cjs +326 -47
- package/dist/mcp-mock.cjs.map +1 -1
- package/dist/mcp-mock.d.cts +97 -1
- package/dist/mcp-mock.d.cts.map +1 -1
- package/dist/mcp-mock.d.ts +97 -1
- package/dist/mcp-mock.d.ts.map +1 -1
- package/dist/mcp-mock.js +327 -48
- package/dist/mcp-mock.js.map +1 -1
- package/dist/mcp-recorder.cjs +1224 -0
- package/dist/mcp-recorder.cjs.map +1 -0
- package/dist/mcp-recorder.d.cts +108 -0
- package/dist/mcp-recorder.d.cts.map +1 -0
- package/dist/mcp-recorder.d.ts +108 -0
- package/dist/mcp-recorder.d.ts.map +1 -0
- package/dist/mcp-recorder.js +1215 -0
- package/dist/mcp-recorder.js.map +1 -0
- package/dist/mcp-stub.cjs +5 -1
- package/dist/mcp-stub.d.cts +3 -1
- package/dist/mcp-stub.d.ts +3 -1
- package/dist/mcp-stub.js +3 -1
- package/dist/mcp-types.d.cts +6 -0
- package/dist/mcp-types.d.ts +6 -0
- package/dist/message-text.cjs +192 -0
- package/dist/message-text.cjs.map +1 -0
- package/dist/message-text.d.cts +31 -0
- package/dist/message-text.d.cts.map +1 -0
- package/dist/message-text.d.ts +31 -0
- package/dist/message-text.d.ts.map +1 -0
- package/dist/message-text.js +184 -0
- package/dist/message-text.js.map +1 -0
- package/dist/messages.cjs +400 -56
- package/dist/messages.cjs.map +1 -1
- package/dist/messages.d.cts.map +1 -1
- package/dist/messages.d.ts.map +1 -1
- package/dist/messages.js +401 -58
- package/dist/messages.js.map +1 -1
- package/dist/metrics.cjs +46 -66
- package/dist/metrics.cjs.map +1 -1
- package/dist/metrics.d.cts +14 -6
- package/dist/metrics.d.cts.map +1 -1
- package/dist/metrics.d.ts +14 -6
- package/dist/metrics.d.ts.map +1 -1
- package/dist/metrics.js +32 -40
- package/dist/metrics.js.map +1 -1
- package/dist/misbehavior.cjs +1523 -0
- package/dist/misbehavior.cjs.map +1 -0
- package/dist/misbehavior.d.cts +43 -0
- package/dist/misbehavior.d.cts.map +1 -0
- package/dist/misbehavior.d.ts +43 -0
- package/dist/misbehavior.d.ts.map +1 -0
- package/dist/misbehavior.js +1511 -0
- package/dist/misbehavior.js.map +1 -0
- package/dist/ollama.cjs +315 -113
- package/dist/ollama.cjs.map +1 -1
- package/dist/ollama.d.cts.map +1 -1
- package/dist/ollama.d.ts.map +1 -1
- package/dist/ollama.js +316 -114
- package/dist/ollama.js.map +1 -1
- package/dist/openapi.cjs +3405 -0
- package/dist/openapi.cjs.map +1 -0
- package/dist/openapi.d.cts +30 -0
- package/dist/openapi.d.cts.map +1 -0
- package/dist/openapi.d.ts +30 -0
- package/dist/openapi.d.ts.map +1 -0
- package/dist/openapi.js +3404 -0
- package/dist/openapi.js.map +1 -0
- package/dist/openrouter-video.cjs +4 -4
- package/dist/openrouter-video.cjs.map +1 -1
- package/dist/openrouter-video.d.cts.map +1 -1
- package/dist/openrouter-video.d.ts.map +1 -1
- package/dist/openrouter-video.js +4 -4
- package/dist/openrouter-video.js.map +1 -1
- package/dist/record-sanitize.cjs +231 -0
- package/dist/record-sanitize.cjs.map +1 -0
- package/dist/record-sanitize.js +224 -0
- package/dist/record-sanitize.js.map +1 -0
- package/dist/recorder.cjs +115 -6
- package/dist/recorder.cjs.map +1 -1
- package/dist/recorder.d.cts +2 -1
- package/dist/recorder.d.cts.map +1 -1
- package/dist/recorder.d.ts +2 -1
- package/dist/recorder.d.ts.map +1 -1
- package/dist/recorder.js +116 -8
- package/dist/recorder.js.map +1 -1
- package/dist/responses.cjs +701 -166
- package/dist/responses.cjs.map +1 -1
- package/dist/responses.d.cts +5 -13
- package/dist/responses.d.cts.map +1 -1
- package/dist/responses.d.ts +5 -13
- package/dist/responses.d.ts.map +1 -1
- package/dist/responses.js +699 -169
- package/dist/responses.js.map +1 -1
- package/dist/route-registry.cjs +951 -0
- package/dist/route-registry.cjs.map +1 -0
- package/dist/route-registry.d.cts +33 -0
- package/dist/route-registry.d.cts.map +1 -0
- package/dist/route-registry.d.ts +33 -0
- package/dist/route-registry.d.ts.map +1 -0
- package/dist/route-registry.js +866 -0
- package/dist/route-registry.js.map +1 -0
- package/dist/router.cjs +24 -2
- package/dist/router.cjs.map +1 -1
- package/dist/router.d.cts.map +1 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +25 -4
- package/dist/router.js.map +1 -1
- package/dist/server.cjs +1159 -264
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +4 -1
- package/dist/server.d.cts.map +1 -1
- package/dist/server.d.ts +4 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +1067 -172
- package/dist/server.js.map +1 -1
- package/dist/speech.cjs +4 -2
- package/dist/speech.cjs.map +1 -1
- package/dist/speech.js +4 -2
- package/dist/speech.js.map +1 -1
- package/dist/stream-collapse.cjs +236 -34
- package/dist/stream-collapse.cjs.map +1 -1
- package/dist/stream-collapse.d.cts +39 -4
- package/dist/stream-collapse.d.cts.map +1 -1
- package/dist/stream-collapse.d.ts +39 -4
- package/dist/stream-collapse.d.ts.map +1 -1
- package/dist/stream-collapse.js +235 -35
- package/dist/stream-collapse.js.map +1 -1
- package/dist/suite.cjs +1 -1
- package/dist/suite.js +1 -1
- package/dist/transcription.cjs +2 -2
- package/dist/transcription.cjs.map +1 -1
- package/dist/transcription.d.cts.map +1 -1
- package/dist/transcription.d.ts.map +1 -1
- package/dist/transcription.js +2 -2
- package/dist/transcription.js.map +1 -1
- package/dist/types.cjs +18 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +516 -5
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +516 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +17 -0
- package/dist/types.js.map +1 -0
- package/dist/validate-cli.cjs +123 -33
- package/dist/validate-cli.cjs.map +1 -1
- package/dist/validate-cli.js +125 -35
- package/dist/validate-cli.js.map +1 -1
- package/dist/vector-stores.cjs +1180 -0
- package/dist/vector-stores.cjs.map +1 -0
- package/dist/vector-stores.d.cts +106 -0
- package/dist/vector-stores.d.cts.map +1 -0
- package/dist/vector-stores.d.ts +106 -0
- package/dist/vector-stores.d.ts.map +1 -0
- package/dist/vector-stores.js +1164 -0
- package/dist/vector-stores.js.map +1 -0
- package/dist/vector-types.d.cts.map +1 -1
- package/dist/version.cjs +45 -0
- package/dist/version.cjs.map +1 -0
- package/dist/version.js +44 -0
- package/dist/version.js.map +1 -0
- package/dist/video.cjs +19 -0
- package/dist/video.cjs.map +1 -1
- package/dist/video.d.cts.map +1 -1
- package/dist/video.d.ts.map +1 -1
- package/dist/video.js +19 -0
- package/dist/video.js.map +1 -1
- package/dist/vitest.cjs +77 -16
- package/dist/vitest.cjs.map +1 -1
- package/dist/vitest.d.cts +38 -5
- package/dist/vitest.d.cts.map +1 -1
- package/dist/vitest.d.ts +38 -5
- package/dist/vitest.d.ts.map +1 -1
- package/dist/vitest.js +78 -17
- package/dist/vitest.js.map +1 -1
- package/dist/watcher.cjs +6 -2
- package/dist/watcher.cjs.map +1 -1
- package/dist/watcher.js +6 -2
- package/dist/watcher.js.map +1 -1
- package/dist/ws-gemini-live.cjs +210 -101
- package/dist/ws-gemini-live.cjs.map +1 -1
- package/dist/ws-gemini-live.d.cts +9 -3
- package/dist/ws-gemini-live.d.cts.map +1 -1
- package/dist/ws-gemini-live.d.ts +9 -3
- package/dist/ws-gemini-live.d.ts.map +1 -1
- package/dist/ws-gemini-live.js +211 -102
- package/dist/ws-gemini-live.js.map +1 -1
- package/dist/ws-realtime.cjs +175 -62
- package/dist/ws-realtime.cjs.map +1 -1
- package/dist/ws-realtime.d.cts +8 -3
- package/dist/ws-realtime.d.cts.map +1 -1
- package/dist/ws-realtime.d.ts +8 -3
- package/dist/ws-realtime.d.ts.map +1 -1
- package/dist/ws-realtime.js +176 -63
- package/dist/ws-realtime.js.map +1 -1
- package/dist/ws-responses.cjs +121 -16
- package/dist/ws-responses.cjs.map +1 -1
- package/dist/ws-responses.d.cts +8 -12
- package/dist/ws-responses.d.cts.map +1 -1
- package/dist/ws-responses.d.ts +8 -12
- package/dist/ws-responses.d.ts.map +1 -1
- package/dist/ws-responses.js +123 -18
- package/dist/ws-responses.js.map +1 -1
- package/package.json +13 -2
- package/skills/write-fixtures/SKILL.md +179 -21
package/dist/recorder.d.cts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Logger } from "./logger.cjs";
|
|
2
|
-
import { ChatCompletionRequest, Fixture, RecordConfig, RecordProviderKey } from "./types.cjs";
|
|
2
|
+
import { ChatCompletionRequest, Fixture, RecordConfig, RecordProviderKey, ResponsesToolsMode } from "./types.cjs";
|
|
3
3
|
import * as http$1 from "node:http";
|
|
4
4
|
|
|
5
5
|
//#region src/recorder.d.ts
|
|
@@ -72,6 +72,7 @@ declare function proxyAndRecord(req: http$1.IncomingMessage, res: http$1.ServerR
|
|
|
72
72
|
record?: RecordConfig;
|
|
73
73
|
logger: Logger;
|
|
74
74
|
requestTransform?: (req: ChatCompletionRequest) => ChatCompletionRequest;
|
|
75
|
+
responsesTools?: ResponsesToolsMode;
|
|
75
76
|
}, rawBody?: string, options?: ProxyOptions): Promise<ProxyOutcome>;
|
|
76
77
|
/**
|
|
77
78
|
* Decodes a sequence of byte chunks to UTF-8 text for SSE/NDJSON frame
|
package/dist/recorder.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.d.cts","names":[],"sources":["../src/recorder.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"recorder.d.cts","names":[],"sources":["../src/recorder.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;UAsOiB,qBAAA;;;QAGT;;UAGS,YAAA;;;;;;;;;;;;;;;;;;mCAkBkB,oCAAoC;;;;;;;;;;;;;;;;;;;;;;KAuB3D,YAAA;;;;;;;;;;;;;;;iBA8OU,cAAA,MACf,MAAA,CAAK,sBACL,MAAA,CAAK,yBACD,oCACI,+CAEH;WAEC;UACD;2BACiB,0BAA0B;mBAClC;+BAGT,eACT,QAAQ"}
|
package/dist/recorder.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Logger } from "./logger.js";
|
|
2
|
-
import { ChatCompletionRequest, Fixture, RecordConfig, RecordProviderKey } from "./types.js";
|
|
2
|
+
import { ChatCompletionRequest, Fixture, RecordConfig, RecordProviderKey, ResponsesToolsMode } from "./types.js";
|
|
3
3
|
import * as http$1 from "node:http";
|
|
4
4
|
|
|
5
5
|
//#region src/recorder.d.ts
|
|
@@ -72,6 +72,7 @@ declare function proxyAndRecord(req: http$1.IncomingMessage, res: http$1.ServerR
|
|
|
72
72
|
record?: RecordConfig;
|
|
73
73
|
logger: Logger;
|
|
74
74
|
requestTransform?: (req: ChatCompletionRequest) => ChatCompletionRequest;
|
|
75
|
+
responsesTools?: ResponsesToolsMode;
|
|
75
76
|
}, rawBody?: string, options?: ProxyOptions): Promise<ProxyOutcome>;
|
|
76
77
|
/**
|
|
77
78
|
* Decodes a sequence of byte chunks to UTF-8 text for SSE/NDJSON frame
|
package/dist/recorder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recorder.d.ts","names":[],"sources":["../src/recorder.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"recorder.d.ts","names":[],"sources":["../src/recorder.ts"],"sourcesContent":[],"mappings":";;;;;;;;;;UAsOiB,qBAAA;;;QAGT;;UAGS,YAAA;;;;;;;;;;;;;;;;;;mCAkBkB,oCAAoC;;;;;;;;;;;;;;;;;;;;;;KAuB3D,YAAA;;;;;;;;;;;;;;;iBA8OU,cAAA,MACf,MAAA,CAAK,sBACL,MAAA,CAAK,yBACD,oCACI,+CAEH;WAEC;UACD;2BACiB,0BAA0B;mBAClC;+BAGT,eACT,QAAQ"}
|
package/dist/recorder.js
CHANGED
|
@@ -4,7 +4,7 @@ import { isAuthenticatedRequest, isRecognizedApiKeyHeader } from "./api-key-auth
|
|
|
4
4
|
import { getTestId, hasMintedRequestId, slugifyContext, slugifyTestId } from "./helpers.js";
|
|
5
5
|
import { writeErrorResponse } from "./sse-writer.js";
|
|
6
6
|
import { currentTurnHasToolResult, getLastMessageByRole, getTextContent } from "./router.js";
|
|
7
|
-
import { capturedRedactedData,
|
|
7
|
+
import { capturedRedactedData, collapseStreamingResponseWithResponsesTools, withoutResponsesToolFields } from "./stream-collapse.js";
|
|
8
8
|
import { resolveUpstreamUrl } from "./url.js";
|
|
9
9
|
import { applyConfiguredProviderAuth, applyProviderAuth } from "./provider-auth.js";
|
|
10
10
|
import * as http$1 from "node:http";
|
|
@@ -223,7 +223,15 @@ function persistFixture(opts) {
|
|
|
223
223
|
const existing = JSON.parse(fs.readFileSync(filepath, "utf-8"));
|
|
224
224
|
const existingFixtures = Array.isArray(existing.fixtures) ? existing.fixtures : void 0;
|
|
225
225
|
if (existingFixtures === void 0 && existing.fixtures !== void 0) logger.warn(`Existing fixture file ${filepath} has a non-array "fixtures" — discarding it and starting fresh`);
|
|
226
|
-
|
|
226
|
+
const keptKeys = {};
|
|
227
|
+
if (existing !== null && typeof existing === "object" && !Array.isArray(existing)) for (const [key, value] of Object.entries(existing)) {
|
|
228
|
+
if (key === "fixtures" || key === "_warnings" || key === "_warning") continue;
|
|
229
|
+
keptKeys[key] = value;
|
|
230
|
+
}
|
|
231
|
+
fileContent = {
|
|
232
|
+
...keptKeys,
|
|
233
|
+
fixtures: [...existingFixtures ?? [], fixture]
|
|
234
|
+
};
|
|
227
235
|
if (Array.isArray(existing._warnings)) fileWarnings.unshift(...existing._warnings.filter((w) => typeof w === "string"));
|
|
228
236
|
else if (typeof existing._warning === "string" && existing._warning) fileWarnings.unshift(...existing._warning.split("; "));
|
|
229
237
|
} catch (mergeErr) {
|
|
@@ -372,7 +380,8 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
|
|
|
372
380
|
const contentType = upstreamHeaders["content-type"];
|
|
373
381
|
const ctString = pickContentType(contentType);
|
|
374
382
|
const isBinaryStream = ctString.toLowerCase().includes("application/vnd.amazon.eventstream");
|
|
375
|
-
const
|
|
383
|
+
const collapsedRaw = collapseStreamingResponseWithResponsesTools(ctString, providerKey, isBinaryStream ? rawBuffer : upstreamBody, defaults.logger);
|
|
384
|
+
const collapsed = collapsedRaw && defaults.responsesTools !== "extended" ? withoutResponsesToolFields(collapsedRaw) : collapsedRaw;
|
|
376
385
|
let fixtureResponse;
|
|
377
386
|
if (ctString.toLowerCase().startsWith("audio/") && upstreamStatus >= 200 && upstreamStatus < 300) {
|
|
378
387
|
const audioFormat = ctString.toLowerCase().replace("audio/", "").replace("mpeg", "mp3").split(";")[0].trim();
|
|
@@ -406,7 +415,7 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
|
|
|
406
415
|
...audioContentSpread,
|
|
407
416
|
...audioReasoningSpread
|
|
408
417
|
};
|
|
409
|
-
} else if (collapsed.content === "" && (!collapsed.toolCalls || collapsed.toolCalls.length === 0)) {
|
|
418
|
+
} else if (collapsed.content === "" && (!collapsed.toolCalls || collapsed.toolCalls.length === 0) && !collapsed.customToolCalls?.length) {
|
|
410
419
|
defaults.logger.warn("Stream collapse produced empty content — fixture may be incomplete");
|
|
411
420
|
const reasoningSpread = collapsed.reasoning ? { reasoning: collapsed.reasoning } : {};
|
|
412
421
|
const reasoningSignatureSpread = collapsed.reasoning && collapsed.reasoningSignature ? { reasoningSignature: collapsed.reasoningSignature } : {};
|
|
@@ -427,12 +436,27 @@ async function proxyAndRecord(req, res, request, providerKey, pathname, fixtures
|
|
|
427
436
|
logDroppedReasoningSignature(defaults.logger, collapsed.reasoning, collapsed.reasoningSignature);
|
|
428
437
|
const redactedThinkingSpread = collapsed.redactedThinking?.length ? { redactedThinking: collapsed.redactedThinking } : {};
|
|
429
438
|
const webSearchesSpread = collapsed.webSearches?.length ? { webSearches: collapsed.webSearches } : {};
|
|
430
|
-
if (collapsed.
|
|
431
|
-
const
|
|
439
|
+
if (collapsed.customToolCalls?.length) {
|
|
440
|
+
const toolCalls = (collapsed.toolCalls ?? []).map(sanitizeRecordedToolCall);
|
|
441
|
+
const customToolCalls = collapsed.customToolCalls.map((tc) => ({
|
|
432
442
|
...tc,
|
|
433
443
|
name: tc.name ?? "",
|
|
434
|
-
|
|
444
|
+
input: tc.input ?? ""
|
|
435
445
|
}));
|
|
446
|
+
const orderSpread = collapsed.responsesBlocks?.length ? { responsesBlocks: collapsed.responsesBlocks } : collapsed.blocks?.length ? { blocks: collapsed.blocks } : {};
|
|
447
|
+
fixtureResponse = {
|
|
448
|
+
...collapsed.content ? { content: collapsed.content } : {},
|
|
449
|
+
toolCalls,
|
|
450
|
+
customToolCalls,
|
|
451
|
+
...orderSpread,
|
|
452
|
+
...reasoningSpread,
|
|
453
|
+
...reasoningSignatureSpread,
|
|
454
|
+
...redactedThinkingSpread,
|
|
455
|
+
...webSearchesSpread,
|
|
456
|
+
...usageSpread
|
|
457
|
+
};
|
|
458
|
+
} else if (collapsed.toolCalls && collapsed.toolCalls.length > 0) {
|
|
459
|
+
const sanitizedToolCalls = collapsed.toolCalls.map(sanitizeRecordedToolCall);
|
|
436
460
|
if (collapsed.content) {
|
|
437
461
|
const blocksSpread = collapsed.blocks?.length ? { blocks: collapsed.blocks } : {};
|
|
438
462
|
fixtureResponse = {
|
|
@@ -795,6 +819,14 @@ function makeUpstreamRequest(target, headers, body, clientRes, method = "POST",
|
|
|
795
819
|
function logDroppedReasoningSignature(logger, reasoning, reasoningSignature) {
|
|
796
820
|
if (reasoningSignature && !reasoning) logger?.warn("Dropping captured reasoningSignature — no plaintext reasoning to attach it to");
|
|
797
821
|
}
|
|
822
|
+
/** Sanitize a collapsed function call before it is persisted: string `name` and `arguments`. */
|
|
823
|
+
function sanitizeRecordedToolCall(tc) {
|
|
824
|
+
return {
|
|
825
|
+
...tc,
|
|
826
|
+
name: tc.name ?? "",
|
|
827
|
+
arguments: tc.arguments ?? "{}"
|
|
828
|
+
};
|
|
829
|
+
}
|
|
798
830
|
/**
|
|
799
831
|
* Coerce a tool call's `arguments` field into the string the fixture contract
|
|
800
832
|
* requires (types.ts `ToolCall.arguments: string`). When the upstream omits the
|
|
@@ -1259,7 +1291,83 @@ function buildFixtureMetadata(request) {
|
|
|
1259
1291
|
if (request.tools && request.tools.length > 0) meta.toolsHash = crypto$1.createHash("sha256").update(JSON.stringify(request.tools)).digest("hex").slice(0, 8);
|
|
1260
1292
|
return Object.keys(meta).length > 0 ? meta : void 0;
|
|
1261
1293
|
}
|
|
1294
|
+
/**
|
|
1295
|
+
* MR11: read-merge-validate-write one service fakes file atomically (temp +
|
|
1296
|
+
* rename, 0o600). Synchronous, so writes to one path never interleave in this
|
|
1297
|
+
* process. Keeps unknown top-level keys (fakes:F9). `validate` returns a
|
|
1298
|
+
* problem text, or null when the whole merged file is valid. Logs RL4 on a
|
|
1299
|
+
* write; a failure is returned, never logged here (the caller logs RL1 with
|
|
1300
|
+
* its own context).
|
|
1301
|
+
*/
|
|
1302
|
+
function persistServiceFakes(opts) {
|
|
1303
|
+
const { filepath, merge, validate, logger } = opts;
|
|
1304
|
+
let existing = null;
|
|
1305
|
+
let text = null;
|
|
1306
|
+
try {
|
|
1307
|
+
text = fs.readFileSync(filepath, "utf-8");
|
|
1308
|
+
} catch (err) {
|
|
1309
|
+
if (err.code !== "ENOENT") return {
|
|
1310
|
+
kind: "failed",
|
|
1311
|
+
stage: "write",
|
|
1312
|
+
error: err instanceof Error ? err.message : "Unknown filesystem error"
|
|
1313
|
+
};
|
|
1314
|
+
}
|
|
1315
|
+
if (text !== null) {
|
|
1316
|
+
let parsed;
|
|
1317
|
+
try {
|
|
1318
|
+
parsed = JSON.parse(text);
|
|
1319
|
+
} catch {
|
|
1320
|
+
return {
|
|
1321
|
+
kind: "failed",
|
|
1322
|
+
stage: "read",
|
|
1323
|
+
error: `${filepath} is not valid JSON`
|
|
1324
|
+
};
|
|
1325
|
+
}
|
|
1326
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) return {
|
|
1327
|
+
kind: "failed",
|
|
1328
|
+
stage: "read",
|
|
1329
|
+
error: `${filepath} is not a JSON object`
|
|
1330
|
+
};
|
|
1331
|
+
existing = parsed;
|
|
1332
|
+
}
|
|
1333
|
+
const content = merge(existing);
|
|
1334
|
+
const problem = validate(content);
|
|
1335
|
+
if (problem !== null) return {
|
|
1336
|
+
kind: "failed",
|
|
1337
|
+
stage: "validate",
|
|
1338
|
+
error: problem
|
|
1339
|
+
};
|
|
1340
|
+
let tmpPath;
|
|
1341
|
+
try {
|
|
1342
|
+
fs.mkdirSync(path.dirname(filepath), { recursive: true });
|
|
1343
|
+
const bytes = Buffer.from(JSON.stringify(content, null, 2), "utf-8");
|
|
1344
|
+
tmpPath = filepath + ".tmp." + crypto$1.randomUUID();
|
|
1345
|
+
fs.writeFileSync(tmpPath, bytes, {
|
|
1346
|
+
flag: "wx",
|
|
1347
|
+
mode: 384
|
|
1348
|
+
});
|
|
1349
|
+
fs.renameSync(tmpPath, filepath);
|
|
1350
|
+
tmpPath = void 0;
|
|
1351
|
+
logger.warn(`Response recorded → ${filepath}`);
|
|
1352
|
+
return {
|
|
1353
|
+
kind: "written",
|
|
1354
|
+
filepath,
|
|
1355
|
+
sha256: crypto$1.createHash("sha256").update(bytes).digest("hex"),
|
|
1356
|
+
content
|
|
1357
|
+
};
|
|
1358
|
+
} catch (err) {
|
|
1359
|
+
return {
|
|
1360
|
+
kind: "failed",
|
|
1361
|
+
stage: "write",
|
|
1362
|
+
error: err instanceof Error ? err.message : "Unknown filesystem error"
|
|
1363
|
+
};
|
|
1364
|
+
} finally {
|
|
1365
|
+
if (tmpPath) try {
|
|
1366
|
+
fs.unlinkSync(tmpPath);
|
|
1367
|
+
} catch {}
|
|
1368
|
+
}
|
|
1369
|
+
}
|
|
1262
1370
|
|
|
1263
1371
|
//#endregion
|
|
1264
|
-
export { DEFAULT_MAX_PROXY_BUFFER_BYTES, DEFAULT_MAX_PROXY_BUFFER_FRAMES, PROXY_BUFFER_HARD_CEILING, buildFixtureMatch, buildForwardHeaders, clampTimeout, persistFixture, prepareEgressHeaders, proxyAndRecord, removeForwardHeader, sanitizeHeaderValue, setForwardHeaderDefault };
|
|
1372
|
+
export { DEFAULT_MAX_PROXY_BUFFER_BYTES, DEFAULT_MAX_PROXY_BUFFER_FRAMES, PROXY_BUFFER_HARD_CEILING, buildFixtureMatch, buildForwardHeaders, clampTimeout, persistFixture, persistServiceFakes, prepareEgressHeaders, proxyAndRecord, removeForwardHeader, sanitizeHeaderValue, setForwardHeaderDefault };
|
|
1265
1373
|
//# sourceMappingURL=recorder.js.map
|