From 8eda27f241aa3a504bfde32d8c9700a0e8d98f5d Mon Sep 17 00:00:00 2001 From: yuanzonghao Date: Tue, 2 Jun 2026 09:27:00 +0800 Subject: [PATCH] =?UTF-8?q?chore:=20complete=20@yume=20=E2=86=92=20@infipl?= =?UTF-8?q?ot=20rename=20(post-PR#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PR #9 已完成首页和 layout 的视觉品牌迁移,此 commit 补齐剩余的 技术性改名 —— workspace 包名、source import、localStorage 键、 CSS keyframe、内部 header logo、.env.example、README。 - @yume/* → @infiplot/* (6 package.json + 17 imports + lockfile) - localStorage/sessionStorage: yume:* → infiplot:* (含 PR #9 新增的 yume:hintClosed) - CSS keyframe yume-ripple → infiplot-ripple - new/play 页面 header logo "云梦" → "InfiPlot" - 代码注释中的「云梦」style 形容词删除(layout.tsx, page.tsx) - 根 package.json name + description(描述跟齐 staging "AI 实时交互剧情游戏") - README: tagline / Vercel deploy URL / 目录树 / engine 描述 保留:prompts.ts 的 LLM 体裁术语「视觉小说/galgame」、CustomForm placeholder 的「视觉小说画风」(图像模型识别的风格名词)。 Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 10 ++-- apps/web/.env.example | 2 +- apps/web/app/api/beat-audio/route.ts | 4 +- apps/web/app/api/insert-beat/route.ts | 4 +- apps/web/app/api/scene/route.ts | 4 +- apps/web/app/api/start/route.ts | 4 +- apps/web/app/api/vision/route.ts | 4 +- apps/web/app/globals.css | 2 +- apps/web/app/layout.tsx | 2 +- apps/web/app/new/page.tsx | 2 +- apps/web/app/page.tsx | 12 ++--- apps/web/app/play/page.tsx | 8 +-- apps/web/components/CustomForm.tsx | 2 +- apps/web/components/PlayCanvas.tsx | 4 +- apps/web/lib/config.ts | 2 +- apps/web/next.config.ts | 8 +-- apps/web/package.json | 8 +-- package.json | 10 ++-- packages/ai-client/package.json | 4 +- packages/ai-client/src/chat.ts | 2 +- packages/ai-client/src/image.ts | 2 +- packages/ai-client/src/vision.ts | 2 +- packages/engine/package.json | 8 +-- .../engine/src/agents/characterDesigner.ts | 6 +-- packages/engine/src/agents/cinematographer.ts | 4 +- packages/engine/src/agents/painter.ts | 6 +-- packages/engine/src/agents/writer.ts | 4 +- packages/engine/src/director.ts | 4 +- packages/engine/src/index.ts | 2 +- packages/engine/src/orchestrator.ts | 2 +- packages/engine/src/prompts.ts | 2 +- packages/engine/src/vision.ts | 4 +- packages/engine/src/voice.ts | 4 +- packages/tts-client/package.json | 4 +- packages/tts-client/src/xiaomi.ts | 2 +- packages/types/package.json | 2 +- pnpm-lock.yaml | 50 +++++++++---------- 37 files changed, 103 insertions(+), 103 deletions(-) diff --git a/README.md b/README.md index 6f65317..35905e3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -# 云梦 +# InfiPlot -> An AI-driven visual novel painted by an AI, one scene at a time. You talk and explore within a scene; when the story turns a corner, it paints the next. You click. It paints. The story unfolds. +> A real-time AI-generated interactive story game — painted scene by scene. You talk and explore within a scene; when the story turns a corner, it paints the next. You click. It paints. The story unfolds. --- @@ -37,7 +37,7 @@ There is no traditional game UI baked into the art. The AI paints the world in w ## One-click deploy -[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/zonghaoyuan/yume&root-directory=apps/web&env=TEXT_BASE_URL,TEXT_API_KEY,TEXT_MODEL,IMAGE_BASE_URL,IMAGE_API_KEY,IMAGE_MODEL,VISION_BASE_URL,VISION_API_KEY,VISION_MODEL,TTS_BASE_URL,TTS_API_KEY,TTS_SPEECH_MODEL,MOCK_IMAGE&envDescription=Three%20required%20providers%20%2B%20optional%20TTS.%20Any%20OpenAI-compatible%20endpoint%20works%20for%20text%2Fvision%2Ftts.&envLink=https://github.com/zonghaoyuan/yume%23environment-variables) +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/zonghaoyuan/infiplot&root-directory=apps/web&env=TEXT_BASE_URL,TEXT_API_KEY,TEXT_MODEL,IMAGE_BASE_URL,IMAGE_API_KEY,IMAGE_MODEL,VISION_BASE_URL,VISION_API_KEY,VISION_MODEL,TTS_BASE_URL,TTS_API_KEY,TTS_SPEECH_MODEL,MOCK_IMAGE&envDescription=Three%20required%20providers%20%2B%20optional%20TTS.%20Any%20OpenAI-compatible%20endpoint%20works%20for%20text%2Fvision%2Ftts.&envLink=https://github.com/zonghaoyuan/infiplot%23environment-variables) After deploy, set the environment variables (see below) in your Vercel project. Nine are required; TTS is optional (leave blank to run silently); `MOCK_IMAGE=true` skips image generation for cheap TTS-only testing. The Vercel project's **Root Directory** must be set to `apps/web` (the deploy button passes this; if you configure manually, set it in Project Settings). @@ -81,7 +81,7 @@ pnpm dev ## Project layout ``` -yume/ +infiplot/ ├── apps/web/ Next.js 16 app — pages + API routes (Vercel root) └── packages/ ├── types/ shared TypeScript types @@ -90,7 +90,7 @@ yume/ └── engine/ multi-agent AI orchestration (open core) ``` -`packages/engine` is the open core — pure TS, no Next.js or browser dependency. Import it directly to build your own visual-novel front-end (Tauri, Electron, CLI, anywhere). +`packages/engine` is the open core — pure TS, no Next.js or browser dependency. Import it directly to build your own interactive-narrative front-end (Tauri, Electron, CLI, anywhere). --- diff --git a/apps/web/.env.example b/apps/web/.env.example index 6cff139..e1999ef 100644 --- a/apps/web/.env.example +++ b/apps/web/.env.example @@ -1,5 +1,5 @@ # ============================================================= -# 云梦 — AI 视觉小说 +# InfiPlot — AI 实时交互剧情游戏 # Recommended setup: Xiaomi MiMo Token Plan for TEXT / VISION / TTS # (one API key covers all three) + Runware for IMAGE (FLUX.2 [klein]). # diff --git a/apps/web/app/api/beat-audio/route.ts b/apps/web/app/api/beat-audio/route.ts index a41fd33..bc84417 100644 --- a/apps/web/app/api/beat-audio/route.ts +++ b/apps/web/app/api/beat-audio/route.ts @@ -1,5 +1,5 @@ -import { requestBeatAudio } from "@yume/engine"; -import type { BeatAudioRequest } from "@yume/types"; +import { requestBeatAudio } from "@infiplot/engine"; +import type { BeatAudioRequest } from "@infiplot/types"; import { NextResponse } from "next/server"; import { loadEngineConfig } from "@/lib/config"; diff --git a/apps/web/app/api/insert-beat/route.ts b/apps/web/app/api/insert-beat/route.ts index 892e2aa..467392c 100644 --- a/apps/web/app/api/insert-beat/route.ts +++ b/apps/web/app/api/insert-beat/route.ts @@ -1,5 +1,5 @@ -import { requestInsertBeat } from "@yume/engine"; -import type { InsertBeatRequest } from "@yume/types"; +import { requestInsertBeat } from "@infiplot/engine"; +import type { InsertBeatRequest } from "@infiplot/types"; import { NextResponse } from "next/server"; import { loadEngineConfig } from "@/lib/config"; diff --git a/apps/web/app/api/scene/route.ts b/apps/web/app/api/scene/route.ts index 641e173..2fc432f 100644 --- a/apps/web/app/api/scene/route.ts +++ b/apps/web/app/api/scene/route.ts @@ -1,5 +1,5 @@ -import { requestScene } from "@yume/engine"; -import type { SceneRequest } from "@yume/types"; +import { requestScene } from "@infiplot/engine"; +import type { SceneRequest } from "@infiplot/types"; import { NextResponse } from "next/server"; import { loadEngineConfig } from "@/lib/config"; diff --git a/apps/web/app/api/start/route.ts b/apps/web/app/api/start/route.ts index b898f82..5c78760 100644 --- a/apps/web/app/api/start/route.ts +++ b/apps/web/app/api/start/route.ts @@ -1,5 +1,5 @@ -import { startSession } from "@yume/engine"; -import type { StartRequest } from "@yume/types"; +import { startSession } from "@infiplot/engine"; +import type { StartRequest } from "@infiplot/types"; import { NextResponse } from "next/server"; import { loadEngineConfig } from "@/lib/config"; diff --git a/apps/web/app/api/vision/route.ts b/apps/web/app/api/vision/route.ts index d093209..6cb6777 100644 --- a/apps/web/app/api/vision/route.ts +++ b/apps/web/app/api/vision/route.ts @@ -1,5 +1,5 @@ -import { visionDecide } from "@yume/engine"; -import type { VisionRequest } from "@yume/types"; +import { visionDecide } from "@infiplot/engine"; +import type { VisionRequest } from "@infiplot/types"; import { NextResponse } from "next/server"; import { loadEngineConfig } from "@/lib/config"; diff --git a/apps/web/app/globals.css b/apps/web/app/globals.css index b15dc09..718f777 100644 --- a/apps/web/app/globals.css +++ b/apps/web/app/globals.css @@ -54,7 +54,7 @@ } } -@keyframes yume-ripple { +@keyframes infiplot-ripple { 0% { width: 14px; height: 14px; diff --git a/apps/web/app/layout.tsx b/apps/web/app/layout.tsx index ecccb0f..bf87079 100644 --- a/apps/web/app/layout.tsx +++ b/apps/web/app/layout.tsx @@ -2,7 +2,7 @@ import type { Metadata } from "next"; import { Cormorant_Garamond, Inter } from "next/font/google"; import "./globals.css"; -// Editorial 云梦 fonts: drive tailwind `font-serif`/`font-sans` via +// Editorial fonts: drive tailwind `font-serif`/`font-sans` via // --font-serif / --font-sans across every page (home, /play, /new, CustomForm). const cormorant = Cormorant_Garamond({ subsets: ["latin"], diff --git a/apps/web/app/new/page.tsx b/apps/web/app/new/page.tsx index 24a62bd..5c46e1f 100644 --- a/apps/web/app/new/page.tsx +++ b/apps/web/app/new/page.tsx @@ -10,7 +10,7 @@ export default function NewPage() { className="text-[10px] smallcaps text-clay-700 hover:text-clay-900 transition-colors flex items-center gap-2" > - 云梦 + InfiPlot 编 织 一 个 世 界 diff --git a/apps/web/app/page.tsx b/apps/web/app/page.tsx index fde43ab..94227fe 100644 --- a/apps/web/app/page.tsx +++ b/apps/web/app/page.tsx @@ -4,7 +4,7 @@ import { useRouter } from "next/navigation"; import { useEffect, useRef, useState } from "react"; /* ============================================================================ - InfiPlot · 首页(云梦编辑式视觉风格 · 居中构图,呼应低保真原型) + InfiPlot · 首页(编辑式视觉风格 · 居中构图,呼应低保真原型) - 顶部 Header:左上角衬线 wordmark logo - Hero 控制区(居中):标题 / prompt 输入框 + 开始 / 5 个类别选择器 - 统一瀑布流(居中定宽):7 张主推 + 16 张画廊,按性向整体 crossfade 切换 @@ -399,7 +399,7 @@ export default function HomePage() { const [prompt, setPrompt] = useState(""); const inputRef = useRef(null); - // 顶部使用提示:默认展示,用户可点 × 永久关闭(localStorage:yume:hintClosed)。 + // 顶部使用提示:默认展示,用户可点 × 永久关闭(localStorage:infiplot:hintClosed)。 const [hintClosed, setHintClosed] = useState(false); const styleRow = OPTS.findIndex((o) => o.modal); @@ -432,7 +432,7 @@ export default function HomePage() { useEffect(() => { try { - if (localStorage.getItem("yume:hintClosed") === "1") setHintClosed(true); + if (localStorage.getItem("infiplot:hintClosed") === "1") setHintClosed(true); } catch { /* ignore */ } @@ -449,7 +449,7 @@ export default function HomePage() { const closeHint = () => { setHintClosed(true); try { - localStorage.setItem("yume:hintClosed", "1"); + localStorage.setItem("infiplot:hintClosed", "1"); } catch { /* ignore */ } @@ -496,7 +496,7 @@ export default function HomePage() { const audioEnabled = voice === "开启"; sessionStorage.setItem( - "yume:custom", + "infiplot:custom", JSON.stringify({ worldSetting, styleGuide, audioEnabled }), ); router.push("/play?custom=1"); @@ -610,7 +610,7 @@ export default function HomePage() { ))} - {/* 使用提示:可被用户永久关闭(localStorage:yume:hintClosed) */} + {/* 使用提示:可被用户永久关闭(localStorage:infiplot:hintClosed) */} {!hintClosed && (

diff --git a/apps/web/app/play/page.tsx b/apps/web/app/play/page.tsx index 2efd99b..3e9c5df 100644 --- a/apps/web/app/play/page.tsx +++ b/apps/web/app/play/page.tsx @@ -24,9 +24,9 @@ import type { Session, StartResponse, VisionResponse, -} from "@yume/types"; +} from "@infiplot/types"; -const MUTED_STORAGE_KEY = "yume:muted"; +const MUTED_STORAGE_KEY = "infiplot:muted"; // Cap how long we wait for the browser to download + decode a scene image // before giving up and rendering anyway. Runware's CDN is normally <2s for a @@ -485,7 +485,7 @@ function PlayInner() { const p = PRESETS.find((x) => x.id === presetId); if (p) payload = { worldSetting: p.worldSetting, styleGuide: p.styleGuide }; } else if (params.get("custom") === "1") { - const stored = sessionStorage.getItem("yume:custom"); + const stored = sessionStorage.getItem("infiplot:custom"); if (stored) { try { const parsed = JSON.parse(stored) as { @@ -890,7 +890,7 @@ function PlayInner() { className="text-[10px] smallcaps text-clay-600 hover:text-clay-900 transition-colors flex items-center gap-2" > - 云梦 + InfiPlot

