Make message transformer async, expose i18n.

This commit is contained in:
Mario Zechner 2025-10-07 17:49:23 +02:00
parent f7878c3c71
commit a8159f504f
3 changed files with 5 additions and 5 deletions

View file

@ -54,7 +54,7 @@ export interface AgentOptions {
debugListener?: (entry: DebugLogEntry) => void; debugListener?: (entry: DebugLogEntry) => void;
transport: AgentTransport; transport: AgentTransport;
// Transform app messages to LLM-compatible messages before sending to transport // Transform app messages to LLM-compatible messages before sending to transport
messageTransformer?: (messages: AppMessage[]) => Message[]; messageTransformer?: (messages: AppMessage[]) => Message[] | Promise<Message[]>;
} }
export class Agent { export class Agent {
@ -73,7 +73,7 @@ export class Agent {
private abortController?: AbortController; private abortController?: AbortController;
private transport: AgentTransport; private transport: AgentTransport;
private debugListener?: (entry: DebugLogEntry) => void; private debugListener?: (entry: DebugLogEntry) => void;
private messageTransformer: (messages: AppMessage[]) => Message[]; private messageTransformer: (messages: AppMessage[]) => Message[] | Promise<Message[]>;
constructor(opts: AgentOptions) { constructor(opts: AgentOptions) {
this._state = { ...this._state, ...opts.initialState }; this._state = { ...this._state, ...opts.initialState };
@ -170,7 +170,7 @@ export class Agent {
let turnStart = 0; let turnStart = 0;
// Transform app messages to LLM-compatible messages // Transform app messages to LLM-compatible messages
const llmMessages = this.messageTransformer(this._state.messages); const llmMessages = await this.messageTransformer(this._state.messages);
for await (const ev of this.transport.run( for await (const ev of this.transport.run(
llmMessages, llmMessages,

View file

@ -78,4 +78,4 @@ export type { Attachment } from "./utils/attachment-utils.js";
export { loadAttachment } from "./utils/attachment-utils.js"; export { loadAttachment } from "./utils/attachment-utils.js";
export { clearAuthToken, getAuthToken } from "./utils/auth-token.js"; export { clearAuthToken, getAuthToken } from "./utils/auth-token.js";
export { formatCost, formatModelCost, formatTokenCount, formatUsage } from "./utils/format.js"; export { formatCost, formatModelCost, formatTokenCount, formatUsage } from "./utils/format.js";
export { i18n, setLanguage } from "./utils/i18n.js"; export { i18n, setLanguage, translations } from "./utils/i18n.js";

View file

@ -138,7 +138,7 @@ declare module "@mariozechner/mini-lit" {
} }
} }
const translations = { export const translations = {
en: { en: {
...defaultEnglish, ...defaultEnglish,
Free: "Free", Free: "Free",