// Live smoke test for the CommandCode provider. Run: node scripts/smoke.mjs [modelId] import { readFileSync } from "node:fs"; import { homedir } from "node:os"; import { join } from "node:path"; import { createCommandCode } from "../dist/index.js"; function apiKey() { if (process.env.COMMANDCODE_API_KEY) return process.env.COMMANDCODE_API_KEY; const configPath = join(homedir(), ".config", "opencode", "opencode.json"); try { const cfg = JSON.parse(readFileSync(configPath, "utf8")); return cfg.provider?.commandcode?.options?.apiKey; } catch { return undefined; } } const modelId = process.argv[2] ?? "deepseek/deepseek-v4-flash-vision-exp"; const key = apiKey(); if (!key) { console.error("No API key: set COMMANDCODE_API_KEY or configure provider.commandcode.options.apiKey"); process.exit(1); } const provider = createCommandCode({ name: "commandcode", apiKey: key }); const model = provider.languageModel(modelId); console.log(`== doGenerate: ${modelId} ==`); const result = await model.doGenerate({ prompt: [{ role: "user", content: [{ type: "text", text: "Reply with exactly: pong" }] }], maxOutputTokens: 64, }); console.log("content:", JSON.stringify(result.content)); console.log("finishReason:", result.finishReason); console.log("usage:", JSON.stringify(result.usage)); console.log(`\n== doStream: ${modelId} ==`); const { stream } = await model.doStream({ prompt: [{ role: "user", content: [{ type: "text", text: "Count from 1 to 3." }] }], maxOutputTokens: 128, }); const reader = stream.getReader(); let text = ""; try { while (true) { const { done, value } = await reader.read(); if (done) break; if (value.type === "text-delta") text += value.delta; if (value.type === "finish") console.log("stream finish:", JSON.stringify(value.finishReason)); if (value.type === "error") throw value.error; } } finally { reader.releaseLock(); } console.log("stream text:", JSON.stringify(text));