feat(tools): implement CRUD operations for thoughts and projects
* Add tools for creating, retrieving, updating, and deleting thoughts. * Implement project management tools for creating and listing projects. * Introduce linking functionality between thoughts. * Add search and recall capabilities for thoughts based on semantic queries. * Implement statistics and summarization tools for thought analysis. * Create database migrations for thoughts, projects, and links. * Add helper functions for UUID parsing and project resolution.
This commit is contained in:
57
internal/types/thought.go
Normal file
57
internal/types/thought.go
Normal file
@@ -0,0 +1,57 @@
|
||||
package types
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type ThoughtMetadata struct {
|
||||
People []string `json:"people"`
|
||||
ActionItems []string `json:"action_items"`
|
||||
DatesMentioned []string `json:"dates_mentioned"`
|
||||
Topics []string `json:"topics"`
|
||||
Type string `json:"type"`
|
||||
Source string `json:"source"`
|
||||
}
|
||||
|
||||
type Thought struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
Content string `json:"content"`
|
||||
Embedding []float32 `json:"embedding,omitempty"`
|
||||
Metadata ThoughtMetadata `json:"metadata"`
|
||||
ProjectID *uuid.UUID `json:"project_id,omitempty"`
|
||||
ArchivedAt *time.Time `json:"archived_at,omitempty"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
UpdatedAt time.Time `json:"updated_at"`
|
||||
}
|
||||
|
||||
type SearchResult struct {
|
||||
ID uuid.UUID `json:"id"`
|
||||
Content string `json:"content"`
|
||||
Metadata ThoughtMetadata `json:"metadata"`
|
||||
Similarity float64 `json:"similarity"`
|
||||
CreatedAt time.Time `json:"created_at"`
|
||||
}
|
||||
|
||||
type ListFilter struct {
|
||||
Limit int
|
||||
Type string
|
||||
Topic string
|
||||
Person string
|
||||
Days int
|
||||
ProjectID *uuid.UUID
|
||||
IncludeArchived bool
|
||||
}
|
||||
|
||||
type ThoughtStats struct {
|
||||
TotalCount int `json:"total_count"`
|
||||
TypeCounts map[string]int `json:"type_counts"`
|
||||
TopTopics []KeyCount `json:"top_topics"`
|
||||
TopPeople []KeyCount `json:"top_people"`
|
||||
}
|
||||
|
||||
type KeyCount struct {
|
||||
Key string `json:"key"`
|
||||
Count int `json:"count"`
|
||||
}
|
||||
Reference in New Issue
Block a user