mirror of
https://github.com/lukaszraczylo/claude-mnemonic.git
synced 2026-06-05 23:03:55 +00:00
7b979a3f95
- Add server-side detection of SDK processor's internal system prompt
in handleSessionInit, since CLAUDE_MNEMONIC_INTERNAL env var is not
propagated by Claude Code to hook subprocesses
- Add cross-session duplicate detection (FindRecentPromptByTextGlobal)
to catch same prompt text arriving from different session IDs
- Add hooks, mcpServers, and commands references to plugin.json per
Claude Code plugin spec
- Remove MCP server injection from register-plugin.sh (now in plugin.json)
- Use ${CLAUDE_PLUGIN_ROOT} for statusline path instead of hardcoded path
- Add python3 fallback for plugin registration when jq is unavailable
- Replace hardcoded 1.0.0 version in findWorkerBinary with glob lookup
- Add cache copy verification in register-plugin.sh
- Add update-version Makefile target to keep metadata in sync
73 lines
3.3 KiB
Go
73 lines
3.3 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)
|
|
FindRecentPromptByTextGlobal(ctx context.Context, 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
|
|
}
|