-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmodels.py
More file actions
107 lines (83 loc) · 2.85 KB
/
models.py
File metadata and controls
107 lines (83 loc) · 2.85 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
"""
Pydantic models for the OneNote Omi plugin.
"""
from datetime import datetime
from typing import List, Optional, Any, Dict
from pydantic import BaseModel, Field
# Omi Chat Tool Models
class ChatToolRequest(BaseModel):
"""Base request model for Omi chat tools."""
uid: str
app_id: str
tool_name: str
class CreateNoteRequest(ChatToolRequest):
"""Request model for creating a note."""
title: str = "Untitled Note"
content: str # Note content (text/HTML)
notebook: Optional[str] = None # Notebook name (fuzzy matched)
section: Optional[str] = None # Section name (fuzzy matched)
class SearchNotesRequest(ChatToolRequest):
"""Request model for searching notes."""
query: str # Search query
notebook: Optional[str] = None # Filter by notebook
limit: int = 10
class ChatToolResponse(BaseModel):
"""Response model for Omi chat tools."""
result: Optional[str] = None
error: Optional[str] = None
# OneNote Data Models
class OneNoteNotebook(BaseModel):
"""OneNote notebook information."""
id: str
display_name: str
created_datetime: Optional[datetime] = None
last_modified_datetime: Optional[datetime] = None
is_default: bool = False
is_shared: bool = False
class OneNoteSection(BaseModel):
"""OneNote section information."""
id: str
display_name: str
notebook_id: Optional[str] = None
created_datetime: Optional[datetime] = None
last_modified_datetime: Optional[datetime] = None
class OneNotePage(BaseModel):
"""OneNote page information."""
id: str
title: str
section_id: Optional[str] = None
created_datetime: Optional[datetime] = None
last_modified_datetime: Optional[datetime] = None
content_url: Optional[str] = None
preview_text: Optional[str] = None
class OneNoteUser(BaseModel):
"""Current OneNote/Microsoft user information."""
id: str
display_name: str
email: Optional[str] = None
user_principal_name: Optional[str] = None
# Omi Conversation Models (for future memory/webhook integrations)
class TranscriptSegment(BaseModel):
"""Transcript segment from Omi conversation."""
text: str
speaker: Optional[str] = "SPEAKER_00"
is_user: bool
start: float
end: float
class Structured(BaseModel):
"""Structured conversation data."""
title: str
overview: str
emoji: str = ""
category: str = "other"
class Conversation(BaseModel):
"""Omi conversation model."""
created_at: datetime
started_at: Optional[datetime] = None
finished_at: Optional[datetime] = None
transcript_segments: List[TranscriptSegment] = []
structured: Structured
discarded: bool
class EndpointResponse(BaseModel):
"""Standard endpoint response for Omi webhooks."""
message: str = Field(description="A short message to be sent as notification to the user, if needed.", default="")