feat: first-class skill packs on agents + ship gifsmith builtin
executus CI / test (push) Successful in 3m21s
executus CI / test (push) Successful in 3m21s
Lifts the 'an agent uses a SKILL.md pack' concept out of a host and into the harness: - run.Ports.SkillPacks (SkillPackActivator) — nil-safe port; the executor folds a loaded agent's pack catalog into the system prompt and adds a skill_use loader tool to the toolbox (uses the existing ra.SystemPrompt + toolbox seams) - run.RunnableAgent.SkillPacks + persona.Agent.SkillPacks (+ skill_packs YAML, extends-inherit, ToRunnable) — the Agent noun is now pack-aware - skillpack.Activator — the battery's default port impl (resolve names → packs → catalog + skill_use), with a per-run BundleStager factory the host plumbs; satisfies the port structurally (no import of run) - agentbuiltins: ships gifsmith, a portable focused GIF/MP4 render agent that uses the gif pack — references tool/tier/pack NAMES only, no host coupling A host now wires run.Ports.SkillPacks instead of carrying its own activation glue. Tests: Activator resolution + gifsmith loads through persona→RunnableAgent. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,24 @@
|
||||
// Package agentbuiltins ships executus's canonical builtin agent definitions as
|
||||
// an embedded filesystem. They are portable persona manifests
|
||||
// (agents/<name>/agent.yml): each references tool NAMES, a model-tier NAME, and
|
||||
// skill-pack names — the host binds those to implementations. Nothing here
|
||||
// imports a host or a battery, so any executus consumer can seed these via
|
||||
// persona.LoadBuiltinAgents (or its own loader that reads the same schema):
|
||||
//
|
||||
// persona.LoadBuiltinAgents(ctx, store, agentbuiltins.FS(), skillChecker)
|
||||
//
|
||||
// Ships:
|
||||
// - gifsmith — a focused GIF/MP4 render agent that uses the `gif` skill pack.
|
||||
package agentbuiltins
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"io/fs"
|
||||
)
|
||||
|
||||
//go:embed agents
|
||||
var embedded embed.FS
|
||||
|
||||
// FS returns the builtin agents tree, rooted so that a loader finds each
|
||||
// definition at agents/<name>/agent.yml (the layout LoadBuiltinAgents expects).
|
||||
func FS() fs.FS { return embedded }
|
||||
Reference in New Issue
Block a user