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:
37
internal/session/active_project.go
Normal file
37
internal/session/active_project.go
Normal file
@@ -0,0 +1,37 @@
|
||||
package session
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
type ActiveProjects struct {
|
||||
mu sync.RWMutex
|
||||
bySession map[string]uuid.UUID
|
||||
}
|
||||
|
||||
func NewActiveProjects() *ActiveProjects {
|
||||
return &ActiveProjects{
|
||||
bySession: map[string]uuid.UUID{},
|
||||
}
|
||||
}
|
||||
|
||||
func (a *ActiveProjects) Set(sessionID string, projectID uuid.UUID) {
|
||||
a.mu.Lock()
|
||||
defer a.mu.Unlock()
|
||||
a.bySession[sessionID] = projectID
|
||||
}
|
||||
|
||||
func (a *ActiveProjects) Get(sessionID string) (uuid.UUID, bool) {
|
||||
a.mu.RLock()
|
||||
defer a.mu.RUnlock()
|
||||
projectID, ok := a.bySession[sessionID]
|
||||
return projectID, ok
|
||||
}
|
||||
|
||||
func (a *ActiveProjects) Clear(sessionID string) {
|
||||
a.mu.Lock()
|
||||
defer a.mu.Unlock()
|
||||
delete(a.bySession, sessionID)
|
||||
}
|
||||
Reference in New Issue
Block a user