138 lines
3.3 KiB
Plaintext
138 lines
3.3 KiB
Plaintext
using extension auth;
|
|
|
|
module default {
|
|
global currentUser := (
|
|
assert_single((
|
|
select User
|
|
filter .identity = global ext::auth::ClientTokenIdentity
|
|
))
|
|
);
|
|
|
|
required global currentConversationID: uuid {
|
|
default := <uuid>"00000000-0000-0000-0000-000000000000"
|
|
};
|
|
|
|
global currentConversation := (
|
|
assert_single((
|
|
select Conversation
|
|
filter .user = global currentUser AND (
|
|
.id = global currentConversationID OR
|
|
(global currentConversationID = <uuid>"00000000-0000-0000-0000-000000000000" AND .name = 'Default')
|
|
)
|
|
))
|
|
);
|
|
|
|
type User {
|
|
required setting: Setting;
|
|
required stripe_id: str;
|
|
required name: str;
|
|
required email: str;
|
|
required avatar: str;
|
|
required identity: ext::auth::Identity {
|
|
on source delete delete target;
|
|
}
|
|
}
|
|
|
|
type Key {
|
|
required name: str;
|
|
company: Company;
|
|
required key: str;
|
|
required date: datetime {
|
|
default := datetime_current();
|
|
}
|
|
}
|
|
|
|
type Setting {
|
|
default_model: str;
|
|
multi keys: Key {
|
|
on target delete allow;
|
|
};
|
|
}
|
|
|
|
type Conversation {
|
|
required name: str;
|
|
required position: int32;
|
|
required user: User {
|
|
on target delete delete source;
|
|
};
|
|
required date: datetime {
|
|
default := datetime_current();
|
|
}
|
|
}
|
|
|
|
type Area {
|
|
required position: int64;
|
|
required conversation: Conversation {
|
|
on target delete delete source;
|
|
};
|
|
}
|
|
|
|
type Message {
|
|
required selected: bool;
|
|
required role: str;
|
|
required content: str;
|
|
required llm: LLM;
|
|
required area: Area {
|
|
on target delete delete source;
|
|
};
|
|
required conversation: Conversation {
|
|
on target delete delete source;
|
|
};
|
|
required date: datetime {
|
|
default := datetime_current();
|
|
}
|
|
}
|
|
|
|
type Usage {
|
|
required model_id: str;
|
|
user: User {
|
|
on target delete allow
|
|
};
|
|
required input_cost: float32;
|
|
required output_cost: float32;
|
|
required input_token: int32;
|
|
required output_token: int32;
|
|
required date: datetime {
|
|
default := datetime_current();
|
|
}
|
|
}
|
|
|
|
type LLM {
|
|
required name: str;
|
|
required context: str;
|
|
required temperature: float32;
|
|
required position: int32;
|
|
required to_delete: bool {
|
|
default := false;
|
|
};
|
|
required modelInfo: ModelInfo {
|
|
on target delete delete source;
|
|
};
|
|
required user: User {
|
|
on target delete delete source;
|
|
};
|
|
custom_endpoint: CustomEndpoint {
|
|
on source delete delete target;
|
|
};
|
|
}
|
|
|
|
type CustomEndpoint {
|
|
required endpoint: str;
|
|
required key: str;
|
|
}
|
|
|
|
type Company {
|
|
required name: str;
|
|
required icon: str;
|
|
}
|
|
|
|
type ModelInfo {
|
|
required modelID: str;
|
|
required name: str;
|
|
required maxToken: int32;
|
|
required inputPrice: float32;
|
|
required outputPrice: float32;
|
|
required company: Company;
|
|
}
|
|
}
|