postgres

package
v0.101.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 20, 2026 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewDB

func NewDB(profile *profile.Profile) (store.Driver, error)

Types

type ConflictConstraintError

type ConflictConstraintError struct {
	Err     error
	Message string
}

ConflictConstraintError represents a schedule conflict constraint violation. This error is returned when the database EXCLUDE constraint detects an overlap.

func (*ConflictConstraintError) Error

func (e *ConflictConstraintError) Error() string

func (*ConflictConstraintError) IsConflict added in v0.100.0

func (e *ConflictConstraintError) IsConflict() bool

IsConflict implements the agent.ConflictError interface for DIP.

func (*ConflictConstraintError) Unwrap

func (e *ConflictConstraintError) Unwrap() error

type DB

type DB struct {
	// contains filtered or unexported fields
}

func (*DB) AgentStatsStore added in v0.93.0

func (d *DB) AgentStatsStore() store.AgentStatsStore

AgentStatsStore returns the agent statistics store interface.

func (*DB) AppendEvent added in v0.94.0

func (d *DB) AppendEvent(ctx context.Context, blockID int64, event store.BlockEvent) error

AppendEvent appends an event to the event stream

func (*DB) AppendEventsBatch added in v0.94.0

func (d *DB) AppendEventsBatch(ctx context.Context, blockID int64, events []store.BlockEvent) error

AppendEventsBatch appends multiple events to the event stream in a single query.

This is more efficient than calling AppendEvent multiple times, especially for streaming responses with many events.

func (*DB) AppendUserInput added in v0.94.0

func (d *DB) AppendUserInput(ctx context.Context, blockID int64, input store.UserInput) error

AppendUserInput appends a user input to an existing block

func (*DB) ArchiveInactiveBranches added in v0.94.0

func (d *DB) ArchiveInactiveBranches(ctx context.Context, conversationID int32, targetPath string, archivedAt int64) error

ArchiveInactiveBranches archives blocks not on the active branch path. Sets archived_at timestamp for blocks that don't match the target path. The target path format is "0/1/3" where each number is a branch index. (tree-conversation-branching spec)

func (*DB) BM25Search

func (d *DB) BM25Search(ctx context.Context, opts *store.BM25SearchOptions) ([]*store.BM25Result, error)

BM25Search performs full-text search using PostgreSQL's ts_vector with BM25 ranking. Uses bilingual text search configuration for better Chinese and English support.

func (*DB) Close

func (d *DB) Close() error

func (*DB) CompleteBlock added in v0.94.0

func (d *DB) CompleteBlock(
	ctx context.Context,
	blockID int64,
	assistantContent string,
	sessionStats *store.SessionStats,
) error

CompleteBlock atomically marks a block as completed with assistant content and session stats.

This method ensures atomicity by using a transaction to update both the status, assistant content, and session stats together.

func (*DB) CreateAIBlock added in v0.94.0

func (d *DB) CreateAIBlock(ctx context.Context, create *store.CreateAIBlock) (*store.AIBlock, error)

CreateAIBlock creates a new block.

Optimized: round_number is auto-generated by database trigger, eliminating the need for a separate query.

func (*DB) CreateAIBlockWithRound added in v0.94.0

func (d *DB) CreateAIBlockWithRound(ctx context.Context, create *store.CreateAIBlock) (*store.AIBlock, error)

CreateAIBlockWithRound creates a block with auto-incremented round number..

Optimized: Uses database trigger for round_number, eliminating the separate getNextRoundNumber query. This function now delegates to CreateAIBlock.

func (*DB) CreateAIConversation

func (d *DB) CreateAIConversation(ctx context.Context, create *store.AIConversation) (*store.AIConversation, error)

func (*DB) CreateActivity

func (d *DB) CreateActivity(ctx context.Context, create *store.Activity) (*store.Activity, error)

func (*DB) CreateAttachment

func (d *DB) CreateAttachment(ctx context.Context, create *store.Attachment) (*store.Attachment, error)

func (*DB) CreateEpisodicMemory

func (d *DB) CreateEpisodicMemory(ctx context.Context, create *store.EpisodicMemory) (*store.EpisodicMemory, error)

func (*DB) CreateIdentityProvider

