Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113// Synthetic live probe; never loads conversation history or persists credentials.// OPENROUTER_API_KEY=... node scripts/probe-openrouter.mjs// Requires Wrangler login. Makes two potentially billable model requests.// Optional: PROBE_TOOLS=1, PROBE_EFFORT=low|medium|high|xhigh|max,// PROBE_ROUTE=direct|gateway. Tools are advertised but never executed.import assert from "node:assert/strict";import { mkdtemp, rm, writeFile } from "node:fs/promises";import { tmpdir } from "node:os";import { join, resolve } from "node:path";import { unstable_startWorker } from "wrangler";
const key = process.env.OPENROUTER_API_KEY;if (!key) { console.error("Set OPENROUTER_API_KEY in the environment; do not paste it into chat."); process.exit(1);}const temporary = await mkdtemp(join(tmpdir(), "flarebot-openrouter-probe-"));let worker;try { const entry = join(temporary, "worker.ts"); const config = join(temporary, "wrangler.json"); await writeFile(entry, ` import { createGatewayModel } from ${JSON.stringify(resolve("worker/gateway-model.ts"))}; import { Secret } from ${JSON.stringify(resolve("configuration/secrets.ts"))}; import { Conversation } from ${JSON.stringify(resolve("worker/conversation.ts"))}; import { modelProviderOptions } from ${JSON.stringify(resolve("worker/model-provider.ts"))}; import { asSchema } from ${JSON.stringify(resolve("node_modules/ai/dist/index.js"))}; export default { async fetch(request, env) { const key = request.headers.get("authorization").slice(7); const url = new URL(request.url); const direct = url.pathname === "/direct"; const binding = direct ? { gateway: () => ({ run: (wire, options) => fetch(wire.endpoint, { method: "POST", headers: wire.headers, body: JSON.stringify(wire.query), signal: options.signal, }) }) } : env.AI; const configuration = { provider: "openrouter", model: "openai/gpt-5.6-luna", ...(url.searchParams.get("effort") ? { effort: url.searchParams.get("effort") } : {}), }; const model = createGatewayModel(binding, configuration, new Secret(key)); const started = Date.now(); try { let tools; if (url.searchParams.has("tools")) { // Call the real definition builders without constructing a DO or running tools. const host = { env, ctx: { waitUntil() {} }, browserOptions() {} }; const definitions = { ...Conversation.prototype.getTools.call(host), ...Conversation.prototype.getActions.call(host), }; tools = await Promise.all(Object.entries(definitions).map(async ([name, definition]) => ({ type: "function", name, description: definition.description, inputSchema: await asSchema(definition.inputSchema).jsonSchema, }))); } const result = await model.doStream({ prompt: [{ role: "user", content: [{ type: "text", text: "Reply with exactly OK." }] }], maxOutputTokens: 16384, providerOptions: modelProviderOptions(configuration), ...(tools ? { tools, toolChoice: { type: "auto" } } : {}), abortSignal: AbortSignal.timeout(60000), }); let text = ""; let finishReason; for await (const part of result.stream) { if (part.type === "error") throw part.error; if (part.type === "text-delta") text += part.delta; if (part.type === "finish") finishReason = part.finishReason; } return Response.json({ ok: text.trim() === "OK", text, finishReason, tools: tools?.map(t => t.name), elapsedMs: Date.now() - started }); } catch (error) { // Only this synthetic prompt is sent. Exclude SDK request objects/headers. const clean = value => typeof value === "string" ? value.split(key).join("[REDACTED]").slice(0, 4096) : null; return Response.json({ ok: false, status: error?.statusCode ?? null, message: clean(error?.message), responseBody: clean(error?.responseBody), elapsedMs: Date.now() - started }); } } }; `); await writeFile(config, JSON.stringify({ name: "flarebot-openrouter-probe", main: entry, compatibility_date: "2026-09-04", compatibility_flags: ["nodejs_compat"], ai: { binding: "AI", remote: true }, observability: { enabled: false }, })); worker = await unstable_startWorker({ config, dev: { inspector: false, server: { hostname: "127.0.0.1", port: 0 } }, }); await worker.ready; const results = []; const routes = process.env.PROBE_ROUTE ? [process.env.PROBE_ROUTE] : ["direct", "gateway"]; assert.ok(routes.every(route => ["direct", "gateway"].includes(route)), "Invalid PROBE_ROUTE"); const query = new URLSearchParams(); if (process.env.PROBE_TOOLS === "1") query.set("tools", "1"); if (process.env.PROBE_EFFORT) { assert.ok(["low", "medium", "high", "xhigh", "max"].includes(process.env.PROBE_EFFORT), "Invalid PROBE_EFFORT"); query.set("effort", process.env.PROBE_EFFORT); } for (const route of routes) { const response = await worker.fetch(`http://localhost/${route}?${query}`, { headers: { authorization: `Bearer ${key}` }, }); const result = await response.json(); console.log(JSON.stringify({ route, tools: process.env.PROBE_TOOLS === "1", effort: process.env.PROBE_EFFORT ?? "default", ...result }, null, 2)); results.push(result); } assert.ok(results.every(result => result.ok), "One or both model probes failed; see route results above.");} finally { await worker?.dispose(); await rm(temporary, { recursive: true, force: true });}