手动提交:修复CI失败
This commit is contained in:
+56
-35
@@ -1346,16 +1346,25 @@ mod tests {
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn autonomous_art_director_advertises_canvas_without_smoke_or_preview_tools() {
|
||||
let _config_guard = crate::tests::write_test_local_config(
|
||||
r#"{"editorApi":{"apiKey":"art-director-provider-key"}}"#.to_string(),
|
||||
);
|
||||
let request = build_autonomous_ready_child_request(
|
||||
"art-director",
|
||||
AGENT_RUNTIME_SUPERVISOR_GUI_SOURCE,
|
||||
"art-director-canvas-only",
|
||||
);
|
||||
#[tokio::test]
|
||||
async fn autonomous_art_director_advertises_canvas_without_smoke_or_preview_tools() {
|
||||
// debug 构建下 editor_api_mode() 恒为 PlatformAccount,配置里的
|
||||
// editorApi.apiKey 会被 editor_api_key_is_configured 完全忽略;只有凭据
|
||||
// override 或平台会话才算「已配置」,Canvas 才会进工具目录。
|
||||
let request = crate::assets::with_external_editor_api_credentials(
|
||||
crate::assets::external_editor_api_credentials_for_test(
|
||||
"https://editor.test".to_string(),
|
||||
"art-director-provider-key".to_string(),
|
||||
),
|
||||
async {
|
||||
build_autonomous_ready_child_request(
|
||||
"art-director",
|
||||
AGENT_RUNTIME_SUPERVISOR_GUI_SOURCE,
|
||||
"art-director-canvas-only",
|
||||
)
|
||||
},
|
||||
)
|
||||
.await;
|
||||
assert!(request_advertises_native_tool(
|
||||
&request,
|
||||
"canvas.asset_generate"
|
||||
@@ -1427,8 +1436,8 @@ mod tests {
|
||||
assert!(!publish_prompts.contains("固定 owner 收束协议"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn art_director_request_exposes_canvas_only_for_the_keyed_owner_route() {
|
||||
#[tokio::test]
|
||||
async fn art_director_request_exposes_canvas_only_for_the_keyed_owner_route() {
|
||||
{
|
||||
let _config_guard = crate::tests::write_test_local_config("{}".to_string());
|
||||
let request = build_autonomous_ready_child_request(
|
||||
@@ -1452,30 +1461,42 @@ mod tests {
|
||||
);
|
||||
assert!(prompts.contains("不调用 canvas.asset_generate"));
|
||||
}
|
||||
{
|
||||
let _config_guard = crate::tests::write_test_local_config(
|
||||
r#"{"editorApi":{"apiKey":"provider-art-director-key"}}"#.to_string(),
|
||||
// debug 构建下 editor_api_mode() 恒为 PlatformAccount,配置里的
|
||||
// editorApi.apiKey 会被 editor_api_key_is_configured 完全忽略;只有凭据
|
||||
// override 或平台会话才算「已配置」。
|
||||
let request = crate::assets::with_external_editor_api_credentials(
|
||||
crate::assets::external_editor_api_credentials_for_test(
|
||||
"https://editor.test".to_string(),
|
||||
"provider-art-director-key".to_string(),
|
||||
),
|
||||
async {
|
||||
build_autonomous_ready_child_request(
|
||||
"art-director",
|
||||
AGENT_RUNTIME_SUPERVISOR_CLI_SOURCE,
|
||||
"art-director-keyed",
|
||||
)
|
||||
},
|
||||
)
|
||||
.await;
|
||||
assert!(request_advertises_native_tool(
|
||||
&request,
|
||||
"canvas.asset_generate"
|
||||
));
|
||||
let prompts = request
|
||||
.messages
|
||||
.iter()
|
||||
.map(|message| message.content.as_str())
|
||||
.collect::<Vec<_>>()
|
||||
.join(
|
||||
"
|
||||
",
|
||||
);
|
||||
let request = build_autonomous_ready_child_request(
|
||||
"art-director",
|
||||
AGENT_RUNTIME_SUPERVISOR_CLI_SOURCE,
|
||||
"art-director-keyed",
|
||||
);
|
||||
assert!(request_advertises_native_tool(
|
||||
&request,
|
||||
"canvas.asset_generate"
|
||||
));
|
||||
let prompts = request
|
||||
.messages
|
||||
.iter()
|
||||
.map(|message| message.content.as_str())
|
||||
.collect::<Vec<_>>()
|
||||
.join("\n");
|
||||
assert!(prompts.contains("条件 Canvas owner 任务"));
|
||||
assert!(prompts.contains("assets/art-spec.png"));
|
||||
assert!(prompts.contains("成功只表示候选已生成并登记,不等于视觉门已经通过"));
|
||||
assert!(!prompts.contains("成功会为本人当前 revision 形成验证凭证"));
|
||||
}
|
||||
assert!(prompts.contains("非只读视觉规范生成任务"));
|
||||
assert!(prompts
|
||||
.contains(crate::agent::AGENT_RUNTIME_AUTONOMOUS_ART_DIRECTOR_CANVAS_ONLY_TASK_MARKER));
|
||||
assert!(prompts.contains("assets/art-spec.png"));
|
||||
assert!(prompts.contains("会同时提交当前 run 的 mutation 与验证凭证"));
|
||||
assert!(!prompts.contains("无生图凭据只读协调任务"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
||||
@@ -3355,14 +3355,16 @@ fn prepare_autonomous_playtest_evidence_for_actor_at_revision(
|
||||
)
|
||||
.expect("bind deterministic game-chat collaboration policy");
|
||||
|
||||
// 回执现在冻结执行者身份,证据路径按 executor 的 agent/run 校验;夹具必须落在
|
||||
// 实际执行试玩的 actor 名下,而不是合同根。
|
||||
let evidence_root = root
|
||||
.join(".agent/runtime/browser-validations")
|
||||
.join(agent_runtime_confirmation_path_component(
|
||||
&contract_state.agent_id,
|
||||
&actor_state.agent_id,
|
||||
"agent",
|
||||
))
|
||||
.join(agent_runtime_confirmation_path_component(
|
||||
&contract_state.run_id,
|
||||
&actor_state.run_id,
|
||||
"run",
|
||||
))
|
||||
.join(revision.to_string());
|
||||
|
||||
@@ -1750,8 +1750,8 @@ mod tests {
|
||||
assert!(!publish_prompt.contains("验证本人固定 owner 产物"));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn art_director_ready_task_is_read_only_without_key_and_canvas_owner_with_key() {
|
||||
#[tokio::test]
|
||||
async fn art_director_ready_task_is_read_only_without_key_and_canvas_owner_with_key() {
|
||||
let task = seed_task("art-director");
|
||||
{
|
||||
let _config_guard = crate::tests::write_test_local_config("{}".to_string());
|
||||
@@ -1767,23 +1767,33 @@ mod tests {
|
||||
&prompt
|
||||
));
|
||||
}
|
||||
{
|
||||
let _config_guard = crate::tests::write_test_local_config(
|
||||
r#"{"editorApi":{"apiKey":"art-director-ready-task-key"}}"#.to_string(),
|
||||
);
|
||||
let prompt = render_autonomous_manifest_ready_task_background_prompt(&task);
|
||||
assert!(prompt.contains("条件 Canvas owner 任务"));
|
||||
assert!(prompt.contains("生成并登记 assets/art-spec.png"));
|
||||
assert!(prompt.contains("成功只表示候选已生成并登记,不等于视觉门已经通过"));
|
||||
assert!(prompt.contains("由 Runtime 在收束时核对当前 revision"));
|
||||
assert!(!prompt.contains("成功会为本人当前 revision 形成验证凭证"));
|
||||
assert!(autonomous_manifest_ready_task_requires_visual_asset(
|
||||
"art-director"
|
||||
));
|
||||
assert!(!agent_runtime_task_requires_read_only_delivery(
|
||||
"art-director",
|
||||
&prompt
|
||||
));
|
||||
}
|
||||
// debug 构建下 editor_api_mode() 恒为 PlatformAccount,配置里的
|
||||
// editorApi.apiKey 会被 editor_api_key_is_configured 完全忽略,只有凭据
|
||||
// override 或平台会话才算「已配置」。用支持的 override 钩子模拟。
|
||||
crate::assets::with_external_editor_api_credentials(
|
||||
crate::assets::external_editor_api_credentials_for_test(
|
||||
"https://editor.test".to_string(),
|
||||
"art-director-ready-task-key".to_string(),
|
||||
),
|
||||
async {
|
||||
let prompt = render_autonomous_manifest_ready_task_background_prompt(&task);
|
||||
assert!(prompt.contains("非只读视觉规范生成任务"));
|
||||
assert!(prompt.contains(
|
||||
crate::agent::AGENT_RUNTIME_AUTONOMOUS_ART_DIRECTOR_CANVAS_ONLY_TASK_MARKER
|
||||
));
|
||||
assert!(prompt.contains("生成并登记 assets/art-spec.png"));
|
||||
assert!(prompt.contains("会同时提交当前 run 的 mutation 与验证凭证"));
|
||||
assert!(prompt.contains("Runtime 会在子 Run 终态后幂等投影 manifest"));
|
||||
assert!(!prompt.contains("无生图凭据只读协调任务"));
|
||||
assert!(autonomous_manifest_ready_task_requires_visual_asset(
|
||||
"art-director"
|
||||
));
|
||||
assert!(!agent_runtime_task_requires_read_only_delivery(
|
||||
"art-director",
|
||||
&prompt
|
||||
));
|
||||
},
|
||||
)
|
||||
.await;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user