File size: 1,840 Bytes
743dad3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65ef364
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import { SpaceEntry } from "@huggingface/hub";

export interface User {
  fullname: string;
  avatarUrl: string;
  name: string;
  isLocalUse?: boolean;
  isPro: boolean;
  id: string;
  token?: string;
}

export interface HtmlHistory {
  pages: Page[];
  createdAt: Date;
  prompt: string;
}

export interface Project {
  title: string;
  html: string;
  prompts: string[];
  user_id: string;
  space_id: string;
  pages: Page[];
  files: string[];
  cardData?: any;
  name?: string;
  _id?: string;
  _updatedAt?: Date;
  _createdAt?: Date;
}

// expand SpaceEntry type
export interface ProjectType extends SpaceEntry {
  cardData?: any;
}

export interface Page {
  path: string;
  html: string;
}

export interface Commit {
  title: string;
  oid: string;
  date: Date;
}

export interface EnhancedSettings {
  isActive: boolean;
  primaryColor: string | undefined;
  secondaryColor: string | undefined;
  theme: Theme;
}

export type Theme = "light" | "dark" | undefined;

// OmniDev Augmentation types
export type FileAction = "add" | "update" | "delete";

export interface FileUpdate {
  path: string; // e.g., /frontend/src/App.tsx or /backend/routes/auth.ts
  action: FileAction;
  content?: string; // required for add/update; omit for delete
  note?: string; // optional human-readable note
}

export interface AugmentRequest {
  context: string; // project structure + important file snippets
  instruction: string; // user instruction (e.g., add JWT auth)
  language?: string; // javascript, typescript, python
  framework?: string; // express-react, nextjs, nestjs, etc.
  response_type?: "file_updates" | "explanation";
  model?: string;
  provider?: string; // 'google' to force Gemini
}

export interface AugmentResponse {
  ok: boolean;
  files?: FileUpdate[];
  logs?: string[];
  summary?: string;
  message?: string;
}