Files
Codeman/src/types/tools.ts
T

63 lines
2.0 KiB
TypeScript
Raw Normal View History

/**
* @fileoverview Tool-related type definitions.
*
* Types for tracking Claude's tool invocations in real-time.
*
* Key exports:
* - ActiveBashTool — a live bash command with extracted file paths and status
* - ActiveBashToolStatus — 'running' | 'completed'
* - ImageDetectedEvent — screenshot/image file detection trigger for UI popup
*
* Cross-domain relationships:
* - ActiveBashTool.sessionId links to SessionState.id (session domain)
* - ImageDetectedEvent.sessionId links to SessionState.id (session domain)
*
* Both types are in-memory only (not persisted). Broadcast via SSE events
* `subagent:tool_call` and `image:detected`. Parsed by BashToolParser
* (`src/bash-tool-parser.ts`).
*/
/**
* Status of an active Bash tool command.
*/
export type ActiveBashToolStatus = 'running' | 'completed';
/**
* Represents an active Bash tool command detected in Claude's output.
* Used to display clickable file paths for file-viewing commands.
*/
export interface ActiveBashTool {
/** Unique identifier for this tool invocation */
id: string;
/** The full command being executed */
command: string;
/** Extracted file paths from the command (clickable) */
filePaths: string[];
/** Timeout string if specified (e.g., "16m 0s") */
timeout?: string;
/** Timestamp when the tool started */
startedAt: number;
/** Current status */
status: ActiveBashToolStatus;
/** Session ID this tool belongs to */
sessionId: string;
}
/**
* Event emitted when a new image file is detected in a session's working directory.
* Used to trigger automatic image popup display in the web UI.
*/
export interface ImageDetectedEvent {
/** Codeman session ID where the image was detected */
sessionId: string;
/** Full path to the detected image file */
filePath: string;
/** Path relative to the session's working directory (for file-raw endpoint) */
relativePath: string;
/** Image file name (basename) */
fileName: string;
/** Timestamp when the image was detected */
timestamp: number;
/** File size in bytes */
size: number;
}