///
/**
* Copyright 2023 Kapeta Inc.
* SPDX-License-Identifier: BUSL-1.1
*/
import { EventEmitter } from 'node:events';
import { StormEvent } from './events';
import { AIFileTypes, GeneratedFile } from '@kapeta/codegen';
import { BlockDefinition } from '@kapeta/schemas';
import { BlockDefinitionInfo } from './event-parser';
export declare class StormStream extends EventEmitter {
private conversationId;
private lines;
private aborted;
private done;
constructor(prompt?: string, conversationId?: string | null);
getConversationId(): string;
isAborted(): boolean;
addJSONLine(line: string): void;
end(): void;
on(event: 'end', listener: () => void): this;
on(event: 'aborted', listener: () => void): this;
on(event: 'error', listener: (e: Error) => void): this;
on(event: 'data', listener: (data: StormEvent) => void): this;
emit(event: 'end'): boolean;
emit(event: 'aborted'): void;
emit(event: 'error', e: Error): boolean;
emit(event: 'data', data: StormEvent): boolean;
waitForDone(): Promise;
abort(): void;
}
export interface ConversationItem {
role: 'user' | 'model';
content: string;
}
export interface StormContextRequest {
conversationId?: string;
systemId?: string;
history?: ConversationItem[];
prompt: T;
}
export interface StormCreateBlockRequest {
definition: BlockDefinition;
tmpPath: string;
newPath: string;
}
export interface StormCodegenRequest {
block: BlockDefinitionInfo;
prompt: string;
events: StormEvent[];
outDir: string;
}
export interface StormFileInfo extends GeneratedFile {
type: AIFileTypes;
}
export interface StormFileImplementationPrompt {
context: StormFileInfo[];
template: StormFileInfo;
prompt: string;
}
export interface StormUIImplementationPrompt {
events: StormEvent[];
template: StormFileInfo;
filename: string;
context: StormFileInfo[];
blockName: string;
prompt: string;
}
export interface StormUIListPrompt {
events: StormEvent[];
templates: StormFileInfo[];
context: StormFileInfo[];
blockName: string;
prompt: string;
}
export declare enum HTMLPageEncoding {
TEXT = "TEXT",
BINARY = "BINARY"
}
export interface ImplementAPIClients {
pages: HTMLPage[];
systemId: string;
}
export interface HTMLPage {
fileName: string;
content: string;
encoding: HTMLPageEncoding;
}
export interface CreateSimpleBackendRequest {
pages: HTMLPage[];
}