func (d *DB) CreateIdentityProvider(ctx context.Context, create *store.IdentityProvider) (*store.IdentityProvider, error)

func (*DB) CreateInbox

func (d *DB) CreateInbox(ctx context.Context, create *store.Inbox) (*store.Inbox, error)

func (*DB) CreateMemo

func (d *DB) CreateMemo(ctx context.Context, create *store.Memo) (*store.Memo, error)

func (*DB) CreateRouterFeedback added in v0.94.0

func (d *DB) CreateRouterFeedback(ctx context.Context, create *store.CreateRouterFeedback) error

CreateRouterFeedback creates a new router feedback entry.

func (*DB) CreateSchedule

func (d *DB) CreateSchedule(ctx context.Context, create *store.Schedule) (*store.Schedule, error)

func (*DB) CreateUser

func (d *DB) CreateUser(ctx context.Context, create *store.User) (*store.User, error)

func (*DB) DeleteAIBlock added in v0.94.0

func (d *DB) DeleteAIBlock(ctx context.Context, id int64) error

DeleteAIBlock deletes a block

func (*DB) DeleteAIConversation

func (d *DB) DeleteAIConversation(ctx context.Context, delete *store.DeleteAIConversation) error

func (*DB) DeleteAgentMetrics

func (d *DB) DeleteAgentMetrics(ctx context.Context, delete *store.DeleteAgentMetrics) error

func (*DB) DeleteAllMemoTags added in v0.100.0

func (db *DB) DeleteAllMemoTags(ctx context.Context, memoID int32) error

func (*DB) DeleteAttachment

func (d *DB) DeleteAttachment(ctx context.Context, delete *store.DeleteAttachment) error

func (*DB) DeleteBranch added in v0.94.0

func (d *DB) DeleteBranch(ctx context.Context, blockID int64, cascade bool) error

DeleteBranch deletes a block and all its descendants. If cascade is true, recursively delete all descendants. If cascade is false, only delete the specified block. (tree-conversation-branching spec)

func (*DB) DeleteEpisodicMemory

func (d *DB) DeleteEpisodicMemory(ctx context.Context, delete *store.DeleteEpisodicMemory) error

func (*DB) DeleteEpisodicMemoryEmbedding added in v0.100.0

func (d *DB) DeleteEpisodicMemoryEmbedding(ctx context.Context, episodicMemoryID int32) error

DeleteEpisodicMemoryEmbedding deletes an episodic memory embedding.

func (*DB) DeleteIdentityProvider

func (d *DB) DeleteIdentityProvider(ctx context.Context, delete *store.DeleteIdentityProvider) error

func (*DB) DeleteInbox

func (d *DB) DeleteInbox(ctx context.Context, delete *store.DeleteInbox) error

func (*DB) DeleteInstanceSetting

func (d *DB) DeleteInstanceSetting(ctx context.Context, delete *store.DeleteInstanceSetting) error

func (*DB) DeleteMemo

func (d *DB) DeleteMemo(ctx context.Context, delete *store.DeleteMemo) error

func (*DB) DeleteMemoEmbedding

func (d *DB) DeleteMemoEmbedding(ctx context.Context, memoID int32) error

DeleteMemoEmbedding deletes a memo embedding.

func (*DB) DeleteMemoRelation

func (d *DB) DeleteMemoRelation(ctx context.Context, delete *store.DeleteMemoRelation) error

func (*DB) DeleteMemoSummary added in v0.100.0

func (db *DB) DeleteMemoSummary(ctx context.Context, memoID int32) error

func (*DB) DeleteMemoTag added in v0.100.0

func (db *DB) DeleteMemoTag(ctx context.Context, memoID int32, tag string) error

func (*DB) DeleteReaction

func (d *DB) DeleteReaction(ctx context.Context, delete *store.DeleteReaction) error

func (*DB) DeleteRouterWeights added in v0.94.0

func (d *DB) DeleteRouterWeights(ctx context.Context, userID int32, category string) error

DeleteRouterWeights deletes router weights for a user and category.

func (*DB) DeleteSchedule

func (d *DB) DeleteSchedule(ctx context.Context, delete *store.DeleteSchedule) error

func (*DB) DeleteToolMetrics

func (d *DB) DeleteToolMetrics(ctx context.Context, delete *store.DeleteToolMetrics) error

