Files
Genarrative/apps/ai-game-creator-shell/package.json
T
lhk229 e57d81454f 合并 master:首页创作类型选择器接管做方案入口,startMode 改为派生
master 这 22 个提交里有一处和本分支正面撞车:它把首页那枚选择器做成了三类型
(做游戏 / 做素材 / 做方案,HomeCreationType),而本分支此前把同一枚控件砍成了
两项(做游戏 / 做方案)并直接用它当路由(ProjectStartMode)。做素材必须与 master
一致,所以取 master 的三类型控件,startMode 不再是独立状态,改为从 creationType
派生:doc → planning,其余 → direct-build。两个字段在 LauncherProjectContext 和
HomeDraft 里并存,creationType 记入口原始类型,startMode 记链路路由。

五处冲突的处理:

- app/types.ts、useHomeProjectCreation.ts:creationType 与 startMode 并存,调用
  顺序统一跟已自动合并好的函数签名走。
- view/home/index.tsx:选择器整段取 master,删掉本分支已无人引用的
  HOME_START_MODES / HOME_START_MODE_ITEMS,startMode 就地派生。
- SupervisorChatOnlyView.tsx:master 新增的 directCodex 活动时间分支保留,内层
  runtime 换成本分支的 projectedRuntime;master 那句
  `!directCodex && synchronizingAcceptedRun` 是冗余的(合并后
  synchronizingAcceptedRun 的定义里已经带了 !directCodex),它重复声明的
  activeCollaboratingRuntimes 也丢掉——上面已经声明过一次。收束判据取本分支的
  runtimeTerminal / descendantsStillActive。
- styles.css:master 的聊天气泡样式与本分支的审批卡高度上限互不相干,都留;补上
  master 最后一条规则缺的闭合括号(它原本借用冲突块外那个共用的 })。

两处测试跟着改:

- appSurface/harness.ts:afterEach 补一次 useLauncherHomeDraftStore.reset()。
  首页创作类型存在 module 级 zustand store 里,跨用例不会回到初始值;合并后建项
  按钮的文案依赖它(做方案 → 进入立项策划),上一个选过做方案的用例会让下一个
  找不到「开启创作」。合并前 startMode 是组件 useState,这个泄漏看不出来。
- appSurface/home.suite.ts:master 新增的用例在选中做方案后仍按「开启创作」找
  按钮,改成「进入立项策划」——本分支有意在这一档改了文案,suite 里本分支自己的
  用例也是按这个口径找的。

验证:npm run typecheck 干净;eslint 改动文件零告警;cargo check --all-targets
通过;appSurface 403/403。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-23 12:33:56 +00:00

77 lines
5.0 KiB
JSON

