import type { AgentTool, AgentToolContext, AgentToolResult, AgentToolUpdateCallback } from "@oh-my-pi/pi-agent-core"; import type { Component } from "@oh-my-pi/pi-tui"; import * as z from "zod/v4"; import type { SSHHost } from "../capability/ssh"; import type { RenderResultOptions } from "../extensibility/custom-tools/types"; import type { Theme } from "../modes/theme/theme"; import type { ToolSession } from "."; import { type OutputMeta } from "./output-meta"; declare const sshSchema: z.ZodObject<{ host: z.ZodString; command: z.ZodString; cwd: z.ZodOptional; timeout: z.ZodDefault>; }, z.core.$strip>; export interface SSHToolDetails { meta?: OutputMeta; } type SshToolParams = z.infer; export declare class SshTool implements AgentTool { #private; private readonly session; private readonly hostNames; private readonly hostsByName; readonly description: string; readonly name = "ssh"; readonly summary = "Execute a command on a remote host over SSH"; readonly loadMode = "discoverable"; readonly label = "SSH"; readonly parameters: z.ZodObject<{ host: z.ZodString; command: z.ZodString; cwd: z.ZodOptional; timeout: z.ZodDefault>; }, z.core.$strip>; readonly concurrency = "exclusive"; readonly strict = true; constructor(session: ToolSession, hostNames: string[], hostsByName: Map, description: string); execute(_toolCallId: string, { host, command, cwd, timeout: rawTimeout }: SshToolParams, signal?: AbortSignal, onUpdate?: AgentToolUpdateCallback, _ctx?: AgentToolContext): Promise>; } export declare function loadSshTool(session: ToolSession): Promise; interface SshRenderArgs { host?: string; command?: string; timeout?: number; } interface SshRenderContext { /** Visual lines for truncated output (pre-computed by tool-execution) */ visualLines?: string[]; /** Number of lines skipped */ skippedCount?: number; /** Total visual lines */ totalVisualLines?: number; } export declare const sshToolRenderer: { renderCall(args: SshRenderArgs, _options: RenderResultOptions, uiTheme: Theme): Component; renderResult(result: { content: Array<{ type: string; text?: string; }>; details?: SSHToolDetails; }, options: RenderResultOptions & { renderContext?: SshRenderContext; }, uiTheme: Theme, args?: SshRenderArgs): Component; mergeCallAndResult: boolean; }; export {};