aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rw-r--r--scripts/test_hermes_integration_asset.py90
1 files changed, 90 insertions, 0 deletions
diff --git a/scripts/test_hermes_integration_asset.py b/scripts/test_hermes_integration_asset.py
new file mode 100644
index 00000000..f3778214
--- /dev/null
+++ b/scripts/test_hermes_integration_asset.py
@@ -0,0 +1,90 @@
+import importlib.util
+import unittest
+from pathlib import Path
+
+
+ASSET = Path(__file__).parents[1] / "src/integration/assets/hermes/__init__.py"
+
+
+def load_asset():
+ spec = importlib.util.spec_from_file_location("herdr_hermes_integration", ASSET)
+ if spec is None or spec.loader is None:
+ raise RuntimeError("could not load Hermes integration asset")
+ module = importlib.util.module_from_spec(spec)
+ spec.loader.exec_module(module)
+ return module
+
+
+class FakeContext:
+ def __init__(self):
+ self.hooks = {}
+
+ def register_hook(self, name, callback):
+ self.hooks[name] = callback
+
+
+class HermesIntegrationAssetTests(unittest.TestCase):
+ def test_reports_only_root_session_identity(self):
+ module = load_asset()
+ calls = []
+ module._send = lambda method, params: calls.append((method, params))
+ context = FakeContext()
+ module.register(context)
+
+ self.assertEqual(
+ set(context.hooks),
+ {"on_session_start", "on_session_reset", "pre_llm_call"},
+ )
+
+ context.hooks["on_session_start"](session_id="root-1", platform="tui")
+ context.hooks["pre_llm_call"](session_id="root-1", platform="tui")
+ context.hooks["pre_llm_call"](session_id="child", platform="subagent")
+ context.hooks["on_session_reset"](session_id="root-2", platform="tui")
+ context.hooks["pre_llm_call"](
+ session_id="background", platform="tui"
+ )
+
+ self.assertEqual(
+ calls,
+ [
+ (
+ "pane.report_agent_session",
+ {
+ "agent_session_id": "root-1",
+ "session_start_source": "startup",
+ },
+ ),
+ (
+ "pane.report_agent_session",
+ {
+ "agent_session_id": "root-2",
+ "session_start_source": "new",
+ },
+ ),
+ ],
+ )
+
+ def test_first_turn_recovers_resumed_session_identity(self):
+ module = load_asset()
+ calls = []
+ module._send = lambda method, params: calls.append((method, params))
+ context = FakeContext()
+ module.register(context)
+
+ context.hooks["pre_llm_call"](session_id="resumed", platform="cli")
+
+ self.assertEqual(
+ calls,
+ [
+ (
+ "pane.report_agent_session",
+ {
+ "agent_session_id": "resumed",
+ "session_start_source": "resume",
+ },
+ )
+ ],
+ )
+
+if __name__ == "__main__":
+ unittest.main()