func (*DB) DeleteUser

func (d *DB) DeleteUser(ctx context.Context, delete *store.DeleteUser) error

func (*DB) EpisodicVectorSearch added in v0.100.0

func (d *DB) EpisodicVectorSearch(ctx context.Context, opts *store.EpisodicVectorSearchOptions) ([]*store.EpisodicMemoryWithScore, error)

EpisodicVectorSearch performs vector similarity search using pgvector.

func (*DB) FindEpisodicMemoriesWithoutEmbedding added in v0.100.0

func (d *DB) FindEpisodicMemoriesWithoutEmbedding(ctx context.Context, find *store.FindEpisodicMemoriesWithoutEmbedding) ([]*store.EpisodicMemory, error)

FindEpisodicMemoriesWithoutEmbedding finds episodic memories that don't have embeddings for the specified model.

func (*DB) FindMemosWithoutEmbedding

func (d *DB) FindMemosWithoutEmbedding(ctx context.Context, find *store.FindMemosWithoutEmbedding) ([]*store.Memo, error)

FindMemosWithoutEmbedding finds memos that don't have embeddings for the specified model.

func (*DB) FindMemosWithoutSummary added in v0.100.0

func (db *DB) FindMemosWithoutSummary(ctx context.Context, limit int) ([]*store.Memo, error)

func (*DB) ForkBlock added in v0.94.0

func (d *DB) ForkBlock(ctx context.Context, parentID int64, reason string, replaceUserInputs []store.UserInput) (*store.AIBlock, error)

ForkBlock creates a new block as a branch from an existing block. The new block inherits the parent's conversation. User inputs can be optionally replaced.

Parameters:

  • parentID: ID of the parent block to fork from
  • reason: Reason for forking (e.g., "user_fork", "User edited message: ...")
  • replaceUserInputs: If non-nil, replaces parent's user inputs. If nil or empty, inherits from parent.

The fork reason is stored in metadata for debugging and audit trail. (tree-conversation-branching spec)

func (*DB) GetAIBlock added in v0.94.0

func (d *DB) GetAIBlock(ctx context.Context, id int64) (*store.AIBlock, error)

GetAIBlock retrieves a block by ID

func (*DB) GetActivePath added in v0.94.0

func (d *DB) GetActivePath(ctx context.Context, conversationID int32) ([]*store.AIBlock, error)

GetActivePath retrieves the currently active branch path for a conversation. Returns blocks ordered by branch_path to show the active conversation flow. (tree-conversation-branching spec)

func (*DB) GetCostStats added in v0.93.0

func (d *DB) GetCostStats(ctx context.Context, userID int32, days int) (*store.CostStats, error)

GetCostStats retrieves aggregated cost statistics.

func (*DB) GetDB

func (d *DB) GetDB() *sql.DB

func (*DB) GetDailyCostUsage added in v0.93.0

func (d *DB) GetDailyCostUsage(ctx context.Context, userID int32, startDate, endDate time.Time) (float64, error)

GetDailyCostUsage retrieves total cost for a user in a date range.

func (*DB) GetInbox

func (d *DB) GetInbox(ctx context.Context, find *store.FindInbox) (*store.Inbox, error)

func (*DB) GetLatestAIBlock added in v0.94.0

func (d *DB) GetLatestAIBlock(ctx context.Context, conversationID int32) (*store.AIBlock, error)

GetLatestAIBlock retrieves the latest block for a conversation

func (*DB) GetMemo

func (d *DB) GetMemo(ctx context.Context, find *store.FindMemo) (*store.Memo, error)

func (*DB) GetMostExpensiveSession added in v0.93.0

func (d *DB) GetMostExpensiveSession(ctx context.Context, userID int32, since time.Time) (*store.AgentSessionStats, error)

GetMostExpensiveSession retrieves the most expensive session for a user.

func (*DB) GetPendingAIBlocks added in v0.94.0

func (d *DB) GetPendingAIBlocks(ctx context.Context) ([]*store.AIBlock, error)

GetPendingAIBlocks retrieves all pending/streaming blocks for cleanup

func (*DB) GetReaction

func (d *DB) GetReaction(ctx context.Context, find *store.FindReaction) (*store.Reaction, error)

func (*DB) GetRouterStats added in v0.94.0

