Documentation
¶
Overview ¶
Package knowledge exposes the workspace-wide shared-knowledge gollem tools available to agents. Read tools (search / get / list_tags) are always offered; write tools (create_tag / update_tag / delete_tag / create_knowledge / update_knowledge) are wired only when the agent is permitted to mutate shared knowledge (i.e. not while processing a private case). Every operation routes through the use-case surface (Accessor / Mutator) so embedding, validation, and tag-existence checks match the WebUI path.
Tags are first-class entities identified by an immutable id. A knowledge entry references tags ONLY by id and must carry at least one. A tag cannot be created inline while writing knowledge — it must be created first via create_tag (which returns its id).
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func New ¶
New builds the full knowledge tool set (read + tag/knowledge writes). Use this when the agent is allowed to write shared knowledge.
func NewReadOnly ¶
NewReadOnly builds the read-only subset (search / get / list_tags). Used when the agent may consult shared knowledge but must not mutate it — e.g. while processing a private case, whose contents must not leak into the shared base.
Types ¶
type Deps ¶
type Deps struct {
WorkspaceID string
Accessor KnowledgeAccessor
Mutator KnowledgeMutator
}
Deps groups the dependencies the knowledge tools need. WorkspaceID is pinned at construction. Accessor is required (read tools). Mutator is required only for the write tools (New); it is nil for NewReadOnly.
type KnowledgeAccessor ¶
type KnowledgeAccessor interface {
SearchKnowledge(ctx context.Context, workspaceID, query string, tagIDs []model.TagID, limit int) ([]*model.Knowledge, error)
GetKnowledge(ctx context.Context, workspaceID string, id model.KnowledgeID) (*model.Knowledge, error)
ListTags(ctx context.Context, workspaceID string) ([]*model.Tag, error)
}
KnowledgeAccessor is the read surface the knowledge tools depend on. Defined here so the package does not import pkg/usecase (which would create a cycle).
type KnowledgeMutator ¶
type KnowledgeMutator interface {
CreateTag(ctx context.Context, workspaceID, name string) (*model.Tag, error)
UpdateTag(ctx context.Context, workspaceID string, id model.TagID, name string) (*model.Tag, error)
DeleteTag(ctx context.Context, workspaceID string, id model.TagID) error
CreateKnowledge(ctx context.Context, workspaceID, title, claim string, tagIDs []model.TagID) (*model.Knowledge, error)
UpdateKnowledge(ctx context.Context, workspaceID string, id model.KnowledgeID, title, claim *string, tagIDs *[]model.TagID) (*model.Knowledge, error)
}
KnowledgeMutator is the write surface the knowledge tools depend on.