第 · {String(sceneCount).padStart(3, "0")} · 幕 diff --git a/apps/web/components/CustomForm.tsx b/apps/web/components/CustomForm.tsx index 99ccf12..9d349b4 100644 --- a/apps/web/components/CustomForm.tsx +++ b/apps/web/components/CustomForm.tsx @@ -19,7 +19,7 @@ export function CustomForm() { if (!canSubmit) return; setSubmitting(true); sessionStorage.setItem( - "yume:custom", + "infiplot:custom", JSON.stringify({ worldSetting, styleGuide }), ); router.push("/play?custom=1"); diff --git a/apps/web/components/PlayCanvas.tsx b/apps/web/components/PlayCanvas.tsx index 0c4b185..508504b 100644 --- a/apps/web/components/PlayCanvas.tsx +++ b/apps/web/components/PlayCanvas.tsx @@ -1,7 +1,7 @@ "use client"; import { useCallback, useEffect, useRef, useState } from "react"; -import type { Beat, BeatChoice } from "@yume/types"; +import type { Beat, BeatChoice } from "@infiplot/types"; export type Phase = | "loading-first" // first scene not yet rendered @@ -439,7 +439,7 @@ export function PlayCanvas({ width: 30, height: 30, animation: - "yume-ripple 1.6s cubic-bezier(0.16,1,0.3,1) infinite", + "infiplot-ripple 1.6s cubic-bezier(0.16,1,0.3,1) infinite", }} />
=20" }, "scripts": { - "dev": "pnpm --filter @yume/web dev", - "build": "pnpm --filter @yume/web build", - "start": "pnpm --filter @yume/web start", + "dev": "pnpm --filter @infiplot/web dev", + "build": "pnpm --filter @infiplot/web build", + "start": "pnpm --filter @infiplot/web start", "lint": "pnpm -r lint", "typecheck": "pnpm -r typecheck" }, diff --git a/packages/ai-client/package.json b/packages/ai-client/package.json index 7280d8e..07d6e01 100644 --- a/packages/ai-client/package.json +++ b/packages/ai-client/package.json @@ -1,5 +1,5 @@ { - "name": "@yume/ai-client", + "name": "@infiplot/ai-client", "version": "0.1.0", "private": true, "type": "module", @@ -12,6 +12,6 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@yume/types": "workspace:*" + "@infiplot/types": "workspace:*" } } diff --git a/packages/ai-client/src/chat.ts b/packages/ai-client/src/chat.ts index 947b669..08c4dff 100644 --- a/packages/ai-client/src/chat.ts +++ b/packages/ai-client/src/chat.ts @@ -1,4 +1,4 @@ -import type { ProviderConfig } from "@yume/types"; +import type { ProviderConfig } from "@infiplot/types"; import { fetchWithRetry } from "./fetchWithRetry"; export type ChatMessage = { diff --git a/packages/ai-client/src/image.ts b/packages/ai-client/src/image.ts index 557a4a3..5d6175f 100644 --- a/packages/ai-client/src/image.ts +++ b/packages/ai-client/src/image.ts @@ -1,4 +1,4 @@ -import type { ProviderConfig } from "@yume/types"; +import type { ProviderConfig } from "@infiplot/types"; import { fetchWithRetry } from "./fetchWithRetry"; // Runware uses its own task-array protocol (not OpenAI-compatible). diff --git a/packages/ai-client/src/vision.ts b/packages/ai-client/src/vision.ts index 575a9c6..61992c6 100644 --- a/packages/ai-client/src/vision.ts +++ b/packages/ai-client/src/vision.ts @@ -1,4 +1,4 @@ -import type { ProviderConfig } from "@yume/types"; +import type { ProviderConfig } from "@infiplot/types"; import { fetchWithRetry } from "./fetchWithRetry"; export async function interpretClick( diff --git a/packages/engine/package.json b/packages/engine/package.json index 0ed11ab..fcfeedc 100644 --- a/packages/engine/package.json +++ b/packages/engine/package.json @@ -1,5 +1,5 @@ { - "name": "@yume/engine", + "name": "@infiplot/engine", "version": "0.1.0", "private": true, "type": "module", @@ -12,9 +12,9 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@yume/ai-client": "workspace:*", - "@yume/tts-client": "workspace:*", - "@yume/types": "workspace:*", + "@infiplot/ai-client": "workspace:*", + "@infiplot/tts-client": "workspace:*", + "@infiplot/types": "workspace:*", "jsonrepair": "^3.14.0", "sharp": "^0.33.5" } diff --git a/packages/engine/src/agents/characterDesigner.ts b/packages/engine/src/agents/characterDesigner.ts index 81dc4be..8d7056b 100644 --- a/packages/engine/src/agents/characterDesigner.ts +++ b/packages/engine/src/agents/characterDesigner.ts @@ -1,11 +1,11 @@ -import { chat, generateImage } from "@yume/ai-client"; -import { provisionVoice } from "@yume/tts-client"; +import { chat, generateImage } from "@infiplot/ai-client"; +import { provisionVoice } from "@infiplot/tts-client"; import type { Character, CharacterVoice, EngineConfig, Session, -} from "@yume/types"; +} from "@infiplot/types"; import { parseJsonLoose } from "../jsonParser"; import { mockImageDataUri } from "../mockImage"; import { diff --git a/packages/engine/src/agents/cinematographer.ts b/packages/engine/src/agents/cinematographer.ts index df0acc2..9274a0b 100644 --- a/packages/engine/src/agents/cinematographer.ts +++ b/packages/engine/src/agents/cinematographer.ts @@ -1,5 +1,5 @@ -import { chat } from "@yume/ai-client"; -import type { BeatActiveCharacter, ProviderConfig } from "@yume/types"; +import { chat } from "@infiplot/ai-client"; +import type { BeatActiveCharacter, ProviderConfig } from "@infiplot/types"; import { parseJsonLoose } from "../jsonParser"; import { CINEMATOGRAPHER_SYSTEM, diff --git a/packages/engine/src/agents/painter.ts b/packages/engine/src/agents/painter.ts index 1f99128..bad340f 100644 --- a/packages/engine/src/agents/painter.ts +++ b/packages/engine/src/agents/painter.ts @@ -1,11 +1,11 @@ -import { generateImage } from "@yume/ai-client"; -import type { GenerateImageOptions, GenerateImageResult } from "@yume/ai-client"; +import { generateImage } from "@infiplot/ai-client"; +import type { GenerateImageOptions, GenerateImageResult } from "@infiplot/ai-client"; import type { Beat, Character, EngineConfig, ProviderConfig, -} from "@yume/types"; +} from "@infiplot/types"; import { mockImageDataUri } from "../mockImage"; import { buildPainterPrompt } from "../prompts"; diff --git a/packages/engine/src/agents/writer.ts b/packages/engine/src/agents/writer.ts index 5423b4b..0015817 100644 --- a/packages/engine/src/agents/writer.ts +++ b/packages/engine/src/agents/writer.ts @@ -1,4 +1,4 @@ -import { chat } from "@yume/ai-client"; +import { chat } from "@infiplot/ai-client"; import type { Beat, BeatActiveCharacter, @@ -7,7 +7,7 @@ import type { BeatNext, ProviderConfig, Session, -} from "@yume/types"; +} from "@infiplot/types"; import { parseJsonLoose } from "../jsonParser"; import { WRITER_SYSTEM, buildWriterUserMessage } from "../prompts"; diff --git a/packages/engine/src/director.ts b/packages/engine/src/director.ts index a1526e0..9630a1b 100644 --- a/packages/engine/src/director.ts +++ b/packages/engine/src/director.ts @@ -1,4 +1,4 @@ -import { chat } from "@yume/ai-client"; +import { chat } from "@infiplot/ai-client"; import type { Character, EngineConfig, @@ -6,7 +6,7 @@ import type { ProviderConfig, Scene, Session, -} from "@yume/types"; +} from "@infiplot/types"; import { designCharacter, provisionVoiceForName } from "./agents/characterDesigner"; import { runCinematographer } from "./agents/cinematographer"; import { runPainter } from "./agents/painter"; diff --git a/packages/engine/src/index.ts b/packages/engine/src/index.ts index 8162c30..86adea9 100644 --- a/packages/engine/src/index.ts +++ b/packages/engine/src/index.ts @@ -11,5 +11,5 @@ export { mergeCharacters } from "./director"; export type { SceneResult } from "./director"; export type { WriterOutput } from "./agents/writer"; export type { CinematographerOutput } from "./agents/cinematographer"; -export type { InsertBeatPartial } from "@yume/types"; +export type { InsertBeatPartial } from "@infiplot/types"; export * from "./prompts"; diff --git a/packages/engine/src/orchestrator.ts b/packages/engine/src/orchestrator.ts index 7813d27..49a2098 100644 --- a/packages/engine/src/orchestrator.ts +++ b/packages/engine/src/orchestrator.ts @@ -11,7 +11,7 @@ import type { StartResponse, VisionRequest, VisionResponse, -} from "@yume/types"; +} from "@infiplot/types"; import { annotateClick } from "./annotate"; import { directInsertBeat, directScene } from "./director"; import { synthesizeBeat } from "./voice"; diff --git a/packages/engine/src/prompts.ts b/packages/engine/src/prompts.ts index ac1449a..ec25743 100644 --- a/packages/engine/src/prompts.ts +++ b/packages/engine/src/prompts.ts @@ -3,7 +3,7 @@ import type { Character, Scene, Session, -} from "@yume/types"; +} from "@infiplot/types"; // ══════════════════════════════════════════════════════════════════════ // Multi-agent scene generation pipeline: diff --git a/packages/engine/src/vision.ts b/packages/engine/src/vision.ts index dab7da6..45cbde0 100644 --- a/packages/engine/src/vision.ts +++ b/packages/engine/src/vision.ts @@ -1,10 +1,10 @@ -import { interpretClick } from "@yume/ai-client"; +import { interpretClick } from "@infiplot/ai-client"; import type { ClickIntent, ProviderConfig, Scene, VisionClassify, -} from "@yume/types"; +} from "@infiplot/types"; import { parseJsonLoose } from "./jsonParser"; import { VISION_SYSTEM_PROMPT, buildVisionUserPrompt } from "./prompts"; diff --git a/packages/engine/src/voice.ts b/packages/engine/src/voice.ts index 64d54c3..2305ddd 100644 --- a/packages/engine/src/voice.ts +++ b/packages/engine/src/voice.ts @@ -1,5 +1,5 @@ -import { synthesize } from "@yume/tts-client"; -import type { BeatAudio, CharacterVoice, TtsConfig } from "@yume/types"; +import { synthesize } from "@infiplot/tts-client"; +import type { BeatAudio, CharacterVoice, TtsConfig } from "@infiplot/types"; // Per-beat synth budget. MiMo's median synth is 3–7s; the tail can spike // to 30–70s under concurrent load. Capping here means a single bad beat diff --git a/packages/tts-client/package.json b/packages/tts-client/package.json index 06235ba..170aa3b 100644 --- a/packages/tts-client/package.json +++ b/packages/tts-client/package.json @@ -1,5 +1,5 @@ { - "name": "@yume/tts-client", + "name": "@infiplot/tts-client", "version": "0.1.0", "private": true, "type": "module", @@ -12,6 +12,6 @@ "typecheck": "tsc --noEmit" }, "dependencies": { - "@yume/types": "workspace:*" + "@infiplot/types": "workspace:*" } } diff --git a/packages/tts-client/src/xiaomi.ts b/packages/tts-client/src/xiaomi.ts index d957f14..6faa116 100644 --- a/packages/tts-client/src/xiaomi.ts +++ b/packages/tts-client/src/xiaomi.ts @@ -1,4 +1,4 @@ -import type { CharacterVoice, TtsConfig } from "@yume/types"; +import type { CharacterVoice, TtsConfig } from "@infiplot/types"; // Xiaomi MiMo currently outputs wav / pcm16 only (mp3 not supported for output). // The reference clip we persist is therefore wav. Kept as a single switch so we diff --git a/packages/types/package.json b/packages/types/package.json index 908b13a..235f087 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,5 +1,5 @@ { - "name": "@yume/types", + "name": "@infiplot/types", "version": "0.1.0", "private": true, "type": "module", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8607276..fdb69b0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -14,13 +14,13 @@ importers: apps/web: dependencies: - '@yume/ai-client': + '@infiplot/ai-client': specifier: workspace:* version: link:../../packages/ai-client - '@yume/engine': + '@infiplot/engine': specifier: workspace:* version: link:../../packages/engine - '@yume/types': + '@infiplot/types': specifier: workspace:* version: link:../../packages/types next: @@ -60,19 +60,19 @@ importers: packages/ai-client: dependencies: - '@yume/types': + '@infiplot/types': specifier: workspace:* version: link:../types packages/engine: dependencies: - '@yume/ai-client': + '@infiplot/ai-client': specifier: workspace:* version: link:../ai-client - '@yume/tts-client': + '@infiplot/tts-client': specifier: workspace:* version: link:../tts-client - '@yume/types': + '@infiplot/types': specifier: workspace:* version: link:../types jsonrepair: @@ -84,7 +84,7 @@ importers: packages/tts-client: dependencies: - '@yume/types': + '@infiplot/types': specifier: workspace:* version: link:../types @@ -448,8 +448,8 @@ packages: peerDependencies: postcss: ^8.1.0 - baseline-browser-mapping@2.10.32: - resolution: {integrity: sha512-wbPvpyjJPC0zdfdKXxqEL3Ea+bOMD/87X4lftiJkkaBiuG6ALQy1SLmEd7BSmVCuwCQsBrCamgBoLyfFDD1EPg==} + baseline-browser-mapping@2.10.33: + resolution: {integrity: sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==} engines: {node: '>=6.0.0'} hasBin: true @@ -516,8 +516,8 @@ packages: dlv@1.1.3: resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==} - electron-to-chromium@1.5.361: - resolution: {integrity: sha512-Q6Hts7N9FnJc5LeGRINFvLhCI9xZmNtTDe5ZbcVezQz7cU4a8Aua3GH1b8J2XY8Al9PF+OCwYqhgsOOheMdvkA==} + electron-to-chromium@1.5.364: + resolution: {integrity: sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw==} es-errors@1.3.0: resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} @@ -566,8 +566,8 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - hasown@2.0.3: - resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} engines: {node: '>= 0.4'} is-arrayish@0.3.4: @@ -822,8 +822,8 @@ packages: thenify@3.3.1: resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} - tinyglobby@0.2.16: - resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} to-regex-range@5.0.1: @@ -1120,7 +1120,7 @@ snapshots: postcss: 8.5.15 postcss-value-parser: 4.2.0 - baseline-browser-mapping@2.10.32: {} + baseline-browser-mapping@2.10.33: {} binary-extensions@2.3.0: {} @@ -1130,9 +1130,9 @@ snapshots: browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.32 + baseline-browser-mapping: 2.10.33 caniuse-lite: 1.0.30001793 - electron-to-chromium: 1.5.361 + electron-to-chromium: 1.5.364 node-releases: 2.0.46 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -1182,7 +1182,7 @@ snapshots: dlv@1.1.3: {} - electron-to-chromium@1.5.361: {} + electron-to-chromium@1.5.364: {} es-errors@1.3.0: {} @@ -1223,7 +1223,7 @@ snapshots: dependencies: is-glob: 4.0.3 - hasown@2.0.3: + hasown@2.0.4: dependencies: function-bind: 1.1.2 @@ -1235,7 +1235,7 @@ snapshots: is-core-module@2.16.2: dependencies: - hasown: 2.0.3 + hasown: 2.0.4 is-extglob@2.1.1: {} @@ -1272,7 +1272,7 @@ snapshots: dependencies: '@next/env': 16.2.6 '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.32 + baseline-browser-mapping: 2.10.33 caniuse-lite: 1.0.30001793 postcss: 8.4.31 react: 19.2.6 @@ -1465,7 +1465,7 @@ snapshots: lines-and-columns: 1.2.4 mz: 2.7.0 pirates: 4.0.7 - tinyglobby: 0.2.16 + tinyglobby: 0.2.17 ts-interface-checker: 0.1.13 supports-preserve-symlinks-flag@1.0.0: {} @@ -1506,7 +1506,7 @@ snapshots: dependencies: any-promise: 1.3.0 - tinyglobby@0.2.16: + tinyglobby@0.2.17: dependencies: fdir: 6.5.0(picomatch@4.0.4) picomatch: 4.0.4