func (d *DB) GetRouterStats(ctx context.Context, get *store.GetRouterStats) (*store.RouterStats, error)

GetRouterStats retrieves routing accuracy statistics.

func (*DB) GetSessionStats added in v0.93.0

func (d *DB) GetSessionStats(ctx context.Context, sessionID string) (*store.AgentSessionStats, error)

GetSessionStats retrieves stats by session ID.

func (*DB) GetUserByPATHash

func (d *DB) GetUserByPATHash(ctx context.Context, tokenHash string) (*store.PATQueryResult, error)

func (*DB) GetUserCostSettings added in v0.93.0

func (d *DB) GetUserCostSettings(ctx context.Context, userID int32) (*store.UserCostSettings, error)

GetUserCostSettings retrieves or creates user cost settings.

func (*DB) GetUserPreferences

func (d *DB) GetUserPreferences(ctx context.Context, find *store.FindUserPreferences) (*store.UserPreferences, error)

func (*DB) GetUserRouterWeightsMap added in v0.94.0

func (d *DB) GetUserRouterWeightsMap(ctx context.Context, userID int32) (map[string]map[string]int, error)

GetUserRouterWeightsMap retrieves router weights as a nested map for a user. Returns category -> keyword -> weight.

func (*DB) IsInitialized

func (d *DB) IsInitialized(ctx context.Context) (bool, error)

func (*DB) ListAIBlocks added in v0.94.0

func (d *DB) ListAIBlocks(ctx context.Context, find *store.FindAIBlock) ([]*store.AIBlock, error)

ListAIBlocks retrieves blocks for a conversation

func (*DB) ListAIConversations

func (d *DB) ListAIConversations(ctx context.Context, find *store.FindAIConversation) ([]*store.AIConversation, error)

func (*DB) ListActiveUserIDs

func (d *DB) ListActiveUserIDs(ctx context.Context, cutoff time.Time) ([]int32, error)

func (*DB) ListActivities

func (d *DB) ListActivities(ctx context.Context, find *store.FindActivity) ([]*store.Activity, error)

func (*DB) ListAgentMetrics

func (d *DB) ListAgentMetrics(ctx context.Context, find *store.FindAgentMetrics) ([]*store.AgentMetrics, error)

func (*DB) ListAttachments

func (d *DB) ListAttachments(ctx context.Context, find *store.FindAttachment) ([]*store.Attachment, error)

func (*DB) ListChildBlocks added in v0.94.0

func (d *DB) ListChildBlocks(ctx context.Context, parentID int64) ([]*store.AIBlock, error)

ListChildBlocks lists all direct children of a block. (tree-conversation-branching spec)

func (*DB) ListEpisodicMemories

func (d *DB) ListEpisodicMemories(ctx context.Context, find *store.FindEpisodicMemory) ([]*store.EpisodicMemory, error)

func (*DB) ListEpisodicMemoryEmbeddings added in v0.100.0

func (d *DB) ListEpisodicMemoryEmbeddings(ctx context.Context, find *store.FindEpisodicMemoryEmbedding) ([]*store.EpisodicMemoryEmbedding, error)

ListEpisodicMemoryEmbeddings lists episodic memory embeddings.

func (*DB) ListIdentityProviders

func (d *DB) ListIdentityProviders(ctx context.Context, find *store.FindIdentityProvider) ([]*store.IdentityProvider, error)

func (*DB) ListInboxes

func (d *DB) ListInboxes(ctx context.Context, find *store.FindInbox) ([]*store.Inbox, error)

func (*DB) ListInstanceSettings

func (d *DB) ListInstanceSettings(ctx context.Context, find *store.FindInstanceSetting) ([]*store.InstanceSetting, error)

func (*DB) ListMemoEmbeddings

func (d *DB) ListMemoEmbeddings(ctx context.Context, find *store.FindMemoEmbedding) ([]*store.MemoEmbedding, error)

ListMemoEmbeddings lists memo embeddings.

func (*DB) ListMemoRelations

func (d *DB) ListMemoRelations(ctx context.Context, find *store.FindMemoRelation) ([]*store.MemoRelation, error)

func (*DB) ListMemoSummarys added in v0.100.0