{
"name": "@genarrative/ai-game-creator-shell",
"private": true,
"version": "0.1.0",
"type": "module",
"scripts": {
"dev": "node scripts/start-tauri-dev.mjs",
"game-chat": "node scripts/start-tauri-dev.mjs --game-chat",
"dev-server": "node scripts/start-dev-server.mjs",
"dev-stack": "node scripts/start-dev-stack.mjs",
"build": "npm --prefix ../.. exec tauri -- build",
"build:game-chat-release": "npm --prefix ../.. exec tauri -- build --config src-tauri/tauri.game-chat-release.conf.json --bundles nsis --features game-chat-release",
"llm-status": "node scripts/run-cli-with-config.mjs --llm-status",
"agent-task": "node scripts/run-cli-with-config.mjs --agent-task",
"chat": "node scripts/run-cli-with-config.mjs --swarm-chat",
"swarm": "node scripts/run-cli-with-config.mjs --swarm-chat",
"config": "node scripts/game-creator-config-wizard.mjs",
"test:chat": "node scripts/agent-swarm-test-chat.mjs --task \"制作一个可直接试玩的原创植物塔防小游戏:玩家选择并放置原创守卫阻挡敌人,完成波次后可以进入下一关并重新开始。主题、单位名称与视觉语言必须原创,不使用任何现有游戏角色、单位名、Logo 或受保护视觉语言。请自主完成正式产物、静态检查和双视口试玩验证。\" --no-open",
"test:chat:manual": "node scripts/agent-swarm-test-chat.mjs",
"test:plan": "node scripts/agent-swarm-test-chat.mjs --plan --task \"我想做一款原创横版像素解谜小游戏,主角是一个能操控自己影子的小机器人,影子可以变成平台和开关。请完成立项策划并给出 Fast GDD。主题、角色名与视觉语言必须原创,不使用任何现有游戏角色、名称、Logo 或受保护视觉语言。\"",
"test:plan:manual": "node scripts/agent-swarm-test-chat.mjs --plan",
"agent-run": "node scripts/run-cli-with-config.mjs --agent-run",
"agent-run:smoke": "node scripts/smoke-agent-run-local-provider.mjs",
"agent-runtime:real-e2e": "node scripts/agent-runtime-real-e2e.mjs",
"agent-runtime:collaboration-policy-real-e2e": "node scripts/agent-runtime-real-e2e.mjs --suite supervisor-swarm-collaboration-policy-mixed-recovery",
"agent-runtime:mixed-swarm-real-e2e": "node scripts/agent-runtime-real-e2e.mjs --suite supervisor-swarm-static-isolated-autonomous-chat",
"agent-runtime:supervisor-swarm-autonomous-chat-real-e2e": "node scripts/agent-runtime-real-e2e.mjs --suite supervisor-swarm-autonomous-chat",
"agent-runtime:supervisor-autonomous-playable-lane-defense-real-e2e": "node scripts/agent-runtime-real-e2e.mjs --suite supervisor-autonomous-playable-lane-defense",
"agent-runtime:supervisor-game-chat-single-main-playable-real-e2e": "node scripts/agent-runtime-real-e2e.mjs --suite supervisor-game-chat-single-main-playable",
"agent-runtime:supervisor-autonomous-playable-lane-defense-deterministic-e2e": "node scripts/agent-runtime-deterministic-playable-e2e.mjs",
"agent-runtime:supervisor-autonomous-playable-lane-defense-deterministic-self-test": "node scripts/agent-runtime-deterministic-playable-e2e.mjs --self-test",
"agent-runtime:supervisor-swarm-transient-retry-real-e2e": "node scripts/agent-runtime-real-e2e.mjs --suite supervisor-swarm-transient-retry",
"agent-runtime:supervisor-swarm-final-reply-transient-retry-real-e2e": "node scripts/agent-runtime-real-e2e.mjs --suite supervisor-swarm-final-reply-transient-retry",
"agent-runtime:supervisor-swarm-tool-plan-handoff-runner-kill-real-e2e": "node scripts/agent-runtime-real-e2e.mjs --suite supervisor-swarm-tool-plan-handoff-runner-kill",
"agent-runtime:steer-real-e2e": "node scripts/agent-runtime-steer-real-e2e.mjs",
"agent-runtime:steer-runner-kill-real-e2e": "node scripts/agent-runtime-real-e2e.mjs --suite steer-runner-kill",
"typecheck": "tsc -p tsconfig.json --noEmit && node scripts/check-config.mjs"
},
"dependencies": {
"@cubone/react-file-manager": "^1.35.0",
"@genarrative/image-canvas-core": "0.1.0",
"@genarrative/image-canvas-react": "0.1.0",
"@genarrative/shared": "0.1.0",
"@lexical/react": "^0.47.0",
"@lexical/utils": "^0.47.0",
"@tauri-apps/api": "^2.11.1",
"@tauri-apps/plugin-clipboard-manager": "2.3.2",
"@tauri-apps/plugin-dialog": "^2.7.2",
"@tauri-apps/plugin-http": "^2.5.9",
"@tauri-apps/plugin-opener": "~2",
"@vitejs/plugin-react": "^5.0.4",
"focus-trap-react": "^12.0.3",
"lexical": "^0.47.0",
"lucide-react": "^0.546.0",
"react": "^19.0.0",
"react-arborist": "^3.16.0",
"react-colorful": "^5.8.0",
"react-dom": "^19.0.0",
"react-markdown": "^10.1.0",
"remark-gfm": "^4.0.1",
"vite": "^6.2.0",
"zustand": "^5.0.14"
},
"devDependencies": {
"@openai/codex": "0.147.0",
"@tailwindcss/vite": "^4.1.14",
"@tauri-apps/cli": "^2.11.2",
"@testing-library/react": "^16.3.2",
"@testing-library/user-event": "^14.6.1",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"tailwindcss": "^4.1.14",
"typescript": "~5.8.2",
"vitest": "^0.34.6"
}
}