From e2dc801d443b8d80a6a42129b9ee8ad5a8a8bee8 Mon Sep 17 00:00:00 2001 From: roboomp Date: Wed, 22 Jul 2026 17:14:36 +0000 Subject: [PATCH] fix(coding-agent): aligned task prewalk dashboard state Shared the bundled task prewalk default between runtime execution and the Agent Control Center. Added dashboard regression coverage for task.prewalk. Fixes #6306 --- packages/coding-agent/CHANGELOG.md | 4 ++++ .../src/modes/components/agent-dashboard.ts | 8 ++++++-- packages/coding-agent/src/task/executor.ts | 5 ++--- packages/coding-agent/src/task/prewalk.ts | 6 ++++++ .../test/agent-dashboard-create-editor.test.ts | 18 +++++++++++++++++- 5 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 packages/coding-agent/src/task/prewalk.ts diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index 945a4ed1c..230517d66 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Fixed + +- Fixed `/agents` showing prewalk as off for the bundled `task` agent when `task.prewalk` enables its runtime default ([#6306](https://github.com/can1357/oh-my-pi/issues/6306)). + ## [17.0.7] - 2026-07-21 ### Fixed diff --git a/packages/coding-agent/src/modes/components/agent-dashboard.ts b/packages/coding-agent/src/modes/components/agent-dashboard.ts index a8e294ef5..3575af407 100644 --- a/packages/coding-agent/src/modes/components/agent-dashboard.ts +++ b/packages/coding-agent/src/modes/components/agent-dashboard.ts @@ -49,6 +49,7 @@ import agentCreationArchitectPrompt from "../../prompts/system/agent-creation-ar import agentCreationUserPrompt from "../../prompts/system/agent-creation-user.md" with { type: "text" }; import { createAgentSession } from "../../sdk"; import { discoverAgents } from "../../task/discovery"; +import { resolveAgentPrewalkDefault } from "../../task/prewalk"; import type { AgentDefinition, AgentSource } from "../../task/types"; import { shortenPath } from "../../tools/render-utils"; import { getEditorTheme, theme } from "../theme/theme"; @@ -602,7 +603,7 @@ export class AgentDashboard extends Container { this.#persistPrewalkOverrides(); const pattern = resolveAgentPrewalkPattern({ settingsOverride: selected.prewalkOverride, - agentPrewalk: selected.prewalk, + agentPrewalk: resolveAgentPrewalkDefault(selected, this.#settingsManager?.get("task.prewalk") ?? false), }); const state = selected.prewalkOverride ?? "agent default"; this.#notice = `Prewalk for ${selected.name}: ${state}${pattern ? ` (into ${pattern})` : ""}`; @@ -1081,7 +1082,10 @@ export class AgentDashboard extends Container { const prewalkPattern = selected ? resolveAgentPrewalkPattern({ settingsOverride: selected.prewalkOverride, - agentPrewalk: selected.prewalk, + agentPrewalk: resolveAgentPrewalkDefault( + selected, + this.#settingsManager?.get("task.prewalk") ?? false, + ), }) : undefined; const prewalkResolution = prewalkPattern ? this.#resolvePatterns([prewalkPattern]) : undefined; diff --git a/packages/coding-agent/src/task/executor.ts b/packages/coding-agent/src/task/executor.ts index 220bd1f51..ddb114f08 100644 --- a/packages/coding-agent/src/task/executor.ts +++ b/packages/coding-agent/src/task/executor.ts @@ -55,6 +55,7 @@ import type { EventBus } from "../utils/event-bus"; import { buildNamedToolChoice } from "../utils/tool-choice"; import type { WorkspaceTree } from "../workspace-tree"; import { generateTaskLabel } from "./label"; +import { resolveAgentPrewalkDefault } from "./prewalk"; import { subprocessToolRegistry } from "./subprocess-tool-registry"; import { type AgentDefinition, @@ -2451,11 +2452,9 @@ export async function runSubprocess(options: ExecutorOptions): Promise { } }); }); + +describe("AgentDashboard prewalk", () => { + test("shows the bundled task prewalk default when task.prewalk is enabled", async () => { + await initTheme(false); + vi.spyOn(discovery, "discoverAgents").mockResolvedValue({ + projectAgentsDir: null, + agents: [{ name: "task", description: "Generic task agent", systemPrompt: "", source: "bundled" }], + }); + const settings = Settings.isolated({ "task.prewalk": true }); + const dashboard = await AgentDashboard.create(await makeTempCwd(), settings, 24, {}); + const rendered = dashboard.render(100).join("\n").replace(ANSI_PATTERN, ""); + + expect(rendered).toContain("Prewalk: on"); + expect(rendered).not.toContain("Prewalk: off"); + }); +});