diff --git a/apps/web/.env.example b/.env.example
similarity index 100%
rename from apps/web/.env.example
rename to .env.example
diff --git a/README.en.md b/README.en.md
index 8629313..9f0d091 100644
--- a/README.en.md
+++ b/README.en.md
@@ -41,9 +41,9 @@ Free to play, no setup required: [infiplot.com](https://infiplot.com)
InfiPlot deploys to both Vercel and Cloudflare Workers. Cloudflare deployment requires the Workers Paid Plan because the scene pipeline needs longer CPU time; for personal use, the one-click Vercel deploy is recommended.
-[](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.%20TTS%20uses%20MiMo%27s%20own%20protocol.&envLink=https://github.com/zonghaoyuan/infiplot/blob/main/README.en.md%23configuration-guide) [](https://deploy.workers.cloudflare.com/?url=https://github.com/zonghaoyuan/infiplot/tree/main/apps/web)
+[](https://vercel.com/new/clone?repository-url=https://github.com/zonghaoyuan/infiplot&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.%20TTS%20uses%20MiMo%27s%20own%20protocol.&envLink=https://github.com/zonghaoyuan/infiplot/blob/main/README.en.md%23configuration-guide) [](https://deploy.workers.cloudflare.com/?url=https://github.com/zonghaoyuan/infiplot)
-After deploy, fill in the environment variables — see the [Configuration guide](#configuration-guide) below. Both platforms need `apps/web` as the project root (Vercel's button passes this automatically; on Cloudflare, set the build root to `apps/web` and the build command to `pnpm --filter @infiplot/web build:cf`).
+After deploy, fill in the environment variables — see the [Configuration guide](#configuration-guide) below. The repo root is the app itself: Vercel needs no special root directory; on Cloudflare, just set the build command to `pnpm build:cf`.
---
@@ -118,7 +118,7 @@ Get in touch: hi@infiplot.com
Scan to join our **beta community on QQ** (group ID `575404333`) to share feedback and help shape the project:
-
+
---
@@ -143,11 +143,11 @@ Nine variables are required; TTS is optional (leave blank to run silently). Ther
|---|---|
| `MOCK_IMAGE=true` | Skip image generation; the renderer returns a static placeholder. Story, voice, and choices still run normally. Great for iterating on TTS without burning Runware credits. |
-Where to set them (see `apps/web/.env.example` for the exact shape):
+Where to set them (see `.env.example` for the exact shape):
-- **Local dev** — `apps/web/.env.local`
+- **Local dev** — `.env.local`
- **Vercel** — Project Settings → Environment Variables
-- **Cloudflare Workers** — from `apps/web/`, run `wrangler secret put ` for each variable, or set them in the dashboard (Workers → infiplot → Settings → Variables and Secrets). For a private staging instance, gate the Worker behind [Cloudflare Access](https://developers.cloudflare.com/cloudflare-one/applications/) — zero-code email-whitelist auth in front of the Worker.
+- **Cloudflare Workers** — from the repo root, run `wrangler secret put ` for each variable, or set them in the dashboard (Workers → infiplot → Settings → Variables and Secrets). For a private staging instance, gate the Worker behind [Cloudflare Access](https://developers.cloudflare.com/cloudflare-one/applications/) — zero-code email-whitelist auth in front of the Worker.
**3. Mind the cost**
diff --git a/README.ja.md b/README.ja.md
index aac8098..fdc7a31 100644
--- a/README.ja.md
+++ b/README.ja.md
@@ -41,9 +41,9 @@ InfiPlot は、AI がコンテンツをリアルタイムに生成するイン
InfiPlot は Vercel と Cloudflare Workers の両方にデプロイできます。Cloudflare へのデプロイはシーンパイプラインがより長い CPU 時間を必要とするため、Workers Paid Plan が必要です。個人利用には Vercel のワンクリックデプロイをおすすめします。
-[](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.%20TTS%20uses%20MiMo%27s%20own%20protocol.&envLink=https://github.com/zonghaoyuan/infiplot/blob/main/README.ja.md%23%E8%A8%AD%E5%AE%9A%E3%82%AC%E3%82%A4%E3%83%89) [](https://deploy.workers.cloudflare.com/?url=https://github.com/zonghaoyuan/infiplot/tree/main/apps/web)
+[](https://vercel.com/new/clone?repository-url=https://github.com/zonghaoyuan/infiplot&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.%20TTS%20uses%20MiMo%27s%20own%20protocol.&envLink=https://github.com/zonghaoyuan/infiplot/blob/main/README.ja.md%23%E8%A8%AD%E5%AE%9A%E3%82%AC%E3%82%A4%E3%83%89) [](https://deploy.workers.cloudflare.com/?url=https://github.com/zonghaoyuan/infiplot)
-デプロイ後、環境変数を設定してください —— 下記の[設定ガイド](#設定ガイド)を参照。両方のプラットフォームで、プロジェクトのルートを `apps/web` に設定する必要があります(Vercel のデプロイボタンが自動で渡します。Cloudflare では build root を `apps/web`、ビルドコマンドを `pnpm --filter @infiplot/web build:cf` に設定してください)。
+デプロイ後、環境変数を設定してください —— 下記の[設定ガイド](#設定ガイド)を参照。リポジトリのルートがアプリ本体です:Vercel では特別なルート設定は不要です。Cloudflare ではビルドコマンドを `pnpm build:cf` に設定するだけで済みます。
---
@@ -117,7 +117,7 @@ flowchart TD
**InfiPlot ベータ交流グループ**(QQ グループ番号 `575404333`)—— QR コードを読み取って参加し、フィードバックや共同開発にご参加ください:
-
+
---
@@ -142,11 +142,11 @@ InfiPlot は 4 種類のモデルプロバイダと通信します。**テキス
|---|---|
| `MOCK_IMAGE=true` | 画像生成をスキップし、レンダラが静的なプレースホルダを返します。ストーリー・音声・選択肢は通常どおり動作します。Runware のクレジットを消費せずに TTS を調整するのに最適です。 |
-設定場所(正確なフォーマットは `apps/web/.env.example` を参照):
+設定場所(正確なフォーマットは `.env.example` を参照):
-- **ローカル開発** —— `apps/web/.env.local`
+- **ローカル開発** —— `.env.local`
- **Vercel** —— Project Settings → Environment Variables
-- **Cloudflare Workers** —— `apps/web/` から各変数について `wrangler secret put ` を実行するか、ダッシュボード(Workers → infiplot → Settings → Variables and Secrets)で設定します。ステージング環境にアクセス制限を掛けたい場合は、Worker の前に [Cloudflare Access](https://developers.cloudflare.com/cloudflare-one/applications/) を挟むと、ゼロコードでメール許可リスト方式の認証が利用できます。
+- **Cloudflare Workers** —— リポジトリのルートから各変数について `wrangler secret put ` を実行するか、ダッシュボード(Workers → infiplot → Settings → Variables and Secrets)で設定します。ステージング環境にアクセス制限を掛けたい場合は、Worker の前に [Cloudflare Access](https://developers.cloudflare.com/cloudflare-one/applications/) を挟むと、ゼロコードでメール許可リスト方式の認証が利用できます。
**3. コストに注意**
diff --git a/README.md b/README.md
index 62e2092..bb8abec 100644
--- a/README.md
+++ b/README.md
@@ -41,9 +41,9 @@ InfiPlot是一款AI实时生成内容的互动剧情游戏,这里没有预设
InfiPlot 同时支持部署到 Vercel 与 Cloudflare Workers。Cloudflare 部署因场景流水线需要更长 CPU 时间,需要 Workers Paid Plan;个人使用推荐用 Vercel 一键部署。
-[](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.%20TTS%20uses%20MiMo%27s%20own%20protocol.&envLink=https://github.com/zonghaoyuan/infiplot%23%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B) [](https://deploy.workers.cloudflare.com/?url=https://github.com/zonghaoyuan/infiplot/tree/main/apps/web)
+[](https://vercel.com/new/clone?repository-url=https://github.com/zonghaoyuan/infiplot&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.%20TTS%20uses%20MiMo%27s%20own%20protocol.&envLink=https://github.com/zonghaoyuan/infiplot%23%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B) [](https://deploy.workers.cloudflare.com/?url=https://github.com/zonghaoyuan/infiplot)
-部署完成后,填好环境变量 —— 详见下方的[配置教程](#配置教程)。两个平台都需要把项目根目录设为 `apps/web`(Vercel 一键部署按钮会自动带上;在 Cloudflare 上请把 build root 设为 `apps/web`,构建命令设为 `pnpm --filter @infiplot/web build:cf`)。
+部署完成后,填好环境变量 —— 详见下方的[配置教程](#配置教程)。仓库根目录就是应用本身:Vercel 无需额外设置 root directory;在 Cloudflare 上把构建命令设为 `pnpm build:cf` 即可。
---
@@ -117,7 +117,7 @@ flowchart TD
欢迎扫码加入 **InfiPlot 内测交流群**(QQ 群号 `575404333`),一起反馈体验、参与共建:
-
+
---
@@ -142,11 +142,11 @@ InfiPlot 会与四类模型供应商通信。**文本(Text)和视觉(Visio
|---|---|
| `MOCK_IMAGE=true` | 跳过图像生成,渲染器返回一张静态占位图。剧情、语音、选项照常运行。非常适合在不消耗 Runware 额度的情况下调试 TTS。 |
-在哪里设置(确切字段见 `apps/web/.env.example`):
+在哪里设置(确切字段见 `.env.example`):
-- **本地开发** —— `apps/web/.env.local`
+- **本地开发** —— `.env.local`
- **Vercel** —— Project Settings → Environment Variables
-- **Cloudflare Workers** —— 在 `apps/web/` 目录下逐个执行 `wrangler secret put `,或在 dashboard 里设置(Workers → infiplot → Settings → Variables and Secrets)。如果要给 staging 加访问限制,可以在 Worker 前面挂一个 [Cloudflare Access](https://developers.cloudflare.com/cloudflare-one/applications/)(零代码,邮箱白名单)。
+- **Cloudflare Workers** —— 在仓库根目录下逐个执行 `wrangler secret put `,或在 dashboard 里设置(Workers → infiplot → Settings → Variables and Secrets)。如果要给 staging 加访问限制,可以在 Worker 前面挂一个 [Cloudflare Access](https://developers.cloudflare.com/cloudflare-one/applications/)(零代码,邮箱白名单)。
**3. 注意成本**
diff --git a/apps/web/app/api/beat-audio/route.ts b/app/api/beat-audio/route.ts
similarity index 100%
rename from apps/web/app/api/beat-audio/route.ts
rename to app/api/beat-audio/route.ts
diff --git a/apps/web/app/api/insert-beat/route.ts b/app/api/insert-beat/route.ts
similarity index 100%
rename from apps/web/app/api/insert-beat/route.ts
rename to app/api/insert-beat/route.ts
diff --git a/apps/web/app/api/scene/route.ts b/app/api/scene/route.ts
similarity index 100%
rename from apps/web/app/api/scene/route.ts
rename to app/api/scene/route.ts
diff --git a/apps/web/app/api/start/route.ts b/app/api/start/route.ts
similarity index 100%
rename from apps/web/app/api/start/route.ts
rename to app/api/start/route.ts
diff --git a/apps/web/app/api/vision/route.ts b/app/api/vision/route.ts
similarity index 100%
rename from apps/web/app/api/vision/route.ts
rename to app/api/vision/route.ts
diff --git a/apps/web/app/globals.css b/app/globals.css
similarity index 100%
rename from apps/web/app/globals.css
rename to app/globals.css
diff --git a/apps/web/app/layout.tsx b/app/layout.tsx
similarity index 100%
rename from apps/web/app/layout.tsx
rename to app/layout.tsx
diff --git a/apps/web/app/new/page.tsx b/app/new/page.tsx
similarity index 100%
rename from apps/web/app/new/page.tsx
rename to app/new/page.tsx
diff --git a/apps/web/app/page.tsx b/app/page.tsx
similarity index 100%
rename from apps/web/app/page.tsx
rename to app/page.tsx
diff --git a/apps/web/app/play/page.tsx b/app/play/page.tsx
similarity index 100%
rename from apps/web/app/play/page.tsx
rename to app/play/page.tsx
diff --git a/apps/web/next.config.ts b/apps/web/next.config.ts
deleted file mode 100644
index 29b64b4..0000000
--- a/apps/web/next.config.ts
+++ /dev/null
@@ -1,18 +0,0 @@
-import path from "node:path";
-import type { NextConfig } from "next";
-
-const config: NextConfig = {
- reactStrictMode: true,
- typedRoutes: false,
- transpilePackages: [
- "@infiplot/engine",
- "@infiplot/ai-client",
- "@infiplot/types",
- "@infiplot/tts-client",
- ],
- turbopack: {
- root: path.join(__dirname, "..", ".."),
- },
-};
-
-export default config;
diff --git a/apps/web/package.json b/apps/web/package.json
deleted file mode 100644
index 571477f..0000000
--- a/apps/web/package.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
- "name": "@infiplot/web",
- "version": "0.1.0",
- "private": true,
- "type": "module",
- "scripts": {
- "dev": "next dev",
- "build": "next build",
- "start": "next start",
- "lint": "next lint",
- "typecheck": "tsc --noEmit",
- "build:cf": "opennextjs-cloudflare build",
- "preview:cf": "opennextjs-cloudflare preview",
- "deploy:cf": "opennextjs-cloudflare deploy"
- },
- "dependencies": {
- "@infiplot/ai-client": "workspace:*",
- "@infiplot/engine": "workspace:*",
- "@infiplot/types": "workspace:*",
- "next": "^16.0.0",
- "react": "^19.0.0",
- "react-dom": "^19.0.0"
- },
- "devDependencies": {
- "@opennextjs/cloudflare": "^1.19.11",
- "sharp": "^0.33.5",
- "@types/node": "^22.9.0",
- "@types/react": "^19.0.0",
- "@types/react-dom": "^19.0.0",
- "autoprefixer": "^10.4.20",
- "postcss": "^8.4.49",
- "tailwindcss": "^3.4.15",
- "typescript": "^5.6.3",
- "wrangler": "^4.96.0"
- }
-}
diff --git a/apps/web/tsconfig.json b/apps/web/tsconfig.json
deleted file mode 100644
index 203069b..0000000
--- a/apps/web/tsconfig.json
+++ /dev/null
@@ -1,13 +0,0 @@
-{
- "extends": "../../tsconfig.base.json",
- "compilerOptions": {
- "noEmit": true,
- "incremental": true,
- "plugins": [{ "name": "next" }],
- "paths": {
- "@/*": ["./*"]
- }
- },
- "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"],
- "exclude": ["node_modules"]
-}
diff --git a/apps/web/components/CustomForm.tsx b/components/CustomForm.tsx
similarity index 100%
rename from apps/web/components/CustomForm.tsx
rename to components/CustomForm.tsx
diff --git a/apps/web/components/PlayCanvas.tsx b/components/PlayCanvas.tsx
similarity index 100%
rename from apps/web/components/PlayCanvas.tsx
rename to components/PlayCanvas.tsx
diff --git a/apps/web/components/PresetCard.tsx b/components/PresetCard.tsx
similarity index 100%
rename from apps/web/components/PresetCard.tsx
rename to components/PresetCard.tsx
diff --git a/packages/ai-client/src/chat.ts b/lib/ai-client/chat.ts
similarity index 100%
rename from packages/ai-client/src/chat.ts
rename to lib/ai-client/chat.ts
diff --git a/packages/ai-client/src/fetchWithRetry.ts b/lib/ai-client/fetchWithRetry.ts
similarity index 100%
rename from packages/ai-client/src/fetchWithRetry.ts
rename to lib/ai-client/fetchWithRetry.ts
diff --git a/packages/ai-client/src/image.ts b/lib/ai-client/image.ts
similarity index 100%
rename from packages/ai-client/src/image.ts
rename to lib/ai-client/image.ts
diff --git a/packages/ai-client/src/index.ts b/lib/ai-client/index.ts
similarity index 100%
rename from packages/ai-client/src/index.ts
rename to lib/ai-client/index.ts
diff --git a/packages/ai-client/src/vision.ts b/lib/ai-client/vision.ts
similarity index 100%
rename from packages/ai-client/src/vision.ts
rename to lib/ai-client/vision.ts
diff --git a/apps/web/lib/annotateClient.ts b/lib/annotateClient.ts
similarity index 100%
rename from apps/web/lib/annotateClient.ts
rename to lib/annotateClient.ts
diff --git a/apps/web/lib/config.ts b/lib/config.ts
similarity index 100%
rename from apps/web/lib/config.ts
rename to lib/config.ts
diff --git a/packages/engine/src/agents/architect.ts b/lib/engine/agents/architect.ts
similarity index 100%
rename from packages/engine/src/agents/architect.ts
rename to lib/engine/agents/architect.ts
diff --git a/packages/engine/src/agents/characterDesigner.ts b/lib/engine/agents/characterDesigner.ts
similarity index 100%
rename from packages/engine/src/agents/characterDesigner.ts
rename to lib/engine/agents/characterDesigner.ts
diff --git a/packages/engine/src/agents/cinematographer.ts b/lib/engine/agents/cinematographer.ts
similarity index 100%
rename from packages/engine/src/agents/cinematographer.ts
rename to lib/engine/agents/cinematographer.ts
diff --git a/packages/engine/src/agents/painter.ts b/lib/engine/agents/painter.ts
similarity index 100%
rename from packages/engine/src/agents/painter.ts
rename to lib/engine/agents/painter.ts
diff --git a/packages/engine/src/agents/writer.ts b/lib/engine/agents/writer.ts
similarity index 100%
rename from packages/engine/src/agents/writer.ts
rename to lib/engine/agents/writer.ts
diff --git a/packages/engine/src/director.ts b/lib/engine/director.ts
similarity index 100%
rename from packages/engine/src/director.ts
rename to lib/engine/director.ts
diff --git a/packages/engine/src/index.ts b/lib/engine/index.ts
similarity index 100%
rename from packages/engine/src/index.ts
rename to lib/engine/index.ts
diff --git a/packages/engine/src/jsonParser.ts b/lib/engine/jsonParser.ts
similarity index 100%
rename from packages/engine/src/jsonParser.ts
rename to lib/engine/jsonParser.ts
diff --git a/packages/engine/src/mockImage.ts b/lib/engine/mockImage.ts
similarity index 100%
rename from packages/engine/src/mockImage.ts
rename to lib/engine/mockImage.ts
diff --git a/packages/engine/src/orchestrator.ts b/lib/engine/orchestrator.ts
similarity index 100%
rename from packages/engine/src/orchestrator.ts
rename to lib/engine/orchestrator.ts
diff --git a/packages/engine/src/prompts.ts b/lib/engine/prompts.ts
similarity index 100%
rename from packages/engine/src/prompts.ts
rename to lib/engine/prompts.ts
diff --git a/packages/engine/src/vision.ts b/lib/engine/vision.ts
similarity index 100%
rename from packages/engine/src/vision.ts
rename to lib/engine/vision.ts
diff --git a/packages/engine/src/voice.ts b/lib/engine/voice.ts
similarity index 100%
rename from packages/engine/src/voice.ts
rename to lib/engine/voice.ts
diff --git a/apps/web/lib/presets.ts b/lib/presets.ts
similarity index 100%
rename from apps/web/lib/presets.ts
rename to lib/presets.ts
diff --git a/packages/tts-client/src/index.ts b/lib/tts-client/index.ts
similarity index 100%
rename from packages/tts-client/src/index.ts
rename to lib/tts-client/index.ts
diff --git a/packages/tts-client/src/xiaomi.ts b/lib/tts-client/xiaomi.ts
similarity index 100%
rename from packages/tts-client/src/xiaomi.ts
rename to lib/tts-client/xiaomi.ts
diff --git a/packages/types/src/index.ts b/lib/types/index.ts
similarity index 100%
rename from packages/types/src/index.ts
rename to lib/types/index.ts
diff --git a/apps/web/next-env.d.ts b/next-env.d.ts
similarity index 84%
rename from apps/web/next-env.d.ts
rename to next-env.d.ts
index c4b7818..9edff1c 100644
--- a/apps/web/next-env.d.ts
+++ b/next-env.d.ts
@@ -1,6 +1,6 @@
///
///
-import "./.next/dev/types/routes.d.ts";
+import "./.next/types/routes.d.ts";
// NOTE: This file should not be edited
// see https://nextjs.org/docs/app/api-reference/config/typescript for more information.
diff --git a/next.config.ts b/next.config.ts
new file mode 100644
index 0000000..1150341
--- /dev/null
+++ b/next.config.ts
@@ -0,0 +1,11 @@
+import type { NextConfig } from "next";
+
+const config: NextConfig = {
+ reactStrictMode: true,
+ typedRoutes: false,
+ turbopack: {
+ root: __dirname,
+ },
+};
+
+export default config;
diff --git a/apps/web/open-next.config.ts b/open-next.config.ts
similarity index 100%
rename from apps/web/open-next.config.ts
rename to open-next.config.ts
diff --git a/package.json b/package.json
index f853b72..c5d3a40 100644
--- a/package.json
+++ b/package.json
@@ -2,20 +2,39 @@
"name": "infiplot",
"version": "0.1.0",
"private": true,
+ "type": "module",
"description": "AI 实时交互剧情游戏",
"license": "AGPL-3.0-only",
"packageManager": "pnpm@9.12.0",
"engines": {
- "node": ">=20"
+ "node": ">=22"
},
"scripts": {
- "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"
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "next lint",
+ "typecheck": "tsc --noEmit",
+ "build:cf": "opennextjs-cloudflare build",
+ "preview:cf": "opennextjs-cloudflare preview",
+ "deploy:cf": "opennextjs-cloudflare deploy"
+ },
+ "dependencies": {
+ "jsonrepair": "^3.14.0",
+ "next": "^16.0.0",
+ "react": "^19.0.0",
+ "react-dom": "^19.0.0"
},
"devDependencies": {
- "typescript": "^5.6.3"
+ "@opennextjs/cloudflare": "^1.19.11",
+ "@types/node": "^22.9.0",
+ "@types/react": "^19.0.0",
+ "@types/react-dom": "^19.0.0",
+ "autoprefixer": "^10.4.20",
+ "postcss": "^8.4.49",
+ "sharp": "^0.33.5",
+ "tailwindcss": "^3.4.15",
+ "typescript": "^5.6.3",
+ "wrangler": "^4.96.0"
}
}
diff --git a/packages/ai-client/package.json b/packages/ai-client/package.json
deleted file mode 100644
index 07d6e01..0000000
--- a/packages/ai-client/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "@infiplot/ai-client",
- "version": "0.1.0",
- "private": true,
- "type": "module",
- "main": "./src/index.ts",
- "types": "./src/index.ts",
- "exports": {
- ".": "./src/index.ts"
- },
- "scripts": {
- "typecheck": "tsc --noEmit"
- },
- "dependencies": {
- "@infiplot/types": "workspace:*"
- }
-}
diff --git a/packages/ai-client/tsconfig.json b/packages/ai-client/tsconfig.json
deleted file mode 100644
index 25e8cea..0000000
--- a/packages/ai-client/tsconfig.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": "../../tsconfig.base.json",
- "compilerOptions": {
- "noEmit": true
- },
- "include": ["src/**/*"]
-}
diff --git a/packages/engine/package.json b/packages/engine/package.json
deleted file mode 100644
index 5dfb5f3..0000000
--- a/packages/engine/package.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
- "name": "@infiplot/engine",
- "version": "0.1.0",
- "private": true,
- "type": "module",
- "main": "./src/index.ts",
- "types": "./src/index.ts",
- "exports": {
- ".": "./src/index.ts"
- },
- "scripts": {
- "typecheck": "tsc --noEmit"
- },
- "dependencies": {
- "@infiplot/ai-client": "workspace:*",
- "@infiplot/tts-client": "workspace:*",
- "@infiplot/types": "workspace:*",
- "jsonrepair": "^3.14.0"
- }
-}
diff --git a/packages/engine/tsconfig.json b/packages/engine/tsconfig.json
deleted file mode 100644
index 25e8cea..0000000
--- a/packages/engine/tsconfig.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": "../../tsconfig.base.json",
- "compilerOptions": {
- "noEmit": true
- },
- "include": ["src/**/*"]
-}
diff --git a/packages/tts-client/package.json b/packages/tts-client/package.json
deleted file mode 100644
index 170aa3b..0000000
--- a/packages/tts-client/package.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "name": "@infiplot/tts-client",
- "version": "0.1.0",
- "private": true,
- "type": "module",
- "main": "./src/index.ts",
- "types": "./src/index.ts",
- "exports": {
- ".": "./src/index.ts"
- },
- "scripts": {
- "typecheck": "tsc --noEmit"
- },
- "dependencies": {
- "@infiplot/types": "workspace:*"
- }
-}
diff --git a/packages/tts-client/tsconfig.json b/packages/tts-client/tsconfig.json
deleted file mode 100644
index 25e8cea..0000000
--- a/packages/tts-client/tsconfig.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": "../../tsconfig.base.json",
- "compilerOptions": {
- "noEmit": true
- },
- "include": ["src/**/*"]
-}
diff --git a/packages/types/package.json b/packages/types/package.json
deleted file mode 100644
index 235f087..0000000
--- a/packages/types/package.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "@infiplot/types",
- "version": "0.1.0",
- "private": true,
- "type": "module",
- "main": "./src/index.ts",
- "types": "./src/index.ts",
- "exports": {
- ".": "./src/index.ts"
- },
- "scripts": {
- "typecheck": "tsc --noEmit"
- }
-}
diff --git a/packages/types/tsconfig.json b/packages/types/tsconfig.json
deleted file mode 100644
index 25e8cea..0000000
--- a/packages/types/tsconfig.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "extends": "../../tsconfig.base.json",
- "compilerOptions": {
- "noEmit": true
- },
- "include": ["src/**/*"]
-}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d926c0b..ce3df06 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -7,44 +7,32 @@ settings:
importers:
.:
- devDependencies:
- typescript:
- specifier: ^5.6.3
- version: 5.9.3
-
- apps/web:
dependencies:
- '@infiplot/ai-client':
- specifier: workspace:*
- version: link:../../packages/ai-client
- '@infiplot/engine':
- specifier: workspace:*
- version: link:../../packages/engine
- '@infiplot/types':
- specifier: workspace:*
- version: link:../../packages/types
+ jsonrepair:
+ specifier: ^3.14.0
+ version: 3.14.0
next:
specifier: ^16.0.0
- version: 16.2.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ version: 16.2.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
react:
specifier: ^19.0.0
- version: 19.2.6
+ version: 19.2.7
react-dom:
specifier: ^19.0.0
- version: 19.2.6(react@19.2.6)
+ version: 19.2.7(react@19.2.7)
devDependencies:
'@opennextjs/cloudflare':
specifier: ^1.19.11
- version: 1.19.11(next@16.2.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(wrangler@4.96.0)
+ version: 1.19.11(next@16.2.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(wrangler@4.97.0)
'@types/node':
specifier: ^22.9.0
version: 22.19.19
'@types/react':
specifier: ^19.0.0
- version: 19.2.15
+ version: 19.2.16
'@types/react-dom':
specifier: ^19.0.0
- version: 19.2.3(@types/react@19.2.15)
+ version: 19.2.3(@types/react@19.2.16)
autoprefixer:
specifier: ^10.4.20
version: 10.5.0(postcss@8.5.15)
@@ -62,36 +50,7 @@ importers:
version: 5.9.3
wrangler:
specifier: ^4.96.0
- version: 4.96.0
-
- packages/ai-client:
- dependencies:
- '@infiplot/types':
- specifier: workspace:*
- version: link:../types
-
- packages/engine:
- dependencies:
- '@infiplot/ai-client':
- specifier: workspace:*
- version: link:../ai-client
- '@infiplot/tts-client':
- specifier: workspace:*
- version: link:../tts-client
- '@infiplot/types':
- specifier: workspace:*
- version: link:../types
- jsonrepair:
- specifier: ^3.14.0
- version: 3.14.0
-
- packages/tts-client:
- dependencies:
- '@infiplot/types':
- specifier: workspace:*
- version: link:../types
-
- packages/types: {}
+ version: 4.97.0
packages:
@@ -356,32 +315,32 @@ packages:
workerd:
optional: true
- '@cloudflare/workerd-darwin-64@1.20260529.1':
- resolution: {integrity: sha512-gxh5sXw0CsBxNCNj8uJnrAxqFM7+R8SZI9WIqYMKz6uaPxgg+eTcBDTxjKczMs6bS21FkTEF6ohIzB5+UvxwKw==}
+ '@cloudflare/workerd-darwin-64@1.20260601.1':
+ resolution: {integrity: sha512-iXZBVuRbvuVqQ/63wul01hHCv/3R8G5S8zbkjfoHvyPZFynmlKTV59Hk+H8whyGwFAZuB71UJGLr+G5mJKfjWA==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
- '@cloudflare/workerd-darwin-arm64@1.20260529.1':
- resolution: {integrity: sha512-B8xOwqd8ok8oaWBPhrpmNVSYou6AejFrYf3VzsJF6pg6TEA2tYbdThAGXgtLPQ8d1RD7GXYjVth2dSMg9napDA==}
+ '@cloudflare/workerd-darwin-arm64@1.20260601.1':
+ resolution: {integrity: sha512-veGpZQGBw07Twt+Y4z3oyo+/obKHt0iWUwvDV5GOiDAYjC/zW+YGstgVzg4SHq+k1sLH3ElqL2TXx20I5WBv3Q==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
- '@cloudflare/workerd-linux-64@1.20260529.1':
- resolution: {integrity: sha512-M1EKzsfoKmmno7MNPkuIc8iOdHLhFnE7ltEYaGGEoOj1MTJfMBK/JkIrhdkzc/06wpyPZPiBfBBmUppbeaMqUg==}
+ '@cloudflare/workerd-linux-64@1.20260601.1':
+ resolution: {integrity: sha512-n/9hDz7fPGpYF0J684+Xr5zgjcS2jdmY2Of5m6e+eQ/M9+RfR+UaU8Ee/tkA1dDC0LYQB13hfPafZG66Ff1CsA==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
- '@cloudflare/workerd-linux-arm64@1.20260529.1':
- resolution: {integrity: sha512-Mn/Qpl1FAHDLtPthw6ti5gsHRj582jJdtK4OMUlW1CN0v+pmmxaav3KSqq7CS6a+5W0o2e8o9fKnjVilBxVVmQ==}
+ '@cloudflare/workerd-linux-arm64@1.20260601.1':
+ resolution: {integrity: sha512-VHRZZbexATS+n+1j3x/CZaYbIJEye0J3iIHgG0Wp+l+NrZCKQ8qi8Lq1uTV0dLJQ67FuZtJtWdQ95mm9F7Fc+A==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
- '@cloudflare/workerd-windows-64@1.20260529.1':
- resolution: {integrity: sha512-78xgJJeXxkKYumWdKGH1pybUsEjTreSvbJqirW9cth7ZGonqdv5pzAVt+WWcbu0OFcSHrtQFX6zWioPNFp0/xQ==}
+ '@cloudflare/workerd-windows-64@1.20260601.1':
+ resolution: {integrity: sha512-ye0C7MFLkeH16iTo8Tcjv2KiFmp23+sZGvUzSQa4xhP0QMe6EoJ+H/4SqqvnZ5nfN54slqKvx2VnXceENWe2CQ==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
@@ -974,53 +933,53 @@ packages:
'@jridgewell/trace-mapping@0.3.9':
resolution: {integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==}
- '@next/env@16.2.6':
- resolution: {integrity: sha512-gd8HoHN4ufj73WmR3JmVolrpJR47ILK6LouP5xElPglaVxir6e1a7VzvTvDWkOoPXT9rkkTzyCxBu4yeZfZwcw==}
+ '@next/env@16.2.7':
+ resolution: {integrity: sha512-tMJizPlj6ZYpBMMdK8S0LJufrP4QTdR6pcv9KQ/bVETPAmg0j1mlHE9G2c38UyGHxoBapgwuj7XjbGJ2RcDFOg==}
- '@next/swc-darwin-arm64@16.2.6':
- resolution: {integrity: sha512-ZJGkkcNfYgrrMkqOdZ7zoLa1TOy0qpcMfk/z4Mh/FKUz40gVO+HNQWqmLxf67Z5WB64DRp0dhEbyHfel+6sJUg==}
+ '@next/swc-darwin-arm64@16.2.7':
+ resolution: {integrity: sha512-vm1EDI/pVaBNNiychmxk3fft+OhQPVD9cIM/tReLZIQ3TfQ4kqI9DwKk00dzuS1ulC7icbrzCFrmRRlk9PfNdw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [darwin]
- '@next/swc-darwin-x64@16.2.6':
- resolution: {integrity: sha512-v/YLBHIY132Ced3puBJ7YJKw1lqsCrgcNo2aRJlCEyQrrCeRJlvGlnmxhPxNQI3KE3N1DN5r9TPNPvka3nq5RQ==}
+ '@next/swc-darwin-x64@16.2.7':
+ resolution: {integrity: sha512-O3IRSv1ZBL1zs0WrIgefTEcTKFVn+ryxBNe54erJ6KsD+2f/Mmt7g2jOYh8PSBdUwPtKQJuCsTMlZ7tIu2AcsQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [darwin]
- '@next/swc-linux-arm64-gnu@16.2.6':
- resolution: {integrity: sha512-RPOvqlYBbcQjkz9VQQDZ2T2bARIjXZV1KFlt+V2Mr6SW/e4I9fcKsaA0hdyf2FHoTlsV2xnBd5Y912rP/1Ce6w==}
+ '@next/swc-linux-arm64-gnu@16.2.7':
+ resolution: {integrity: sha512-Re6PZtjBDd0aMU+VcZcC/PrIvj4WhrjDYtMhhCVQamWN4L90EVP0pcEOBQD25prSlw7OzNw5QpHLWMilRLsRNw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-arm64-musl@16.2.6':
- resolution: {integrity: sha512-URUTu1+dMkxJsPFgm+OeEvq9wf5sujw0EvgYy80TDGHTSLTnIHeqb0Eu8A3sC95IRgjejQL+kC4mw+4yPxiAXA==}
+ '@next/swc-linux-arm64-musl@16.2.7':
+ resolution: {integrity: sha512-qyogG9QtBzWxgJfeGBvOEHI3851gTfCF3wLZ5RDLTBJGAmE9p1qDwKCOdrBrvBzRvYDT+gUDp72pzlSEfAXgNA==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
- '@next/swc-linux-x64-gnu@16.2.6':
- resolution: {integrity: sha512-DOj182mPV8G3UkrayLoREM5YEYI+Dk5wv7Ox9xl1fFibAELEsFD0lDPfHIeILlutMMfdyhlzYPELG3peuKaurw==}
+ '@next/swc-linux-x64-gnu@16.2.7':
+ resolution: {integrity: sha512-Vhe4ZDuBpmMogrGi5D4R2Kq4JAQlj6+wvgaFYy31zfES0zPmt6TLA+cuYpM/OLrPZjo2MYQTHVqNUSCR6+fDZQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-linux-x64-musl@16.2.6':
- resolution: {integrity: sha512-HKQ5SP/V/ub73UvF7n/zeJlxk2kLmtL7Wzrg4WfmkjmNos5onJ2tKu7yZOPdL18A6Svfn3max29ym+ry7NkK4g==}
+ '@next/swc-linux-x64-musl@16.2.7':
+ resolution: {integrity: sha512-srvian89JahFLw1YLBEuhvPJ0DO5lpUeJQMXy4xYo7g628ZlNgXdNkqoxSAv9OYrBfByh6vxISMwW/mRbzCY+g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
- '@next/swc-win32-arm64-msvc@16.2.6':
- resolution: {integrity: sha512-LZXpTlPyS5v7HhSmnvsLGP3iIYgYOBnc8r8ArlT55sGHV89bR2HlDdBjWQ+PY6SJMmk8TuVGFuxalnP3k/0Dwg==}
+ '@next/swc-win32-arm64-msvc@16.2.7':
+ resolution: {integrity: sha512-GX3wvLpULFuRFJzwHaKfm7QZJ18F4ZSuxlPJ96BoBglCzBmdSjyeBKF+ZhWhvL/ckxNfLnNa7bsObO2ipYpszw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [win32]
- '@next/swc-win32-x64-msvc@16.2.6':
- resolution: {integrity: sha512-F0+4i0h9J6C4eE3EAPWsoCk7UW/dbzOjyzxY0qnDUOYFu6FFmdZ6l97/XdV3/Nz3VYyO7UWjyEJUXkGqcoXfMA==}
+ '@next/swc-win32-x64-msvc@16.2.7':
+ resolution: {integrity: sha512-J4WlM72NMk076Qsg0jTdK3SNXatlSdnjW7L7oNGLst1tAGjHrJh/FYi+pw9wyIjEtGRKDNzD0zuiY16oWYWVaw==}
engines: {node: '>= 10'}
cpu: [x64]
os: [win32]
@@ -1265,8 +1224,8 @@ packages:
peerDependencies:
'@types/react': ^19.2.0
- '@types/react@19.2.15':
- resolution: {integrity: sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==}
+ '@types/react@19.2.16':
+ resolution: {integrity: sha512-esJiCAnl0kfpNdE69f3So4WJUXy95dLZydX0KwK46riIHDzHM7O9Vtf9xCHW0PXIqvgqNrswl522kA/5yx+F4w==}
abort-controller@3.0.0:
resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==}
@@ -1527,8 +1486,8 @@ packages:
ee-first@1.1.1:
resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==}
- electron-to-chromium@1.5.364:
- resolution: {integrity: sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw==}
+ electron-to-chromium@1.5.365:
+ resolution: {integrity: sha512-xfip4u1QF1s+URFqpA6N+OeFpDGpN7VJz1f3MO3bVL0QYBjpGiZ5/Of7kugvM+o8TTqmanUlviHN3c8M9vYWCw==}
emoji-regex@10.6.0:
resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==}
@@ -1860,8 +1819,8 @@ packages:
resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
engines: {node: '>=6'}
- miniflare@4.20260529.0:
- resolution: {integrity: sha512-4pj7WZQR/uYqVMa0cpAmmPBKEb0JegSocuystaXCubY455iqWdPUqgVD9R6N28oneWyPiUyAu5N8QpLbK+MU/Q==}
+ miniflare@4.20260601.0:
+ resolution: {integrity: sha512-56TFiulSEQu43cYxdXgCiA3U3i+Ls0NoXwJXd6DmpNsx8yl/1Il2T3DQ4CMXjR6yfE7CSvC5MuXaqcSAMREjgw==}
engines: {node: '>=22.0.0'}
hasBin: true
@@ -1904,8 +1863,8 @@ packages:
resolution: {integrity: sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==}
engines: {node: '>= 0.6'}
- next@16.2.6:
- resolution: {integrity: sha512-qOVgKJg1+At15NpeUP+eJgCHvTCgXsogweq87Ri/Ix7PkqQHg4sdaXmSFqKlgaIXE4kW0g25LE68W87UANlHtw==}
+ next@16.2.7:
+ resolution: {integrity: sha512-eMJxgjRzBaj3olkP4cBamHDXL79A8FC6u1GcsO1D1Tsx8bw/LLXUJCaoajVxtnhD3A1IJqIT8IcRJjgBIPJq4w==}
engines: {node: '>=20.9.0'}
hasBin: true
peerDependencies:
@@ -1939,8 +1898,8 @@ packages:
encoding:
optional: true
- node-releases@2.0.46:
- resolution: {integrity: sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==}
+ node-releases@2.0.47:
+ resolution: {integrity: sha512-Uzmd6LXpouKo8EUK68IjH4+E01w/hXyV3R3g/geCJo+rXLNfh1xucB+LOzYEOQPSiUK3h/xZf0cQGcSsmyL2Og==}
engines: {node: '>=18'}
normalize-path@3.0.0:
@@ -2105,13 +2064,13 @@ packages:
resolution: {integrity: sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==}
engines: {node: '>= 0.10'}
- react-dom@19.2.6:
- resolution: {integrity: sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==}
+ react-dom@19.2.7:
+ resolution: {integrity: sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==}
peerDependencies:
- react: ^19.2.6
+ react: ^19.2.7
- react@19.2.6:
- resolution: {integrity: sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==}
+ react@19.2.7:
+ resolution: {integrity: sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0:
@@ -2364,17 +2323,17 @@ packages:
engines: {node: ^16.13.0 || >=18.0.0}
hasBin: true
- workerd@1.20260529.1:
- resolution: {integrity: sha512-G1rurOKEdzCtFE0yUPR9J9mUnPzMU8NdsD7NKM1/oMyCr1j3VEtWJzc5VbhgFQHNBVWrHzCL0JgVPuBirRW31g==}
+ workerd@1.20260601.1:
+ resolution: {integrity: sha512-Bg4+HF3B8TW0urAv8chiz25HSQ/aJxMBjgheUzu/nB1NQa+CaKGrUPv+Z3bf0np/WxLHYW1kcseVEtzZVPbX4g==}
engines: {node: '>=16'}
hasBin: true
- wrangler@4.96.0:
- resolution: {integrity: sha512-8WuiMutalyfBB74wwRyy4VKKJEHjQuEnwcvdUav1M5AfQ8VaTYY5ZQnzvVZPOVXap40k5Mntz1LY3SPWpPukTg==}
+ wrangler@4.97.0:
+ resolution: {integrity: sha512-jzW/aNvjerV+4TmwbvwGY6lpcuBk7EFUTonMDNfci45wSmMTj2/OJN+83cc/CeepKdb+6ZjGJw9NRjmcQoxqRg==}
engines: {node: '>=22.0.0'}
hasBin: true
peerDependencies:
- '@cloudflare/workers-types': ^4.20260529.1
+ '@cloudflare/workers-types': ^4.20260601.1
peerDependenciesMeta:
'@cloudflare/workers-types':
optional: true
@@ -3028,25 +2987,25 @@ snapshots:
'@cloudflare/kv-asset-handler@0.5.0': {}
- '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260529.1)':
+ '@cloudflare/unenv-preset@2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1)':
dependencies:
unenv: 2.0.0-rc.24
optionalDependencies:
- workerd: 1.20260529.1
+ workerd: 1.20260601.1
- '@cloudflare/workerd-darwin-64@1.20260529.1':
+ '@cloudflare/workerd-darwin-64@1.20260601.1':
optional: true
- '@cloudflare/workerd-darwin-arm64@1.20260529.1':
+ '@cloudflare/workerd-darwin-arm64@1.20260601.1':
optional: true
- '@cloudflare/workerd-linux-64@1.20260529.1':
+ '@cloudflare/workerd-linux-64@1.20260601.1':
optional: true
- '@cloudflare/workerd-linux-arm64@1.20260529.1':
+ '@cloudflare/workerd-linux-arm64@1.20260601.1':
optional: true
- '@cloudflare/workerd-windows-64@1.20260529.1':
+ '@cloudflare/workerd-windows-64@1.20260601.1':
optional: true
'@cspotcode/source-map-support@0.8.1':
@@ -3424,30 +3383,30 @@ snapshots:
'@jridgewell/resolve-uri': 3.1.2
'@jridgewell/sourcemap-codec': 1.5.5
- '@next/env@16.2.6': {}
+ '@next/env@16.2.7': {}
- '@next/swc-darwin-arm64@16.2.6':
+ '@next/swc-darwin-arm64@16.2.7':
optional: true
- '@next/swc-darwin-x64@16.2.6':
+ '@next/swc-darwin-x64@16.2.7':
optional: true
- '@next/swc-linux-arm64-gnu@16.2.6':
+ '@next/swc-linux-arm64-gnu@16.2.7':
optional: true
- '@next/swc-linux-arm64-musl@16.2.6':
+ '@next/swc-linux-arm64-musl@16.2.7':
optional: true
- '@next/swc-linux-x64-gnu@16.2.6':
+ '@next/swc-linux-x64-gnu@16.2.7':
optional: true
- '@next/swc-linux-x64-musl@16.2.6':
+ '@next/swc-linux-x64-musl@16.2.7':
optional: true
- '@next/swc-win32-arm64-msvc@16.2.6':
+ '@next/swc-win32-arm64-msvc@16.2.7':
optional: true
- '@next/swc-win32-x64-msvc@16.2.6':
+ '@next/swc-win32-x64-msvc@16.2.7':
optional: true
'@noble/ciphers@1.3.0': {}
@@ -3487,7 +3446,7 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.20.1
- '@opennextjs/aws@4.0.2(next@16.2.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6))':
+ '@opennextjs/aws@4.0.2(next@16.2.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7))':
dependencies:
'@ast-grep/napi': 0.40.5
'@aws-sdk/client-cloudfront': 3.984.0
@@ -3503,26 +3462,26 @@ snapshots:
cookie: 1.1.1
esbuild: 0.25.4
express: 5.2.1
- next: 16.2.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ next: 16.2.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
path-to-regexp: 6.3.0
urlpattern-polyfill: 10.1.0
yaml: 2.9.0
transitivePeerDependencies:
- supports-color
- '@opennextjs/cloudflare@1.19.11(next@16.2.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6))(wrangler@4.96.0)':
+ '@opennextjs/cloudflare@1.19.11(next@16.2.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7))(wrangler@4.97.0)':
dependencies:
'@ast-grep/napi': 0.40.5
'@dotenvx/dotenvx': 1.31.0
- '@opennextjs/aws': 4.0.2(next@16.2.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6))
+ '@opennextjs/aws': 4.0.2(next@16.2.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7))
ci-info: 4.4.0
cloudflare: 4.5.0
comment-json: 4.6.2
enquirer: 2.4.1
glob: 12.0.0
- next: 16.2.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6)
+ next: 16.2.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7)
ts-tqdm: 0.8.6
- wrangler: 4.96.0
+ wrangler: 4.97.0
yargs: 18.0.0
transitivePeerDependencies:
- encoding
@@ -3757,11 +3716,11 @@ snapshots:
dependencies:
undici-types: 6.21.0
- '@types/react-dom@19.2.3(@types/react@19.2.15)':
+ '@types/react-dom@19.2.3(@types/react@19.2.16)':
dependencies:
- '@types/react': 19.2.15
+ '@types/react': 19.2.16
- '@types/react@19.2.15':
+ '@types/react@19.2.16':
dependencies:
csstype: 3.2.3
@@ -3854,8 +3813,8 @@ snapshots:
dependencies:
baseline-browser-mapping: 2.10.33
caniuse-lite: 1.0.30001793
- electron-to-chromium: 1.5.364
- node-releases: 2.0.46
+ electron-to-chromium: 1.5.365
+ node-releases: 2.0.47
update-browserslist-db: 1.2.3(browserslist@4.28.2)
buffer-from@1.1.2: {}
@@ -3998,7 +3957,7 @@ snapshots:
ee-first@1.1.1: {}
- electron-to-chromium@1.5.364: {}
+ electron-to-chromium@1.5.365: {}
emoji-regex@10.6.0: {}
@@ -4375,12 +4334,12 @@ snapshots:
mimic-fn@2.1.0: {}
- miniflare@4.20260529.0:
+ miniflare@4.20260601.0:
dependencies:
'@cspotcode/source-map-support': 0.8.1
sharp: 0.34.5
undici: 7.24.8
- workerd: 1.20260529.1
+ workerd: 1.20260601.1
ws: 8.20.1
youch: 4.1.0-beta.10
transitivePeerDependencies:
@@ -4417,25 +4376,25 @@ snapshots:
negotiator@1.0.0: {}
- next@16.2.6(react-dom@19.2.6(react@19.2.6))(react@19.2.6):
+ next@16.2.7(react-dom@19.2.7(react@19.2.7))(react@19.2.7):
dependencies:
- '@next/env': 16.2.6
+ '@next/env': 16.2.7
'@swc/helpers': 0.5.15
baseline-browser-mapping: 2.10.33
caniuse-lite: 1.0.30001793
postcss: 8.4.31
- react: 19.2.6
- react-dom: 19.2.6(react@19.2.6)
- styled-jsx: 5.1.6(react@19.2.6)
+ react: 19.2.7
+ react-dom: 19.2.7(react@19.2.7)
+ styled-jsx: 5.1.6(react@19.2.7)
optionalDependencies:
- '@next/swc-darwin-arm64': 16.2.6
- '@next/swc-darwin-x64': 16.2.6
- '@next/swc-linux-arm64-gnu': 16.2.6
- '@next/swc-linux-arm64-musl': 16.2.6
- '@next/swc-linux-x64-gnu': 16.2.6
- '@next/swc-linux-x64-musl': 16.2.6
- '@next/swc-win32-arm64-msvc': 16.2.6
- '@next/swc-win32-x64-msvc': 16.2.6
+ '@next/swc-darwin-arm64': 16.2.7
+ '@next/swc-darwin-x64': 16.2.7
+ '@next/swc-linux-arm64-gnu': 16.2.7
+ '@next/swc-linux-arm64-musl': 16.2.7
+ '@next/swc-linux-x64-gnu': 16.2.7
+ '@next/swc-linux-x64-musl': 16.2.7
+ '@next/swc-win32-arm64-msvc': 16.2.7
+ '@next/swc-win32-x64-msvc': 16.2.7
sharp: 0.34.5
transitivePeerDependencies:
- '@babel/core'
@@ -4447,7 +4406,7 @@ snapshots:
dependencies:
whatwg-url: 5.0.0
- node-releases@2.0.46: {}
+ node-releases@2.0.47: {}
normalize-path@3.0.0: {}
@@ -4577,12 +4536,12 @@ snapshots:
iconv-lite: 0.7.2
unpipe: 1.0.0
- react-dom@19.2.6(react@19.2.6):
+ react-dom@19.2.7(react@19.2.7):
dependencies:
- react: 19.2.6
+ react: 19.2.7
scheduler: 0.27.0
- react@19.2.6: {}
+ react@19.2.7: {}
read-cache@1.0.0:
dependencies:
@@ -4776,10 +4735,10 @@ snapshots:
strnum@2.3.0: {}
- styled-jsx@5.1.6(react@19.2.6):
+ styled-jsx@5.1.6(react@19.2.7):
dependencies:
client-only: 0.0.1
- react: 19.2.6
+ react: 19.2.7
sucrase@3.35.1:
dependencies:
@@ -4906,24 +4865,24 @@ snapshots:
dependencies:
isexe: 3.1.5
- workerd@1.20260529.1:
+ workerd@1.20260601.1:
optionalDependencies:
- '@cloudflare/workerd-darwin-64': 1.20260529.1
- '@cloudflare/workerd-darwin-arm64': 1.20260529.1
- '@cloudflare/workerd-linux-64': 1.20260529.1
- '@cloudflare/workerd-linux-arm64': 1.20260529.1
- '@cloudflare/workerd-windows-64': 1.20260529.1
+ '@cloudflare/workerd-darwin-64': 1.20260601.1
+ '@cloudflare/workerd-darwin-arm64': 1.20260601.1
+ '@cloudflare/workerd-linux-64': 1.20260601.1
+ '@cloudflare/workerd-linux-arm64': 1.20260601.1
+ '@cloudflare/workerd-windows-64': 1.20260601.1
- wrangler@4.96.0:
+ wrangler@4.97.0:
dependencies:
'@cloudflare/kv-asset-handler': 0.5.0
- '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260529.1)
+ '@cloudflare/unenv-preset': 2.16.1(unenv@2.0.0-rc.24)(workerd@1.20260601.1)
blake3-wasm: 2.1.5
esbuild: 0.27.3
- miniflare: 4.20260529.0
+ miniflare: 4.20260601.0
path-to-regexp: 6.3.0
unenv: 2.0.0-rc.24
- workerd: 1.20260529.1
+ workerd: 1.20260601.1
optionalDependencies:
fsevents: 2.3.3
transitivePeerDependencies:
diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml
deleted file mode 100644
index 3ff5faa..0000000
--- a/pnpm-workspace.yaml
+++ /dev/null
@@ -1,3 +0,0 @@
-packages:
- - "apps/*"
- - "packages/*"
diff --git a/apps/web/postcss.config.mjs b/postcss.config.mjs
similarity index 100%
rename from apps/web/postcss.config.mjs
rename to postcss.config.mjs
diff --git a/apps/web/public/home/f0.webp b/public/home/f0.webp
similarity index 100%
rename from apps/web/public/home/f0.webp
rename to public/home/f0.webp
diff --git a/apps/web/public/home/f1.webp b/public/home/f1.webp
similarity index 100%
rename from apps/web/public/home/f1.webp
rename to public/home/f1.webp
diff --git a/apps/web/public/home/f10.webp b/public/home/f10.webp
similarity index 100%
rename from apps/web/public/home/f10.webp
rename to public/home/f10.webp
diff --git a/apps/web/public/home/f11.webp b/public/home/f11.webp
similarity index 100%
rename from apps/web/public/home/f11.webp
rename to public/home/f11.webp
diff --git a/apps/web/public/home/f12.webp b/public/home/f12.webp
similarity index 100%
rename from apps/web/public/home/f12.webp
rename to public/home/f12.webp
diff --git a/apps/web/public/home/f13.webp b/public/home/f13.webp
similarity index 100%
rename from apps/web/public/home/f13.webp
rename to public/home/f13.webp
diff --git a/apps/web/public/home/f14.webp b/public/home/f14.webp
similarity index 100%
rename from apps/web/public/home/f14.webp
rename to public/home/f14.webp
diff --git a/apps/web/public/home/f15.webp b/public/home/f15.webp
similarity index 100%
rename from apps/web/public/home/f15.webp
rename to public/home/f15.webp
diff --git a/apps/web/public/home/f16.webp b/public/home/f16.webp
similarity index 100%
rename from apps/web/public/home/f16.webp
rename to public/home/f16.webp
diff --git a/apps/web/public/home/f17.webp b/public/home/f17.webp
similarity index 100%
rename from apps/web/public/home/f17.webp
rename to public/home/f17.webp
diff --git a/apps/web/public/home/f18.webp b/public/home/f18.webp
similarity index 100%
rename from apps/web/public/home/f18.webp
rename to public/home/f18.webp
diff --git a/apps/web/public/home/f19.webp b/public/home/f19.webp
similarity index 100%
rename from apps/web/public/home/f19.webp
rename to public/home/f19.webp
diff --git a/apps/web/public/home/f2.webp b/public/home/f2.webp
similarity index 100%
rename from apps/web/public/home/f2.webp
rename to public/home/f2.webp
diff --git a/apps/web/public/home/f20.webp b/public/home/f20.webp
similarity index 100%
rename from apps/web/public/home/f20.webp
rename to public/home/f20.webp
diff --git a/apps/web/public/home/f21.webp b/public/home/f21.webp
similarity index 100%
rename from apps/web/public/home/f21.webp
rename to public/home/f21.webp
diff --git a/apps/web/public/home/f22.webp b/public/home/f22.webp
similarity index 100%
rename from apps/web/public/home/f22.webp
rename to public/home/f22.webp
diff --git a/apps/web/public/home/f23.webp b/public/home/f23.webp
similarity index 100%
rename from apps/web/public/home/f23.webp
rename to public/home/f23.webp
diff --git a/apps/web/public/home/f24.webp b/public/home/f24.webp
similarity index 100%
rename from apps/web/public/home/f24.webp
rename to public/home/f24.webp
diff --git a/apps/web/public/home/f25.webp b/public/home/f25.webp
similarity index 100%
rename from apps/web/public/home/f25.webp
rename to public/home/f25.webp
diff --git a/apps/web/public/home/f26.webp b/public/home/f26.webp
similarity index 100%
rename from apps/web/public/home/f26.webp
rename to public/home/f26.webp
diff --git a/apps/web/public/home/f27.webp b/public/home/f27.webp
similarity index 100%
rename from apps/web/public/home/f27.webp
rename to public/home/f27.webp
diff --git a/apps/web/public/home/f28.webp b/public/home/f28.webp
similarity index 100%
rename from apps/web/public/home/f28.webp
rename to public/home/f28.webp
diff --git a/apps/web/public/home/f29.webp b/public/home/f29.webp
similarity index 100%
rename from apps/web/public/home/f29.webp
rename to public/home/f29.webp
diff --git a/apps/web/public/home/f3.webp b/public/home/f3.webp
similarity index 100%
rename from apps/web/public/home/f3.webp
rename to public/home/f3.webp
diff --git a/apps/web/public/home/f30.webp b/public/home/f30.webp
similarity index 100%
rename from apps/web/public/home/f30.webp
rename to public/home/f30.webp
diff --git a/apps/web/public/home/f31.webp b/public/home/f31.webp
similarity index 100%
rename from apps/web/public/home/f31.webp
rename to public/home/f31.webp
diff --git a/apps/web/public/home/f4.webp b/public/home/f4.webp
similarity index 100%
rename from apps/web/public/home/f4.webp
rename to public/home/f4.webp
diff --git a/apps/web/public/home/f5.webp b/public/home/f5.webp
similarity index 100%
rename from apps/web/public/home/f5.webp
rename to public/home/f5.webp
diff --git a/apps/web/public/home/f6.webp b/public/home/f6.webp
similarity index 100%
rename from apps/web/public/home/f6.webp
rename to public/home/f6.webp
diff --git a/apps/web/public/home/f7.webp b/public/home/f7.webp
similarity index 100%
rename from apps/web/public/home/f7.webp
rename to public/home/f7.webp
diff --git a/apps/web/public/home/f8.webp b/public/home/f8.webp
similarity index 100%
rename from apps/web/public/home/f8.webp
rename to public/home/f8.webp
diff --git a/apps/web/public/home/f9.webp b/public/home/f9.webp
similarity index 100%
rename from apps/web/public/home/f9.webp
rename to public/home/f9.webp
diff --git a/apps/web/public/home/firstact/f0.json b/public/home/firstact/f0.json
similarity index 100%
rename from apps/web/public/home/firstact/f0.json
rename to public/home/firstact/f0.json
diff --git a/apps/web/public/home/firstact/f1.json b/public/home/firstact/f1.json
similarity index 100%
rename from apps/web/public/home/firstact/f1.json
rename to public/home/firstact/f1.json
diff --git a/apps/web/public/home/firstact/f10.json b/public/home/firstact/f10.json
similarity index 100%
rename from apps/web/public/home/firstact/f10.json
rename to public/home/firstact/f10.json
diff --git a/apps/web/public/home/firstact/f11.json b/public/home/firstact/f11.json
similarity index 100%
rename from apps/web/public/home/firstact/f11.json
rename to public/home/firstact/f11.json
diff --git a/apps/web/public/home/firstact/f12.json b/public/home/firstact/f12.json
similarity index 100%
rename from apps/web/public/home/firstact/f12.json
rename to public/home/firstact/f12.json
diff --git a/apps/web/public/home/firstact/f13.json b/public/home/firstact/f13.json
similarity index 100%
rename from apps/web/public/home/firstact/f13.json
rename to public/home/firstact/f13.json
diff --git a/apps/web/public/home/firstact/f2.json b/public/home/firstact/f2.json
similarity index 100%
rename from apps/web/public/home/firstact/f2.json
rename to public/home/firstact/f2.json
diff --git a/apps/web/public/home/firstact/f3.json b/public/home/firstact/f3.json
similarity index 100%
rename from apps/web/public/home/firstact/f3.json
rename to public/home/firstact/f3.json
diff --git a/apps/web/public/home/firstact/f4.json b/public/home/firstact/f4.json
similarity index 100%
rename from apps/web/public/home/firstact/f4.json
rename to public/home/firstact/f4.json
diff --git a/apps/web/public/home/firstact/f5.json b/public/home/firstact/f5.json
similarity index 100%
rename from apps/web/public/home/firstact/f5.json
rename to public/home/firstact/f5.json
diff --git a/apps/web/public/home/firstact/f6.json b/public/home/firstact/f6.json
similarity index 100%
rename from apps/web/public/home/firstact/f6.json
rename to public/home/firstact/f6.json
diff --git a/apps/web/public/home/firstact/f7.json b/public/home/firstact/f7.json
similarity index 100%
rename from apps/web/public/home/firstact/f7.json
rename to public/home/firstact/f7.json
diff --git a/apps/web/public/home/firstact/f8.json b/public/home/firstact/f8.json
similarity index 100%
rename from apps/web/public/home/firstact/f8.json
rename to public/home/firstact/f8.json
diff --git a/apps/web/public/home/firstact/f9.json b/public/home/firstact/f9.json
similarity index 100%
rename from apps/web/public/home/firstact/f9.json
rename to public/home/firstact/f9.json
diff --git a/apps/web/public/home/firstact/m0.json b/public/home/firstact/m0.json
similarity index 100%
rename from apps/web/public/home/firstact/m0.json
rename to public/home/firstact/m0.json
diff --git a/apps/web/public/home/firstact/m1.json b/public/home/firstact/m1.json
similarity index 100%
rename from apps/web/public/home/firstact/m1.json
rename to public/home/firstact/m1.json
diff --git a/apps/web/public/home/firstact/m10.json b/public/home/firstact/m10.json
similarity index 100%
rename from apps/web/public/home/firstact/m10.json
rename to public/home/firstact/m10.json
diff --git a/apps/web/public/home/firstact/m11.json b/public/home/firstact/m11.json
similarity index 100%
rename from apps/web/public/home/firstact/m11.json
rename to public/home/firstact/m11.json
diff --git a/apps/web/public/home/firstact/m12.json b/public/home/firstact/m12.json
similarity index 100%
rename from apps/web/public/home/firstact/m12.json
rename to public/home/firstact/m12.json
diff --git a/apps/web/public/home/firstact/m13.json b/public/home/firstact/m13.json
similarity index 100%
rename from apps/web/public/home/firstact/m13.json
rename to public/home/firstact/m13.json
diff --git a/apps/web/public/home/firstact/m15.json b/public/home/firstact/m15.json
similarity index 100%
rename from apps/web/public/home/firstact/m15.json
rename to public/home/firstact/m15.json
diff --git a/apps/web/public/home/firstact/m16.json b/public/home/firstact/m16.json
similarity index 100%
rename from apps/web/public/home/firstact/m16.json
rename to public/home/firstact/m16.json
diff --git a/apps/web/public/home/firstact/m17.json b/public/home/firstact/m17.json
similarity index 100%
rename from apps/web/public/home/firstact/m17.json
rename to public/home/firstact/m17.json
diff --git a/apps/web/public/home/firstact/m18.json b/public/home/firstact/m18.json
similarity index 100%
rename from apps/web/public/home/firstact/m18.json
rename to public/home/firstact/m18.json
diff --git a/apps/web/public/home/firstact/m19.json b/public/home/firstact/m19.json
similarity index 100%
rename from apps/web/public/home/firstact/m19.json
rename to public/home/firstact/m19.json
diff --git a/apps/web/public/home/firstact/m2.json b/public/home/firstact/m2.json
similarity index 100%
rename from apps/web/public/home/firstact/m2.json
rename to public/home/firstact/m2.json
diff --git a/apps/web/public/home/firstact/m20.json b/public/home/firstact/m20.json
similarity index 100%
rename from apps/web/public/home/firstact/m20.json
rename to public/home/firstact/m20.json
diff --git a/apps/web/public/home/firstact/m21.json b/public/home/firstact/m21.json
similarity index 100%
rename from apps/web/public/home/firstact/m21.json
rename to public/home/firstact/m21.json
diff --git a/apps/web/public/home/firstact/m22.json b/public/home/firstact/m22.json
similarity index 100%
rename from apps/web/public/home/firstact/m22.json
rename to public/home/firstact/m22.json
diff --git a/apps/web/public/home/firstact/m23.json b/public/home/firstact/m23.json
similarity index 100%
rename from apps/web/public/home/firstact/m23.json
rename to public/home/firstact/m23.json
diff --git a/apps/web/public/home/firstact/m24.json b/public/home/firstact/m24.json
similarity index 100%
rename from apps/web/public/home/firstact/m24.json
rename to public/home/firstact/m24.json
diff --git a/apps/web/public/home/firstact/m25.json b/public/home/firstact/m25.json
similarity index 100%
rename from apps/web/public/home/firstact/m25.json
rename to public/home/firstact/m25.json
diff --git a/apps/web/public/home/firstact/m26.json b/public/home/firstact/m26.json
similarity index 100%
rename from apps/web/public/home/firstact/m26.json
rename to public/home/firstact/m26.json
diff --git a/apps/web/public/home/firstact/m27.json b/public/home/firstact/m27.json
similarity index 100%
rename from apps/web/public/home/firstact/m27.json
rename to public/home/firstact/m27.json
diff --git a/apps/web/public/home/firstact/m28.json b/public/home/firstact/m28.json
similarity index 100%
rename from apps/web/public/home/firstact/m28.json
rename to public/home/firstact/m28.json
diff --git a/apps/web/public/home/firstact/m3.json b/public/home/firstact/m3.json
similarity index 100%
rename from apps/web/public/home/firstact/m3.json
rename to public/home/firstact/m3.json
diff --git a/apps/web/public/home/firstact/m30.json b/public/home/firstact/m30.json
similarity index 100%
rename from apps/web/public/home/firstact/m30.json
rename to public/home/firstact/m30.json
diff --git a/apps/web/public/home/firstact/m31.json b/public/home/firstact/m31.json
similarity index 100%
rename from apps/web/public/home/firstact/m31.json
rename to public/home/firstact/m31.json
diff --git a/apps/web/public/home/firstact/m4.json b/public/home/firstact/m4.json
similarity index 100%
rename from apps/web/public/home/firstact/m4.json
rename to public/home/firstact/m4.json
diff --git a/apps/web/public/home/firstact/m5.json b/public/home/firstact/m5.json
similarity index 100%
rename from apps/web/public/home/firstact/m5.json
rename to public/home/firstact/m5.json
diff --git a/apps/web/public/home/firstact/m6.json b/public/home/firstact/m6.json
similarity index 100%
rename from apps/web/public/home/firstact/m6.json
rename to public/home/firstact/m6.json
diff --git a/apps/web/public/home/firstact/m7.json b/public/home/firstact/m7.json
similarity index 100%
rename from apps/web/public/home/firstact/m7.json
rename to public/home/firstact/m7.json
diff --git a/apps/web/public/home/firstact/m8.json b/public/home/firstact/m8.json
similarity index 100%
rename from apps/web/public/home/firstact/m8.json
rename to public/home/firstact/m8.json
diff --git a/apps/web/public/home/firstact/m9.json b/public/home/firstact/m9.json
similarity index 100%
rename from apps/web/public/home/firstact/m9.json
rename to public/home/firstact/m9.json
diff --git a/apps/web/public/home/firstscene/f0.webp b/public/home/firstscene/f0.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f0.webp
rename to public/home/firstscene/f0.webp
diff --git a/apps/web/public/home/firstscene/f1.webp b/public/home/firstscene/f1.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f1.webp
rename to public/home/firstscene/f1.webp
diff --git a/apps/web/public/home/firstscene/f10.webp b/public/home/firstscene/f10.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f10.webp
rename to public/home/firstscene/f10.webp
diff --git a/apps/web/public/home/firstscene/f11.webp b/public/home/firstscene/f11.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f11.webp
rename to public/home/firstscene/f11.webp
diff --git a/apps/web/public/home/firstscene/f12.webp b/public/home/firstscene/f12.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f12.webp
rename to public/home/firstscene/f12.webp
diff --git a/apps/web/public/home/firstscene/f13.webp b/public/home/firstscene/f13.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f13.webp
rename to public/home/firstscene/f13.webp
diff --git a/apps/web/public/home/firstscene/f2.webp b/public/home/firstscene/f2.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f2.webp
rename to public/home/firstscene/f2.webp
diff --git a/apps/web/public/home/firstscene/f3.webp b/public/home/firstscene/f3.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f3.webp
rename to public/home/firstscene/f3.webp
diff --git a/apps/web/public/home/firstscene/f4.webp b/public/home/firstscene/f4.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f4.webp
rename to public/home/firstscene/f4.webp
diff --git a/apps/web/public/home/firstscene/f5.webp b/public/home/firstscene/f5.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f5.webp
rename to public/home/firstscene/f5.webp
diff --git a/apps/web/public/home/firstscene/f6.webp b/public/home/firstscene/f6.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f6.webp
rename to public/home/firstscene/f6.webp
diff --git a/apps/web/public/home/firstscene/f7.webp b/public/home/firstscene/f7.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f7.webp
rename to public/home/firstscene/f7.webp
diff --git a/apps/web/public/home/firstscene/f8.webp b/public/home/firstscene/f8.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f8.webp
rename to public/home/firstscene/f8.webp
diff --git a/apps/web/public/home/firstscene/f9.webp b/public/home/firstscene/f9.webp
similarity index 100%
rename from apps/web/public/home/firstscene/f9.webp
rename to public/home/firstscene/f9.webp
diff --git a/apps/web/public/home/firstscene/m0.webp b/public/home/firstscene/m0.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m0.webp
rename to public/home/firstscene/m0.webp
diff --git a/apps/web/public/home/firstscene/m1.webp b/public/home/firstscene/m1.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m1.webp
rename to public/home/firstscene/m1.webp
diff --git a/apps/web/public/home/firstscene/m10.webp b/public/home/firstscene/m10.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m10.webp
rename to public/home/firstscene/m10.webp
diff --git a/apps/web/public/home/firstscene/m11.webp b/public/home/firstscene/m11.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m11.webp
rename to public/home/firstscene/m11.webp
diff --git a/apps/web/public/home/firstscene/m12.webp b/public/home/firstscene/m12.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m12.webp
rename to public/home/firstscene/m12.webp
diff --git a/apps/web/public/home/firstscene/m13.webp b/public/home/firstscene/m13.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m13.webp
rename to public/home/firstscene/m13.webp
diff --git a/apps/web/public/home/firstscene/m15.webp b/public/home/firstscene/m15.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m15.webp
rename to public/home/firstscene/m15.webp
diff --git a/apps/web/public/home/firstscene/m16.webp b/public/home/firstscene/m16.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m16.webp
rename to public/home/firstscene/m16.webp
diff --git a/apps/web/public/home/firstscene/m17.webp b/public/home/firstscene/m17.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m17.webp
rename to public/home/firstscene/m17.webp
diff --git a/apps/web/public/home/firstscene/m18.webp b/public/home/firstscene/m18.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m18.webp
rename to public/home/firstscene/m18.webp
diff --git a/apps/web/public/home/firstscene/m19.webp b/public/home/firstscene/m19.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m19.webp
rename to public/home/firstscene/m19.webp
diff --git a/apps/web/public/home/firstscene/m2.webp b/public/home/firstscene/m2.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m2.webp
rename to public/home/firstscene/m2.webp
diff --git a/apps/web/public/home/firstscene/m20.webp b/public/home/firstscene/m20.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m20.webp
rename to public/home/firstscene/m20.webp
diff --git a/apps/web/public/home/firstscene/m21.webp b/public/home/firstscene/m21.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m21.webp
rename to public/home/firstscene/m21.webp
diff --git a/apps/web/public/home/firstscene/m22.webp b/public/home/firstscene/m22.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m22.webp
rename to public/home/firstscene/m22.webp
diff --git a/apps/web/public/home/firstscene/m23.webp b/public/home/firstscene/m23.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m23.webp
rename to public/home/firstscene/m23.webp
diff --git a/apps/web/public/home/firstscene/m24.webp b/public/home/firstscene/m24.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m24.webp
rename to public/home/firstscene/m24.webp
diff --git a/apps/web/public/home/firstscene/m25.webp b/public/home/firstscene/m25.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m25.webp
rename to public/home/firstscene/m25.webp
diff --git a/apps/web/public/home/firstscene/m26.webp b/public/home/firstscene/m26.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m26.webp
rename to public/home/firstscene/m26.webp
diff --git a/apps/web/public/home/firstscene/m27.webp b/public/home/firstscene/m27.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m27.webp
rename to public/home/firstscene/m27.webp
diff --git a/apps/web/public/home/firstscene/m28.webp b/public/home/firstscene/m28.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m28.webp
rename to public/home/firstscene/m28.webp
diff --git a/apps/web/public/home/firstscene/m3.webp b/public/home/firstscene/m3.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m3.webp
rename to public/home/firstscene/m3.webp
diff --git a/apps/web/public/home/firstscene/m30.webp b/public/home/firstscene/m30.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m30.webp
rename to public/home/firstscene/m30.webp
diff --git a/apps/web/public/home/firstscene/m31.webp b/public/home/firstscene/m31.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m31.webp
rename to public/home/firstscene/m31.webp
diff --git a/apps/web/public/home/firstscene/m4.webp b/public/home/firstscene/m4.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m4.webp
rename to public/home/firstscene/m4.webp
diff --git a/apps/web/public/home/firstscene/m5.webp b/public/home/firstscene/m5.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m5.webp
rename to public/home/firstscene/m5.webp
diff --git a/apps/web/public/home/firstscene/m6.webp b/public/home/firstscene/m6.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m6.webp
rename to public/home/firstscene/m6.webp
diff --git a/apps/web/public/home/firstscene/m7.webp b/public/home/firstscene/m7.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m7.webp
rename to public/home/firstscene/m7.webp
diff --git a/apps/web/public/home/firstscene/m8.webp b/public/home/firstscene/m8.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m8.webp
rename to public/home/firstscene/m8.webp
diff --git a/apps/web/public/home/firstscene/m9.webp b/public/home/firstscene/m9.webp
similarity index 100%
rename from apps/web/public/home/firstscene/m9.webp
rename to public/home/firstscene/m9.webp
diff --git a/apps/web/public/home/m0.webp b/public/home/m0.webp
similarity index 100%
rename from apps/web/public/home/m0.webp
rename to public/home/m0.webp
diff --git a/apps/web/public/home/m1.webp b/public/home/m1.webp
similarity index 100%
rename from apps/web/public/home/m1.webp
rename to public/home/m1.webp
diff --git a/apps/web/public/home/m10.webp b/public/home/m10.webp
similarity index 100%
rename from apps/web/public/home/m10.webp
rename to public/home/m10.webp
diff --git a/apps/web/public/home/m11.webp b/public/home/m11.webp
similarity index 100%
rename from apps/web/public/home/m11.webp
rename to public/home/m11.webp
diff --git a/apps/web/public/home/m12.webp b/public/home/m12.webp
similarity index 100%
rename from apps/web/public/home/m12.webp
rename to public/home/m12.webp
diff --git a/apps/web/public/home/m13.webp b/public/home/m13.webp
similarity index 100%
rename from apps/web/public/home/m13.webp
rename to public/home/m13.webp
diff --git a/apps/web/public/home/m14.webp b/public/home/m14.webp
similarity index 100%
rename from apps/web/public/home/m14.webp
rename to public/home/m14.webp
diff --git a/apps/web/public/home/m15.webp b/public/home/m15.webp
similarity index 100%
rename from apps/web/public/home/m15.webp
rename to public/home/m15.webp
diff --git a/apps/web/public/home/m16.webp b/public/home/m16.webp
similarity index 100%
rename from apps/web/public/home/m16.webp
rename to public/home/m16.webp
diff --git a/apps/web/public/home/m17.webp b/public/home/m17.webp
similarity index 100%
rename from apps/web/public/home/m17.webp
rename to public/home/m17.webp
diff --git a/apps/web/public/home/m18.webp b/public/home/m18.webp
similarity index 100%
rename from apps/web/public/home/m18.webp
rename to public/home/m18.webp
diff --git a/apps/web/public/home/m19.webp b/public/home/m19.webp
similarity index 100%
rename from apps/web/public/home/m19.webp
rename to public/home/m19.webp
diff --git a/apps/web/public/home/m2.webp b/public/home/m2.webp
similarity index 100%
rename from apps/web/public/home/m2.webp
rename to public/home/m2.webp
diff --git a/apps/web/public/home/m20.webp b/public/home/m20.webp
similarity index 100%
rename from apps/web/public/home/m20.webp
rename to public/home/m20.webp
diff --git a/apps/web/public/home/m21.webp b/public/home/m21.webp
similarity index 100%
rename from apps/web/public/home/m21.webp
rename to public/home/m21.webp
diff --git a/apps/web/public/home/m22.webp b/public/home/m22.webp
similarity index 100%
rename from apps/web/public/home/m22.webp
rename to public/home/m22.webp
diff --git a/apps/web/public/home/m23.webp b/public/home/m23.webp
similarity index 100%
rename from apps/web/public/home/m23.webp
rename to public/home/m23.webp
diff --git a/apps/web/public/home/m24.webp b/public/home/m24.webp
similarity index 100%
rename from apps/web/public/home/m24.webp
rename to public/home/m24.webp
diff --git a/apps/web/public/home/m25.webp b/public/home/m25.webp
similarity index 100%
rename from apps/web/public/home/m25.webp
rename to public/home/m25.webp
diff --git a/apps/web/public/home/m26.webp b/public/home/m26.webp
similarity index 100%
rename from apps/web/public/home/m26.webp
rename to public/home/m26.webp
diff --git a/apps/web/public/home/m27.webp b/public/home/m27.webp
similarity index 100%
rename from apps/web/public/home/m27.webp
rename to public/home/m27.webp
diff --git a/apps/web/public/home/m28.webp b/public/home/m28.webp
similarity index 100%
rename from apps/web/public/home/m28.webp
rename to public/home/m28.webp
diff --git a/apps/web/public/home/m29.webp b/public/home/m29.webp
similarity index 100%
rename from apps/web/public/home/m29.webp
rename to public/home/m29.webp
diff --git a/apps/web/public/home/m3.webp b/public/home/m3.webp
similarity index 100%
rename from apps/web/public/home/m3.webp
rename to public/home/m3.webp
diff --git a/apps/web/public/home/m30.webp b/public/home/m30.webp
similarity index 100%
rename from apps/web/public/home/m30.webp
rename to public/home/m30.webp
diff --git a/apps/web/public/home/m31.webp b/public/home/m31.webp
similarity index 100%
rename from apps/web/public/home/m31.webp
rename to public/home/m31.webp
diff --git a/apps/web/public/home/m4.webp b/public/home/m4.webp
similarity index 100%
rename from apps/web/public/home/m4.webp
rename to public/home/m4.webp
diff --git a/apps/web/public/home/m5.webp b/public/home/m5.webp
similarity index 100%
rename from apps/web/public/home/m5.webp
rename to public/home/m5.webp
diff --git a/apps/web/public/home/m6.webp b/public/home/m6.webp
similarity index 100%
rename from apps/web/public/home/m6.webp
rename to public/home/m6.webp
diff --git a/apps/web/public/home/m7.webp b/public/home/m7.webp
similarity index 100%
rename from apps/web/public/home/m7.webp
rename to public/home/m7.webp
diff --git a/apps/web/public/home/m8.webp b/public/home/m8.webp
similarity index 100%
rename from apps/web/public/home/m8.webp
rename to public/home/m8.webp
diff --git a/apps/web/public/home/m9.webp b/public/home/m9.webp
similarity index 100%
rename from apps/web/public/home/m9.webp
rename to public/home/m9.webp
diff --git a/apps/web/public/qq-group.webp b/public/qq-group.webp
similarity index 100%
rename from apps/web/public/qq-group.webp
rename to public/qq-group.webp
diff --git a/apps/web/scripts/generate-home-images.mjs b/scripts/generate-home-images.mjs
similarity index 98%
rename from apps/web/scripts/generate-home-images.mjs
rename to scripts/generate-home-images.mjs
index 64d5ad9..d4a638e 100644
--- a/apps/web/scripts/generate-home-images.mjs
+++ b/scripts/generate-home-images.mjs
@@ -1,7 +1,7 @@
#!/usr/bin/env node
/**
* One-off generator: produces the InfiPlot homepage story cards via Runware
- * FLUX.2 and writes them as PNGs under apps/web/public/home/.
+ * FLUX.2 and writes them as PNGs under public/home/.
*
* Flat per-gender layout: 32 male-oriented (m0..m31) + 32 female-oriented
* (f0..f31). All cards are 832x1024 (≈4:5) to match the homepage StoryCard
@@ -11,10 +11,10 @@
* ink / cyberpunk / steampunk / pixel / etc.) so the homepage feels visually
* varied rather than uniformly anime. Stories are 红果-short-drama framed.
*
- * Reads IMAGE_BASE_URL / IMAGE_API_KEY / IMAGE_MODEL from apps/web/.env.local.
+ * Reads IMAGE_BASE_URL / IMAGE_API_KEY / IMAGE_MODEL from .env.local.
*
* Run once:
- * node apps/web/scripts/generate-home-images.mjs
+ * node scripts/generate-home-images.mjs
*
* Idempotent: skips any card whose .png or .webp already exists. Pass --force
* to regenerate everything.
@@ -71,7 +71,7 @@ const BASE_QUALITY =
const W = 832;
const H = 1024;
-// Style suffixes — kept in sync with apps/web/app/page.tsx STYLE_MAP so the
+// Style suffixes — kept in sync with app/page.tsx STYLE_MAP so the
// homepage cover and the in-game styleGuide land on the same aesthetic.
const S = {
二次元: "anime visual novel illustration, japanese galgame aesthetic, soft warm natural light",
diff --git a/apps/web/scripts/localize-firstact-images.mjs b/scripts/localize-firstact-images.mjs
similarity index 96%
rename from apps/web/scripts/localize-firstact-images.mjs
rename to scripts/localize-firstact-images.mjs
index 55f8a74..f365139 100644
--- a/apps/web/scripts/localize-firstact-images.mjs
+++ b/scripts/localize-firstact-images.mjs
@@ -2,7 +2,7 @@
/**
* Post-process for prebake-firstacts: each first-act JSON has imageUrl pointing
* at https://im.runware.ai/... which adds ~1-2s of remote-CDN download on first
- * click. This script downloads every imageUrl to apps/web/public/home/firstscene/
+ * click. This script downloads every imageUrl to public/home/firstscene/
* (webp, compressed) and rewrites the JSON's imageUrl to the local /home/...
* path, so click-to-play is bottlenecked only by JSON parse + local image
* decode (sub-100ms).
@@ -11,7 +11,7 @@
* skipped. Pass --force to re-download everything.
*
* Run once after prebake-firstacts.mjs completes:
- * node apps/web/scripts/localize-firstact-images.mjs
+ * node scripts/localize-firstact-images.mjs
*/
import { fileURLToPath } from "node:url";
diff --git a/apps/web/scripts/optimize-home-images.mjs b/scripts/optimize-home-images.mjs
similarity index 95%
rename from apps/web/scripts/optimize-home-images.mjs
rename to scripts/optimize-home-images.mjs
index 9b76d1e..fd97b42 100644
--- a/apps/web/scripts/optimize-home-images.mjs
+++ b/scripts/optimize-home-images.mjs
@@ -1,6 +1,6 @@
#!/usr/bin/env node
/**
- * Compresses the freshly generated apps/web/public/home/*.png into much
+ * Compresses the freshly generated public/home/*.png into much
* smaller .webp files alongside them, then deletes the originals.
* Output webps target ~1200px on the long edge and quality 78.
*/
diff --git a/apps/web/scripts/prebake-firstacts.mjs b/scripts/prebake-firstacts.mjs
similarity index 98%
rename from apps/web/scripts/prebake-firstacts.mjs
rename to scripts/prebake-firstacts.mjs
index 5c07ace..b66d194 100644
--- a/apps/web/scripts/prebake-firstacts.mjs
+++ b/scripts/prebake-firstacts.mjs
@@ -2,7 +2,7 @@
/**
* One-off generator: produces the InfiPlot homepage "instant-play" first-act
* JSONs by driving each curated card through the live engine (POST /api/start)
- * and saving the full StartResponse under apps/web/public/home/firstact/.
+ * and saving the full StartResponse under public/home/firstact/.
*
* The /play page detects ?card= and hydrates Session from the JSON
* instead of calling /api/start, so click-to-play feels instant — only the
@@ -13,7 +13,7 @@
* Pass --force to regenerate all 64.
*
* Run once:
- * node apps/web/scripts/prebake-firstacts.mjs
+ * node scripts/prebake-firstacts.mjs
*
* Concurrency 4 to avoid LLM/Runware/MiMo provider rate limits.
*/
@@ -30,7 +30,7 @@ const FORCE = process.argv.includes("--force");
const BASE_URL = process.env.BASE_URL ?? "http://localhost:3000";
const CONCURRENCY = 4;
-// Mirror of apps/web/app/page.tsx STYLE_MAP — keep these in sync. The engine
+// Mirror of app/page.tsx STYLE_MAP — keep these in sync. The engine
// only needs the prose styleGuide string; this script maps card.style → that.
const STYLE_MAP = {
二次元: "唯美二次元动漫插画,日系 galgame 精致质感,柔和温暖的自然光照。",
@@ -47,7 +47,7 @@ const STYLE_MAP = {
赛博朋克: "赛博朋克都市,霓虹反射湿润街道,电子义体高光。",
};
-// Mirror of apps/web/app/page.tsx STORIES, flat with name + gender. Indexes
+// Mirror of app/page.tsx STORIES, flat with name + gender. Indexes
// match the m0..m31 / f0..f31 cover filenames.
const CARDS = [
// 男性向 m0..m31
diff --git a/apps/web/tailwind.config.ts b/tailwind.config.ts
similarity index 100%
rename from apps/web/tailwind.config.ts
rename to tailwind.config.ts
diff --git a/tsconfig.base.json b/tsconfig.base.json
deleted file mode 100644
index d195d30..0000000
--- a/tsconfig.base.json
+++ /dev/null
@@ -1,17 +0,0 @@
-{
- "compilerOptions": {
- "target": "ES2022",
- "lib": ["ES2022", "DOM", "DOM.Iterable"],
- "module": "ESNext",
- "moduleResolution": "Bundler",
- "esModuleInterop": true,
- "strict": true,
- "skipLibCheck": true,
- "forceConsistentCasingInFileNames": true,
- "resolveJsonModule": true,
- "isolatedModules": true,
- "noUncheckedIndexedAccess": true,
- "verbatimModuleSyntax": false,
- "jsx": "preserve"
- }
-}
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..bdcf76f
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,56 @@
+{
+ "compilerOptions": {
+ "target": "ES2022",
+ "lib": [
+ "ES2022",
+ "DOM",
+ "DOM.Iterable"
+ ],
+ "module": "ESNext",
+ "moduleResolution": "Bundler",
+ "esModuleInterop": true,
+ "strict": true,
+ "skipLibCheck": true,
+ "forceConsistentCasingInFileNames": true,
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "noUncheckedIndexedAccess": true,
+ "verbatimModuleSyntax": false,
+ "jsx": "react-jsx",
+ "noEmit": true,
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": [
+ "./*"
+ ],
+ "@infiplot/engine": [
+ "./lib/engine/index.ts"
+ ],
+ "@infiplot/ai-client": [
+ "./lib/ai-client/index.ts"
+ ],
+ "@infiplot/tts-client": [
+ "./lib/tts-client/index.ts"
+ ],
+ "@infiplot/types": [
+ "./lib/types/index.ts"
+ ]
+ },
+ "allowJs": true
+ },
+ "include": [
+ "next-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts",
+ ".next/dev/types/**/*.ts"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}
diff --git a/apps/web/vercel.json b/vercel.json
similarity index 100%
rename from apps/web/vercel.json
rename to vercel.json
diff --git a/apps/web/wrangler.jsonc b/wrangler.jsonc
similarity index 86%
rename from apps/web/wrangler.jsonc
rename to wrangler.jsonc
index 37cfd8e..570be18 100644
--- a/apps/web/wrangler.jsonc
+++ b/wrangler.jsonc
@@ -11,7 +11,7 @@
"observability": {
"enabled": true
},
- // 60s mirrors apps/web/vercel.json maxDuration for the scene pipeline tail
+ // 60s mirrors vercel.json maxDuration for the scene pipeline tail
// (multi-agent LLM, ~30-45s p95). Requires Workers Paid — Free is capped
// at 10ms CPU. I/O wait does not count against this budget.
"limits": {