@sunpix/claude-code-web
Version:
A web-based interface for interacting with Claude Code CLI
2 lines (1 loc) • 1.2 kB
JavaScript
import{d as t,g as e,c as o,s as r}from"../../nitro/nitro.mjs";import s from"openai";import"node:http";import"node:https";import"node:crypto";import"stream";import"events";import"http";import"crypto";import"buffer";import"zlib";import"https";import"net";import"tls";import"url";import"node:events";import"node:buffer";import"node:fs";import"node:path";import"@anthropic-ai/claude-code";import"fs";import"path";import"os";import"fs/promises";import"chokidar";import"readline";import"node:url";const i=new s({apiKey:process.env.OPENAI_API_KEY}),p=t(async t=>{try{const s=e(t),p=s.text,a=s.voice||"alloy",m=s.model||"tts-1",n=parseFloat(s.speed||"1.0");if(!p)throw o({statusCode:400,statusMessage:"Text parameter is required"});if(!process.env.OPENAI_API_KEY)throw o({statusCode:500,statusMessage:"OpenAI API key not configured"});const d=await i.audio.speech.create({model:m,voice:a,input:p,speed:n}),c=await d.arrayBuffer(),u=Buffer.from(c);return r(t,"Content-Type","audio/mpeg"),r(t,"Content-Length",u.length.toString()),r(t,"Cache-Control","public, max-age=3600"),u}catch(t){throw o({statusCode:t.statusCode||500,statusMessage:t.message||"Failed to synthesize speech"})}});export{p as default};