func (db *DB) ListMemoSummarys(ctx context.Context, find *store.FindMemoSummary) ([]*store.MemoSummary, error)

func (*DB) ListMemoTags added in v0.100.0

func (db *DB) ListMemoTags(ctx context.Context, find *store.FindMemoTag) ([]*store.MemoTag, error)

func (*DB) ListMemos

func (d *DB) ListMemos(ctx context.Context, find *store.FindMemo) ([]*store.Memo, error)

func (*DB) ListReactions

func (d *DB) ListReactions(ctx context.Context, find *store.FindReaction) ([]*store.Reaction, error)

func (*DB) ListRouterFeedback added in v0.94.0

func (d *DB) ListRouterFeedback(ctx context.Context, find *store.FindRouterFeedback) ([]*store.RouterFeedback, error)

ListRouterFeedback retrieves router feedback entries.

func (*DB) ListRouterWeights added in v0.94.0

func (d *DB) ListRouterWeights(ctx context.Context, find *store.FindRouterWeight) ([]*store.RouterWeight, error)

ListRouterWeights retrieves router weights for a user.

func (*DB) ListSchedules

func (d *DB) ListSchedules(ctx context.Context, find *store.FindSchedule) ([]*store.Schedule, error)

func (*DB) ListSecurityEvents added in v0.93.0

func (d *DB) ListSecurityEvents(ctx context.Context, userID int32, limit, offset int) ([]*store.SecurityAuditEvent, int64, error)

ListSecurityEvents retrieves security events for a user with pagination.

func (*DB) ListSecurityEventsByRisk added in v0.93.0

func (d *DB) ListSecurityEventsByRisk(ctx context.Context, userID int32, riskLevel string, limit, offset int) ([]*store.SecurityAuditEvent, int64, error)

ListSecurityEventsByRisk retrieves events filtered by risk level.

func (*DB) ListSessionStats added in v0.93.0

func (d *DB) ListSessionStats(ctx context.Context, userID int32, limit, offset int) ([]*store.AgentSessionStats, int64, error)

ListSessionStats retrieves stats for a user with pagination.

func (*DB) ListToolMetrics

func (d *DB) ListToolMetrics(ctx context.Context, find *store.FindToolMetrics) ([]*store.ToolMetrics, error)

func (*DB) ListUserSettings

func (d *DB) ListUserSettings(ctx context.Context, find *store.FindUserSetting) ([]*store.UserSetting, error)

func (*DB) ListUsers

func (d *DB) ListUsers(ctx context.Context, find *store.FindUser) ([]*store.User, error)

func (*DB) LogSecurityEvent added in v0.93.0

func (d *DB) LogSecurityEvent(ctx context.Context, event *store.SecurityAuditEvent) error

LogSecurityEvent saves a security event.

func (*DB) SaveSessionStats added in v0.93.0

func (d *DB) SaveSessionStats(ctx context.Context, stats *store.AgentSessionStats) error

SaveSessionStats saves a session statistics record.

func (*DB) SaveUserRouterWeights added in v0.94.0

func (d *DB) SaveUserRouterWeights(ctx context.Context, userID int32, weights map[string]map[string]int) error

SaveUserRouterWeights saves router weights from a nested map. This replaces all weights for the given user and categories.

func (*DB) SearchMemosByVector

func (d *DB) SearchMemosByVector(ctx context.Context, embedding []float32, limit int) ([]*store.Memo, []float32, error)

SearchMemosByVector performs semantic search using vector similarity. Returns memos and their similarity scores (0-1, higher is more similar).

func (*DB) SecurityAuditStore added in v0.93.0

func (d *DB) SecurityAuditStore() store.SecurityAuditStore

SecurityAuditStore returns the security audit store interface.

func (*DB) SetUserCostSettings added in v0.93.0

func (d *DB) SetUserCostSettings(ctx context.Context, settings *store.UserCostSettings) error

SetUserCostSettings updates user cost settings.

func (*DB) UpdateAIBlock added in v0.94.0

func (d *DB) UpdateAIBlock(ctx context.Context, update *store.UpdateAIBlock) (*store.AIBlock, error)

UpdateAIBlock updates a block

func (*DB) UpdateAIBlockStatus added in v0.94.0

func (d *DB) UpdateAIBlockStatus(ctx context.Context, blockID int64, status store.AIBlockStatus) error

