refactor(coding-agent/task): moved taskToolRenderer to separate module

- Extracted taskToolRenderer to a dedicated renderer file to resolve circular dependencies.
- Updated all references to the renderer to point to the new location.
This commit is contained in:
can1357
2026-06-27 16:37:36 +02:00
parent 4fb1490747
commit d8bf177af7
7 changed files with 20 additions and 12 deletions
+1 -7
View File
@@ -1685,13 +1685,7 @@ function renderNestedTaskTree(
return lines;
}
export const taskToolRenderer = {
renderCall,
renderResult,
mergeCallAndResult: true,
};
// Register after export to avoid circular dependency issues
// Register task tool subprocess handler
subprocessToolRegistry.register<TaskToolDetails>("task", {
extractData: event => {
const details = event.result?.details;
@@ -0,0 +1,14 @@
/**
* Task tool renderer export.
*
* Separated from render.ts to avoid circular dependency issues with
* tools/renderers.ts. This module has no side effects and can be safely
* imported without triggering the subprocessToolRegistry registration.
*/
import { renderCall, renderResult } from "./render";
export const taskToolRenderer = {
renderCall,
renderResult,
mergeCallAndResult: true,
} as const;
+1 -1
View File
@@ -9,7 +9,7 @@ import type { RenderResultOptions } from "../extensibility/custom-tools/types";
import { goalToolRenderer } from "../goals/tools/goal-tool";
import { lspToolRenderer } from "../lsp/render";
import type { Theme } from "../modes/theme/theme";
import { taskToolRenderer } from "../task/render";
import { taskToolRenderer } from "../task/renderer";
import { webSearchToolRenderer } from "../web/search/render";
import { askToolRenderer } from "./ask";
import { astEditToolRenderer } from "./ast-edit";
@@ -2,7 +2,7 @@ import { afterAll, beforeAll, describe, expect, it } from "bun:test";
import { resetSettingsForTest, Settings } from "@oh-my-pi/pi-coding-agent/config/settings";
import { getThemeByName, setThemeInstance, type Theme } from "@oh-my-pi/pi-coding-agent/modes/theme/theme";
import type { TaskParams } from "@oh-my-pi/pi-coding-agent/task";
import { taskToolRenderer } from "@oh-my-pi/pi-coding-agent/task/render";
import { taskToolRenderer } from "@oh-my-pi/pi-coding-agent/task/renderer";
describe("task renderer: streaming call preview", () => {
let theme: Theme;
@@ -2,7 +2,7 @@ import { afterAll, afterEach, beforeAll, describe, expect, it, vi } from "bun:te
import { resetSettingsForTest, Settings } from "@oh-my-pi/pi-coding-agent/config/settings";
import { getThemeByName, setThemeInstance } from "@oh-my-pi/pi-coding-agent/modes/theme/theme";
import type { AgentProgress, SingleResult, TaskToolDetails } from "@oh-my-pi/pi-coding-agent/task";
import { taskToolRenderer } from "@oh-my-pi/pi-coding-agent/task/render";
import { taskToolRenderer } from "@oh-my-pi/pi-coding-agent/task/renderer";
import { formatDuration, formatNumber } from "@oh-my-pi/pi-utils";
describe("task renderer: nested live rendering", () => {
@@ -2,7 +2,7 @@ import { afterAll, beforeAll, describe, expect, it } from "bun:test";
import { resetSettingsForTest, Settings } from "@oh-my-pi/pi-coding-agent/config/settings";
import { getThemeByName, setThemeInstance } from "@oh-my-pi/pi-coding-agent/modes/theme/theme";
import type { AgentProgress, SingleResult, TaskToolDetails } from "@oh-my-pi/pi-coding-agent/task";
import { taskToolRenderer } from "@oh-my-pi/pi-coding-agent/task/render";
import { taskToolRenderer } from "@oh-my-pi/pi-coding-agent/task/renderer";
// Regression for #1987: when a subagent stores a non-array value in
// `extractedToolData.yield`, the renderer cast it to `Array<{ data }>` and
@@ -3,7 +3,7 @@ import type { RenderResultOptions } from "@oh-my-pi/pi-agent-core";
import type { SettingPath, SettingValue } from "@oh-my-pi/pi-coding-agent/config/settings";
import { resetSettingsForTest, Settings } from "@oh-my-pi/pi-coding-agent/config/settings";
import { getThemeByName, setThemeInstance } from "@oh-my-pi/pi-coding-agent/modes/theme/theme";
import { taskToolRenderer } from "@oh-my-pi/pi-coding-agent/task/render";
import { taskToolRenderer } from "@oh-my-pi/pi-coding-agent/task/renderer";
import type { AgentProgress, SingleResult, TaskToolDetails } from "@oh-my-pi/pi-coding-agent/task/types";
function runningProgress(overrides: Partial<AgentProgress> = {}): AgentProgress {