mirror of
https://github.com/openclaw/openclaw.git
synced 2026-03-12 15:30:39 +00:00
* Onboard: add Mistral auth choice and CLI flags * Onboard/Auth: add Mistral provider config defaults * Auth choice: wire Mistral API-key flow * Onboard non-interactive: support --mistral-api-key * Media understanding: add Mistral Voxtral audio provider * Changelog: note Mistral onboarding and media support * Docs: add Mistral provider and onboarding/media references * Tests: cover Mistral media registry/defaults and auth mapping * Memory: add Mistral embeddings provider support * Onboarding: refresh Mistral model metadata * Docs: document Mistral embeddings and endpoints * Memory: persist Mistral embedding client state in managers * Memory: add regressions for mistral provider wiring * Gateway: add live tool probe retry helper * Gateway: cover live tool probe retry helper * Gateway: retry malformed live tool-read probe responses * Memory: support plain-text batch error bodies * Tests: add Mistral Voxtral live transcription smoke * Docs: add Mistral live audio test command * Revert: remove Mistral live voice test and docs entry * Onboard: re-export Mistral default model ref from models * Changelog: credit joeVenner for Mistral work * fix: include Mistral in auto audio key fallback * Update CHANGELOG.md * Update CHANGELOG.md --------- Co-authored-by: Shakker <shakkerdroid@gmail.com>
33 lines
1.1 KiB
TypeScript
33 lines
1.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { extractBatchErrorMessage, formatUnavailableBatchError } from "./batch-error-utils.js";
|
|
|
|
describe("extractBatchErrorMessage", () => {
|
|
it("returns the first top-level error message", () => {
|
|
expect(
|
|
extractBatchErrorMessage([
|
|
{ response: { body: { error: { message: "nested" } } } },
|
|
{ error: { message: "top-level" } },
|
|
]),
|
|
).toBe("nested");
|
|
});
|
|
|
|
it("falls back to nested response error message", () => {
|
|
expect(
|
|
extractBatchErrorMessage([{ response: { body: { error: { message: "nested-only" } } } }, {}]),
|
|
).toBe("nested-only");
|
|
});
|
|
|
|
it("accepts plain string response bodies", () => {
|
|
expect(extractBatchErrorMessage([{ response: { body: "provider plain-text error" } }])).toBe(
|
|
"provider plain-text error",
|
|
);
|
|
});
|
|
});
|
|
|
|
describe("formatUnavailableBatchError", () => {
|
|
it("formats errors and non-error values", () => {
|
|
expect(formatUnavailableBatchError(new Error("boom"))).toBe("error file unavailable: boom");
|
|
expect(formatUnavailableBatchError("unreachable")).toBe("error file unavailable: unreachable");
|
|
});
|
|
});
|