feat: surface codex thread config progress

This commit is contained in:
AI Bot
2026-06-01 17:18:28 +08:00
parent 591638f35f
commit 26b5e97614
10 changed files with 540 additions and 5 deletions

View File

@@ -1069,6 +1069,61 @@ public class ProjectDetailActivityUiTest {
assertFalse(viewTreeContainsText(messageView, "sk-secret"));
}
@Test
public void executionProgressMessageRendersCodexThreadGoalSettingsAndCompactionSections() throws Exception {
Intent intent = new Intent()
.putExtra(ProjectDetailActivity.EXTRA_PROJECT_ID, "thread-config")
.putExtra(ProjectDetailActivity.EXTRA_PROJECT_NAME, "Boss开发主线程");
TestProjectDetailActivity activity = Robolectric
.buildActivity(TestProjectDetailActivity.class, intent)
.setup()
.get();
JSONObject message = new JSONObject()
.put("id", "progress-thread-config-1")
.put("sender", "master")
.put("senderLabel", "主 Agent")
.put("body", "执行进度")
.put("kind", "execution_progress")
.put("sentAt", "2026-06-01T10:25:00+08:00")
.put("executionProgress", new JSONObject()
.put("status", "running")
.put("steps", new JSONArray()
.put(new JSONObject().put("text", "同步 Codex 线程配置").put("status", "running")))
.put("threadGoal", new JSONObject()
.put("objective", "完成 App Server 线程目标同步")
.put("status", "active")
.put("tokenBudget", 120000)
.put("tokensUsed", 4800)
.put("timeUsedSeconds", 600))
.put("threadSettings", new JSONObject()
.put("model", "gpt-5.5")
.put("modelProvider", "openai")
.put("approvalPolicy", "on-request")
.put("sandboxPolicy", "workspaceWrite")
.put("collaborationMode", "plan")
.put("serviceTier", "fast")
.put("cwd", "/Users/kris/code/boss/secret-project"))
.put("compaction", new JSONObject()
.put("status", "completed")
.put("message", "上下文已压缩")));
View messageView = ReflectionHelpers.callInstanceMethod(
activity,
"buildMessageView",
ReflectionHelpers.ClassParameter.from(JSONObject.class, message)
);
assertTrue(viewTreeContainsText(messageView, "线程配置"));
assertTrue(viewTreeContainsText(messageView, "目标 active"));
assertTrue(viewTreeContainsText(messageView, "完成 App Server 线程目标同步"));
assertTrue(viewTreeContainsText(messageView, "模型 gpt-5.5 · openai"));
assertTrue(viewTreeContainsText(messageView, "审批 on-request · 沙箱 workspaceWrite"));
assertTrue(viewTreeContainsText(messageView, "协作 plan · fast"));
assertTrue(viewTreeContainsText(messageView, "上下文已压缩"));
assertFalse(viewTreeContainsText(messageView, "/Users/kris"));
}
@Test
public void nativeRemoteExecutionProgressDoesNotRenderCodexSections() throws Exception {
Intent intent = new Intent()