完善AI游戏创作App本地工作区与Agent协作

补齐工作区启动器、非空目录确认和主窗口切换入口

改为运行时配置文件并支持全局与单Agent LLM Provider

接入平台 External API 生成和同步美术资产

补齐本地对话记录、Agent私有记忆和项目黑板

完善Agent状态、历史Run、快照、文件和资产快捷入口

同步AI游戏创作App实施计划和共享决策记录
This commit is contained in:
AIGameCreator App
2026-07-03 01:32:51 +08:00
parent 76b5718d77
commit 998e33ca3d
21 changed files with 24613 additions and 974 deletions
+33 -2
View File
@@ -1938,8 +1938,12 @@ function assertGeneratedNativeShellArtifactsAreIgnored() {
function assertAiGameCreatorShellUserDevBoundary() {
const windows = aiGameCreatorShellTauriConfig.app?.windows ?? [];
if (windows.length !== 1 || windows[0]?.label !== 'main') {
throw new Error('AI game creator release shell must register only the main chat window');
if (
windows.length !== 1 ||
windows[0]?.label !== 'launcher' ||
windows[0]?.url !== 'index.html?launcher'
) {
throw new Error('AI game creator release shell must register only the launcher window');
}
const releaseCsp = aiGameCreatorShellTauriConfig.app?.security?.csp ?? '';
const devCsp = aiGameCreatorShellTauriConfig.app?.security?.devCsp ?? '';
@@ -2015,6 +2019,33 @@ function assertAiGameCreatorShellUserDevBoundary() {
throw new Error(`AI game creator developer window boundary drifted: missing ${snippet}`);
}
}
const workspaceWindowCommandIndex = aiGameCreatorShellTauriSource.indexOf(
'fn open_game_creator_workspace_window(',
);
const launcherWindowCommandIndex = aiGameCreatorShellTauriSource.indexOf(
'fn open_game_creator_launcher_window(',
);
const developerWindowIndex = aiGameCreatorShellTauriSource.indexOf(
'#[cfg(debug_assertions)]\nfn open_developer_window(',
);
const workspaceWindowCommandSource = aiGameCreatorShellTauriSource.slice(
workspaceWindowCommandIndex,
launcherWindowCommandIndex,
);
const launcherWindowCommandSource = aiGameCreatorShellTauriSource.slice(
launcherWindowCommandIndex,
developerWindowIndex,
);
if (
workspaceWindowCommandIndex < 0 ||
launcherWindowCommandIndex < 0 ||
developerWindowIndex < 0 ||
!workspaceWindowCommandSource.includes('window.close().map_err(|error| error.to_string())?;') ||
!launcherWindowCommandSource.includes('window.close().map_err(|error| error.to_string())?;')
) {
throw new Error('AI game creator workspace switch must close the source window');
}
}
function collectProductionShellFiles(entryPath) {