Skip to content

Commit 0e6238c

Browse files
committed
debug-flag
Signed-off-by: yaacov <yzamir@redhat.com>
1 parent 9f1ab85 commit 0e6238c

7 files changed

Lines changed: 55 additions & 11 deletions

File tree

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ uv run mtv-tui # TUI only
9999
| Subcommand | Description |
100100
|------------|-------------|
101101
| *(default)* / `run [--resume ID]` | Start the server + TUI (optionally resume a saved session) |
102+
| `run --dump-http` | Dump LLM HTTP requests/responses to `~/.mtv-agent/dumps/` |
103+
| `run --dump-http-dir DIR` | Set dump directory (implies `--dump-http`) |
102104
| `init [--dir DIR] [--force]` | Bootstrap `~/.mtv-agent/` with config, skills, and commands |
103105
| `config` | Print default `config.json` to stdout |
104106

@@ -129,7 +131,8 @@ Config files are searched in order: `./` (CWD) then `~/.mtv-agent/`.
129131
"skills": { "dir": "~/.mtv-agent/skills" },
130132
"commands": { "dir": "~/.mtv-agent/commands" },
131133
"cache": { "dir": "~/.mtv-agent/cache" },
132-
"agent": { "maxIterations": 20 }
134+
"agent": { "maxIterations": 20 },
135+
"debug": { "dumpHttp": false, "dumpHttpDir": "~/.mtv-agent/dumps" }
133136
}
134137
```
135138

mtv_agent/cli.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,16 @@ def _cmd_run(args: argparse.Namespace) -> None:
9292
**os.environ,
9393
"MTV_AGENT_HOST": "127.0.0.1",
9494
"MTV_AGENT_PORT": str(args.port),
95-
**({"MTV_AGENT_DUMP_HTTP": "1"} if args.dump_http else {}),
95+
**(
96+
{"MTV_AGENT_DUMP_HTTP": "1"}
97+
if args.dump_http or args.dump_http_dir
98+
else {}
99+
),
100+
**(
101+
{"MTV_AGENT_DUMP_HTTP_DIR": args.dump_http_dir}
102+
if args.dump_http_dir
103+
else {}
104+
),
96105
},
97106
)
98107

@@ -184,6 +193,12 @@ def main():
184193
default=False,
185194
help="Dump LLM HTTP requests and responses to ~/.mtv-agent/dumps/",
186195
)
196+
p_run.add_argument(
197+
"--dump-http-dir",
198+
metavar="DIR",
199+
default=None,
200+
help="Directory for HTTP dump files (implies --dump-http)",
201+
)
187202
p_run.set_defaults(func=_cmd_run)
188203

189204
# -- init ----------------------------------------------------------------

mtv_agent/server/app.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ async def lifespan(_app: FastAPI):
7777
_write_startup_error(msg)
7878
raise SystemExit(1) from None
7979

80-
dump_dir = str(Path(settings.dump_dir).expanduser()) if settings.dump_llm else None
80+
dump_dir = str(Path(settings.dump_http_dir).expanduser()) if settings.dump_http else None
8181
llm = LLMClient(
8282
base_url=settings.llm_base_url,
8383
api_key=settings.llm_api_key,

mtv_agent/server/config.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -153,8 +153,8 @@ class Settings:
153153
max_iterations: int = 20
154154
max_history_chars: int = 160_000
155155
mcp_config: str | None = None
156-
dump_llm: bool = False
157-
dump_dir: str = "~/.mtv-agent/dumps"
156+
dump_http: bool = False
157+
dump_http_dir: str = "~/.mtv-agent/dumps"
158158

159159

160160
def load_settings(override: str | None = None) -> Settings:
@@ -179,10 +179,11 @@ def load_settings(override: str | None = None) -> Settings:
179179
cache_dir=cache.get("dir", Settings.cache_dir),
180180
max_iterations=agent.get("maxIterations", Settings.max_iterations),
181181
max_history_chars=agent.get("maxHistoryChars", Settings.max_history_chars),
182-
dump_llm=os.environ.get("MTV_AGENT_DUMP_HTTP", "").strip().lower()
182+
dump_http=os.environ.get("MTV_AGENT_DUMP_HTTP", "").strip().lower()
183183
in ("1", "true", "yes")
184-
or debug.get("dumpLlm", Settings.dump_llm),
185-
dump_dir=debug.get("dumpDir", Settings.dump_dir),
184+
or debug.get("dumpHttp", Settings.dump_http),
185+
dump_http_dir=os.environ.get("MTV_AGENT_DUMP_HTTP_DIR")
186+
or debug.get("dumpHttpDir", Settings.dump_http_dir),
186187
)
187188

188189

mtv_agent/server/data/config.json.example

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
"theme": "textual-dark"
2626
},
2727
"debug": {
28-
"dumpLlm": false,
29-
"dumpDir": "~/.mtv-agent/dumps"
28+
"dumpHttp": false,
29+
"dumpHttpDir": "~/.mtv-agent/dumps"
3030
}
3131
}

tests/test_config.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,31 @@ def test_load_mcp_servers_from_file():
6161
assert stdio_srv.args == ["--flag"]
6262

6363

64+
def test_load_settings_dump_http_from_config():
65+
data = {
66+
"llm": {"baseUrl": "http://localhost:1234/v1"},
67+
"debug": {"dumpHttp": True, "dumpHttpDir": "/tmp/my-dumps"},
68+
}
69+
with tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False) as f:
70+
json.dump(data, f)
71+
f.flush()
72+
s = load_settings(f.name)
73+
assert s.dump_http is True
74+
assert s.dump_http_dir == "/tmp/my-dumps"
75+
76+
77+
def test_load_settings_dump_http_dir_env_var(monkeypatch):
78+
data = {"llm": {"baseUrl": "http://localhost:1234/v1"}}
79+
monkeypatch.setenv("MTV_AGENT_DUMP_HTTP", "1")
80+
monkeypatch.setenv("MTV_AGENT_DUMP_HTTP_DIR", "/tmp/env-dumps")
81+
with tempfile.NamedTemporaryFile(mode="w", suffix=".json", delete=False) as f:
82+
json.dump(data, f)
83+
f.flush()
84+
s = load_settings(f.name)
85+
assert s.dump_http is True
86+
assert s.dump_http_dir == "/tmp/env-dumps"
87+
88+
6489
def test_load_mcp_servers_missing_file():
6590
result = load_mcp_servers("/nonexistent/mcp.json")
6691
assert result == []

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)