删除 asset-canvas Rust 草稿存储与生成链路
- 删除 project/asset_canvas.rs(4784 行,草稿 sidecar、媒体 staging、正式提交事务与 journal) - 删除 project/asset_canvas/generation.rs(9514 行,草稿私有生成账本、参考图上传、服务身份确认、候选落盘与内联 63 个测试) - 删除 project/asset_canvas_tests.rs(2356 行) - project.rs 移除 mod asset_canvas 与 pub(crate) use asset_canvas::* - commands.rs 移除 851-1088 共 18 个 Tauri 命令(含 commit_local_project_asset、commit_local_project_asset_canvas_candidate) - main.rs 从 generate_handler! 移除对应 18 行注册 - 保留 canvas.asset_generate 命令契约(packages/shared 与 shared-contracts 的正式权限合同,Agent Runtime 仍在使用) - 保留 server-rs 的 asset-canvas-references 上传票据白名单契约(后续项,本次不动服务端)
This commit is contained in:
@@ -848,244 +848,6 @@ pub(crate) fn update_local_project_resource_canvas_layout(
|
||||
)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn create_local_project_asset_canvas_draft(
|
||||
input: CreateAssetCanvasDraftInput,
|
||||
) -> Result<CreateAssetCanvasDraftResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
create_asset_canvas_draft_at(&root, &input)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn read_local_project_asset_canvas_draft(
|
||||
input: ReadAssetCanvasDraftInput,
|
||||
) -> Result<ReadAssetCanvasDraftResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
read_asset_canvas_draft_at(&root, &input)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn discover_local_project_asset_canvas_draft(
|
||||
input: DiscoverAssetCanvasDraftInput,
|
||||
) -> Result<DiscoverAssetCanvasDraftResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
discover_asset_canvas_draft_at(&root, &input)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn update_local_project_asset_canvas_draft(
|
||||
input: UpdateAssetCanvasDraftInput,
|
||||
) -> Result<UpdateAssetCanvasDraftResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
update_asset_canvas_draft_at(&root, &input)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn acknowledge_local_project_asset_canvas_candidate_layers(
|
||||
input: AcknowledgeAssetCanvasCandidateLayersInput,
|
||||
) -> Result<AcknowledgeAssetCanvasCandidateLayersResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
acknowledge_candidate_layers_at(&root, &input)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) async fn import_local_project_asset_canvas_images(
|
||||
app: tauri::AppHandle,
|
||||
input: ImportAssetCanvasImagesInput,
|
||||
) -> Result<ImportAssetCanvasImagesResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
let (sender, receiver) = tokio::sync::oneshot::channel();
|
||||
let mut dialog = app
|
||||
.dialog()
|
||||
.file()
|
||||
.set_title("导入图片")
|
||||
.add_filter("图片", &["png", "jpg", "jpeg", "webp"]);
|
||||
if let Some(window) = app.get_webview_window("client") {
|
||||
dialog = dialog.set_parent(&window);
|
||||
}
|
||||
dialog.pick_files(move |paths| {
|
||||
let _ = sender.send(paths);
|
||||
});
|
||||
let Some(paths) = receiver
|
||||
.await
|
||||
.map_err(|_| "图片文件选择器意外关闭".to_string())?
|
||||
else {
|
||||
return Ok(ImportAssetCanvasImagesResult::cancelled());
|
||||
};
|
||||
if paths.is_empty() {
|
||||
return Ok(ImportAssetCanvasImagesResult::cancelled());
|
||||
}
|
||||
let paths = paths
|
||||
.into_iter()
|
||||
.map(|path| {
|
||||
path.into_path()
|
||||
.map_err(|error| format!("读取导入图片路径失败:{error}"))
|
||||
})
|
||||
.collect::<Result<Vec<_>, _>>()?;
|
||||
tokio::task::spawn_blocking(move || import_asset_canvas_images_at(&root, &input, &paths))
|
||||
.await
|
||||
.map_err(|error| format!("图片导入任务异常结束:{error}"))?
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn store_local_project_asset_canvas_media(
|
||||
input: StoreAssetCanvasMediaInput,
|
||||
) -> Result<StoreAssetCanvasMediaResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
store_asset_canvas_media_at(&root, &input)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn stage_local_project_asset_canvas_image(
|
||||
input: StageAssetCanvasImageInput,
|
||||
) -> Result<StageAssetCanvasImageResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
stage_asset_canvas_image_at(&root, &input)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) async fn archive_failed_local_project_asset_canvas_generation(
|
||||
input: ArchiveAssetCanvasGenerationInput,
|
||||
) -> Result<ArchiveAssetCanvasGenerationResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
archive_failed_asset_canvas_generation_at(&root, &input).await
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) async fn generate_local_project_asset_canvas_image(
|
||||
app: tauri::AppHandle,
|
||||
input: GenerateAssetCanvasImageInput,
|
||||
) -> Result<GenerateAssetCanvasImageResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
let progress_app = app.clone();
|
||||
let execution = generate_asset_canvas_image_at(&root, &input, move |payload| {
|
||||
let _ = progress_app.emit(ASSET_CANVAS_GENERATION_PROGRESS_EVENT, payload);
|
||||
})
|
||||
.await?;
|
||||
if let Some(event) = execution.event.as_ref() {
|
||||
publish_asset_canvas_event_after_commit_at(&root, event, |payload| {
|
||||
app.emit(
|
||||
"game-creator-local-asset-committed",
|
||||
asset_canvas_committed_public_event(payload),
|
||||
)
|
||||
.map_err(|error| error.to_string())
|
||||
});
|
||||
}
|
||||
Ok(execution.result)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) async fn finalize_local_project_asset_canvas_generation_failure(
|
||||
input: FinalizeAssetCanvasGenerationFailureInput,
|
||||
) -> Result<FinalizeAssetCanvasGenerationFailureResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
finalize_asset_canvas_generation_failure_at(&root, &input).await
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) async fn recover_local_project_asset_canvas_generations(
|
||||
app: tauri::AppHandle,
|
||||
input: RecoverAssetCanvasGenerationsInput,
|
||||
) -> Result<RecoverAssetCanvasGenerationsResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
let progress_app = app.clone();
|
||||
let execution = recover_asset_canvas_generations_at(&root, &input, move |payload| {
|
||||
let _ = progress_app.emit(ASSET_CANVAS_GENERATION_PROGRESS_EVENT, payload);
|
||||
})
|
||||
.await?;
|
||||
for event in &execution.events {
|
||||
publish_asset_canvas_event_after_commit_at(&root, event, |payload| {
|
||||
app.emit(
|
||||
"game-creator-local-asset-committed",
|
||||
asset_canvas_committed_public_event(payload),
|
||||
)
|
||||
.map_err(|error| error.to_string())
|
||||
});
|
||||
}
|
||||
Ok(execution.result)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) async fn confirm_local_project_asset_canvas_generation_service_identity(
|
||||
input: ConfirmAssetCanvasGenerationServiceIdentityInput,
|
||||
) -> Result<ConfirmAssetCanvasGenerationServiceIdentityResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
confirm_asset_canvas_generation_service_identity_at(&root, &input).await
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn read_local_project_asset_canvas_media(
|
||||
input: ReadAssetCanvasMediaInput,
|
||||
) -> Result<ReadAssetCanvasMediaResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
read_asset_canvas_media_at(&root, &input)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn discard_local_project_asset_canvas_draft(
|
||||
input: DiscardAssetCanvasDraftInput,
|
||||
) -> Result<DiscardAssetCanvasDraftResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
discard_asset_canvas_draft_at(&root, &input)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn commit_local_project_asset(
|
||||
app: tauri::AppHandle,
|
||||
input: CommitAssetCanvasInput,
|
||||
) -> Result<CommitAssetCanvasResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
let execution = commit_asset_canvas_at(&root, &input)?;
|
||||
if let Some(event) = execution.event.as_ref() {
|
||||
publish_asset_canvas_event_after_commit_at(&root, event, |payload| {
|
||||
app.emit(
|
||||
"game-creator-local-asset-committed",
|
||||
asset_canvas_committed_public_event(payload),
|
||||
)
|
||||
.map_err(|error| error.to_string())
|
||||
});
|
||||
}
|
||||
Ok(execution.result)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn commit_local_project_asset_canvas_candidate(
|
||||
app: tauri::AppHandle,
|
||||
input: CommitAssetCanvasCandidateInput,
|
||||
) -> Result<CommitAssetCanvasResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
let execution = commit_asset_canvas_candidate_at(&root, &input)?;
|
||||
if let Some(event) = execution.event.as_ref() {
|
||||
publish_asset_canvas_event_after_commit_at(&root, event, |payload| {
|
||||
app.emit(
|
||||
"game-creator-local-asset-committed",
|
||||
asset_canvas_committed_public_event(payload),
|
||||
)
|
||||
.map_err(|error| error.to_string())
|
||||
});
|
||||
}
|
||||
Ok(execution.result)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) fn recover_local_project_asset_canvas_transactions(
|
||||
app: tauri::AppHandle,
|
||||
input: RecoverAssetCanvasTransactionsInput,
|
||||
) -> Result<RecoverAssetCanvasTransactionsResult, String> {
|
||||
let root = validated_local_project_directory_path(input.project_path.trim())?;
|
||||
let execution = recover_asset_canvas_transactions_at(&root, &input.expected_project_id)?;
|
||||
for event in &execution.events {
|
||||
publish_asset_canvas_event_after_commit_at(&root, event, |payload| {
|
||||
app.emit(
|
||||
"game-creator-local-asset-committed",
|
||||
asset_canvas_committed_public_event(payload),
|
||||
)
|
||||
.map_err(|error| error.to_string())
|
||||
});
|
||||
}
|
||||
Ok(execution.result)
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
pub(crate) async fn control_agent_run(
|
||||
app: tauri::AppHandle,
|
||||
|
||||
@@ -2585,24 +2585,6 @@ fn main() {
|
||||
read_local_project_resource_canvas_layout,
|
||||
read_local_project_resource_graph,
|
||||
update_local_project_resource_canvas_layout,
|
||||
create_local_project_asset_canvas_draft,
|
||||
read_local_project_asset_canvas_draft,
|
||||
discover_local_project_asset_canvas_draft,
|
||||
update_local_project_asset_canvas_draft,
|
||||
acknowledge_local_project_asset_canvas_candidate_layers,
|
||||
import_local_project_asset_canvas_images,
|
||||
store_local_project_asset_canvas_media,
|
||||
stage_local_project_asset_canvas_image,
|
||||
finalize_local_project_asset_canvas_generation_failure,
|
||||
archive_failed_local_project_asset_canvas_generation,
|
||||
generate_local_project_asset_canvas_image,
|
||||
recover_local_project_asset_canvas_generations,
|
||||
confirm_local_project_asset_canvas_generation_service_identity,
|
||||
read_local_project_asset_canvas_media,
|
||||
discard_local_project_asset_canvas_draft,
|
||||
recover_local_project_asset_canvas_transactions,
|
||||
commit_local_project_asset,
|
||||
commit_local_project_asset_canvas_candidate,
|
||||
get_local_game_project_revision,
|
||||
get_local_game_manifest,
|
||||
download_agc_update,
|
||||
|
||||
@@ -4,7 +4,6 @@ use similar::TextDiff;
|
||||
use std::io::{Seek, SeekFrom};
|
||||
|
||||
mod agent_db;
|
||||
mod asset_canvas;
|
||||
mod checkpoint;
|
||||
mod conversation;
|
||||
mod export;
|
||||
@@ -18,7 +17,6 @@ mod resource_layout;
|
||||
mod verification;
|
||||
|
||||
pub(crate) use agent_db::*;
|
||||
pub(crate) use asset_canvas::*;
|
||||
pub(crate) use checkpoint::*;
|
||||
pub(crate) use conversation::*;
|
||||
pub(crate) use export::*;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user