mirror of
https://github.com/lukaszraczylo/claude-mnemonic.git
synced 2026-06-06 23:13:50 +00:00
7a061c85eb
* refactor(hooks): simplify hook execution with shared context - [x] Extract BaseInput struct to eliminate duplicate fields across hooks - [x] Create RunHook handler pattern for session-start and user-prompt - [x] Create RunStatuslineHook for fast statusline rendering without worker startup - [x] Add HookContext struct to pass port, project, CWD, SessionID to handlers - [x] Add db/interface.go with ObservationReader/Writer interfaces - [x] Add comprehensive conflict management tests in sqlite/conflict_test.go - [x] Add vector client tests for Count, ModelVersion, NeedsRebuild, GetStaleVectors - [x] Add FilterByThreshold helper tests for query result filtering - [x] Make handlers_test more robust for network-dependent update checks - [x] Update package versions in UI * Move to GORM + general cleanup * feat(mcp): add observation relations discovery and scoring integration - [x] Add find_related_observations MCP tool for discovering related observations by confidence - [x] Integrate scoring calculator and recalculator into MCP server initialization - [x] Add pattern, relation, and session stores to MCP server dependencies - [x] Register MCP server in Claude Code settings during plugin installation - [x] Update install scripts (bash, PowerShell) to configure MCP server settings - [x] Switch plugin manifest files to template-based versioning (plugin.json.tpl, marketplace.json.tpl) - [x] Update all MCP server tests to pass new dependency parameters
72 lines
3.2 KiB
Go
72 lines
3.2 KiB
Go
// Package db defines database interfaces for the claude-mnemonic stores.
|
|
package db
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/lukaszraczylo/claude-mnemonic/pkg/models"
|
|
)
|
|
|
|
// ObservationReader defines read operations for observations.
|
|
type ObservationReader interface {
|
|
GetObservationByID(ctx context.Context, id int64) (*models.Observation, error)
|
|
GetObservationsByIDs(ctx context.Context, ids []int64, orderBy string, limit int) ([]*models.Observation, error)
|
|
GetRecentObservations(ctx context.Context, project string, limit int) ([]*models.Observation, error)
|
|
GetActiveObservations(ctx context.Context, project string, limit int) ([]*models.Observation, error)
|
|
GetAllRecentObservations(ctx context.Context, limit int) ([]*models.Observation, error)
|
|
GetAllObservations(ctx context.Context) ([]*models.Observation, error)
|
|
SearchObservationsFTS(ctx context.Context, query, project string, limit int) ([]*models.Observation, error)
|
|
GetObservationCount(ctx context.Context, project string) (int, error)
|
|
}
|
|
|
|
// ObservationWriter defines write operations for observations.
|
|
type ObservationWriter interface {
|
|
StoreObservation(ctx context.Context, sdkSessionID, project string, obs *models.ParsedObservation, promptNumber int, discoveryTokens int64) (int64, int64, error)
|
|
DeleteObservations(ctx context.Context, ids []int64) (int64, error)
|
|
}
|
|
|
|
// ObservationStore combines read and write operations for observations.
|
|
type ObservationStore interface {
|
|
ObservationReader
|
|
ObservationWriter
|
|
}
|
|
|
|
// SummaryReader defines read operations for summaries.
|
|
type SummaryReader interface {
|
|
GetSummariesByIDs(ctx context.Context, ids []int64, orderBy string, limit int) ([]*models.SessionSummary, error)
|
|
GetRecentSummaries(ctx context.Context, project string, limit int) ([]*models.SessionSummary, error)
|
|
GetAllRecentSummaries(ctx context.Context, limit int) ([]*models.SessionSummary, error)
|
|
GetAllSummaries(ctx context.Context) ([]*models.SessionSummary, error)
|
|
}
|
|
|
|
// SummaryWriter defines write operations for summaries.
|
|
type SummaryWriter interface {
|
|
StoreSummary(ctx context.Context, sdkSessionID, project string, summary *models.ParsedSummary, promptNumber int, discoveryTokens int64) (int64, int64, error)
|
|
}
|
|
|
|
// SummaryStore combines read and write operations for summaries.
|
|
type SummaryStore interface {
|
|
SummaryReader
|
|
SummaryWriter
|
|
}
|
|
|
|
// PromptReader defines read operations for prompts.
|
|
type PromptReader interface {
|
|
GetPromptsByIDs(ctx context.Context, ids []int64, orderBy string, limit int) ([]*models.UserPromptWithSession, error)
|
|
GetAllRecentUserPrompts(ctx context.Context, limit int) ([]*models.UserPromptWithSession, error)
|
|
GetAllPrompts(ctx context.Context) ([]*models.UserPromptWithSession, error)
|
|
GetRecentUserPromptsByProject(ctx context.Context, project string, limit int) ([]*models.UserPromptWithSession, error)
|
|
FindRecentPromptByText(ctx context.Context, claudeSessionID, promptText string, withinSeconds int) (int64, int, bool)
|
|
}
|
|
|
|
// PromptWriter defines write operations for prompts.
|
|
type PromptWriter interface {
|
|
SaveUserPromptWithMatches(ctx context.Context, claudeSessionID string, promptNumber int, promptText string, matchedObservations int) (int64, error)
|
|
}
|
|
|
|
// PromptStore combines read and write operations for prompts.
|
|
type PromptStore interface {
|
|
PromptReader
|
|
PromptWriter
|
|
}
|