Files
deepseek-harness/packages/sdk/server/tests/command-model-input.ts
T

26 lines
1.1 KiB
TypeScript

import type { GenerateOptions } from '@deepseek-ai/dsh-llm'
import { expect } from 'vitest'
/**
* Retain model inputs while binding tool-history references to message positions.
* @param options - captured request from the native or SDK command path.
* @returns comparable model inputs with all message content preserved.
*/
export function modelInput(options: GenerateOptions) {
return structuredClone({
provider: options.provider, model: options.model, system: options.system,
messages: options.messages.map(message => ({ role: message.role, content: message.content })),
tools: options.tools,
toolHistory: options.toolHistory === undefined ? undefined : {
tools: options.toolHistory.tools,
updates: options.toolHistory.updates.map(({ messageId, additions }) => {
const messageIndex = options.messages.findIndex(message => message.id === messageId)
expect(messageIndex).toBeGreaterThanOrEqual(0)
return { messageIndex, additions }
}),
},
maxTokens: options.maxTokens,
reasoningEffort: options.reasoningEffort, temperature: options.temperature, stop: options.stop,
})
}