fix(kanban): pin assigned profile toolsets for workers (#45590)
This commit is contained in:
@@ -6675,6 +6675,40 @@ def _worker_terminal_timeout_env(
|
||||
return str(desired)
|
||||
|
||||
|
||||
def _resolve_worker_cli_toolsets(hermes_home: Optional[str]) -> Optional[list[str]]:
|
||||
"""Return the assigned profile's effective CLI toolsets for a worker.
|
||||
|
||||
Dispatcher-spawned workers are launched from a long-lived gateway process,
|
||||
then the child re-enters the CLI with ``-p <assignee>``. Resolve the
|
||||
assignee profile's CLI tool surface at dispatch time and pass it as an
|
||||
explicit ``--toolsets`` pin so worker startup cannot fall back to a stale
|
||||
root/active-profile config or a profile whose top-level ``toolsets`` entry
|
||||
is only the kanban orchestrator surface. ``model_tools`` still appends the
|
||||
task-scoped kanban lifecycle tools when ``HERMES_KANBAN_TASK`` is set.
|
||||
"""
|
||||
if not hermes_home:
|
||||
return None
|
||||
try:
|
||||
from hermes_constants import reset_hermes_home_override, set_hermes_home_override
|
||||
from hermes_cli.config import load_config
|
||||
from hermes_cli.tools_config import _get_platform_tools
|
||||
|
||||
token = set_hermes_home_override(hermes_home)
|
||||
try:
|
||||
cfg = load_config()
|
||||
toolsets = sorted(_get_platform_tools(cfg, "cli"))
|
||||
finally:
|
||||
reset_hermes_home_override(token)
|
||||
return toolsets or None
|
||||
except Exception as exc:
|
||||
_log.debug(
|
||||
"kanban worker: could not resolve CLI toolsets for HERMES_HOME=%r (%s)",
|
||||
hermes_home,
|
||||
exc,
|
||||
)
|
||||
return None
|
||||
|
||||
|
||||
def _default_spawn(
|
||||
task: Task,
|
||||
workspace: str,
|
||||
@@ -6808,6 +6842,9 @@ def _default_spawn(
|
||||
cmd.extend(["--skills", sk])
|
||||
if task.model_override:
|
||||
cmd.extend(["-m", task.model_override])
|
||||
worker_toolsets = _resolve_worker_cli_toolsets(env.get("HERMES_HOME"))
|
||||
if worker_toolsets:
|
||||
cmd.extend(["--toolsets", ",".join(worker_toolsets)])
|
||||
cmd.extend([
|
||||
"chat",
|
||||
"-q", prompt,
|
||||
|
||||
Reference in New Issue
Block a user