P4: skill noun — domain + LEAN SkillStore + ToRunnable + Memory
The skill half of the persona/skill pair, as a clean redesign (not a faithful lift of mort's 60-method skills.Storage kitchen sink): - skill.go/skill_version.go/validate.go/inputs.go/schedule.go moved clean; the only host couplings severed: llms.IsTierName -> model.IsTierName, and the chatbot DefaultChatbotInputName const localized. - store.go: a DELIBERATELY LEAN SkillStore — skill lifecycle (CRUD + visibility) + versioning + scheduling ONLY. The KV/file/quota sub-stores that were fused into mort's interface are the tools/ store seams; email/channel grants stay host concerns. - runnable.go: Skill.ToRunnable() lowers a skill into run.RunnableAgent (flat tool list, no palette — composition is a host concern); DueAt() helper. - memory.go: NewMemory() — zero-dep in-process SkillStore (visibility filters, newest-first versions). Tests: ToRunnable mapping, visibility (public/shared/private) listing, version ordering + lookup. No mort dependency (go.mod tidy clean); core imports ZERO from skill. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
package skill
|
||||
|
||||
import "time"
|
||||
|
||||
// SkillVersion is one immutable snapshot of a Skill at the moment it
|
||||
// was saved. The skill_versions table is append-only; pruning is by
|
||||
// retention policy in PruneOldVersions.
|
||||
//
|
||||
// Why: edit history with rollback (v3) and the admin pin gate (v3 Phase 4)
|
||||
// both need a stable snapshot of the skill at a known version. The Snapshot
|
||||
// field carries the FULL Skill struct so a later restore or pin produces
|
||||
// the exact agent definition that was saved — system_prompt, tools,
|
||||
// schedule, every field — not a synthesized partial snapshot.
|
||||
//
|
||||
// What: identity (UUID per snapshot) + skill ref + version-string copy +
|
||||
// the full Skill payload + audit fields (saved_by, saved_at, edit_summary).
|
||||
//
|
||||
// Test: see skill_version_test.go for round-trip, list ordering, prune
|
||||
// retention, and version-by-number disambiguation coverage.
|
||||
type SkillVersion struct {
|
||||
ID string // UUID per snapshot (NOT the skill's ID)
|
||||
SkillID string // FK to skills.id (conceptually; not enforced by GORM)
|
||||
Version string // Skill.Version at save time (semver)
|
||||
Snapshot Skill // full Skill struct embedded; serialised as JSON
|
||||
SavedBy string // caller member ID (or "" for builtin loader / pre-v3)
|
||||
SavedAt time.Time // wall-clock save time
|
||||
EditSummary string // optional human-readable note ("changed model tier", "...")
|
||||
}
|
||||
Reference in New Issue
Block a user