@codervisor/devlog-ai
Version:
AI Chat History Extractor & Docker-based Automation - TypeScript implementation for GitHub Copilot and other AI coding assistants with automated testing capabilities
312 lines • 10.2 kB
TypeScript
/**
* Data models for AI Chat processing
*
* TypeScript interfaces and classes for representing chat histories
* focused on core chat functionality.
*
* Note: These models are for internal AI package use. For devlog integration,
* use the types from @codervisor/devlog-core/types/chat.
*/
import { z } from 'zod';
export interface MessageMetadata {
type?: 'user_request' | 'assistant_response' | 'editing_session' | 'snapshot';
agent?: Record<string, unknown>;
variableData?: Record<string, unknown>;
modelId?: string;
result?: Record<string, unknown>;
followups?: unknown[];
isCanceled?: boolean;
contentReferences?: unknown[];
codeCitations?: unknown[];
requestTimestamp?: string;
[key: string]: unknown;
}
export interface ChatSessionMetadata {
version?: string;
requesterUsername?: string;
responderUsername?: string;
initialLocation?: Record<string, unknown>;
creationDate?: string;
lastMessageDate?: string;
isImported?: boolean;
customTitle?: string;
type?: 'chat_session' | 'chat_editing_session' | string;
source_file?: string;
linearHistoryIndex?: number;
initialFileContents?: unknown[];
recentSnapshot?: unknown;
total_requests?: number;
[key: string]: unknown;
}
export interface WorkspaceMetadata {
discovered_files_count?: number;
parsing_errors?: string[];
total_sessions_discovered?: number;
discovery_timestamp?: string;
vscode_installations?: string[];
[key: string]: unknown;
}
export declare const MessageSchema: z.ZodObject<{
id: z.ZodOptional<z.ZodString>;
role: z.ZodEnum<["user", "assistant"]>;
content: z.ZodString;
timestamp: z.ZodString;
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
role: "user" | "assistant";
content: string;
timestamp: string;
metadata: Record<string, unknown>;
id?: string | undefined;
}, {
role: "user" | "assistant";
content: string;
timestamp: string;
id?: string | undefined;
metadata?: Record<string, unknown> | undefined;
}>;
export declare const ChatSessionSchema: z.ZodObject<{
agent: z.ZodString;
timestamp: z.ZodString;
messages: z.ZodDefault<z.ZodArray<z.ZodObject<{
id: z.ZodOptional<z.ZodString>;
role: z.ZodEnum<["user", "assistant"]>;
content: z.ZodString;
timestamp: z.ZodString;
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
role: "user" | "assistant";
content: string;
timestamp: string;
metadata: Record<string, unknown>;
id?: string | undefined;
}, {
role: "user" | "assistant";
content: string;
timestamp: string;
id?: string | undefined;
metadata?: Record<string, unknown> | undefined;
}>, "many">>;
workspace: z.ZodOptional<z.ZodString>;
session_id: z.ZodOptional<z.ZodString>;
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
agent: string;
timestamp: string;
metadata: Record<string, unknown>;
messages: {
role: "user" | "assistant";
content: string;
timestamp: string;
metadata: Record<string, unknown>;
id?: string | undefined;
}[];
workspace?: string | undefined;
session_id?: string | undefined;
}, {
agent: string;
timestamp: string;
metadata?: Record<string, unknown> | undefined;
messages?: {
role: "user" | "assistant";
content: string;
timestamp: string;
id?: string | undefined;
metadata?: Record<string, unknown> | undefined;
}[] | undefined;
workspace?: string | undefined;
session_id?: string | undefined;
}>;
export declare const WorkspaceDataSchema: z.ZodObject<{
agent: z.ZodString;
version: z.ZodOptional<z.ZodString>;
workspace_path: z.ZodOptional<z.ZodString>;
chat_sessions: z.ZodDefault<z.ZodArray<z.ZodObject<{
agent: z.ZodString;
timestamp: z.ZodString;
messages: z.ZodDefault<z.ZodArray<z.ZodObject<{
id: z.ZodOptional<z.ZodString>;
role: z.ZodEnum<["user", "assistant"]>;
content: z.ZodString;
timestamp: z.ZodString;
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
role: "user" | "assistant";
content: string;
timestamp: string;
metadata: Record<string, unknown>;
id?: string | undefined;
}, {
role: "user" | "assistant";
content: string;
timestamp: string;
id?: string | undefined;
metadata?: Record<string, unknown> | undefined;
}>, "many">>;
workspace: z.ZodOptional<z.ZodString>;
session_id: z.ZodOptional<z.ZodString>;
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
agent: string;
timestamp: string;
metadata: Record<string, unknown>;
messages: {
role: "user" | "assistant";
content: string;
timestamp: string;
metadata: Record<string, unknown>;
id?: string | undefined;
}[];
workspace?: string | undefined;
session_id?: string | undefined;
}, {
agent: string;
timestamp: string;
metadata?: Record<string, unknown> | undefined;
messages?: {
role: "user" | "assistant";
content: string;
timestamp: string;
id?: string | undefined;
metadata?: Record<string, unknown> | undefined;
}[] | undefined;
workspace?: string | undefined;
session_id?: string | undefined;
}>, "many">>;
metadata: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
agent: string;
metadata: Record<string, unknown>;
chat_sessions: {
agent: string;
timestamp: string;
metadata: Record<string, unknown>;
messages: {
role: "user" | "assistant";
content: string;
timestamp: string;
metadata: Record<string, unknown>;
id?: string | undefined;
}[];
workspace?: string | undefined;
session_id?: string | undefined;
}[];
version?: string | undefined;
workspace_path?: string | undefined;
}, {
agent: string;
version?: string | undefined;
metadata?: Record<string, unknown> | undefined;
workspace_path?: string | undefined;
chat_sessions?: {
agent: string;
timestamp: string;
metadata?: Record<string, unknown> | undefined;
messages?: {
role: "user" | "assistant";
content: string;
timestamp: string;
id?: string | undefined;
metadata?: Record<string, unknown> | undefined;
}[] | undefined;
workspace?: string | undefined;
session_id?: string | undefined;
}[] | undefined;
}>;
export interface Message {
/** Unique identifier for the message */
id?: string;
/** Role of the message sender */
role: 'user' | 'assistant';
/** Content of the message */
content: string;
/** Timestamp when the message was created */
timestamp: Date;
/** Additional metadata */
metadata: MessageMetadata;
}
export interface ChatSession {
/** Name of the AI agent (e.g., "copilot", "cursor", "windsurf") */
agent: string;
/** Timestamp when the session was created */
timestamp: Date;
/** List of messages in the session */
messages: Message[];
/** Workspace identifier or path */
workspace?: string;
/** Unique session identifier */
session_id?: string;
/** Additional metadata */
metadata: ChatSessionMetadata;
}
export interface WorkspaceData {
/** Name of the AI agent */
agent: string;
/** Version of the agent or data format */
version?: string;
/** Path to the workspace */
workspace_path?: string;
/** List of chat sessions */
chat_sessions: ChatSession[];
/** Additional metadata */
metadata: WorkspaceMetadata;
}
export interface SearchResult {
session_id?: string;
message_id?: string;
role: string;
timestamp: string;
match_position: number;
context: string;
full_content: string;
metadata: Record<string, unknown>;
}
export interface ChatStatistics {
total_sessions: number;
total_messages: number;
message_types: Record<string, number>;
session_types: Record<string, number>;
workspace_activity: Record<string, {
sessions: number;
messages: number;
first_seen: string;
last_seen: string;
}>;
date_range: {
earliest: string | null;
latest: string | null;
};
agent_activity: Record<string, number>;
}
export declare class MessageData implements Message {
id?: string;
role: 'user' | 'assistant';
content: string;
timestamp: Date;
metadata: MessageMetadata;
constructor(data: Partial<Message> & Pick<Message, 'role' | 'content'>);
toDict(): Record<string, unknown>;
static fromDict(data: Record<string, unknown>): MessageData;
}
export declare class ChatSessionData implements ChatSession {
agent: string;
timestamp: Date;
messages: Message[];
workspace?: string;
session_id?: string;
metadata: ChatSessionMetadata;
constructor(data: Partial<ChatSession> & Pick<ChatSession, 'agent'>);
toDict(): Record<string, unknown>;
static fromDict(data: Record<string, unknown>): ChatSessionData;
}
export declare class WorkspaceDataContainer implements WorkspaceData {
agent: string;
version?: string;
workspace_path?: string;
chat_sessions: ChatSession[];
metadata: WorkspaceMetadata;
constructor(data: Partial<WorkspaceData> & Pick<WorkspaceData, 'agent'>);
toDict(): Record<string, unknown>;
static fromDict(data: Record<string, unknown>): WorkspaceDataContainer;
}
//# sourceMappingURL=index.d.ts.map