@copilotkit/aimock 1.42.1 → 1.43.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 +50 -0
- package/README.md +102 -16
- package/dist/agui-mock.cjs +1 -1
- package/dist/agui-mock.cjs.map +1 -1
- package/dist/agui-mock.d.cts.map +1 -1
- package/dist/agui-mock.d.ts.map +1 -1
- package/dist/agui-mock.js +1 -1
- package/dist/agui-mock.js.map +1 -1
- package/dist/agui-recorder.cjs +33 -11
- package/dist/agui-recorder.cjs.map +1 -1
- package/dist/agui-recorder.d.cts +10 -1
- package/dist/agui-recorder.d.cts.map +1 -1
- package/dist/agui-recorder.d.ts +10 -1
- package/dist/agui-recorder.d.ts.map +1 -1
- package/dist/agui-recorder.js +33 -11
- package/dist/agui-recorder.js.map +1 -1
- package/dist/agui-types.d.cts +1 -0
- package/dist/agui-types.d.cts.map +1 -1
- package/dist/agui-types.d.ts +1 -0
- package/dist/agui-types.d.ts.map +1 -1
- package/dist/aimock-cli.cjs +38 -10
- package/dist/aimock-cli.cjs.map +1 -1
- package/dist/aimock-cli.d.cts +5 -0
- package/dist/aimock-cli.d.cts.map +1 -1
- package/dist/aimock-cli.d.ts +5 -0
- package/dist/aimock-cli.d.ts.map +1 -1
- package/dist/aimock-cli.js +38 -10
- package/dist/aimock-cli.js.map +1 -1
- package/dist/batches.cjs +458 -0
- package/dist/batches.cjs.map +1 -0
- package/dist/batches.d.cts +57 -0
- package/dist/batches.d.cts.map +1 -0
- package/dist/batches.d.ts +57 -0
- package/dist/batches.d.ts.map +1 -0
- package/dist/batches.js +453 -0
- package/dist/batches.js.map +1 -0
- package/dist/bedrock-converse.cjs +12 -8
- 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 +14 -10
- package/dist/bedrock-converse.js.map +1 -1
- package/dist/bedrock.cjs +10 -8
- 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 +12 -10
- package/dist/bedrock.js.map +1 -1
- package/dist/byteplus-video.cjs +3 -3
- package/dist/byteplus-video.cjs.map +1 -1
- package/dist/byteplus-video.js +4 -4
- package/dist/byteplus-video.js.map +1 -1
- package/dist/chaos.cjs +622 -72
- package/dist/chaos.cjs.map +1 -1
- package/dist/chaos.d.cts +164 -7
- package/dist/chaos.d.cts.map +1 -1
- package/dist/chaos.d.ts +164 -7
- package/dist/chaos.d.ts.map +1 -1
- package/dist/chaos.js +613 -74
- package/dist/chaos.js.map +1 -1
- package/dist/cli.cjs +42 -23
- package/dist/cli.cjs.map +1 -1
- package/dist/cli.js +42 -23
- package/dist/cli.js.map +1 -1
- package/dist/cohere.cjs +10 -8
- 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 +12 -10
- package/dist/cohere.js.map +1 -1
- package/dist/config-loader.d.ts.map +1 -1
- package/dist/convert.cjs +1 -1
- package/dist/convert.cjs.map +1 -1
- package/dist/convert.js +1 -1
- package/dist/convert.js.map +1 -1
- package/dist/elevenlabs-audio.cjs +3 -3
- package/dist/elevenlabs-audio.cjs.map +1 -1
- package/dist/elevenlabs-audio.js +4 -4
- package/dist/elevenlabs-audio.js.map +1 -1
- package/dist/elevenlabs-voice.cjs +1053 -0
- package/dist/elevenlabs-voice.cjs.map +1 -0
- package/dist/elevenlabs-voice.d.cts +72 -0
- package/dist/elevenlabs-voice.d.cts.map +1 -0
- package/dist/elevenlabs-voice.d.ts +72 -0
- package/dist/elevenlabs-voice.d.ts.map +1 -0
- package/dist/elevenlabs-voice.js +1048 -0
- package/dist/elevenlabs-voice.js.map +1 -0
- package/dist/embeddings.cjs +8 -4
- package/dist/embeddings.cjs.map +1 -1
- package/dist/embeddings.d.cts.map +1 -1
- package/dist/embeddings.d.ts.map +1 -1
- package/dist/embeddings.js +9 -5
- package/dist/embeddings.js.map +1 -1
- package/dist/fal-audio.cjs +3 -3
- package/dist/fal-audio.cjs.map +1 -1
- package/dist/fal-audio.js +4 -4
- package/dist/fal-audio.js.map +1 -1
- package/dist/fal.cjs +28 -4
- package/dist/fal.cjs.map +1 -1
- package/dist/fal.d.cts +16 -1
- package/dist/fal.d.cts.map +1 -1
- package/dist/fal.d.ts +16 -1
- package/dist/fal.d.ts.map +1 -1
- package/dist/fal.js +28 -5
- package/dist/fal.js.map +1 -1
- package/dist/files.cjs +1071 -0
- package/dist/files.cjs.map +1 -0
- package/dist/files.d.cts +68 -0
- package/dist/files.d.cts.map +1 -0
- package/dist/files.d.ts +68 -0
- package/dist/files.d.ts.map +1 -0
- package/dist/files.js +1059 -0
- package/dist/files.js.map +1 -0
- package/dist/fine-tuning.cjs +1051 -0
- package/dist/fine-tuning.cjs.map +1 -0
- package/dist/fine-tuning.d.cts +96 -0
- package/dist/fine-tuning.d.cts.map +1 -0
- package/dist/fine-tuning.d.ts +96 -0
- package/dist/fine-tuning.d.ts.map +1 -0
- package/dist/fine-tuning.js +1044 -0
- package/dist/fine-tuning.js.map +1 -0
- package/dist/fixture-loader.cjs +0 -0
- package/dist/fixture-loader.cjs.map +1 -1
- package/dist/fixture-loader.d.cts +37 -5
- package/dist/fixture-loader.d.cts.map +1 -1
- package/dist/fixture-loader.d.ts +37 -5
- package/dist/fixture-loader.d.ts.map +1 -1
- package/dist/fixture-loader.js +0 -0
- package/dist/fixture-loader.js.map +1 -1
- package/dist/gemini-embeddings.cjs +2 -2
- package/dist/gemini-embeddings.cjs.map +1 -1
- package/dist/gemini-embeddings.js +3 -3
- package/dist/gemini-embeddings.js.map +1 -1
- package/dist/gemini-interactions.cjs +13 -7
- 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 +15 -9
- package/dist/gemini-interactions.js.map +1 -1
- package/dist/gemini.cjs +11 -7
- 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 +13 -9
- package/dist/gemini.js.map +1 -1
- package/dist/grok-video.cjs +14 -14
- package/dist/grok-video.cjs.map +1 -1
- package/dist/grok-video.js +15 -15
- package/dist/grok-video.js.map +1 -1
- package/dist/helpers.cjs +221 -5
- package/dist/helpers.cjs.map +1 -1
- package/dist/helpers.d.cts +38 -2
- package/dist/helpers.d.cts.map +1 -1
- package/dist/helpers.d.ts +38 -2
- package/dist/helpers.d.ts.map +1 -1
- package/dist/helpers.js +213 -6
- package/dist/helpers.js.map +1 -1
- package/dist/images.cjs +54 -123
- package/dist/images.cjs.map +1 -1
- package/dist/images.d.cts.map +1 -1
- package/dist/images.d.ts.map +1 -1
- package/dist/images.js +55 -124
- package/dist/images.js.map +1 -1
- package/dist/index.cjs +41 -8
- package/dist/index.d.cts +12 -7
- package/dist/index.d.ts +12 -7
- package/dist/index.js +14 -10
- package/dist/jest.cjs +14 -7
- package/dist/jest.cjs.map +1 -1
- package/dist/jest.d.cts +3 -2
- package/dist/jest.d.cts.map +1 -1
- package/dist/jest.d.ts +3 -2
- package/dist/jest.d.ts.map +1 -1
- package/dist/jest.js +14 -7
- package/dist/jest.js.map +1 -1
- package/dist/journal.cjs +41 -4
- package/dist/journal.cjs.map +1 -1
- package/dist/journal.d.cts +44 -3
- package/dist/journal.d.cts.map +1 -1
- package/dist/journal.d.ts +44 -3
- package/dist/journal.d.ts.map +1 -1
- package/dist/journal.js +41 -5
- package/dist/journal.js.map +1 -1
- package/dist/live-fixture.cjs +1192 -0
- package/dist/live-fixture.cjs.map +1 -0
- package/dist/live-fixture.js +1187 -0
- package/dist/live-fixture.js.map +1 -0
- package/dist/live-recorder.cjs +256 -0
- package/dist/live-recorder.cjs.map +1 -0
- package/dist/live-recorder.js +254 -0
- package/dist/live-recorder.js.map +1 -0
- package/dist/live-replay.cjs +286 -0
- package/dist/live-replay.cjs.map +1 -0
- package/dist/live-replay.js +285 -0
- package/dist/live-replay.js.map +1 -0
- package/dist/live-sanitize.cjs +196 -0
- package/dist/live-sanitize.cjs.map +1 -0
- package/dist/live-sanitize.js +196 -0
- package/dist/live-sanitize.js.map +1 -0
- package/dist/live-types.d.cts +71 -0
- package/dist/live-types.d.cts.map +1 -0
- package/dist/live-types.d.ts +71 -0
- package/dist/live-types.d.ts.map +1 -0
- package/dist/llmock.cjs +52 -41
- package/dist/llmock.cjs.map +1 -1
- package/dist/llmock.d.cts +16 -5
- package/dist/llmock.d.cts.map +1 -1
- package/dist/llmock.d.ts +16 -5
- package/dist/llmock.d.ts.map +1 -1
- package/dist/llmock.js +53 -42
- package/dist/llmock.js.map +1 -1
- package/dist/messages.cjs +11 -7
- 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 +13 -9
- package/dist/messages.js.map +1 -1
- package/dist/metrics.cjs +258 -5
- package/dist/metrics.cjs.map +1 -1
- package/dist/metrics.d.cts +3 -1
- package/dist/metrics.d.cts.map +1 -1
- package/dist/metrics.d.ts +3 -1
- package/dist/metrics.d.ts.map +1 -1
- package/dist/metrics.js +255 -6
- package/dist/metrics.js.map +1 -1
- package/dist/moderation.cjs +10 -1
- package/dist/moderation.cjs.map +1 -1
- package/dist/moderation.d.cts.map +1 -1
- package/dist/moderation.d.ts.map +1 -1
- package/dist/moderation.js +10 -1
- package/dist/moderation.js.map +1 -1
- package/dist/ollama.cjs +5 -5
- package/dist/ollama.cjs.map +1 -1
- package/dist/ollama.js +6 -6
- package/dist/ollama.js.map +1 -1
- package/dist/openrouter-video.cjs +5 -5
- package/dist/openrouter-video.cjs.map +1 -1
- package/dist/openrouter-video.js +6 -6
- package/dist/openrouter-video.js.map +1 -1
- package/dist/recorder.cjs +45 -9
- package/dist/recorder.cjs.map +1 -1
- package/dist/recorder.d.cts.map +1 -1
- package/dist/recorder.d.ts.map +1 -1
- package/dist/recorder.js +43 -11
- package/dist/recorder.js.map +1 -1
- package/dist/responses.cjs +4 -3
- package/dist/responses.cjs.map +1 -1
- package/dist/responses.js +5 -5
- package/dist/responses.js.map +1 -1
- package/dist/router.cjs +20 -33
- package/dist/router.cjs.map +1 -1
- package/dist/router.d.cts +4 -1
- package/dist/router.d.cts.map +1 -1
- package/dist/router.d.ts +4 -1
- package/dist/router.d.ts.map +1 -1
- package/dist/router.js +20 -34
- package/dist/router.js.map +1 -1
- package/dist/server.cjs +701 -625
- package/dist/server.cjs.map +1 -1
- package/dist/server.d.cts +1 -0
- package/dist/server.d.cts.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +704 -628
- package/dist/server.js.map +1 -1
- package/dist/speech.cjs +2 -2
- package/dist/speech.cjs.map +1 -1
- package/dist/speech.js +3 -3
- package/dist/speech.js.map +1 -1
- package/dist/transcription.cjs +4 -4
- package/dist/transcription.cjs.map +1 -1
- package/dist/transcription.js +5 -5
- package/dist/transcription.js.map +1 -1
- package/dist/types.d.cts +119 -16
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.ts +119 -16
- package/dist/types.d.ts.map +1 -1
- package/dist/validate-cli.cjs +925 -0
- package/dist/validate-cli.cjs.map +1 -0
- package/dist/validate-cli.js +924 -0
- package/dist/validate-cli.js.map +1 -0
- package/dist/veo-video.cjs +13 -13
- package/dist/veo-video.cjs.map +1 -1
- package/dist/veo-video.js +14 -14
- package/dist/veo-video.js.map +1 -1
- package/dist/video.cjs +4 -4
- package/dist/video.cjs.map +1 -1
- package/dist/video.d.cts +1 -1
- package/dist/video.d.cts.map +1 -1
- package/dist/video.d.ts +1 -1
- package/dist/video.d.ts.map +1 -1
- package/dist/video.js +5 -5
- package/dist/video.js.map +1 -1
- package/dist/vitest.cjs +13 -6
- package/dist/vitest.cjs.map +1 -1
- package/dist/vitest.d.cts +2 -1
- package/dist/vitest.d.cts.map +1 -1
- package/dist/vitest.d.ts +2 -1
- package/dist/vitest.d.ts.map +1 -1
- package/dist/vitest.js +14 -7
- package/dist/vitest.js.map +1 -1
- package/dist/watcher.cjs +2 -1
- package/dist/watcher.cjs.map +1 -1
- package/dist/watcher.js +2 -1
- package/dist/watcher.js.map +1 -1
- package/dist/ws-framing.cjs +150 -35
- package/dist/ws-framing.cjs.map +1 -1
- package/dist/ws-framing.d.cts +18 -3
- package/dist/ws-framing.d.cts.map +1 -1
- package/dist/ws-framing.d.ts +18 -3
- package/dist/ws-framing.d.ts.map +1 -1
- package/dist/ws-framing.js +151 -36
- package/dist/ws-framing.js.map +1 -1
- package/dist/ws-gemini-live.cjs +2 -2
- package/dist/ws-gemini-live.d.ts +2 -2
- package/dist/ws-gemini-live.js +2 -2
- package/dist/ws-live.cjs +401 -0
- package/dist/ws-live.cjs.map +1 -0
- package/dist/ws-live.js +400 -0
- package/dist/ws-live.js.map +1 -0
- package/dist/ws-realtime.cjs +46 -2
- package/dist/ws-realtime.cjs.map +1 -1
- package/dist/ws-realtime.d.cts.map +1 -1
- package/dist/ws-realtime.d.ts +2 -2
- package/dist/ws-realtime.d.ts.map +1 -1
- package/dist/ws-realtime.js +46 -2
- package/dist/ws-realtime.js.map +1 -1
- package/dist/ws-responses.cjs +2 -2
- package/dist/ws-responses.js +2 -2
- package/dist/ws-upstream.cjs +118 -0
- package/dist/ws-upstream.cjs.map +1 -0
- package/dist/ws-upstream.js +115 -0
- package/dist/ws-upstream.js.map +1 -0
- package/fixtures/openai-live-client.json +390 -0
- package/fixtures/openai-live-managed.json +709 -0
- package/package.json +1 -1
package/dist/types.d.cts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Journal } from "./journal.cjs";
|
|
2
|
+
import { LiveFixtureResponse, LiveOptions } from "./live-types.cjs";
|
|
2
3
|
import { Logger } from "./logger.cjs";
|
|
3
4
|
import { MetricsRegistry } from "./metrics.cjs";
|
|
4
5
|
import * as http$1 from "node:http";
|
|
@@ -152,7 +153,7 @@ interface FixtureMatch {
|
|
|
152
153
|
* request has no user message, it falls back to scanning the whole conversation.
|
|
153
154
|
*/
|
|
154
155
|
hasToolResult?: boolean;
|
|
155
|
-
endpoint?: "chat" | "image" | "speech" | "transcription" | "translation" | "video" | "embedding" | "audio-gen" | "elevenlabs-tts" | "fal-audio" | "fal" | "realtime" | "realtime-transcription" | "realtime-translation";
|
|
156
|
+
endpoint?: "chat" | "image" | "speech" | "transcription" | "translation" | "video" | "embedding" | "audio-gen" | "elevenlabs-tts" | "elevenlabs-voice-design" | "elevenlabs-voice" | "elevenlabs-voice-get" | "elevenlabs-voice-delete" | "fal-audio" | "fal" | "realtime" | "realtime-transcription" | "realtime-translation" | "openai-live";
|
|
156
157
|
context?: string;
|
|
157
158
|
}
|
|
158
159
|
/**
|
|
@@ -388,6 +389,22 @@ interface ImageResponse {
|
|
|
388
389
|
image?: ImageItem;
|
|
389
390
|
images?: ImageItem[];
|
|
390
391
|
}
|
|
392
|
+
interface VoiceDesignPreview {
|
|
393
|
+
generated_voice_id: string;
|
|
394
|
+
audio_base_64?: string;
|
|
395
|
+
media_type?: string;
|
|
396
|
+
duration_secs?: number;
|
|
397
|
+
language?: string | null;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Convenience shape for `LLMock.onElevenLabsVoiceDesign`. Stored as a
|
|
401
|
+
* {@link RawJSONResponse} wrapping `{ previews, text }` — the ElevenLabs
|
|
402
|
+
* `/v1/text-to-voice/design` envelope.
|
|
403
|
+
*/
|
|
404
|
+
interface VoiceDesignResponse {
|
|
405
|
+
previews: VoiceDesignPreview[];
|
|
406
|
+
text?: string;
|
|
407
|
+
}
|
|
391
408
|
interface AudioResponse {
|
|
392
409
|
audio: string | {
|
|
393
410
|
b64Json: string;
|
|
@@ -460,7 +477,7 @@ interface RawJSONResponse extends ResponseOverrides {
|
|
|
460
477
|
*/
|
|
461
478
|
billableUnits?: number;
|
|
462
479
|
}
|
|
463
|
-
type FixtureResponse = TextResponse | ToolCallResponse | ContentWithToolCallsResponse | ErrorResponse | EmbeddingResponse | ImageResponse | AudioResponse | TranscriptionResponse | VideoResponse | RawJSONResponse;
|
|
480
|
+
type FixtureResponse = TextResponse | ToolCallResponse | ContentWithToolCallsResponse | ErrorResponse | EmbeddingResponse | ImageResponse | AudioResponse | TranscriptionResponse | VideoResponse | RawJSONResponse | LiveFixtureResponse;
|
|
464
481
|
interface StreamingProfile {
|
|
465
482
|
ttft?: number;
|
|
466
483
|
tps?: number;
|
|
@@ -479,16 +496,50 @@ interface RecordedTimings {
|
|
|
479
496
|
/**
|
|
480
497
|
* Probabilistic chaos injection rates.
|
|
481
498
|
*
|
|
482
|
-
* Rates are evaluated sequentially per request — drop → malformed →
|
|
483
|
-
* —
|
|
484
|
-
*
|
|
485
|
-
*
|
|
486
|
-
*
|
|
499
|
+
* Rates are evaluated sequentially per request — drop → malformed → rateLimit
|
|
500
|
+
* → disconnect — as four separate draws in that order, and the first draw that
|
|
501
|
+
* hits wins and short-circuits the rest. Each rate is therefore the probability
|
|
502
|
+
* that its OWN draw hits GIVEN that no earlier rate fired, not the share of
|
|
503
|
+
* requests that end in that fault; only `dropRate`, first in the chain, is
|
|
504
|
+
* unconditional. A config of `{ dropRate: 0.5, malformedRate: 0.5 }` yields a
|
|
505
|
+
* ~25 % effective malformed rate, not 50 %, and the same compounding applies to
|
|
506
|
+
* `{ dropRate: 0.5, rateLimitRate: 0.5 }` (~25 % rate limits).
|
|
507
|
+
*/
|
|
508
|
+
/**
|
|
509
|
+
* Probabilistic (and one deterministic) fault injection knobs.
|
|
510
|
+
*
|
|
511
|
+
* VALIDATION — ONE policy, whatever the source. Each field is a finite number
|
|
512
|
+
* in its range: the rates in [0, 1], `latencyMs` in [0, 30000]. A value outside
|
|
513
|
+
* it, or one that is not a number at all (`"0.5abc"`, `"Infinity"`, `NaN`), is
|
|
514
|
+
* REJECTED, never clamped — silent clamping substitutes a fault rate nobody
|
|
515
|
+
* asked for and hides the misconfiguration that produced it.
|
|
516
|
+
*
|
|
517
|
+
* Rejection is reported in the loudest way each source allows, and the three
|
|
518
|
+
* agree: `POST /__aimock/chaos` answers 400, the `--chaos-*` CLI flags refuse
|
|
519
|
+
* to start, and a per-request header or a fixture/server value is refused with
|
|
520
|
+
* a `[chaos]` warning and left unset so the next level of precedence (header >
|
|
521
|
+
* fixture > server) applies.
|
|
487
522
|
*/
|
|
488
523
|
interface ChaosConfig {
|
|
489
524
|
dropRate?: number;
|
|
490
525
|
malformedRate?: number;
|
|
491
526
|
disconnectRate?: number;
|
|
527
|
+
/**
|
|
528
|
+
* Deterministic delay (ms) injected before the request is handled.
|
|
529
|
+
* Applied when > 0 — header > fixture > server precedence, same as rates.
|
|
530
|
+
* Unlike rates it is not probabilistic: a set latency always fires so
|
|
531
|
+
* timeout/retry suites get a stable signal. Must be in [0, 30000]; a value
|
|
532
|
+
* outside that range is rejected, not clamped (see above).
|
|
533
|
+
*/
|
|
534
|
+
latencyMs?: number;
|
|
535
|
+
/**
|
|
536
|
+
* Chance of a 429 rate-limit rejection with `Retry-After`, CONDITIONAL on
|
|
537
|
+
* neither `dropRate` nor `malformedRate` having fired first: it is the third
|
|
538
|
+
* draw in the drop → malformed → rateLimit → disconnect order, and the first
|
|
539
|
+
* hit wins. Paired with a 0.5 `dropRate` a 0.5 `rateLimitRate` produces ~25 %
|
|
540
|
+
* rate limits, not 50 % (see the interface docstring above).
|
|
541
|
+
*/
|
|
542
|
+
rateLimitRate?: number;
|
|
492
543
|
}
|
|
493
544
|
/**
|
|
494
545
|
* Server-level chaos as the handlers see it: a baseline plus per-`X-Test-Id`
|
|
@@ -509,7 +560,28 @@ interface ChaosConfig {
|
|
|
509
560
|
interface ChaosScope {
|
|
510
561
|
/** Server-wide baseline: the construction config, or the untagged override. */
|
|
511
562
|
base?: ChaosConfig;
|
|
512
|
-
/**
|
|
563
|
+
/**
|
|
564
|
+
* Per-testId overrides, consulted INSTEAD OF `base` — never merged over it.
|
|
565
|
+
*
|
|
566
|
+
* An installed override REPLACES the baseline wholesale for that testId: a
|
|
567
|
+
* server started with `--chaos-latency 500` whose test `t1` installs
|
|
568
|
+
* `{ dropRate: 1 }` gives `t1` traffic a drop and NO latency, because
|
|
569
|
+
* `latencyMs` is not restated. To keep a baseline field, restate it in the
|
|
570
|
+
* override body.
|
|
571
|
+
*
|
|
572
|
+
* Replacement — not a field-wise merge — is deliberate, and it is what makes
|
|
573
|
+
* `POST /__aimock/chaos {}` ("explicitly no chaos for my test") different
|
|
574
|
+
* from `DELETE /__aimock/chaos` ("forget I said anything, fall back to the
|
|
575
|
+
* baseline"). Under a merge, `POST {}` would be a no-op and that distinction
|
|
576
|
+
* would collapse. It also matches the untagged case, where an override
|
|
577
|
+
* likewise replaces the construction-time config rather than layering on it.
|
|
578
|
+
*
|
|
579
|
+
* The two chain links ABOVE this one — fixture chaos over server chaos, and
|
|
580
|
+
* request headers over both — DO merge field-wise (see `resolveChaosConfig`).
|
|
581
|
+
* Only the scope lookup replaces, because it selects a config rather than
|
|
582
|
+
* refining one. `GET /__aimock/chaos` with the same testId always reports the
|
|
583
|
+
* config actually in effect for that scope, so the replacement is auditable.
|
|
584
|
+
*/
|
|
513
585
|
byTestId?: ReadonlyMap<string, ChaosConfig>;
|
|
514
586
|
}
|
|
515
587
|
/**
|
|
@@ -518,7 +590,7 @@ interface ChaosScope {
|
|
|
518
590
|
* itself passes a `ChaosScope`.
|
|
519
591
|
*/
|
|
520
592
|
type ChaosDefaults = ChaosConfig | ChaosScope;
|
|
521
|
-
type ChaosAction = "drop" | "malformed" | "disconnect";
|
|
593
|
+
type ChaosAction = "drop" | "malformed" | "rateLimit" | "disconnect";
|
|
522
594
|
type ResponseFactory = (req: ChatCompletionRequest) => FixtureResponse | Promise<FixtureResponse>;
|
|
523
595
|
interface Fixture {
|
|
524
596
|
match: FixtureMatch;
|
|
@@ -621,7 +693,7 @@ interface FixtureFileContentWithToolCallsResponse extends ResponseOverrides {
|
|
|
621
693
|
redactedThinking?: string[];
|
|
622
694
|
webSearches?: string[];
|
|
623
695
|
}
|
|
624
|
-
type FixtureFileResponse = FixtureFileTextResponse | FixtureFileToolCallResponse | FixtureFileContentWithToolCallsResponse | ErrorResponse | EmbeddingResponse | ImageResponse | AudioResponse | TranscriptionResponse | VideoResponse | RawJSONResponse;
|
|
696
|
+
type FixtureFileResponse = FixtureFileTextResponse | FixtureFileToolCallResponse | FixtureFileContentWithToolCallsResponse | ErrorResponse | EmbeddingResponse | ImageResponse | AudioResponse | TranscriptionResponse | VideoResponse | RawJSONResponse | LiveFixtureResponse;
|
|
625
697
|
interface FixtureFile {
|
|
626
698
|
fixtures: FixtureFileEntry[];
|
|
627
699
|
}
|
|
@@ -654,7 +726,7 @@ interface FixtureFileEntry {
|
|
|
654
726
|
* `FixtureMatch.hasToolResult`.
|
|
655
727
|
*/
|
|
656
728
|
hasToolResult?: boolean;
|
|
657
|
-
endpoint?: "chat" | "image" | "speech" | "transcription" | "translation" | "video" | "embedding" | "audio-gen" | "elevenlabs-tts" | "fal-audio" | "fal" | "realtime" | "realtime-transcription" | "realtime-translation";
|
|
729
|
+
endpoint?: "chat" | "image" | "speech" | "transcription" | "translation" | "video" | "embedding" | "audio-gen" | "elevenlabs-tts" | "elevenlabs-voice-design" | "elevenlabs-voice" | "elevenlabs-voice-get" | "elevenlabs-voice-delete" | "fal-audio" | "fal" | "realtime" | "realtime-transcription" | "realtime-translation" | "openai-live";
|
|
658
730
|
context?: string;
|
|
659
731
|
};
|
|
660
732
|
response: FixtureFileResponse;
|
|
@@ -673,13 +745,34 @@ interface FixtureFileEntry {
|
|
|
673
745
|
toolsHash?: string;
|
|
674
746
|
};
|
|
675
747
|
}
|
|
748
|
+
/**
|
|
749
|
+
* A recorded request body.
|
|
750
|
+
*
|
|
751
|
+
* Most journal entries carry a chat-completion request, but every service
|
|
752
|
+
* journals through one entry type and several of them record a body that is
|
|
753
|
+
* not one: the fine-tuning create payload is recorded verbatim so the journal
|
|
754
|
+
* reports what the caller actually sent, and the journal's own size cap
|
|
755
|
+
* substitutes a truncation marker for an oversized body. Neither shape has a
|
|
756
|
+
* `model`/`messages` pair, so typing the field as `ChatCompletionRequest`
|
|
757
|
+
* alone forces those writers through a cast that claims fields that are not
|
|
758
|
+
* there — the second member exists so they do not have to lie.
|
|
759
|
+
*
|
|
760
|
+
* TypeScript collapses the two for ASSIGNMENT (`ChatCompletionRequest` has an
|
|
761
|
+
* index signature, so it is itself a `Record<string, unknown>`); the union is
|
|
762
|
+
* kept two-membered because it is what the field means, not because it narrows
|
|
763
|
+
* anything. For READING, treat the body as opaque JSON — that is already how
|
|
764
|
+
* every consumer uses it (the journal cap re-serializes it, `GET
|
|
765
|
+
* /__aimock/journal` hands it back) — and property-check before reaching for a
|
|
766
|
+
* chat-request field.
|
|
767
|
+
*/
|
|
768
|
+
type JournalBody = ChatCompletionRequest | Record<string, unknown>;
|
|
676
769
|
interface JournalEntry {
|
|
677
770
|
id: string;
|
|
678
771
|
timestamp: number;
|
|
679
772
|
method: string;
|
|
680
773
|
path: string;
|
|
681
774
|
headers: Record<string, string>;
|
|
682
|
-
body:
|
|
775
|
+
body: JournalBody | null;
|
|
683
776
|
service?: string;
|
|
684
777
|
response: {
|
|
685
778
|
status: number;
|
|
@@ -692,13 +785,22 @@ interface JournalEntry {
|
|
|
692
785
|
* configured proxy: chaos-path entries (e.g. chaos on the OpenRouter
|
|
693
786
|
* video lifecycle endpoints; in REPLAY mode their normal 200/400/401/404
|
|
694
787
|
* entries omit source, while record-mode 200s on those endpoints carry
|
|
695
|
-
* source:"proxy")
|
|
696
|
-
*
|
|
697
|
-
*
|
|
788
|
+
* source:"proxy"), the OpenRouter video models listing synthesized as the
|
|
789
|
+
* fallback after a FAILED proxy attempt, and the services whose responses
|
|
790
|
+
* are synthesized outright — every fine-tuning entry carries it, success
|
|
791
|
+
* and error alike, since that store is aimock's own and no fixture or
|
|
792
|
+
* proxy ever serves it. Absent when the distinction doesn't apply
|
|
793
|
+
* (e.g. 404/503 fallback where nothing was going to serve).
|
|
698
794
|
*/
|
|
699
795
|
source?: "fixture" | "proxy" | "internal";
|
|
700
796
|
interrupted?: boolean;
|
|
701
797
|
interruptReason?: string;
|
|
798
|
+
/**
|
|
799
|
+
* The handler crashed AFTER the response completed. The client received
|
|
800
|
+
* `status` in full, so this is not an interruption; the message is what
|
|
801
|
+
* the crash said.
|
|
802
|
+
*/
|
|
803
|
+
error?: string;
|
|
702
804
|
chaosAction?: ChaosAction;
|
|
703
805
|
/** When the X-AIMock-Strict header overrode the server default. */
|
|
704
806
|
strictOverride?: boolean;
|
|
@@ -938,6 +1040,7 @@ interface FalRecordConfig {
|
|
|
938
1040
|
timeoutMs?: number;
|
|
939
1041
|
}
|
|
940
1042
|
interface MockServerOptions {
|
|
1043
|
+
live?: LiveOptions;
|
|
941
1044
|
/** Optional inbound test-client access keys. Omit to preserve permissive behavior. */
|
|
942
1045
|
auth?: ApiKeyAuthConfig;
|
|
943
1046
|
port?: number;
|
|
@@ -1099,5 +1202,5 @@ interface HandlerDefaults {
|
|
|
1099
1202
|
}
|
|
1100
1203
|
//# sourceMappingURL=types.d.ts.map
|
|
1101
1204
|
//#endregion
|
|
1102
|
-
export { ApiKeyAuthConfig, AudioResponse, ChaosAction, ChaosConfig, ChaosDefaults, ChatCompletion, ChatCompletionChoice, ChatCompletionMessage, ChatCompletionRequest, ChatMessage, ContentPart, ContentWithToolCallsResponse, EmbeddingFixtureOpts, EmbeddingResponse, ErrorResponse, FalQueueOpts, Fixture, FixtureBlock, FixtureFile, FixtureFileBlock, FixtureFileContentWithToolCallsResponse, FixtureFileEntry, FixtureFileResponse, FixtureFileTextResponse, FixtureFileToolCall, FixtureFileToolCallResponse, FixtureMatch, FixtureOpts, FixtureResponse, HandlerDefaults, ImageItem, ImageResponse, JournalEntry, MockServerOptions, Mountable, RawJSONResponse, RecordConfig, RecordProviderKey, RecordedTimings, ResponseFactory, ResponseOverrides, SSEChoice, SSEChunk, SSEDelta, SSEToolCallDelta, StreamingProfile, TextResponse, ToolCall, ToolCallMessage, ToolCallResponse, ToolDefinition, TranscriptionResponse, VideoResponse };
|
|
1205
|
+
export { ApiKeyAuthConfig, AudioResponse, ChaosAction, ChaosConfig, ChaosDefaults, ChatCompletion, ChatCompletionChoice, ChatCompletionMessage, ChatCompletionRequest, ChatMessage, ContentPart, ContentWithToolCallsResponse, EmbeddingFixtureOpts, EmbeddingResponse, ErrorResponse, FalQueueOpts, Fixture, FixtureBlock, FixtureFile, FixtureFileBlock, FixtureFileContentWithToolCallsResponse, FixtureFileEntry, FixtureFileResponse, FixtureFileTextResponse, FixtureFileToolCall, FixtureFileToolCallResponse, FixtureMatch, FixtureOpts, FixtureResponse, HandlerDefaults, ImageItem, ImageResponse, JournalBody, JournalEntry, MockServerOptions, Mountable, RawJSONResponse, RecordConfig, RecordProviderKey, RecordedTimings, ResponseFactory, ResponseOverrides, SSEChoice, SSEChunk, SSEDelta, SSEToolCallDelta, StreamingProfile, TextResponse, ToolCall, ToolCallMessage, ToolCallResponse, ToolDefinition, TranscriptionResponse, VideoResponse, VoiceDesignPreview, VoiceDesignResponse };
|
|
1103
1206
|
//# sourceMappingURL=types.d.cts.map
|
package/dist/types.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.cts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { Journal } from "./journal.js";
|
|
2
|
+
import { LiveFixtureResponse, LiveOptions } from "./live-types.js";
|
|
2
3
|
import { Logger } from "./logger.js";
|
|
3
4
|
import { MetricsRegistry } from "./metrics.js";
|
|
4
5
|
import * as http$1 from "node:http";
|
|
@@ -152,7 +153,7 @@ interface FixtureMatch {
|
|
|
152
153
|
* request has no user message, it falls back to scanning the whole conversation.
|
|
153
154
|
*/
|
|
154
155
|
hasToolResult?: boolean;
|
|
155
|
-
endpoint?: "chat" | "image" | "speech" | "transcription" | "translation" | "video" | "embedding" | "audio-gen" | "elevenlabs-tts" | "fal-audio" | "fal" | "realtime" | "realtime-transcription" | "realtime-translation";
|
|
156
|
+
endpoint?: "chat" | "image" | "speech" | "transcription" | "translation" | "video" | "embedding" | "audio-gen" | "elevenlabs-tts" | "elevenlabs-voice-design" | "elevenlabs-voice" | "elevenlabs-voice-get" | "elevenlabs-voice-delete" | "fal-audio" | "fal" | "realtime" | "realtime-transcription" | "realtime-translation" | "openai-live";
|
|
156
157
|
context?: string;
|
|
157
158
|
}
|
|
158
159
|
/**
|
|
@@ -388,6 +389,22 @@ interface ImageResponse {
|
|
|
388
389
|
image?: ImageItem;
|
|
389
390
|
images?: ImageItem[];
|
|
390
391
|
}
|
|
392
|
+
interface VoiceDesignPreview {
|
|
393
|
+
generated_voice_id: string;
|
|
394
|
+
audio_base_64?: string;
|
|
395
|
+
media_type?: string;
|
|
396
|
+
duration_secs?: number;
|
|
397
|
+
language?: string | null;
|
|
398
|
+
}
|
|
399
|
+
/**
|
|
400
|
+
* Convenience shape for `LLMock.onElevenLabsVoiceDesign`. Stored as a
|
|
401
|
+
* {@link RawJSONResponse} wrapping `{ previews, text }` — the ElevenLabs
|
|
402
|
+
* `/v1/text-to-voice/design` envelope.
|
|
403
|
+
*/
|
|
404
|
+
interface VoiceDesignResponse {
|
|
405
|
+
previews: VoiceDesignPreview[];
|
|
406
|
+
text?: string;
|
|
407
|
+
}
|
|
391
408
|
interface AudioResponse {
|
|
392
409
|
audio: string | {
|
|
393
410
|
b64Json: string;
|
|
@@ -460,7 +477,7 @@ interface RawJSONResponse extends ResponseOverrides {
|
|
|
460
477
|
*/
|
|
461
478
|
billableUnits?: number;
|
|
462
479
|
}
|
|
463
|
-
type FixtureResponse = TextResponse | ToolCallResponse | ContentWithToolCallsResponse | ErrorResponse | EmbeddingResponse | ImageResponse | AudioResponse | TranscriptionResponse | VideoResponse | RawJSONResponse;
|
|
480
|
+
type FixtureResponse = TextResponse | ToolCallResponse | ContentWithToolCallsResponse | ErrorResponse | EmbeddingResponse | ImageResponse | AudioResponse | TranscriptionResponse | VideoResponse | RawJSONResponse | LiveFixtureResponse;
|
|
464
481
|
interface StreamingProfile {
|
|
465
482
|
ttft?: number;
|
|
466
483
|
tps?: number;
|
|
@@ -479,16 +496,50 @@ interface RecordedTimings {
|
|
|
479
496
|
/**
|
|
480
497
|
* Probabilistic chaos injection rates.
|
|
481
498
|
*
|
|
482
|
-
* Rates are evaluated sequentially per request — drop → malformed →
|
|
483
|
-
* —
|
|
484
|
-
*
|
|
485
|
-
*
|
|
486
|
-
*
|
|
499
|
+
* Rates are evaluated sequentially per request — drop → malformed → rateLimit
|
|
500
|
+
* → disconnect — as four separate draws in that order, and the first draw that
|
|
501
|
+
* hits wins and short-circuits the rest. Each rate is therefore the probability
|
|
502
|
+
* that its OWN draw hits GIVEN that no earlier rate fired, not the share of
|
|
503
|
+
* requests that end in that fault; only `dropRate`, first in the chain, is
|
|
504
|
+
* unconditional. A config of `{ dropRate: 0.5, malformedRate: 0.5 }` yields a
|
|
505
|
+
* ~25 % effective malformed rate, not 50 %, and the same compounding applies to
|
|
506
|
+
* `{ dropRate: 0.5, rateLimitRate: 0.5 }` (~25 % rate limits).
|
|
507
|
+
*/
|
|
508
|
+
/**
|
|
509
|
+
* Probabilistic (and one deterministic) fault injection knobs.
|
|
510
|
+
*
|
|
511
|
+
* VALIDATION — ONE policy, whatever the source. Each field is a finite number
|
|
512
|
+
* in its range: the rates in [0, 1], `latencyMs` in [0, 30000]. A value outside
|
|
513
|
+
* it, or one that is not a number at all (`"0.5abc"`, `"Infinity"`, `NaN`), is
|
|
514
|
+
* REJECTED, never clamped — silent clamping substitutes a fault rate nobody
|
|
515
|
+
* asked for and hides the misconfiguration that produced it.
|
|
516
|
+
*
|
|
517
|
+
* Rejection is reported in the loudest way each source allows, and the three
|
|
518
|
+
* agree: `POST /__aimock/chaos` answers 400, the `--chaos-*` CLI flags refuse
|
|
519
|
+
* to start, and a per-request header or a fixture/server value is refused with
|
|
520
|
+
* a `[chaos]` warning and left unset so the next level of precedence (header >
|
|
521
|
+
* fixture > server) applies.
|
|
487
522
|
*/
|
|
488
523
|
interface ChaosConfig {
|
|
489
524
|
dropRate?: number;
|
|
490
525
|
malformedRate?: number;
|
|
491
526
|
disconnectRate?: number;
|
|
527
|
+
/**
|
|
528
|
+
* Deterministic delay (ms) injected before the request is handled.
|
|
529
|
+
* Applied when > 0 — header > fixture > server precedence, same as rates.
|
|
530
|
+
* Unlike rates it is not probabilistic: a set latency always fires so
|
|
531
|
+
* timeout/retry suites get a stable signal. Must be in [0, 30000]; a value
|
|
532
|
+
* outside that range is rejected, not clamped (see above).
|
|
533
|
+
*/
|
|
534
|
+
latencyMs?: number;
|
|
535
|
+
/**
|
|
536
|
+
* Chance of a 429 rate-limit rejection with `Retry-After`, CONDITIONAL on
|
|
537
|
+
* neither `dropRate` nor `malformedRate` having fired first: it is the third
|
|
538
|
+
* draw in the drop → malformed → rateLimit → disconnect order, and the first
|
|
539
|
+
* hit wins. Paired with a 0.5 `dropRate` a 0.5 `rateLimitRate` produces ~25 %
|
|
540
|
+
* rate limits, not 50 % (see the interface docstring above).
|
|
541
|
+
*/
|
|
542
|
+
rateLimitRate?: number;
|
|
492
543
|
}
|
|
493
544
|
/**
|
|
494
545
|
* Server-level chaos as the handlers see it: a baseline plus per-`X-Test-Id`
|
|
@@ -509,7 +560,28 @@ interface ChaosConfig {
|
|
|
509
560
|
interface ChaosScope {
|
|
510
561
|
/** Server-wide baseline: the construction config, or the untagged override. */
|
|
511
562
|
base?: ChaosConfig;
|
|
512
|
-
/**
|
|
563
|
+
/**
|
|
564
|
+
* Per-testId overrides, consulted INSTEAD OF `base` — never merged over it.
|
|
565
|
+
*
|
|
566
|
+
* An installed override REPLACES the baseline wholesale for that testId: a
|
|
567
|
+
* server started with `--chaos-latency 500` whose test `t1` installs
|
|
568
|
+
* `{ dropRate: 1 }` gives `t1` traffic a drop and NO latency, because
|
|
569
|
+
* `latencyMs` is not restated. To keep a baseline field, restate it in the
|
|
570
|
+
* override body.
|
|
571
|
+
*
|
|
572
|
+
* Replacement — not a field-wise merge — is deliberate, and it is what makes
|
|
573
|
+
* `POST /__aimock/chaos {}` ("explicitly no chaos for my test") different
|
|
574
|
+
* from `DELETE /__aimock/chaos` ("forget I said anything, fall back to the
|
|
575
|
+
* baseline"). Under a merge, `POST {}` would be a no-op and that distinction
|
|
576
|
+
* would collapse. It also matches the untagged case, where an override
|
|
577
|
+
* likewise replaces the construction-time config rather than layering on it.
|
|
578
|
+
*
|
|
579
|
+
* The two chain links ABOVE this one — fixture chaos over server chaos, and
|
|
580
|
+
* request headers over both — DO merge field-wise (see `resolveChaosConfig`).
|
|
581
|
+
* Only the scope lookup replaces, because it selects a config rather than
|
|
582
|
+
* refining one. `GET /__aimock/chaos` with the same testId always reports the
|
|
583
|
+
* config actually in effect for that scope, so the replacement is auditable.
|
|
584
|
+
*/
|
|
513
585
|
byTestId?: ReadonlyMap<string, ChaosConfig>;
|
|
514
586
|
}
|
|
515
587
|
/**
|
|
@@ -518,7 +590,7 @@ interface ChaosScope {
|
|
|
518
590
|
* itself passes a `ChaosScope`.
|
|
519
591
|
*/
|
|
520
592
|
type ChaosDefaults = ChaosConfig | ChaosScope;
|
|
521
|
-
type ChaosAction = "drop" | "malformed" | "disconnect";
|
|
593
|
+
type ChaosAction = "drop" | "malformed" | "rateLimit" | "disconnect";
|
|
522
594
|
type ResponseFactory = (req: ChatCompletionRequest) => FixtureResponse | Promise<FixtureResponse>;
|
|
523
595
|
interface Fixture {
|
|
524
596
|
match: FixtureMatch;
|
|
@@ -621,7 +693,7 @@ interface FixtureFileContentWithToolCallsResponse extends ResponseOverrides {
|
|
|
621
693
|
redactedThinking?: string[];
|
|
622
694
|
webSearches?: string[];
|
|
623
695
|
}
|
|
624
|
-
type FixtureFileResponse = FixtureFileTextResponse | FixtureFileToolCallResponse | FixtureFileContentWithToolCallsResponse | ErrorResponse | EmbeddingResponse | ImageResponse | AudioResponse | TranscriptionResponse | VideoResponse | RawJSONResponse;
|
|
696
|
+
type FixtureFileResponse = FixtureFileTextResponse | FixtureFileToolCallResponse | FixtureFileContentWithToolCallsResponse | ErrorResponse | EmbeddingResponse | ImageResponse | AudioResponse | TranscriptionResponse | VideoResponse | RawJSONResponse | LiveFixtureResponse;
|
|
625
697
|
interface FixtureFile {
|
|
626
698
|
fixtures: FixtureFileEntry[];
|
|
627
699
|
}
|
|
@@ -654,7 +726,7 @@ interface FixtureFileEntry {
|
|
|
654
726
|
* `FixtureMatch.hasToolResult`.
|
|
655
727
|
*/
|
|
656
728
|
hasToolResult?: boolean;
|
|
657
|
-
endpoint?: "chat" | "image" | "speech" | "transcription" | "translation" | "video" | "embedding" | "audio-gen" | "elevenlabs-tts" | "fal-audio" | "fal" | "realtime" | "realtime-transcription" | "realtime-translation";
|
|
729
|
+
endpoint?: "chat" | "image" | "speech" | "transcription" | "translation" | "video" | "embedding" | "audio-gen" | "elevenlabs-tts" | "elevenlabs-voice-design" | "elevenlabs-voice" | "elevenlabs-voice-get" | "elevenlabs-voice-delete" | "fal-audio" | "fal" | "realtime" | "realtime-transcription" | "realtime-translation" | "openai-live";
|
|
658
730
|
context?: string;
|
|
659
731
|
};
|
|
660
732
|
response: FixtureFileResponse;
|
|
@@ -673,13 +745,34 @@ interface FixtureFileEntry {
|
|
|
673
745
|
toolsHash?: string;
|
|
674
746
|
};
|
|
675
747
|
}
|
|
748
|
+
/**
|
|
749
|
+
* A recorded request body.
|
|
750
|
+
*
|
|
751
|
+
* Most journal entries carry a chat-completion request, but every service
|
|
752
|
+
* journals through one entry type and several of them record a body that is
|
|
753
|
+
* not one: the fine-tuning create payload is recorded verbatim so the journal
|
|
754
|
+
* reports what the caller actually sent, and the journal's own size cap
|
|
755
|
+
* substitutes a truncation marker for an oversized body. Neither shape has a
|
|
756
|
+
* `model`/`messages` pair, so typing the field as `ChatCompletionRequest`
|
|
757
|
+
* alone forces those writers through a cast that claims fields that are not
|
|
758
|
+
* there — the second member exists so they do not have to lie.
|
|
759
|
+
*
|
|
760
|
+
* TypeScript collapses the two for ASSIGNMENT (`ChatCompletionRequest` has an
|
|
761
|
+
* index signature, so it is itself a `Record<string, unknown>`); the union is
|
|
762
|
+
* kept two-membered because it is what the field means, not because it narrows
|
|
763
|
+
* anything. For READING, treat the body as opaque JSON — that is already how
|
|
764
|
+
* every consumer uses it (the journal cap re-serializes it, `GET
|
|
765
|
+
* /__aimock/journal` hands it back) — and property-check before reaching for a
|
|
766
|
+
* chat-request field.
|
|
767
|
+
*/
|
|
768
|
+
type JournalBody = ChatCompletionRequest | Record<string, unknown>;
|
|
676
769
|
interface JournalEntry {
|
|
677
770
|
id: string;
|
|
678
771
|
timestamp: number;
|
|
679
772
|
method: string;
|
|
680
773
|
path: string;
|
|
681
774
|
headers: Record<string, string>;
|
|
682
|
-
body:
|
|
775
|
+
body: JournalBody | null;
|
|
683
776
|
service?: string;
|
|
684
777
|
response: {
|
|
685
778
|
status: number;
|
|
@@ -692,13 +785,22 @@ interface JournalEntry {
|
|
|
692
785
|
* configured proxy: chaos-path entries (e.g. chaos on the OpenRouter
|
|
693
786
|
* video lifecycle endpoints; in REPLAY mode their normal 200/400/401/404
|
|
694
787
|
* entries omit source, while record-mode 200s on those endpoints carry
|
|
695
|
-
* source:"proxy")
|
|
696
|
-
*
|
|
697
|
-
*
|
|
788
|
+
* source:"proxy"), the OpenRouter video models listing synthesized as the
|
|
789
|
+
* fallback after a FAILED proxy attempt, and the services whose responses
|
|
790
|
+
* are synthesized outright — every fine-tuning entry carries it, success
|
|
791
|
+
* and error alike, since that store is aimock's own and no fixture or
|
|
792
|
+
* proxy ever serves it. Absent when the distinction doesn't apply
|
|
793
|
+
* (e.g. 404/503 fallback where nothing was going to serve).
|
|
698
794
|
*/
|
|
699
795
|
source?: "fixture" | "proxy" | "internal";
|
|
700
796
|
interrupted?: boolean;
|
|
701
797
|
interruptReason?: string;
|
|
798
|
+
/**
|
|
799
|
+
* The handler crashed AFTER the response completed. The client received
|
|
800
|
+
* `status` in full, so this is not an interruption; the message is what
|
|
801
|
+
* the crash said.
|
|
802
|
+
*/
|
|
803
|
+
error?: string;
|
|
702
804
|
chaosAction?: ChaosAction;
|
|
703
805
|
/** When the X-AIMock-Strict header overrode the server default. */
|
|
704
806
|
strictOverride?: boolean;
|
|
@@ -938,6 +1040,7 @@ interface FalRecordConfig {
|
|
|
938
1040
|
timeoutMs?: number;
|
|
939
1041
|
}
|
|
940
1042
|
interface MockServerOptions {
|
|
1043
|
+
live?: LiveOptions;
|
|
941
1044
|
/** Optional inbound test-client access keys. Omit to preserve permissive behavior. */
|
|
942
1045
|
auth?: ApiKeyAuthConfig;
|
|
943
1046
|
port?: number;
|
|
@@ -1099,5 +1202,5 @@ interface HandlerDefaults {
|
|
|
1099
1202
|
}
|
|
1100
1203
|
//# sourceMappingURL=types.d.ts.map
|
|
1101
1204
|
//#endregion
|
|
1102
|
-
export { ApiKeyAuthConfig, AudioResponse, ChaosAction, ChaosConfig, ChaosDefaults, ChatCompletion, ChatCompletionChoice, ChatCompletionMessage, ChatCompletionRequest, ChatMessage, ContentPart, ContentWithToolCallsResponse, EmbeddingFixtureOpts, EmbeddingResponse, ErrorResponse, FalQueueOpts, Fixture, FixtureBlock, FixtureFile, FixtureFileBlock, FixtureFileContentWithToolCallsResponse, FixtureFileEntry, FixtureFileResponse, FixtureFileTextResponse, FixtureFileToolCall, FixtureFileToolCallResponse, FixtureMatch, FixtureOpts, FixtureResponse, HandlerDefaults, ImageItem, ImageResponse, JournalEntry, MockServerOptions, Mountable, RawJSONResponse, RecordConfig, RecordProviderKey, RecordedTimings, ResponseFactory, ResponseOverrides, SSEChoice, SSEChunk, SSEDelta, SSEToolCallDelta, StreamingProfile, TextResponse, ToolCall, ToolCallMessage, ToolCallResponse, ToolDefinition, TranscriptionResponse, VideoResponse };
|
|
1205
|
+
export { ApiKeyAuthConfig, AudioResponse, ChaosAction, ChaosConfig, ChaosDefaults, ChatCompletion, ChatCompletionChoice, ChatCompletionMessage, ChatCompletionRequest, ChatMessage, ContentPart, ContentWithToolCallsResponse, EmbeddingFixtureOpts, EmbeddingResponse, ErrorResponse, FalQueueOpts, Fixture, FixtureBlock, FixtureFile, FixtureFileBlock, FixtureFileContentWithToolCallsResponse, FixtureFileEntry, FixtureFileResponse, FixtureFileTextResponse, FixtureFileToolCall, FixtureFileToolCallResponse, FixtureMatch, FixtureOpts, FixtureResponse, HandlerDefaults, ImageItem, ImageResponse, JournalBody, JournalEntry, MockServerOptions, Mountable, RawJSONResponse, RecordConfig, RecordProviderKey, RecordedTimings, ResponseFactory, ResponseOverrides, SSEChoice, SSEChunk, SSEDelta, SSEToolCallDelta, StreamingProfile, TextResponse, ToolCall, ToolCallMessage, ToolCallResponse, ToolDefinition, TranscriptionResponse, VideoResponse, VoiceDesignPreview, VoiceDesignResponse };
|
|
1103
1206
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.d.ts","names":[],"sources":["../src/types.ts"],"sourcesContent":[],"mappings":";;;;;;;;UASiB,SAAA;qBAER,MAAA,CAAK,sBACL,MAAA,CAAK,mCAET;EALY,aAAS,EAAA,MAAA,EAMD,GAAA,CAAI,MANH,EAAA,IAAA,EAMiB,MANjB,EAAA,QAAA,EAAA,MAAA,CAAA,EAM4C,OAN5C,CAAA,OAAA,CAAA;EAAA,MAAA,GAAA,EAAA;IAEjB,MAAK,EAAA,MAAA;IACL,CAAA,GAAA,EAAK,MAAA,CAAA,EAAA,OAAA;;YAGe,EAAA,OAAA,EAEN,OAFM,CAAA,EAAA,IAAA;YAAc,EAAA,GAAA,EAAA,MAAA,CAAA,EAAA,IAAA;aAA2B,EAAA,QAAA,EAI7C,eAJ6C,CAAA,EAAA,IAAA;;AAI7C,UAGR,WAAA,CAHQ;EAAe,IAAA,EAAA,MAAA;EAGvB,IAAA,CAAA,EAAA,MAAA;EAMA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAW,OAAA;;AAER,UAFH,WAAA,CAEG;MAEL,EAAA,QAAA,GAAA,MAAA,GAAA,WAAA,GAAA,MAAA;EAAe,OAAA,EAAA,MAAA,GAFV,WAEU,EAAA,GAAA,IAAA;EAIb,IAAA,CAAA,EAAA,MAAA;EAMA,UAAA,CAAA,EAVF,eAUuB,EAAA;EAAA,YAAA,CAAA,EAAA,MAAA;;AAqC5B,UA3CO,eAAA,CA2CP;EAAc,EAAA,EAAA,MAAA;EAoBP,IAAA,EAAA,UAAA;EAOA,QAAA,EAAA;IAAY,IAAA,EAAA,MAAA;IACJ,SAAA,EAAA,MAAA;;;AA2BN,UA5FF,qBAAA,CA4FE;OAEC,EAAA,MAAA;EAAqB,QAAA,EA5F7B,WA4F6B,EAAA;EAwDxB,MAAA,CAAA,EAAA,OAAA;EA+EA;AA0BjB;AAgBA;AAIA;;;;;AAUA;;;;;;AA8BA;AAoCA;AAIA;AAMA;EAA8B,MAAA,CAAA,EAAA,MAAA,EAAA;;;;AAU9B;AAgBA;AAKA;AAcA;;;;UAOY,CAAA,EAAA;IACG,eAAA,CAAA,EAAA,OAAA;IAAK,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EAIH,CAAA;EAqBA,cAAA,CAAA,EAAA;IAeL,aAAA,CAAe,EAAA,OAAA;IAAA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;aAEvB,CAAA,EAAA,MAAA;YACA,CAAA,EAAA,MAAA;OACA,CAAA,EAraM,cAqaN,EAAA;aACA,CAAA,EAAA,MAAA,GAAA,MAAA;iBACA,CAAA,EAAA;IACA,IAAA,EAAA,MAAA;IACA,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;;gBAGA,CAAA,EAAA,MAAA;EAAmB;EA8BN,aAAA,CAAA,EAAA,MAAgB;EAWhB;EAiCA,QAAA,CAAA,EAAA,MAAW;EAsCX;;;;;;AAiCjB;EAAyB,cAAA,CAAA,EAAA,YAAA,GAAA,KAAA,GAAA,MAAA,GAAA,UAAA;MAAG,EAAA,MAAA,CAAA,EAAA,OAAA;;AAAwB,UAziBnC,cAAA,CAyiBmC;EAExC,IAAA,EAAA,UAAW;EAIX,QAAA,EAAA;IAAe,IAAA,EAAA,MAAA;IACpB,WAAA,CAAA,EAAA,MAAA;IACF,UAAA,CAAA,EAAA,MAAA;;;AAAyB,UA1iBb,YAAA,CA0iBa;EAIb,WAAO,CAAA,EAAA,MAAA,GA7iBC,MA6iBD;EAAA;;;;;;;;AAwBxB;;;;;AACA;EAAgC,aAAA,CAAA,EAAA,MAAA,GAAA,MAAA,EAAA,GAvjBM,MAujBN;WAAQ,CAAA,EAAA,MAAA,GAtjBjB,MAsjBiB;YAAL,CAAA,EAAA,MAAA;EAAI;AAMvC;AASA;AAaA;AAUA;;;oBAAqD,CAAA,EAAA,MAAA;EAAiB,QAAA,CAAA,EAAA,MAAA;EAUrD,KAAA,CAAA,EAAA,MAAA,GA3lBE,MA2lBF;EAAwB,cAAA,CAAA,EAAA,MAAA;WAErB,CAAA,EAAA,CAAA,GAAA,EA3lBA,qBA2lBA,EAAA,GAAA,OAAA;;EAF8C,aAAA,CAAA,EAAA,MAAA;EAWjD,SAAA,CAAA,EAAA,MAAA;EAAwC;;;;;;AA4BzD;;eACI,CAAA,EAAA,OAAA;UACA,CAAA,EAAA,MAAA,GAAA,OAAA,GAAA,QAAA,GAAA,eAAA,GAAA,aAAA,GAAA,OAAA,GAAA,WAAA,GAAA,WAAA,GAAA,gBAAA,GAAA,yBAAA,GAAA,kBAAA,GAAA,sBAAA,GAAA,yBAAA,GAAA,WAAA,GAAA,KAAA,GAAA,UAAA,GAAA,wBAAA,GAAA,sBAAA,GAAA,aAAA;SACA,CAAA,EAAA,MAAA;;;;;;;;;;AAUJ;AAIA;;;;;;;AA2FA;;AAA0B,UAprBT,iBAAA,CAorBS;KAAwB,EAAA,MAAA;EAAM,OAAA,CAAA,EAAA,MAAA;EAEvC,KAAA,CAAA,EAAA,MAAA;EAAY,KAAA,CAAA,EAAA;IAKlB,aAAA,CAAA,EAAA,MAAA;IACH,iBAAA,CAAA,EAAA,MAAA;IAIK,YAAA,CAAA,EAAA,MAAA;IAyBK,YAAA,CAAA,EAAA,MAAA;IAAW,aAAA,CAAA,EAAA,MAAA;IAkBZ,gBAAA,CAAA,EAAA,MAAqB;IAwBrB,oBAAQ,CAAA,EAAA,MAAA;IAAA,eAAA,CAAA,EAAA,MAAA;IAKd;;;AAcX;AASA;AAOA;IASiB,IAAA,CAAA,EAAA,MAAc;IAAA;;;;AAuB/B;AASA;IAgBY,YAAA,CAAA,EAAA;MAiBK,uBAAY,CAAA,EAAA,MAAA;MAAA,8BAAA,CAAA,EAAA,MAAA;MACD,mCAAA,CAAA,EAAA,MAAA;MAAP,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;IAAR,CAAA;IAamB;;;;IAsBZ,qBAAA,CAAA,EAAA;MAA2B,aAAA,CAAA,EAAA,MAAA;MAuD9B,kBAAA,CAAA,EAAA,MAA2B;MAiB3B,YAAe,CAAA,EAAA,MAAA;MAOf,CAAA,GAAA,EAAA,MAAiB,CAAA,EAAA,OAAA;IAAA,CAAA;IACzB;;;IAgBE,yBAAA,CAAA,EAAA;MAkCgB,gBAAA,CAAA,EAAA,MAAA;MAA0B,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;IAWxC,CAAA;IAQO;;;;IAuBY,OAAA,CAAA,EAAA,OAAA;IAGf;AASjB;AA6BA;;;;;;;IAgBW,CAAA,GAAA,EAAA,MAAA,CAAA,EAAA,OAAA;;mBAE0C,CAAA,EAAA,MAAA;cACxC,CAAA,EAAA,MAAA;MACO,CAAA,EAAA,MAAA;;;;;;;;;;;;;;UA9iCH,YAAA,SAAqB;;;;;;;;;;;;;;;;;;;;;;;;;UA0BrB,QAAA;;;;;;;;;;;;;;;KAgBL,YAAA;;;;;;;;;UAIK,gBAAA,SAAyB;aAC7B;;;;;;;;UASI,4BAAA,SAAqC;;;;;;;;;;;;;cAaxC;;;;;;;;WAQH;;;;;;;;UASM,aAAA;;;;;;;;;;;;;eAaF;;;;;;;;;;;;;;;;;;;;;;UAuBE,iBAAA;;;UAIA,SAAA;;;;;UAMA,aAAA;UACP;WACC;;UAQM,kBAAA;;;;;;;;;;;;UAgBA,mBAAA;YACL;;;UAIK,aAAA;;;;;;;;;;;;cASH;;;;UAKG,qBAAA;;;;gBAID;;;;YAEJ;YACA;;;;;eACG;;;;;;;;UAIE,aAAA;;;;;;;;;;;;;;;;;;;;UAqBA,eAAA,SAAwB;;;;;;;;;;;;;;KAe7B,eAAA,GACR,eACA,mBACA,+BACA,gBACA,oBACA,gBACA,gBACA,wBACA,gBACA,kBACA;UA8Ba,gBAAA;;;;;;;;;;UAWA,eAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAiCA,WAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAsCA,UAAA;;SAER;;;;;;;;;;;;;;;;;;;;;;;aAuBI,oBAAoB;;;;;;;KAQrB,aAAA,GAAgB,cAAc;KAE9B,WAAA;KAIA,eAAA,SACL,0BACF,kBAAkB,QAAQ;UAId,OAAA;SACR;YACG,kBAAkB;;;;;qBAKT;oBACD;;UAEV;;;;;;;;;;;;;KAcE,WAAA,GAAc,KAAK;KACnB,oBAAA,GAAuB,KAAK;;;;;;KAM5B,YAAA,GAAe;;;UASV,mBAAA;;;sBAGK;;;;;;;;;KAUV,gBAAA;;;;;;;sBAMc;;;UAIT,2BAAA,SAAoC;aACxC;;;;;;;;UASI,uBAAA,SAAgC;;oBAE7B;;;;;;;;UASH,uCAAA,SAAgD;;;;;;;qBAO5C;;cAEP;;;;;;;;;;WAUH;;;;;;;;KASC,mBAAA,GACR,0BACA,8BACA,0CACA,gBACA,oBACA,gBACA,gBACA,wBACA,gBACA,kBACA;UAEa,WAAA;YACL;;UAGK,gBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAoDL;;;;;qBAKS;oBACD;;UAEV;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+BE,WAAA,GAAc,wBAAwB;UAEjC,YAAA;;;;;WAKN;QACH;;;;aAIK;;;;;;;;;;;;;;;;;;;;;;;;;kBAyBK;;;;;;;;;;;;;;;UAkBD,qBAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UAwBA,QAAA;;;;;WAKN;;;;;;;MAOL;;;;;;UAOW,SAAA;;SAER;;;;;;UAOQ,QAAA;;;;eAIF;;UAGE,gBAAA;;;;;;;;;UASA,cAAA;;;;;WAKN;;;;;MAKL;;;;;;;;;;;;UAaW,oBAAA;;WAEN;;;;;;UAOM,qBAAA;;;;;;;;;;;eAWF;;KAKH,iBAAA;UAiBK,YAAA;aACJ,QAAQ,OAAO;;;;;;;;;;;;;iBAaX,QAAQ,OAAO;;;;;;;;;;;;;;;;QAgBxB;;;;;;oBAMY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;UAuDH,2BAAA;;;;;;;;;;;;;;;;UAiBA,eAAA;;;;;;UAOA,iBAAA;SACR;;SAEA;;;;;;;;UAQC;;;;;;WAMC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAkCgB,0BAA0B;;;;;;;;;;;aAWxC;;;;;;;;oBAQO;;;;;;;;aAQP;;;;;;;cAOC;;;;;;;;kBAQI;;UAGD,gBAAA;;;;;;;;UASA,cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;UA6BA,eAAA;;;;UAIP;;;;;UAKA;;;;;kBAKQ,YAAY;aACjB;WACF;;2BAEgB,0BAA0B;aACxC;oBACO;aACP;cACC;;;;;;;;kBAQI"}
|