Add knowledge port and single-file adapter
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>
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
// 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)
|
||||
}
|
||||
Reference in New Issue
Block a user