24c8bb24c6
- Added session-domain modules and exports for session-entries, context, listing, loader, and migrations. - Changed persistence to async append writes plus writeTextAtomic, removing sync line APIs. - Added compaction-aware session context rebuild with dangling tool-call cleanup. - Added resumable session resolution with status inference, id/stem/suffix matching, and backup recovery.
87 lines
3.8 KiB
TypeScript
87 lines
3.8 KiB
TypeScript
/**
|
|
* TUI renderers for built-in tools.
|
|
*
|
|
* These provide rich visualization for tool calls and results in the TUI.
|
|
*/
|
|
import type { Component } from "@oh-my-pi/pi-tui";
|
|
import { editToolRenderer } from "../edit/renderer";
|
|
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 { webSearchToolRenderer } from "../web/search/render";
|
|
import { askToolRenderer } from "./ask";
|
|
import { astEditToolRenderer } from "./ast-edit";
|
|
import { astGrepToolRenderer } from "./ast-grep";
|
|
import { bashToolRenderer } from "./bash";
|
|
import { browserToolRenderer } from "./browser/render";
|
|
import { debugToolRenderer } from "./debug";
|
|
import { evalToolRenderer } from "./eval-render";
|
|
import { findToolRenderer } from "./find";
|
|
import { githubToolRenderer } from "./gh-renderer";
|
|
import { inspectImageToolRenderer } from "./inspect-image-renderer";
|
|
import { ircToolRenderer } from "./irc";
|
|
import { jobToolRenderer } from "./job";
|
|
import { recallToolRenderer, reflectToolRenderer, retainToolRenderer } from "./memory-render";
|
|
import { readToolRenderer } from "./read";
|
|
import { resolveToolRenderer } from "./resolve";
|
|
import { searchToolRenderer } from "./search";
|
|
import { searchToolBm25Renderer } from "./search-tool-bm25";
|
|
import { sshToolRenderer } from "./ssh";
|
|
import { todoToolRenderer } from "./todo";
|
|
import { writeToolRenderer } from "./write";
|
|
|
|
export type ToolRenderer = {
|
|
renderCall: (args: unknown, options: RenderResultOptions, theme: Theme) => Component;
|
|
renderResult: (
|
|
result: { content: Array<{ type: string; text?: string }>; details?: unknown; isError?: boolean },
|
|
options: RenderResultOptions & { renderContext?: Record<string, unknown> },
|
|
theme: Theme,
|
|
args?: unknown,
|
|
) => Component;
|
|
mergeCallAndResult?: boolean;
|
|
/** Render without background box, inline in the response flow */
|
|
inline?: boolean;
|
|
/**
|
|
* Whether pending-call rows are provisional: useful on screen while a tool is
|
|
* streaming, but not durable transcript history. `true` means every pending
|
|
* shape is provisional. `"collapsed"` means only the collapsed pending shape
|
|
* is provisional; expanded rendering is top-anchored/append-shaped enough to
|
|
* let the transcript commit its settled prefix. Absent = the pending preview
|
|
* streams rows the result render preserves.
|
|
*/
|
|
provisionalPendingPreview?: boolean | "collapsed";
|
|
};
|
|
|
|
export const toolRenderers: Record<string, ToolRenderer> = {
|
|
ask: askToolRenderer as ToolRenderer,
|
|
ast_grep: astGrepToolRenderer as ToolRenderer,
|
|
ast_edit: astEditToolRenderer as ToolRenderer,
|
|
bash: bashToolRenderer as ToolRenderer,
|
|
browser: browserToolRenderer as ToolRenderer,
|
|
debug: debugToolRenderer as ToolRenderer,
|
|
eval: evalToolRenderer as ToolRenderer,
|
|
edit: editToolRenderer as ToolRenderer,
|
|
apply_patch: editToolRenderer as ToolRenderer,
|
|
find: findToolRenderer as ToolRenderer,
|
|
search: searchToolRenderer as ToolRenderer,
|
|
lsp: lspToolRenderer as ToolRenderer,
|
|
inspect_image: inspectImageToolRenderer as ToolRenderer,
|
|
irc: ircToolRenderer as ToolRenderer,
|
|
read: readToolRenderer as ToolRenderer,
|
|
job: jobToolRenderer as ToolRenderer,
|
|
resolve: resolveToolRenderer as ToolRenderer,
|
|
retain: retainToolRenderer as ToolRenderer,
|
|
recall: recallToolRenderer as ToolRenderer,
|
|
reflect: reflectToolRenderer as ToolRenderer,
|
|
search_tool_bm25: searchToolBm25Renderer as ToolRenderer,
|
|
ssh: sshToolRenderer as ToolRenderer,
|
|
task: taskToolRenderer as ToolRenderer,
|
|
todo: todoToolRenderer as ToolRenderer,
|
|
github: githubToolRenderer as ToolRenderer,
|
|
goal: goalToolRenderer as ToolRenderer,
|
|
web_search: webSearchToolRenderer as ToolRenderer,
|
|
write: writeToolRenderer as ToolRenderer,
|
|
};
|