UpdateAIBlockStatus updates the block status

func (*DB) UpdateAIConversation

func (d *DB) UpdateAIConversation(ctx context.Context, update *store.UpdateAIConversation) (*store.AIConversation, error)

func (*DB) UpdateAttachment

func (d *DB) UpdateAttachment(ctx context.Context, update *store.UpdateAttachment) error

func (*DB) UpdateIdentityProvider

func (d *DB) UpdateIdentityProvider(ctx context.Context, update *store.UpdateIdentityProvider) (*store.IdentityProvider, error)

func (*DB) UpdateInbox

func (d *DB) UpdateInbox(ctx context.Context, update *store.UpdateInbox) (*store.Inbox, error)

func (*DB) UpdateMemo

func (d *DB) UpdateMemo(ctx context.Context, update *store.UpdateMemo) error

func (*DB) UpdateMemoEmbedding

func (d *DB) UpdateMemoEmbedding(ctx context.Context, id int32, embedding []float32) error

UpdateMemoEmbedding updates the embedding vector for a memo.

func (*DB) UpdateSchedule

func (d *DB) UpdateSchedule(ctx context.Context, update *store.UpdateSchedule) error

func (*DB) UpdateUser

func (d *DB) UpdateUser(ctx context.Context, update *store.UpdateUser) (*store.User, error)

func (*DB) UpsertAgentMetrics

func (d *DB) UpsertAgentMetrics(ctx context.Context, upsert *store.UpsertAgentMetrics) (*store.AgentMetrics, error)

func (*DB) UpsertEpisodicMemoryEmbedding added in v0.100.0

func (d *DB) UpsertEpisodicMemoryEmbedding(ctx context.Context, embedding *store.EpisodicMemoryEmbedding) (*store.EpisodicMemoryEmbedding, error)

UpsertEpisodicMemoryEmbedding inserts or updates an episodic memory embedding.

func (*DB) UpsertInstanceSetting

func (d *DB) UpsertInstanceSetting(ctx context.Context, upsert *store.InstanceSetting) (*store.InstanceSetting, error)

func (*DB) UpsertMemoEmbedding

func (d *DB) UpsertMemoEmbedding(ctx context.Context, embedding *store.MemoEmbedding) (*store.MemoEmbedding, error)

UpsertMemoEmbedding inserts or updates a memo embedding.

func (*DB) UpsertMemoRelation

func (d *DB) UpsertMemoRelation(ctx context.Context, create *store.MemoRelation) (*store.MemoRelation, error)

func (*DB) UpsertMemoSummary added in v0.100.0

func (db *DB) UpsertMemoSummary(ctx context.Context, upsert *store.UpsertMemoSummary) (*store.MemoSummary, error)

func (*DB) UpsertMemoTag added in v0.100.0

func (db *DB) UpsertMemoTag(ctx context.Context, upsert *store.UpsertMemoTag) (*store.MemoTag, error)

func (*DB) UpsertMemoTags added in v0.100.0

func (db *DB) UpsertMemoTags(ctx context.Context, upserts []*store.UpsertMemoTag) error

func (*DB) UpsertReaction

func (d *DB) UpsertReaction(ctx context.Context, upsert *store.Reaction) (*store.Reaction, error)

func (*DB) UpsertRouterWeight added in v0.94.0

func (d *DB) UpsertRouterWeight(ctx context.Context, upsert *store.UpsertRouterWeight) error

UpsertRouterWeight upserts a router weight entry.

func (*DB) UpsertToolMetrics

func (d *DB) UpsertToolMetrics(ctx context.Context, upsert *store.UpsertToolMetrics) (*store.ToolMetrics, error)

func (*DB) UpsertUserPreferences

func (d *DB) UpsertUserPreferences(ctx context.Context, upsert *store.UpsertUserPreferences) (*store.UserPreferences, error)

func (*DB) UpsertUserSetting

func (d *DB) UpsertUserSetting(ctx context.Context, upsert *store.UserSetting) (*store.UserSetting, error)

func (*DB) VectorSearch

func (d *DB) VectorSearch(ctx context.Context, opts *store.VectorSearchOptions) ([]*store.MemoWithScore, error)

VectorSearch performs vector similarity search using pgvector.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL