09061f8e30
The knowledge.Source port answers "who am I; what are my priorities?". The FileSource adapter reads one profile file (path selectable per call), treats a missing/blank file as absent (not an error), and caps the text. Leaf package mirroring tasks. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
24 lines
986 B
Go
24 lines
986 B
Go
// Package knowledge is the Knowledge port: it answers "who am I; what are my
|
|
// priorities?" by loading the user's standing profile. It imports nothing from
|
|
// the rest of the app, so it stays a leaf package.
|
|
package knowledge
|
|
|
|
import "context"
|
|
|
|
// Profile is the user's standing context. Primitives only, so knowledge stays a
|
|
// leaf package.
|
|
type Profile struct {
|
|
Text string // grounding text; "" when no profile is available
|
|
Path string // resolved source location, for display
|
|
}
|
|
|
|
// Source answers "who am I; what are my priorities?" — the user's standing
|
|
// profile that grounds the advisor.
|
|
type Source interface {
|
|
// Load returns the user's profile. path selects an explicit location; ""
|
|
// means the adapter's configured default. A missing source is NOT an error:
|
|
// it yields an empty-Text Profile so the caller degrades to ungrounded. Only
|
|
// a real read failure (permissions, unreadable) returns an error.
|
|
Load(ctx context.Context, path string) (Profile, error)
|
|
}
|