接入 Godot 编辑器插件与受控执行链路

新增 GDExtension 自动引导、GDScript 执行和实例隔离缓存
接入 AGC 插件开关、Runner、Agent 工具与权限审计
完善执行回执确认、不确定状态阻断及卸载恢复
补齐 Windows 分发资源、定向测试与实机验收文档
This commit is contained in:
kdletters
2026-09-20 16:35:04 +08:00
parent 15774a1c02
commit 54d0fb75ea
77 changed files with 11545 additions and 582 deletions
@@ -44,7 +44,7 @@ pub trait EditorAdapter: Send + Sync {
fn id(&self) -> &'static str;
/// 按项目路径探测当前编辑器实例,不注入、不修改项目文件。
fn detect(&self, project_path: &Path) -> Result<EditorConnectionInfo, String>;
/// 绑定目标 PID / 项目 / 版本并验证协议握手;适配器可安装受控进程桥,但不修改项目文件
/// 绑定目标 PID / 项目 / 版本并验证协议握手;受管引导文件仅按对应编辑器已授权合同维护
fn connect(
&mut self,
pid: u32,
@@ -28,7 +28,7 @@ pub struct GameCreationAppCommandDescriptor {
pub permission: GameCreationAppPermission,
}
pub const GAME_CREATION_APP_COMMANDS: [GameCreationAppCommandDescriptor; 66] = [
pub const GAME_CREATION_APP_COMMANDS: [GameCreationAppCommandDescriptor; 67] = [
command("help.show", GameCreationAppPermission::Auto),
command("project.create", GameCreationAppPermission::Confirm),
command("project.rename", GameCreationAppPermission::Confirm),
@@ -85,6 +85,7 @@ pub const GAME_CREATION_APP_COMMANDS: [GameCreationAppCommandDescriptor; 66] = [
command("command.stdin", GameCreationAppPermission::Confirm),
command("command.terminate", GameCreationAppPermission::Confirm),
command("cocos.editor.execute", GameCreationAppPermission::Confirm),
command("godot.editor.execute", GameCreationAppPermission::Confirm),
command("canvas.project_open", GameCreationAppPermission::Confirm),
command("canvas.project_sync", GameCreationAppPermission::Confirm),
command("canvas.asset_import", GameCreationAppPermission::Confirm),
@@ -1263,7 +1264,15 @@ mod tests {
#[test]
fn command_contract_keeps_expected_permissions() {
assert_eq!(GAME_CREATION_APP_COMMANDS.len(), 66);
assert_eq!(GAME_CREATION_APP_COMMANDS.len(), 67);
assert_eq!(
GAME_CREATION_APP_COMMANDS
.iter()
.find(|command| command.id == "godot.editor.execute")
.unwrap()
.permission,
GameCreationAppPermission::Confirm
);
let command_ids = GAME_CREATION_APP_COMMANDS
.iter()