-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtypes.ts
More file actions
217 lines (182 loc) · 5.09 KB
/
Copy pathtypes.ts
File metadata and controls
217 lines (182 loc) · 5.09 KB
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
export interface PrismStructure {
context: string;
task: string;
constraints: string;
output: string;
magic: string; // Catch-all for extra flair
}
export type PromptVariableSource = 'detected' | 'system';
export type PromptVariableType = 'text' | 'long-text' | 'number' | 'boolean';
export interface PromptVariable {
name: string;
defaultValue?: string;
label?: string;
placeholder?: string;
description?: string;
type?: PromptVariableType;
source?: PromptVariableSource;
}
export interface Prompt {
id: string;
categoryId?: string; // Links to the leaf category
title: string;
content: string; // The compiled raw text (for backward compatibility and playground)
structure?: PrismStructure; // The structured blocks
tags: string[];
createdAt: number;
updatedAt: number;
versions: PromptVersion[];
isFavorite: boolean;
variables?: PromptVariable[];
}
export interface PromptVersion {
id: string;
content: string;
timestamp: number;
note?: string;
}
export interface Category {
id: string;
name: string;
parentId: string | null;
children: Category[];
}
export enum OptimizationStrategy {
CLARITY = 'Clarity & Precision',
CREATIVE = 'Creative Expansion',
STRUCTURE = 'Logical Structuring (CO-STAR)',
CODE = 'Code Optimization'
}
export interface ChatMessage {
role: 'user' | 'model';
text: string;
}
export type ViewMode = 'editor' | 'playground' | 'vault' | 'architect';
export interface Toast {
id: string;
message: string;
type: 'success' | 'warning' | 'info';
}
export type PlaygroundMode = 'single' | 'arena';
export interface ContextAnalysis {
type: 'code' | 'image' | 'text' | null;
snippet: string;
}
// --- CONSULTANT ENGINE TYPES (AURA 2.0) ---
export interface PredictiveChip {
id: string;
label: string;
value: string; // The actual text to inject
icon?: string; // e.g. "🐍"
}
export interface ArchitectQuestion {
id: string;
text: string;
chips: PredictiveChip[];
}
export interface InterviewTurn {
id: string;
role: 'ai' | 'user';
content: string;
chips?: PredictiveChip[]; // Only AI turns have chips
isThinking?: boolean;
}
export interface ConsultantState {
stage: 'input' | 'consulting' | 'compiling';
history: InterviewTurn[];
completeness: number; // 0-100
}
// Muse Arsenal Types
export type SnippetCategory = 'persona' | 'skill' | 'shield' | 'format' | 'custom';
export interface ArsenalSnippet {
id: string;
category: SnippetCategory;
title: string;
description: string;
content: string;
targetBlock: keyof PrismStructure; // Which block this snippet belongs to
tags: string[]; // New: For Color Tags
isFavorite: boolean; // New: For Smart Collections
}
// IDE Types
export interface EditorTab {
id: string; // usually promptId, or 'new-timestamp'
title: string;
content: string;
isDirty: boolean; // modified but not saved
originalPromptId: string | null; // null if completely new
variables?: PromptVariable[];
versions?: PromptVersion[];
isAutoNaming?: boolean; // New: Track if AI is currently generating a title
hasManuallyRenamed?: boolean; // New: If true, AI won't override title
}
export type EditorRunStatus = 'idle' | 'running' | 'success' | 'error' | 'cancelled';
export interface EditorRunHistoryEntry {
id: string;
resolvedPrompt: string;
modelName: string;
status: Exclude<EditorRunStatus, 'idle'>;
startedAt: number;
finishedAt?: number;
durationMs?: number;
output?: string;
error?: string;
}
export interface EditorRunState {
resolvedPrompt?: string;
output?: string;
error?: string;
isRunning: boolean;
status?: EditorRunStatus;
activeRunId?: string;
modelName?: string;
history?: EditorRunHistoryEntry[];
updatedAt?: number;
}
// --- GATEWAY TYPES (MODEL AGNOSTICISM) ---
export type LLMProvider = 'gemini' | 'openai' | 'ollama' | 'anthropic';
export interface LLMSettings {
id: string; // profile id, or legacy 'global'
provider: LLMProvider;
// Credentials
apiKey?: string;
baseUrl?: string; // For Ollama or custom proxy
// Model Selection
modelName: string; // e.g. 'gpt-4o', 'llama3', 'gemini-1.5-pro'
// Parameters
temperature?: number; // 0.0 - 2.0
maxTokens?: number;
systemPrompt?: string; // Global instructions
}
export interface LLMProfile extends LLMSettings {
name: string;
createdAt: number;
updatedAt: number;
}
export interface RuntimeSettings {
id: 'global';
activeProfileId: string;
}
// --- SOTA FEATURES TYPES ---
export interface ModelSpec {
id: string;
name: string;
provider: LLMProvider;
contextWindow: number; // e.g. 128000
costPer1kInput: number; // e.g. 0.005 (USD)
costPer1kOutput: number;
isVision?: boolean;
}
export interface TokenMetrics {
count: number;
estimatedCost: number;
utilization: number; // % of context window
}
export interface LintError {
code: string;
message: string;
severity: 'warning' | 'critical' | 'suggestion';
start: number; // Index
end: number; // Index
fix?: string; // Auto-fix value
}