{"repo":"NousResearch/hermes-agent","public_id":"19173","display_label":"Hermes setup import and stack trace issues in Teams gateway","summary":"The three members appear related: one bug report describes a stack trace and exit during `hermes setup` for gateway setup, and two Teams-related fixes concern importing prompt/print helpers from the right module and repairing interactive setup imports. The titles suggest a shared import-related cause, but the exact link between the bug report and the fixes isn't confirmed by the titles alone.","subsystem":null,"counts":{"members":3,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":19774,"merged_at":"2026-05-04T13:54:28+00:00"},"resolution":{"state":"resolved","by":"pr-19774"},"freshness":{"state":"verified","last_verified_at":"2026-05-04T13:54:28+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.6666666666666666},"fix_edges":[{"issue_number":19173,"pr_number":19774,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-05-04T13:54:28+00:00"}],"members":[{"kind":"issue","number":19173,"title":"[Bug]: hermes setup stack trace and exit on gateway setup","url":null,"state":"closed"},{"kind":"pr","number":19188,"title":"fix(teams): repair interactive setup imports","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#19774","number":19774},{"kind":"pr","value":"#18325","number":18325}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":19774,"title":"fix(teams): import prompt/print helpers from cli_output, not config","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["plugins/platforms/teams/adapter.py","scripts/release.py","tests/gateway/test_teams.py"],"fix_hunks":[{"file":"plugins/platforms/teams/adapter.py","hunks":["@@ -592,6 +592,8 @@ def interactive_setup() -> None:\n     from hermes_cli.config import (\n         get_env_value,\n         save_env_value,\n+    )\n+    from hermes_cli.cli_output import (\n         prompt,\n         prompt_yes_no,\n         print_info,"]},{"file":"scripts/release.py","hunks":["@@ -344,6 +344,7 @@\n     \"[redacted:email]\": \"g-guthrie\",\n     \"[redacted:email]\": \"bobashopcashier\",\n     \"77253505+bobashopcashier@users.noreply.github.com\": \"bobashopcashier\",\n+    \"25355950+megastary@users.noreply.github.com\": \"megastary\",  # PR #18325\n     \"[redacted:email]\": \"areu01or00\",\n     \"[redacted:email]\": \"bryanyoung\",\n     \"[redacted:email]\": \"christomitov\","]},{"file":"tests/gateway/test_teams.py","hunks":["@@ -313,9 +313,33 @@ def test_register_has_platform_hint(self):\n \n \n # ---------------------------------------------------------------------------\n-# Tests: Connect / Disconnect\n+# Tests: Interactive setup (import fix regression — #18325 / #19173)\n # ---------------------------------------------------------------------------\n \n+class TestTeamsInteractiveSetup:\n+    def test_interactive_setup_persists_credentials(self, tmp_path, monkeypatch):\n+        \"\"\"Regression for #19173: interactive_setup must import prompt helpers\n+        from hermes_cli.cli_output (not hermes_cli.config) and persist\n+        credentials to .env without crashing.\n+        \"\"\"\n+        hermes_home = tmp_path / \"hermes\"\n+        monkeypatch.setenv(\"HERMES_HOME\", str(hermes_home))\n+\n+        import hermes_cli.cli_output as cli_output_mod\n+\n+        answers = iter([\"client-id\", \"client-secret\", \"tenant-id\", \"aad-1, aad-2\"])\n+        monkeypatch.setattr(cli_output_mod, \"prompt\", lambda *_a, **_kw: next(answers))\n+        monkeypatch.setattr(cli_output_mod, \"prompt_yes_no\", lambda *_a, **_kw: True)\n+        monkeypatch.setattr(cli_output_mod, \"print_info\", lambda *_a, **_kw: None)\n+        monkeypatch.setattr(cli_output_mod, \"print_success\", lambda *_a, **_kw: None)\n+        monkeypatch.setattr(cli_output_mod, \"print_warning\", lambda *_a, **_kw: None)\n+\n+        _teams_mod.interactive_setup()\n+\n+        env_text = (hermes_home / \".env\").read_text(encoding=\"utf-8\")\n+        assert \"TEAMS_CLIENT_ID=client-id\" in env_text\n+        assert \"TEAMS_TENANT_ID=tenant-id\" in env_text\n+\n class TestTeamsConnect:\n     @pytest.mark.asyncio\n     async def test_connect_fails_without_sdk(self, monkeypatch):\n"]}]}],"trust":{"default_tier":"verified","includes_suggested":false}}