Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions src/backend/controllers/puterai/PuterAIController.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -369,6 +369,9 @@ describe('PuterAIController.openaiChatCompletions', () => {
]);
expect(completeArgs.stream).toBe(false);
expect(completeArgs.provider).toBe('openai-completion');
// Wire routes translate shapes themselves; the driver is pinned
// provider-native so the release-date cutoff can't change them.
expect(completeArgs.normalize).toBe(false);

// Response shape matches OpenAI's /v1/chat/completions wire format.
const body = captured.body as Record<string, unknown>;
Expand Down Expand Up @@ -532,6 +535,7 @@ describe('PuterAIController.openaiCompletions', () => {
expect(completeArgs.messages).toEqual([
{ role: 'user', content: 'hello there' },
]);
expect(completeArgs.normalize).toBe(false);

const body = captured.body as Record<string, unknown>;
expect(body.object).toBe('text_completion');
Expand Down Expand Up @@ -595,6 +599,7 @@ describe('PuterAIController.openaiResponses', () => {
role: 'system',
content: 'be brief',
});
expect(completeArgs.normalize).toBe(false);
// `input` becomes a user message after the system one.
expect(completeArgs.messages[1]).toEqual({
role: 'user',
Expand Down Expand Up @@ -662,6 +667,7 @@ describe('PuterAIController.anthropicMessages', () => {
content: 'be helpful',
});
expect(completeArgs.provider).toBe('claude');
expect(completeArgs.normalize).toBe(false);

const body = captured.body as Record<string, unknown>;
expect(body.type).toBe('message');
Expand Down
10 changes: 10 additions & 0 deletions src/backend/controllers/puterai/PuterAIController.ts
Original file line number Diff line number Diff line change
Expand Up @@ -332,6 +332,10 @@ export class PuterAIController extends PuterController {
messages: body.messages,
model: toStringOrEmpty(body.model),
stream,
// This route does its own wire translation; pin the driver to the
// provider-native shape so the release-date cutoff can't change
// what the translators below receive.
normalize: false,
...(body.tools ? { tools: body.tools as unknown[] } : {}),
...(body.temperature !== undefined
? { temperature: Number(body.temperature) }
Expand Down Expand Up @@ -491,6 +495,8 @@ export class PuterAIController extends PuterController {
messages,
model: toStringOrEmpty(body.model),
stream,
// Pinned provider-native — this route translates the shape itself.
normalize: false,
...(body.temperature !== undefined
? { temperature: Number(body.temperature) }
: {}),
Expand Down Expand Up @@ -630,6 +636,8 @@ export class PuterAIController extends PuterController {
messages,
model: toStringOrEmpty(body.model),
stream,
// Pinned provider-native — this route translates the shape itself.
normalize: false,
...(body.tools ? { tools: body.tools as unknown[] } : {}),
...(body.tool_choice ? { tool_choice: body.tool_choice } : {}),
...(body.parallel_tool_calls !== undefined
Expand Down Expand Up @@ -970,6 +978,8 @@ export class PuterAIController extends PuterController {
messages: normalizedMessages,
model: toStringOrEmpty(body.model),
stream,
// Pinned provider-native — this route translates the shape itself.
normalize: false,
...(tools ? { tools } : {}),
...(body.temperature !== undefined
? { temperature: Number(body.temperature) }
Expand Down
5 changes: 5 additions & 0 deletions src/backend/core/context.ts
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,11 @@ export interface KnownContextFields {
req: Request;
/** A unique id for this request — useful for structured logging / tracing. */
requestId: string;
/**
* The driver name the caller addressed (set by DriverController for
* `/drivers/call` dispatch); drivers read it to pick a provider.
*/
driverName: string;
}

// -- Context store ---------------------------------------------------
Expand Down
Loading
Loading