继续收敛本地资源与模型记录错误
保留资源元数据和 data URL 解码正文 保留 External Editor binding 与模型记录读取解析原因
This commit is contained in:
@@ -3144,8 +3144,13 @@ pub(crate) fn import_local_project_assets_for_agent_with_write_permit(
|
||||
reject_agent_local_resource_source_path(&normalized)?;
|
||||
let source = resolve_local_project_path(root, &normalized)?;
|
||||
prepare_game_creator_private_path_for_read(&source, false, "本地资源")?;
|
||||
let metadata =
|
||||
fs::symlink_metadata(&source).map_err(|_| format!("本地资源不存在:{normalized}"))?;
|
||||
let metadata = fs::symlink_metadata(&source).map_err(|error| {
|
||||
if error.kind() == std::io::ErrorKind::NotFound {
|
||||
format!("本地资源不存在:{normalized}")
|
||||
} else {
|
||||
format!("读取本地资源元数据失败:{normalized}:{error}")
|
||||
}
|
||||
})?;
|
||||
if metadata.file_type().is_symlink() || !metadata.is_file() {
|
||||
return Err(format!("本地素材只能是普通文件:{normalized}"));
|
||||
}
|
||||
@@ -3688,7 +3693,7 @@ async fn download_ui_editor_remote_asset(url: &str, max_bytes: u64) -> Result<Ve
|
||||
.ok_or_else(|| "平台素材 data URL 类型不受支持".to_string())?;
|
||||
let bytes = base64::engine::general_purpose::STANDARD
|
||||
.decode(encoded)
|
||||
.map_err(|_| "平台素材 data URL 内容无效".to_string())?;
|
||||
.map_err(|error| format!("平台素材 data URL 内容无效:{error}"))?;
|
||||
if bytes.is_empty() || bytes.len() as u64 > max_bytes {
|
||||
return Err("平台素材超过当前图片下载限制".to_string());
|
||||
}
|
||||
|
||||
@@ -898,7 +898,7 @@ fn validate_external_editor_binding_access_shape(
|
||||
fn normalize_external_editor_binding_service_origin(value: &str) -> Result<String, String> {
|
||||
let value = value.trim().trim_end_matches('/');
|
||||
let parsed = reqwest::Url::parse(value)
|
||||
.map_err(|_| "External Editor binding 服务地址无效".to_string())?;
|
||||
.map_err(|error| format!("External Editor binding 服务地址无效:{error}"))?;
|
||||
if !matches!(parsed.scheme(), "http" | "https")
|
||||
|| parsed.host_str().is_none()
|
||||
|| !parsed.username().is_empty()
|
||||
|
||||
@@ -111,7 +111,7 @@ fn new_record(context: &ProjectModelUsageContext, source: &str) -> ModelUsageRec
|
||||
fn read_private_bytes(path: &Path, max_bytes: u64) -> Result<Option<Vec<u8>>, String> {
|
||||
match fs::symlink_metadata(path) {
|
||||
Err(error) if error.kind() == std::io::ErrorKind::NotFound => return Ok(None),
|
||||
Err(_) => return Err("读取项目模型记录元数据失败".to_string()),
|
||||
Err(error) => return Err(format!("读取项目模型记录元数据失败:{error}")),
|
||||
Ok(_) => {}
|
||||
}
|
||||
let (file, metadata) = open_project_private_regular_file(path, MODEL_USAGE_LABEL)?;
|
||||
@@ -121,7 +121,7 @@ fn read_private_bytes(path: &Path, max_bytes: u64) -> Result<Option<Vec<u8>>, St
|
||||
let mut content = Vec::new();
|
||||
file.take(max_bytes + 1)
|
||||
.read_to_end(&mut content)
|
||||
.map_err(|_| "读取项目模型记录失败".to_string())?;
|
||||
.map_err(|error| format!("读取项目模型记录失败:{error}"))?;
|
||||
if content.len() as u64 > max_bytes {
|
||||
return Err("项目模型记录超过读取上限".to_string());
|
||||
}
|
||||
@@ -145,7 +145,7 @@ fn read_usage_records(path: &Path) -> Result<(Vec<ModelUsageRecord>, u64), Strin
|
||||
return Err("项目模型记录超过记录上限".to_string());
|
||||
}
|
||||
let record: ModelUsageRecord = serde_json::from_slice(line)
|
||||
.map_err(|_| "项目模型记录损坏,已保留原文件".to_string())?;
|
||||
.map_err(|error| format!("项目模型记录损坏,已保留原文件:{error}"))?;
|
||||
validate_record(&record)?;
|
||||
records.push(record);
|
||||
}
|
||||
|
||||
@@ -94,3 +94,4 @@ DirectProject 回合失败在确认不是客户端内部不可归类故障时,
|
||||
- 新一轮原生扫出 app-server 进程与上下文漏损:Codex 执行器核验/OAuth 保存/回合身份的 JoinError、图片 base64 解码、Direct 上下文 canonicalize,以及进程树归属、Job、等待、终止和 Drop 清理错误原先只剩固定码;现保留 JoinError、解码器、OS/Job、等待和终止阶段正文,并为进程树 Drop 清理失败写入诊断日志。
|
||||
- 继续扫出浏览器收割的 Job/root kill/wait 错误原先压成 `bool`、External Editor 本机凭据 JSON/目录创建/保存错误丢底层正文,以及生成任务中断收口把项目清单读取失败当成“状态未知”;现分别保留浏览器清理阶段正文、凭据解析/存储正文,并让非“项目尚未初始化”的清单读取失败直接返回具体错误。
|
||||
- 受控 command 执行路径仍会把 leader 启动身份读取、进程组终止、root kill、Job/wait 失败折叠为“身份未确认/退出未确认”;现拒绝无身份接管并保留身份读取、终止兜底、等待和 OS 错误正文。
|
||||
- 继续扫到本地资源导入、平台素材 data URL、External Editor binding origin、项目模型记录读取/JSON 解析等错误仍丢底层正文;现区分真实 NotFound 与权限/元数据失败,并保留 base64、URL、文件读取和 JSON 解析细节。
|
||||
|
||||
Reference in New Issue
Block a user