Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions tests/test_tui_gateway_server.py
Original file line number Diff line number Diff line change
Expand Up @@ -137,10 +137,10 @@ def test_load_enabled_toolsets_rejects_disabled_mcp_env(monkeypatch, capsys):
)
monkeypatch.setattr(config_mod, "load_config", lambda: {"platform_toolsets": {"cli": ["memory"]}})

# Sorted: ["kanban", "memory"]. `kanban` is auto-recovered by
# _get_platform_tools because it's a non-configurable platform toolset
# Sorted: ["kanban", "memory", "nudge"]. `kanban` is auto-recovered by
# _get_platform_tool because it's a non-configurable platform toolset
# whose tools live in hermes-cli's universe (see toolsets.py).
assert server._load_enabled_toolsets() == ["kanban", "memory"]
assert server._load_enabled_toolsets() == ["kanban", "memory", "nudge"]
err = capsys.readouterr().err
assert "ignoring disabled MCP servers" in err
assert "mcp-off" in err
Expand All @@ -159,7 +159,7 @@ def test_load_enabled_toolsets_falls_back_when_tui_env_invalid(monkeypatch, caps

monkeypatch.setattr(config_mod, "load_config", lambda: {"platform_toolsets": {"cli": ["memory"]}})

assert server._load_enabled_toolsets() == ["kanban", "memory"]
assert server._load_enabled_toolsets() == ["kanban", "memory", "nudge"]
assert "using configured CLI toolsets" in capsys.readouterr().err


Expand Down
3 changes: 2 additions & 1 deletion tools/nudge_tool.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,6 +119,7 @@ def nudge_tool(
action: str = "send",
target: Optional[str] = None,
content: Optional[str] = None,
**kwargs, # Accept framework-injected params like task_id
) -> dict:
"""Manage nudges — inject messages into agent sessions.

Expand Down Expand Up @@ -283,7 +284,7 @@ def _check_nudge() -> bool:

registry.register(
name="nudge",
toolset="cronjob",
toolset="nudge",
schema=NUDGE_SCHEMA,
handler=nudge_tool,
check_fn=_check_nudge,
Expand Down
8 changes: 8 additions & 0 deletions toolsets.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,8 @@
"execute_code", "delegate_task",
# Cronjob management
"cronjob",
# Nudge - for cronjobs to communicate with agent sessions
"nudge",
# Cross-platform messaging (gated on gateway running via check_fn)
"send_message",
# Home Assistant smart home control (gated on HASS_TOKEN via check_fn)
Expand Down Expand Up @@ -132,6 +134,12 @@
"includes": []
},

"nudge": {
"description": "Nudge tool for cronjobs to send messages to running agent sessions",
"tools": ["nudge"],
"includes": []
},

"messaging": {
"description": "Cross-platform messaging: send messages to Telegram, Discord, Slack, SMS, etc.",
"tools": ["send_message"],
Expand Down
Loading