-
Notifications
You must be signed in to change notification settings - Fork 71
/
types.ts
77 lines (66 loc) · 1.63 KB
/
types.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import { AIConfig, JSONObject, Prompt } from "aiconfig";
import { uniqueId } from "lodash";
export type EditorFile = {
name: string;
extension: string;
path: string;
isDirectory: boolean;
disabled?: boolean;
};
export type ClientPrompt = Prompt & {
_ui: {
id: string;
isRunning?: boolean;
cancellationToken?: string;
};
};
export type ClientAIConfig = Omit<AIConfig, "prompts"> & {
prompts: ClientPrompt[];
_ui: {
isDirty?: boolean;
runningPromptId?: string;
};
};
export function clientPromptToAIConfigPrompt(prompt: ClientPrompt): Prompt {
const configPrompt = {
...prompt,
_ui: undefined,
};
delete configPrompt._ui;
return configPrompt;
}
export function clientConfigToAIConfig(clientConfig: ClientAIConfig): AIConfig {
const config = {
...clientConfig,
prompts: clientConfig.prompts.map(clientPromptToAIConfigPrompt),
_ui: undefined,
};
delete config._ui;
// For some reason, TS thinks ClientAIConfig is missing properties from
// AIConfig, so we have to cast it
return config as unknown as AIConfig;
}
export function aiConfigToClientConfig(aiconfig: AIConfig): ClientAIConfig {
return {
...aiconfig,
prompts: aiconfig.prompts.map((prompt) => ({
...prompt,
_ui: {
id: uniqueId(),
},
})),
_ui: {
isDirty: false,
},
};
}
export type LogEvent =
| "ADD_PROMPT"
| "SAVE_BUTTON_CLICKED"
| "RUN_PROMPT_START"
| "RUN_PROMPT_CANCELED"
| "RUN_PROMPT_ERROR"
| "RUN_PROMPT_SUCCESS";
// TODO: schematize this
export type LogEventData = JSONObject;
export type AIConfigEditorMode = "local" | "gradio" | "vscode";