@copilotkit/aimock 1.46.0 → 1.47.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 +12 -1
- package/README.md +4 -1
- package/dist/aws-event-stream.cjs +20 -23
- package/dist/aws-event-stream.cjs.map +1 -1
- package/dist/aws-event-stream.d.cts +0 -1
- package/dist/aws-event-stream.d.ts +0 -1
- package/dist/aws-event-stream.js +20 -24
- package/dist/aws-event-stream.js.map +1 -1
- package/dist/bedrock-converse.cjs +79 -82
- 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 +80 -83
- package/dist/bedrock-converse.js.map +1 -1
- package/dist/bedrock.cjs +112 -121
- 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 +113 -122
- package/dist/bedrock.js.map +1 -1
- package/dist/cohere.cjs +58 -106
- 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 +60 -108
- package/dist/cohere.js.map +1 -1
- package/dist/config-loader.d.cts.map +1 -1
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/fixture-loader.cjs +103 -2
- package/dist/fixture-loader.cjs.map +1 -1
- package/dist/fixture-loader.d.cts.map +1 -1
- package/dist/fixture-loader.d.ts.map +1 -1
- package/dist/fixture-loader.js +104 -4
- package/dist/fixture-loader.js.map +1 -1
- package/dist/gemini-interactions.cjs +63 -121
- 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 +65 -123
- package/dist/gemini-interactions.js.map +1 -1
- package/dist/gemini.cjs +242 -155
- 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 +244 -157
- package/dist/gemini.js.map +1 -1
- package/dist/helpers.cjs +400 -7
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.cts +51 -1
- package/dist/helpers.d.cts.map +1 -1
- package/dist/helpers.d.ts +51 -1
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +391 -8
- package/dist/helpers.js.map +1 -1
- package/dist/index.cjs +4 -2
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/index.js +4 -4
- package/dist/mcp-fakes.d.cts.map +1 -1
- package/dist/messages.cjs +159 -141
- 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 +161 -143
- package/dist/messages.js.map +1 -1
- package/dist/misbehavior.cjs +62 -3
- package/dist/misbehavior.cjs.map +1 -1
- package/dist/misbehavior.d.cts.map +1 -1
- package/dist/misbehavior.d.ts.map +1 -1
- package/dist/misbehavior.js +63 -4
- package/dist/misbehavior.js.map +1 -1
- package/dist/ndjson-writer.cjs +21 -23
- package/dist/ndjson-writer.cjs.map +1 -1
- package/dist/ndjson-writer.d.cts +0 -1
- package/dist/ndjson-writer.d.cts.map +1 -1
- package/dist/ndjson-writer.d.ts +0 -1
- package/dist/ndjson-writer.d.ts.map +1 -1
- package/dist/ndjson-writer.js +21 -24
- package/dist/ndjson-writer.js.map +1 -1
- package/dist/ollama.cjs +153 -147
- 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 +155 -149
- package/dist/ollama.js.map +1 -1
- package/dist/openrouter-chat.cjs +1 -1
- package/dist/openrouter-chat.js +1 -1
- package/dist/raw-validation.cjs +177 -0
- package/dist/raw-validation.cjs.map +1 -0
- package/dist/raw-validation.js +176 -0
- package/dist/raw-validation.js.map +1 -0
- package/dist/response/deliver.cjs +144 -0
- package/dist/response/deliver.cjs.map +1 -0
- package/dist/response/deliver.js +143 -0
- package/dist/response/deliver.js.map +1 -0
- package/dist/response/frame-loop.cjs +102 -0
- package/dist/response/frame-loop.cjs.map +1 -0
- package/dist/response/frame-loop.js +100 -0
- package/dist/response/frame-loop.js.map +1 -0
- package/dist/response/lifecycle.cjs +223 -0
- package/dist/response/lifecycle.cjs.map +1 -0
- package/dist/response/lifecycle.js +211 -0
- package/dist/response/lifecycle.js.map +1 -0
- package/dist/response/proxy.cjs +71 -0
- package/dist/response/proxy.cjs.map +1 -0
- package/dist/response/proxy.js +70 -0
- package/dist/response/proxy.js.map +1 -0
- package/dist/response/raw.cjs +228 -0
- package/dist/response/raw.cjs.map +1 -0
- package/dist/response/raw.js +227 -0
- package/dist/response/raw.js.map +1 -0
- package/dist/response/timing.cjs +157 -0
- package/dist/response/timing.cjs.map +1 -0
- package/dist/response/timing.js +150 -0
- package/dist/response/timing.js.map +1 -0
- package/dist/responses.cjs +269 -148
- package/dist/responses.cjs.map +1 -1
- package/dist/responses.d.cts.map +1 -1
- package/dist/responses.d.ts.map +1 -1
- package/dist/responses.js +270 -149
- package/dist/responses.js.map +1 -1
- package/dist/router.cjs +20 -4
- package/dist/router.cjs.map +1 -1
- package/dist/router.d.cts +7 -1
- package/dist/router.d.cts.map +1 -1
- package/dist/router.d.ts +7 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +21 -5
- package/dist/router.js.map +1 -1
- package/dist/server.cjs +89 -120
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +91 -122
- package/dist/server.js.map +1 -1
- package/dist/sse-writer.cjs +49 -30
- package/dist/sse-writer.cjs.map +1 -1
- package/dist/sse-writer.d.cts +0 -1
- package/dist/sse-writer.d.cts.map +1 -1
- package/dist/sse-writer.d.ts +0 -1
- package/dist/sse-writer.d.ts.map +1 -1
- package/dist/sse-writer.js +49 -31
- package/dist/sse-writer.js.map +1 -1
- package/dist/transcription.cjs +19 -33
- 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 +20 -34
- package/dist/transcription.js.map +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +173 -10
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +173 -10
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/ws-framing.cjs +12 -6
- package/dist/ws-framing.cjs.map +1 -1
- package/dist/ws-framing.d.cts +2 -0
- package/dist/ws-framing.d.cts.map +1 -1
- package/dist/ws-framing.d.ts +2 -0
- package/dist/ws-framing.d.ts.map +1 -1
- package/dist/ws-framing.js +12 -6
- package/dist/ws-framing.js.map +1 -1
- package/dist/ws-gemini-live.cjs +120 -93
- package/dist/ws-gemini-live.cjs.map +1 -1
- package/dist/ws-gemini-live.js +120 -93
- package/dist/ws-gemini-live.js.map +1 -1
- package/dist/ws-realtime.cjs +80 -70
- package/dist/ws-realtime.cjs.map +1 -1
- package/dist/ws-realtime.d.cts.map +1 -1
- package/dist/ws-realtime.d.ts.map +1 -1
- package/dist/ws-realtime.js +80 -70
- package/dist/ws-realtime.js.map +1 -1
- package/dist/ws-responses.cjs +72 -53
- package/dist/ws-responses.cjs.map +1 -1
- package/dist/ws-responses.d.cts.map +1 -1
- package/dist/ws-responses.d.ts.map +1 -1
- package/dist/ws-responses.js +73 -54
- package/dist/ws-responses.js.map +1 -1
- package/package.json +1 -1
- package/skills/write-fixtures/SKILL.md +34 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.d.cts","names":[],"sources":["../src/config-loader.ts"],"sourcesContent":[],"mappings":";;;;;;;;UA8BiB,aAAA,SAAsB;;AAAvC;AAIiB,UAAA,iBAAA,CAAiB;EASjB,GAAA,EAAA,MAAA;EAAgB,IAAA,EAAA,MAAA;UAEnB,CAAA,EAAA,MAAA;aAF2B,CAAA,EAAA,MAAA;EAAmB,IAAA,CAAA,EAAA,MAAA;EAM3C,IAAA,CAAA,EAAA,MAAS;;AAGhB,UATO,eAAA,SAAwB,mBAS/B,CAAA;QACI,CAAA,EAAA;IACF,QAAA,EATE,KASF,CAAA;MAAe,IAAA,EAAA,MAAA;MAGV,OAAA,EAAA;QAAgB,IAAA,EAAA,MAAA;QAEvB,IAAA,EAAA,MAAA;MACI,CAAA;IACH,CAAA,CAAA;EAAc,CAAA;AAIzB;AAAgC,UAhBf,SAAA,CAgBe;MACnB,CAAA,EAAA,MAAA;YACH,CAAA,EAAA;IACS,IAAA,EAAA,MAAA;IAHqB,OAAA,EAAA,MAAA;EAAkB,CAAA;EAMzC,KAAA,CAAA,EAnBP,aAmBgB,EAAA;EAKT,SAAA,CAAA,EAvBH,iBAuBoB,EAAA;EAOjB,OAAA,CAAA,EA7BL,
|
|
1
|
+
{"version":3,"file":"config-loader.d.cts","names":[],"sources":["../src/config-loader.ts"],"sourcesContent":[],"mappings":";;;;;;;;UA8BiB,aAAA,SAAsB;;AAAvC;AAIiB,UAAA,iBAAA,CAAiB;EASjB,GAAA,EAAA,MAAA;EAAgB,IAAA,EAAA,MAAA;UAEnB,CAAA,EAAA,MAAA;aAF2B,CAAA,EAAA,MAAA;EAAmB,IAAA,CAAA,EAAA,MAAA;EAM3C,IAAA,CAAA,EAAA,MAAS;;AAGhB,UATO,eAAA,SAAwB,mBAS/B,CAAA;QACI,CAAA,EAAA;IACF,QAAA,EATE,KASF,CAAA;MAAe,IAAA,EAAA,MAAA;MAGV,OAAA,EAAA;QAAgB,IAAA,EAAA,MAAA;QAEvB,IAAA,EAAA,MAAA;MACI,CAAA;IACH,CAAA,CAAA;EAAc,CAAA;AAIzB;AAAgC,UAhBf,SAAA,CAgBe;MACnB,CAAA,EAAA,MAAA;YACH,CAAA,EAAA;IACS,IAAA,EAAA,MAAA;IAHqB,OAAA,EAAA,MAAA;EAAkB,CAAA;EAMzC,KAAA,CAAA,EAnBP,aAmBgB,EAAA;EAKT,SAAA,CAAA,EAvBH,iBAuBoB,EAAA;EAOjB,OAAA,CAAA,EA7BL,eA6Be,EAEd;AAGb;AAAuC,UA/BtB,gBAAA,CA+BsB;SAMxB,EAAA,MAAA;OAHH,CAAA,EAhCF,OAgCE,EAAA;WAKK,CAAA,EApCH,WAoCG,EAAA;EAAW,MAAA,CAAA,EAnCjB,cAmCiB,EAAA;EAGX,OAAA,CAAA,EAAA,MAAY;AAM7B;AAAoC,UAxCnB,cAAA,SAAuB,kBAwCJ,CAAA;UAEJ,CAAA,EAzCnB,gBAyCmB,EAAA;OAAxB,CAAA,EAxCE,gBAwCF,EAAA;gBAFoC,CAAA,EArCzB,gBAqCyB,EAAA;;AAK3B,UAvCA,SAAA,CAuCY;EAAA,IAAA,CAAA,EAAA,MAAA;QACpB,CAAA,EAtCE,cAsCF,EAAA;;AAaS,UAhDD,iBAAA,CAgDC;OAAoB,EAAA;IAGzB,OAAA,CAAA,EAAA,MAAA;IASQ,UAAA,CAAA,EAAA,MAAA;IAER,QAAA,CAAA,EAAA,MAAA;IAEL,QAAA,CAAA,EAAA,MAAA;;MAEC,CAAA,EAAA,MAAA;QACE,CAAA,EAhEA,SAgEA,EAAA;EAAY,OAAA,CAAA,EAAA,MAAA;AAgBvB;AAgBiB,UA5FA,UAAA,CA4FA;EAAwB,IAAA,CAAA,EAAA,MAAA;UAQtB,CAAA,EAlGN,iBAkGM,EAAA;;AAEI,UAjGN,sBAAA,CAiGM;EA0BD,IAAA,EAAA,MAAA;EAAe,SAAA,EAAA,MAAA;SAC3B,CAAA,EAzHE,KAyHF,CAAA;IACI,EAAA,EAAA,MAAA;IACO,MAAA,EAAA,MAAA,EAAA;IAAlB,QAAA,CAAA,EAxHY,MAwHZ,CAAA,MAAA,EAAA,OAAA,CAAA;EAAO,CAAA,CAAA;iBAtHO;;UAGA,YAAA;;gBAED;;;UAIC,kBAAA,SAA2B;;QAEpC,wBAAwB;;UAGf,YAAA;SACR;;;;;;;YAOG;;;;;;kBAMM,oBAAoB;;;aAGzB;;;;;;;;;qBASQ;;aAER;;QAEL;QACA;SACC;WACE;;;;;;;;;;;iBAgBK,UAAA,sBAAgC;;;;;UAgB/B,wBAAA;;;;;;;;mBAQE;;WAER;;;;iBA0BW,eAAA,SACZ,0BACI,2BACX;UAAkB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-loader.d.ts","names":[],"sources":["../src/config-loader.ts"],"sourcesContent":[],"mappings":";;;;;;;;UA8BiB,aAAA,SAAsB;;AAAvC;AAIiB,UAAA,iBAAA,CAAiB;EASjB,GAAA,EAAA,MAAA;EAAgB,IAAA,EAAA,MAAA;UAEnB,CAAA,EAAA,MAAA;aAF2B,CAAA,EAAA,MAAA;EAAmB,IAAA,CAAA,EAAA,MAAA;EAM3C,IAAA,CAAA,EAAA,MAAS;;AAGhB,UATO,eAAA,SAAwB,mBAS/B,CAAA;QACI,CAAA,EAAA;IACF,QAAA,EATE,KASF,CAAA;MAAe,IAAA,EAAA,MAAA;MAGV,OAAA,EAAA;QAAgB,IAAA,EAAA,MAAA;QAEvB,IAAA,EAAA,MAAA;MACI,CAAA;IACH,CAAA,CAAA;EAAc,CAAA;AAIzB;AAAgC,UAhBf,SAAA,CAgBe;MACnB,CAAA,EAAA,MAAA;YACH,CAAA,EAAA;IACS,IAAA,EAAA,MAAA;IAHqB,OAAA,EAAA,MAAA;EAAkB,CAAA;EAMzC,KAAA,CAAA,EAnBP,aAmBgB,
|
|
1
|
+
{"version":3,"file":"config-loader.d.ts","names":[],"sources":["../src/config-loader.ts"],"sourcesContent":[],"mappings":";;;;;;;;UA8BiB,aAAA,SAAsB;;AAAvC;AAIiB,UAAA,iBAAA,CAAiB;EASjB,GAAA,EAAA,MAAA;EAAgB,IAAA,EAAA,MAAA;UAEnB,CAAA,EAAA,MAAA;aAF2B,CAAA,EAAA,MAAA;EAAmB,IAAA,CAAA,EAAA,MAAA;EAM3C,IAAA,CAAA,EAAA,MAAS;;AAGhB,UATO,eAAA,SAAwB,mBAS/B,CAAA;QACI,CAAA,EAAA;IACF,QAAA,EATE,KASF,CAAA;MAAe,IAAA,EAAA,MAAA;MAGV,OAAA,EAAA;QAAgB,IAAA,EAAA,MAAA;QAEvB,IAAA,EAAA,MAAA;MACI,CAAA;IACH,CAAA,CAAA;EAAc,CAAA;AAIzB;AAAgC,UAhBf,SAAA,CAgBe;MACnB,CAAA,EAAA,MAAA;YACH,CAAA,EAAA;IACS,IAAA,EAAA,MAAA;IAHqB,OAAA,EAAA,MAAA;EAAkB,CAAA;EAMzC,KAAA,CAAA,EAnBP,aAmBgB,EAAA;EAKT,SAAA,CAAA,EAvBH,iBAuBoB,EAAA;EAOjB,OAAA,CAAA,EA7BL,eA+BC,EAAA;AAGb;AAAuC,UA/BtB,gBAAA,CA+BsB;SAMxB,EAAA,MAAA;OAHH,CAAA,EAhCF,OAgCE,EAAA;WAKK,CAAA,EApCH,WAoCG,EAAA;EAAW,MAAA,CAAA,EAnCjB,cAmCiB,EAAA;EAGX,OAAA,CAAA,EAAA,MAAY;AAM7B;AAAoC,UAxCnB,cAAA,SAAuB,kBAwCJ,CAAA;UAEJ,CAAA,EAzCnB,gBAyCmB,EAAA;OAAxB,CAAA,EAxCE,gBAwCF,EAAA;gBAFoC,CAAA,EArCzB,gBAqCyB,EAAA;;AAK3B,UAvCA,SAAA,CAuCY;EAAA,IAAA,CAAA,EAAA,MAAA;QACpB,CAAA,EAtCE,cAsCF,EAAA;;AAaS,UAhDD,iBAAA,CAgDC;OAAoB,EAAA;IAGzB,OAAA,CAAA,EAAA,MAAA;IASQ,UAAA,CAAA,EAAA,MAAA;IAER,QAAA,CAAA,EAAA,MAAA;IAEL,QAAA,CAAA,EAAA,MAAA;;MAEC,CAAA,EAAA,MAAA;QACE,CAAA,EAhEA,SAgEA,EAAA;EAAY,OAAA,CAAA,EAAA,MAAA;AAgBvB;AAgBiB,UA5FA,UAAA,CA4FA;EAAwB,IAAA,CAAA,EAAA,MAAA;UAQtB,CAAA,EAlGN,iBAkGM,EAAA;;AAEI,UAjGN,sBAAA,CAiGM;EA0BD,IAAA,EAAA,MAAA;EAAe,SAAA,EAAA,MAAA;SAC3B,CAAA,EAzHE,KAyHF,CAAA;IACI,EAAA,EAAA,MAAA;IACO,MAAA,EAAA,MAAA,EAAA;IAAlB,QAAA,CAAA,EAxHY,MAwHZ,CAAA,MAAA,EAAA,OAAA,CAAA;EAAO,CAAA,CAAA;iBAtHO;;UAGA,YAAA;;gBAED;;;UAIC,kBAAA,SAA2B;;QAEpC,wBAAwB;;UAGf,YAAA;SACR;;;;;;;YAOG;;;;;;kBAMM,oBAAoB;;;aAGzB;;;;;;;;;qBASQ;;aAER;;QAEL;QACA;SACC;WACE;;;;;;;;;;;iBAgBK,UAAA,sBAAgC;;;;;UAgB/B,wBAAA;;;;;;;;mBAQE;;WAER;;;;iBA0BW,eAAA,SACZ,0BACI,2BACX;UAAkB"}
|
package/dist/fixture-loader.cjs
CHANGED
|
@@ -3,6 +3,7 @@ const require_constants = require('./constants.cjs');
|
|
|
3
3
|
const require_message_text = require('./message-text.cjs');
|
|
4
4
|
const require_helpers = require('./helpers.cjs');
|
|
5
5
|
const require_live_fixture = require('./live-fixture.cjs');
|
|
6
|
+
const require_raw_validation = require('./raw-validation.cjs');
|
|
6
7
|
const require_chaos = require('./chaos.cjs');
|
|
7
8
|
const require_fields = require('./response/usage/fields.cjs');
|
|
8
9
|
const require_misbehavior = require('./misbehavior.cjs');
|
|
@@ -94,6 +95,7 @@ function entryToFixture(entry, logger, liveOptions, source) {
|
|
|
94
95
|
...entry.chaos !== void 0 && { chaos: entry.chaos },
|
|
95
96
|
...entry.openRouterProcessing !== void 0 && { openRouterProcessing: entry.openRouterProcessing },
|
|
96
97
|
...entry.nonStreamingTiming !== void 0 && { nonStreamingTiming: entry.nonStreamingTiming },
|
|
98
|
+
...entry.nonStreamingTimingAllProviders !== void 0 && { nonStreamingTimingAllProviders: entry.nonStreamingTimingAllProviders },
|
|
97
99
|
...entry.metadata !== void 0 && { metadata: entry.metadata }
|
|
98
100
|
};
|
|
99
101
|
if (source) require_misbehavior.setFixtureMisbehaviorPosition(fixture, `${source.file}#${source.index}`);
|
|
@@ -301,6 +303,52 @@ function validateReasoning(response, fixtureIndex, results) {
|
|
|
301
303
|
});
|
|
302
304
|
}
|
|
303
305
|
}
|
|
306
|
+
/** The wires that read `files` and `citations`; every other wire ignores them. */
|
|
307
|
+
const CITATIONS_FILES_WIRES = "Chat Completions, Anthropic Messages, Gemini or the OpenAI Responses API";
|
|
308
|
+
/**
|
|
309
|
+
* Generated `files` and source `citations`. A malformed value is not a load
|
|
310
|
+
* error (registration never throws for it, as in the release that added the
|
|
311
|
+
* keys); each request the fixture serves on Chat Completions, Anthropic,
|
|
312
|
+
* Gemini or the Responses API answers a coded 500 instead, so warn here with
|
|
313
|
+
* the same message. Citations are checked against the text they cite when
|
|
314
|
+
* served ({@link citedText}). A turn with no text (tool calls only, blocks
|
|
315
|
+
* with no text block, or empty content) has nothing to cite, so any
|
|
316
|
+
* non-empty `citations` there is reported exactly as the wires report it.
|
|
317
|
+
*/
|
|
318
|
+
function validateCitationsAndFiles(response, fixtureIndex, results) {
|
|
319
|
+
const filesProblem = require_helpers.fixtureFilesProblem(response.files);
|
|
320
|
+
if (filesProblem !== void 0) results.push({
|
|
321
|
+
severity: "warning",
|
|
322
|
+
fixtureIndex,
|
|
323
|
+
message: `${filesProblem} — requests it serves on ${CITATIONS_FILES_WIRES} answer a 500 (aimock_invalid_fixture_file)`
|
|
324
|
+
});
|
|
325
|
+
const text = citedText(response);
|
|
326
|
+
if (text === void 0) return;
|
|
327
|
+
const citationsProblem = require_helpers.fixtureCitationsProblem(response.citations, text);
|
|
328
|
+
if (citationsProblem !== void 0) results.push({
|
|
329
|
+
severity: "warning",
|
|
330
|
+
fixtureIndex,
|
|
331
|
+
message: `${citationsProblem} — requests it serves on ${CITATIONS_FILES_WIRES} answer a 500 (aimock_invalid_fixture_citation)`
|
|
332
|
+
});
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* The text a fixture's citations index when served: the joined text of every
|
|
336
|
+
* text block when `responsesBlocks` or `blocks` is non-empty (through the
|
|
337
|
+
* same {@link resolveServedBlockOutcome} the providers use; empty when no
|
|
338
|
+
* block is text), else a string `content`, else empty for a tool-only turn.
|
|
339
|
+
* Empty text means a turn with nothing to cite. Undefined for a response
|
|
340
|
+
* that is neither (validated elsewhere) and for a malformed blocks array,
|
|
341
|
+
* which `validateBlocks` reports as an error.
|
|
342
|
+
*/
|
|
343
|
+
function citedText(response) {
|
|
344
|
+
if (Array.isArray(response.blocks) && response.blocks.length > 0 || Array.isArray(response.responsesBlocks) && response.responsesBlocks.length > 0) try {
|
|
345
|
+
return require_helpers.resolveServedBlockOutcome(response)?.content;
|
|
346
|
+
} catch {
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
if (typeof response.content === "string") return response.content;
|
|
350
|
+
if (Array.isArray(response.toolCalls) || Array.isArray(response.customToolCalls)) return "";
|
|
351
|
+
}
|
|
304
352
|
function validateWebSearches(response, fixtureIndex, results) {
|
|
305
353
|
if (response.webSearches !== void 0) if (!Array.isArray(response.webSearches)) results.push({
|
|
306
354
|
severity: "error",
|
|
@@ -683,11 +731,29 @@ function validateFixtures(fixtures, liveOptions) {
|
|
|
683
731
|
});
|
|
684
732
|
}
|
|
685
733
|
if (typeof response === "function") {} else {
|
|
686
|
-
if (!require_helpers.isCombinedFixtureResponse(response) && !require_helpers.isTextResponse(response) && !require_helpers.isToolCallResponse(response) && !require_helpers.isErrorResponse(response) && !require_helpers.isEmbeddingResponse(response) && !require_helpers.isImageResponse(response) && !require_helpers.isAudioResponse(response) && !require_helpers.isTranscriptionResponse(response) && !require_helpers.isVideoResponse(response) && !require_helpers.isJSONResponse(response) && !require_helpers.isLiveResponse(response)) results.push({
|
|
734
|
+
if (!require_helpers.isCombinedFixtureResponse(response) && !require_helpers.isTextResponse(response) && !require_helpers.isToolCallResponse(response) && !require_helpers.isErrorResponse(response) && !require_helpers.isEmbeddingResponse(response) && !require_helpers.isImageResponse(response) && !require_helpers.isAudioResponse(response) && !require_helpers.isTranscriptionResponse(response) && !require_helpers.isVideoResponse(response) && !require_helpers.isJSONResponse(response) && !require_helpers.isLiveResponse(response) && !require_helpers.isRawResponse(response)) results.push({
|
|
687
735
|
severity: "error",
|
|
688
736
|
fixtureIndex: i,
|
|
689
|
-
message: "response is not a recognized type (must have content, toolCalls, error, embedding, image, audio, transcription, video, json, or
|
|
737
|
+
message: "response is not a recognized type (must have content, toolCalls, error, embedding, image, audio, transcription, video, json, live, or raw)"
|
|
690
738
|
});
|
|
739
|
+
if (require_helpers.isRawResponse(response)) {
|
|
740
|
+
const context = rawFixtureContext(original, response);
|
|
741
|
+
for (const finding of require_raw_validation.checkRawResponse(response.raw, context)) results.push({
|
|
742
|
+
severity: finding.severity,
|
|
743
|
+
fixtureIndex: i,
|
|
744
|
+
message: finding.message
|
|
745
|
+
});
|
|
746
|
+
if (f.chunkSize !== void 0) results.push({
|
|
747
|
+
severity: "warning",
|
|
748
|
+
fixtureIndex: i,
|
|
749
|
+
message: "chunkSize is ignored for raw fixtures: each event is one frame"
|
|
750
|
+
});
|
|
751
|
+
if (f.openRouterProcessing !== void 0) results.push({
|
|
752
|
+
severity: "warning",
|
|
753
|
+
fixtureIndex: i,
|
|
754
|
+
message: "openRouterProcessing is ignored for raw fixtures"
|
|
755
|
+
});
|
|
756
|
+
}
|
|
691
757
|
const hasNonEmptyBlocks = Array.isArray(response.blocks) && response.blocks.length > 0 || Array.isArray(response.responsesBlocks) && response.responsesBlocks.length > 0;
|
|
692
758
|
const hasCustomToolCalls = Array.isArray(response.customToolCalls) && response.customToolCalls.length > 0;
|
|
693
759
|
if (require_helpers.isTextResponse(response)) {
|
|
@@ -736,6 +802,7 @@ function validateFixtures(fixtures, liveOptions) {
|
|
|
736
802
|
}
|
|
737
803
|
validateBlocks(response, i, results);
|
|
738
804
|
validateResponsesToolKeys(response, i, results);
|
|
805
|
+
validateCitationsAndFiles(response, i, results);
|
|
739
806
|
if (require_helpers.isToolCallResponse(response)) {
|
|
740
807
|
if (response.toolCalls.length === 0 && !hasCustomToolCalls) results.push({
|
|
741
808
|
severity: "warning",
|
|
@@ -903,6 +970,14 @@ function validateFixtures(fixtures, liveOptions) {
|
|
|
903
970
|
fixtureIndex: i,
|
|
904
971
|
message: "disconnectAfterMs must be >= 0"
|
|
905
972
|
});
|
|
973
|
+
for (const flag of ["nonStreamingTiming", "nonStreamingTimingAllProviders"]) {
|
|
974
|
+
const value = f[flag];
|
|
975
|
+
if (value !== void 0 && typeof value !== "boolean") results.push({
|
|
976
|
+
severity: "warning",
|
|
977
|
+
fixtureIndex: i,
|
|
978
|
+
message: `${flag} must be a boolean, got ${typeof value} — the opt-in is ignored`
|
|
979
|
+
});
|
|
980
|
+
}
|
|
906
981
|
if (f.streamingProfile !== void 0) {
|
|
907
982
|
const sp = f.streamingProfile;
|
|
908
983
|
if (sp.ttft !== void 0 && sp.ttft < 0) results.push({
|
|
@@ -1294,6 +1369,11 @@ const misbehaviorEnabledFixtures = /* @__PURE__ */ new WeakSet();
|
|
|
1294
1369
|
function enableHeldFixtureMisbehavior(fixture) {
|
|
1295
1370
|
const held = heldFixtureMisbehavior.get(fixture);
|
|
1296
1371
|
if (held === void 0) return;
|
|
1372
|
+
if (typeof fixture.response !== "function" && require_helpers.isRawResponse(fixture.response)) throw new MisbehaviorConfigError({
|
|
1373
|
+
rule: "misbehavior/not-applicable",
|
|
1374
|
+
file: held.file,
|
|
1375
|
+
detail: `${held.path}: misbehavior does not apply to raw fixtures`
|
|
1376
|
+
});
|
|
1297
1377
|
const parsed = require_misbehavior.parseMisbehavior(held.value, held.path);
|
|
1298
1378
|
if (parsed.ok) fixture.misbehavior = parsed.config;
|
|
1299
1379
|
const issue = parsed.ok ? require_misbehavior.validateFixtureMisbehavior(fixture, held.path) : parsed.issue;
|
|
@@ -1306,6 +1386,26 @@ function enableHeldFixtureMisbehavior(fixture) {
|
|
|
1306
1386
|
misbehaviorEnabledFixtures.add(fixture);
|
|
1307
1387
|
}
|
|
1308
1388
|
/**
|
|
1389
|
+
* @internal The facts about a raw fixture that {@link checkRawResponse} checks
|
|
1390
|
+
* beyond `raw` itself, for `served`, the response as this server reads it.
|
|
1391
|
+
* Load validation and serve time both use it, so they agree:
|
|
1392
|
+
*
|
|
1393
|
+
* - `otherResponseKeys`: top-level keys of the fixture's response as written
|
|
1394
|
+
* that `served` lacks. Only `customToolCalls` / `responsesBlocks` are ever
|
|
1395
|
+
* dropped (on a legacy server), and a fixture that writes either next to
|
|
1396
|
+
* `raw` is not a raw fixture to the router.
|
|
1397
|
+
* - `fixtureMisbehavior`: the fixture sets its own `misbehavior`, recognized
|
|
1398
|
+
* or still held.
|
|
1399
|
+
*/
|
|
1400
|
+
function rawFixtureContext(fixture, served) {
|
|
1401
|
+
const source = responsesToolsViewSource(fixture);
|
|
1402
|
+
const written = fixture.response;
|
|
1403
|
+
return {
|
|
1404
|
+
otherResponseKeys: typeof written === "function" ? [] : Object.keys(written).filter((key) => !(key in served)),
|
|
1405
|
+
fixtureMisbehavior: fixture.misbehavior !== void 0 || heldFixtureMisbehavior.has(source)
|
|
1406
|
+
};
|
|
1407
|
+
}
|
|
1408
|
+
/**
|
|
1309
1409
|
* @internal Mark a fixture whose `misbehavior` a server with misbehavior
|
|
1310
1410
|
* enabled has recognized, so `validateFixtures` checks it.
|
|
1311
1411
|
*/
|
|
@@ -1333,6 +1433,7 @@ exports.markFixtureResponsesToolsExtended = markFixtureResponsesToolsExtended;
|
|
|
1333
1433
|
exports.normalizeResponse = normalizeResponse;
|
|
1334
1434
|
exports.normalizeResponsesToolsKeys = normalizeResponsesToolsKeys;
|
|
1335
1435
|
exports.queueOneShotError = queueOneShotError;
|
|
1436
|
+
exports.rawFixtureContext = rawFixtureContext;
|
|
1336
1437
|
exports.readFixtureJson = readFixtureJson;
|
|
1337
1438
|
exports.releaseOneShotError = releaseOneShotError;
|
|
1338
1439
|
exports.renderValidationRef = renderValidationRef;
|