@vfarcic/dot-ai
Version:
AI-powered development productivity platform that enhances software development workflows through intelligent automation and AI-driven assistance
92 lines • 3.52 kB
TypeScript
/**
* Shared Visualization Utilities (PRD #320)
*
* Common utilities for visualization support across all MCP tools.
* Provides session metadata interfaces, URL generation, and prompt selection.
*/
import { VisualizationType, VisualizationResponse } from '../interfaces/rest-api';
/**
* Visualization mode prefix - when present in intent, return visualization data directly
* Used by tools to detect when caller wants visualization output instead of summary
*/
export declare const VISUALIZATION_PREFIX = "[visualization]";
/**
* Cached visualization structure stored in sessions
* PRD #320: Added toolsUsed for test validation of mermaid validation
*/
export interface CachedVisualization {
title: string;
visualizations: Array<{
id: string;
label: string;
type: VisualizationType;
content: unknown;
}>;
insights: string[];
toolsUsed?: string[];
generatedAt: string;
}
/**
* Base interface for visualization session data
* All tools should include these fields for visualization support
*/
export interface BaseVisualizationData {
/** Tool that created this session: 'query' | 'recommend' | 'remediate' | etc. */
toolName: string;
/** Optional stage for multi-stage tools (e.g., 'recommend', 'generateManifests') */
stage?: string;
/** Cached visualization to avoid re-generation */
cachedVisualization?: CachedVisualization;
}
/**
* Supported tool names for visualization
*/
export type VisualizationToolName = 'query' | 'recommend' | 'remediate' | 'operate' | 'version' | 'projectSetup';
/**
* Get the prompt file name for visualization
* All tools use the unified visualize.md template (PRD #320)
*
* @param toolName - Name of the tool (unused, kept for API compatibility)
* @returns Prompt file name (without .md extension)
*/
export declare function getPromptForTool(_toolName: string): string;
/**
* Get visualization URL if WEB_UI_BASE_URL is configured
* Feature toggle - only returns URL when env var is set
*
* @param sessionIds - Single session ID or array of session IDs to include in URL
* @returns Visualization URL or undefined if not configured
*/
export declare function getVisualizationUrl(sessionIds: string | string[]): string | undefined;
/**
* Extract the session prefix from a session ID
* Session IDs are formatted: {prefix}-{timestamp}-{uuid}
*
* @param sessionId - Full session ID (e.g., 'qry-1704067200000-a1b2c3d4')
* @returns Session prefix (e.g., 'qry')
*/
export declare function extractPrefixFromSessionId(sessionId: string): string;
/**
* Session prefixes used by each tool
* Useful for documentation and validation
*/
export declare const TOOL_SESSION_PREFIXES: Record<string, string>;
/**
* Get the tool name from a session prefix
* Reverse lookup from prefix to tool name
*
* @param prefix - Session prefix (e.g., 'qry')
* @returns Tool name or undefined if not recognized
*/
export declare function getToolNameFromPrefix(prefix: string): string | undefined;
/**
* Parse AI response into VisualizationResponse
* Extracts JSON from AI response, validates structure, normalizes insights
*
* @param aiResponse - Raw AI response string
* @param toolsUsed - Optional array of tools used during generation
* @returns Parsed VisualizationResponse
* @throws Error if parsing or validation fails
*/
export declare function parseVisualizationResponse(aiResponse: string, toolsUsed?: string[]): VisualizationResponse;
//# sourceMappingURL=visualization.d.ts.map