/** * Minimal local copy of the DSH user-message constructor. * * The bundle must load in a profile whose module resolution does not include * the DSH installation's internal packages. `createUserMessage` in * `@deepseek-ai/dsh-llm` is only `{ ...input, role: "user", id: randomUUID() }` * plus a deep freeze, so keeping a local copy removes the only runtime import * outside this package. */ import { randomUUID } from 'node:crypto' function deepFreeze(value) { if (value === null || typeof value !== 'object' || Object.isFrozen(value)) return value Object.freeze(value) for (const child of Object.values(value)) deepFreeze(child) return value } /** Create an immutable user-role message with a fresh identity. */ export function createUserMessage(input) { const message = { ...structuredClone(input), role: 'user', id: randomUUID(), } return deepFreeze(message) }