fix: resolve strict typecheck fallout in setup, routing, and tests

This commit is contained in:
William Valentin
2026-02-15 23:22:05 -08:00
parent 948d4ac6d8
commit ae70818ec1
18 changed files with 182 additions and 134 deletions
+1 -1
View File
@@ -39,7 +39,7 @@ function toOpenAIContent(content: string | MessageContentPart[]): string | OpenA
}
const url = part.source.type === 'base64'
? `data:${part.source.media_type};base64,${part.source.data}`
: part.source.url;
: (part.source.url ?? '');
return { type: 'image_url', image_url: { url } };
}
if (part.type === 'audio') {
+9 -9
View File
@@ -405,7 +405,7 @@ describe('normalizeMessagesForLlamaCpp', () => {
content: [
{ type: 'text', text: 'Searching...' },
{ type: 'tool_use', id: 'call_1', name: 'web.search', input: { query: 'news' } },
] as Message['content'],
] as unknown as Message['content'],
},
];
@@ -433,13 +433,13 @@ describe('normalizeMessagesForLlamaCpp', () => {
role: 'assistant',
content: [
{ type: 'tool_use', id: 'call_1', name: 'web.search', input: { query: 'news' } },
] as Message['content'],
] as unknown as Message['content'],
},
{
role: 'user',
content: [
{ type: 'tool_result', tool_use_id: 'call_1', content: 'Results here', is_error: false },
] as Message['content'],
] as unknown as Message['content'],
},
];
@@ -460,14 +460,14 @@ describe('normalizeMessagesForLlamaCpp', () => {
content: [
{ type: 'tool_use', id: 'call_a', name: 'tool.a', input: {} },
{ type: 'tool_use', id: 'call_b', name: 'tool.b', input: { x: 1 } },
] as Message['content'],
] as unknown as Message['content'],
},
{
role: 'user',
content: [
{ type: 'tool_result', tool_use_id: 'call_a', content: 'A result' },
{ type: 'tool_result', tool_use_id: 'call_b', content: 'B result' },
] as Message['content'],
] as unknown as Message['content'],
},
];
@@ -492,13 +492,13 @@ describe('normalizeMessagesForLlamaCpp', () => {
role: 'assistant',
content: [
{ type: 'tool_use', id: 'call_1', name: 'file.read', input: { path: '/tmp/x' } },
] as Message['content'],
] as unknown as Message['content'],
},
{
role: 'user',
content: [
{ type: 'tool_result', tool_use_id: 'call_1', content: 'File not found', is_error: true },
] as Message['content'],
] as unknown as Message['content'],
},
];
@@ -518,13 +518,13 @@ describe('normalizeMessagesForLlamaCpp', () => {
content: [
{ type: 'text', text: 'Checking...' },
{ type: 'tool_use', id: 'tc_0', name: 'weather.get', input: { city: 'NYC' } },
] as Message['content'],
] as unknown as Message['content'],
},
{
role: 'user',
content: [
{ type: 'tool_result', tool_use_id: 'tc_0', content: 'Sunny, 72F' },
] as Message['content'],
] as unknown as Message['content'],
},
{ role: 'assistant', content: 'The weather in NYC is sunny, 72F.' },
];
+7 -7
View File
@@ -375,7 +375,7 @@ describe('normalizeMessagesForOllama', () => {
content: [
{ type: 'text', text: 'Let me search for that.' },
{ type: 'tool_use', id: 'call_1', name: 'web.search', input: { query: 'latest news' } },
] as Message['content'],
] as unknown as Message['content'],
},
];
@@ -402,13 +402,13 @@ describe('normalizeMessagesForOllama', () => {
role: 'assistant',
content: [
{ type: 'tool_use', id: 'call_1', name: 'web.search', input: { query: 'news' } },
] as Message['content'],
] as unknown as Message['content'],
},
{
role: 'user',
content: [
{ type: 'tool_result', tool_use_id: 'call_1', content: 'Breaking news: ...', is_error: false },
] as Message['content'],
] as unknown as Message['content'],
},
];
@@ -430,14 +430,14 @@ describe('normalizeMessagesForOllama', () => {
content: [
{ type: 'tool_use', id: 'call_1', name: 'web.search', input: { query: 'a' } },
{ type: 'tool_use', id: 'call_2', name: 'web.search', input: { query: 'b' } },
] as Message['content'],
] as unknown as Message['content'],
},
{
role: 'user',
content: [
{ type: 'tool_result', tool_use_id: 'call_1', content: 'Result A' },
{ type: 'tool_result', tool_use_id: 'call_2', content: 'Result B' },
] as Message['content'],
] as unknown as Message['content'],
},
];
@@ -457,13 +457,13 @@ describe('normalizeMessagesForOllama', () => {
content: [
{ type: 'text', text: 'Let me check.' },
{ type: 'tool_use', id: 'tc_0', name: 'weather.get', input: { city: 'NYC' } },
] as Message['content'],
] as unknown as Message['content'],
},
{
role: 'user',
content: [
{ type: 'tool_result', tool_use_id: 'tc_0', content: 'Sunny, 72F' },
] as Message['content'],
] as unknown as Message['content'],
},
{ role: 'assistant', content: 'The weather in NYC is sunny, 72F.' },
];
+4 -1
View File
@@ -23,6 +23,9 @@ describe('OpenAIClient', () => {
});
expect(capturedOptions).toBeDefined();
expect(capturedOptions.baseURL).toBe('https://example.com/v1');
if (!capturedOptions) {
throw new Error('Expected OpenAI options to be captured');
}
expect((capturedOptions as Record<string, unknown>)['baseURL']).toBe('https://example.com/v1');
});
});
+1 -1
View File
@@ -36,7 +36,7 @@ function toOpenAIContent(content: string | MessageContentPart[]): string | OpenA
// OpenAI accepts data URIs or regular URLs
const url = part.source.type === 'base64'
? `data:${part.source.media_type};base64,${part.source.data}`
: part.source.url;
: (part.source.url ?? '');
return { type: 'image_url', image_url: { url } };
}
if (part.type === 'audio') {