完善Linux工作区命令沙箱

新增 bubblewrap 工作区写入、控制目录保护和默认断网沙箱
统一 command.exec、command.start 与 project.verify 的启动和审计边界
开放 Linux 通用项目命令并保留非 Linux 固定命令兼容边界
补齐持久进程元数据、真实进程测试、共享契约和发布依赖
同步真实 Provider 结论、已知竞态与项目长期文档
This commit is contained in:
AIGameCreator App
2026-07-14 05:54:02 +08:00
parent a9f7bda805
commit 143684011b
18 changed files with 2106 additions and 169 deletions
+9 -8
View File
@@ -1955,10 +1955,10 @@ function assertAiGameCreatorShellUserDevBoundary() {
const windows = aiGameCreatorShellTauriConfig.app?.windows ?? [];
if (
windows.length !== 1 ||
windows[0]?.label !== 'launcher' ||
windows[0]?.url !== 'index.html?launcher'
windows[0]?.label !== 'client' ||
windows[0]?.url !== 'index.html'
) {
throw new Error('AI game creator release shell must register only the launcher window');
throw new Error('AI game creator release shell must register only the client window');
}
const releaseCsp = aiGameCreatorShellTauriConfig.app?.security?.csp ?? '';
const devCsp = aiGameCreatorShellTauriConfig.app?.security?.devCsp ?? '';
@@ -2031,12 +2031,13 @@ function assertAiGameCreatorShellUserDevBoundary() {
}
}
for (const snippet of [
'fn open_developer_window(',
'WebviewWindowBuilder::new(app, "developer"',
'open_developer_window(app)?',
'#[cfg(all(debug_assertions, not(test)))]\npub(crate) fn open_developer_window(',
'#[cfg(all(debug_assertions, not(test)))]\n open_developer_window(app.handle())?;',
]) {
if (aiGameCreatorShellTauriSource.includes(snippet)) {
throw new Error(`AI game creator release shell must not auto-open developer windows: ${snippet}`);
if (!aiGameCreatorShellTauriSource.includes(snippet)) {
throw new Error(
`AI game creator developer window must stay compile-time debug-only: ${snippet}`,
);
}
}