ulysses/services
andrewemer cd02ac7ef6
fix(agent): skill-prescribed tools never reach the model's schema list (#4008)
* Agent: make skill-prescribed tools actually callable

The skill index and matched-skill procedures are injected into the
prompt, but tool selection never followed: manage_skills wasn't in the
RAG-selected schema list (so the model substituted manage_memory), and
a matched skill could prescribe tools (grep, read_file) the model had
no schema for. Now:

- manage_skills rides along whenever the owner has any skills indexed
- a Jaccard-matched skill's requires_toolsets join the selection
- viewing a skill mid-turn via manage_skills unlocks its
  requires_toolsets for subsequent rounds
- admin-intent turns send _ADMIN_TOOLS schemas, matching the prompt
  text _build_base_prompt already advertises
- index_for(active_toolsets=None) no longer hides requires_toolsets
  skills from callers that don't know the active set

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Agent: validate skill requires_toolsets against known tools, not TOOL_SECTIONS

grep/glob/ls ship as function schemas without a prompt-prose section,
so gating on TOOL_SECTIONS silently dropped them from a skill's
requires_toolsets.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-06-15 20:32:43 +09:00
..
docs refactor(constants): single source of truth for data dir (#3368) 2026-06-08 09:58:52 +02:00
faces Odysseus v1.0 2026-05-31 23:58:26 +09:00
hwfit feat(cookbook): surface Docker hardware visibility warnings (#3658) 2026-06-15 15:51:04 +09:00
memory fix(agent): skill-prescribed tools never reach the model's schema list (#4008) 2026-06-15 20:32:43 +09:00
research fix(research): track analyzed URLs separately (#3125) 2026-06-10 12:08:22 +01:00
search fix(search): read plain-text, Markdown, and JSON URLs in fetch_webpage_content (#3809) 2026-06-11 14:24:53 +00:00
shell fix: use running loop for shell stream deadlines (#1694) 2026-06-03 13:37:46 +09:00
stt STT: clean temp audio files on transcription failure 2026-06-02 20:43:24 +09:00
tts refactor(constants): single source of truth for data dir (#3368) 2026-06-08 09:58:52 +02:00
youtube fix(youtube): consolidate duplicate handler 2026-06-15 15:03:41 +09:00
__init__.py Odysseus v1.0 2026-05-31 23:58:26 +09:00