feat(agents,claude_sdk): skill sets per conversation kind
This commit is contained in:
@@ -108,6 +108,7 @@ if TYPE_CHECKING:
|
||||
from beaver_gateway.agents.base import BaseAgent
|
||||
from beaver_gateway.agents.claude import ClaudeAgent
|
||||
from beaver_gateway.core.events import MessageStreamEvent
|
||||
from beaver_gateway.core.kinds import Kind
|
||||
|
||||
|
||||
_log = logging.getLogger("beaver_gateway.backends.claude_sdk")
|
||||
@@ -574,8 +575,9 @@ class ClaudeSdkBackend:
|
||||
if self._runner.home is not None:
|
||||
env["HOME"] = str(self._runner.home)
|
||||
env.setdefault("CLAUDE_CONFIG_DIR", str(self._runner.home / ".claude"))
|
||||
plugins = self._plugins()
|
||||
sources = agent.prompt_for(as_kind(spec.kind))
|
||||
kind = as_kind(spec.kind)
|
||||
plugins = self._plugins(kind)
|
||||
sources = agent.prompt_for(kind)
|
||||
system_prompt = (
|
||||
prompt_assembly.assemble(sources) if sources else agent.system_prompt
|
||||
)
|
||||
@@ -683,10 +685,10 @@ class ClaudeSdkBackend:
|
||||
|
||||
return {"PreToolUse": [HookMatcher(hooks=[cast("Any", pre_tool_use)])]}
|
||||
|
||||
def _plugins(self) -> list[dict[str, str]]:
|
||||
def _plugins(self, kind: Kind) -> list[dict[str, str]]:
|
||||
plugins: list[dict[str, str]] = []
|
||||
root = self._work_dir / "plugins" / self._agent.name
|
||||
for raw in sorted(self._agent.skill_sets, key=str):
|
||||
root = self._work_dir / "plugins" / self._agent.name / kind
|
||||
for raw in sorted(self._agent.skills_for(kind), key=str):
|
||||
source = Path(str(raw))
|
||||
name = source.name
|
||||
target = root / name
|
||||
|
||||
Reference in New Issue
Block a user