laharikarumanchi/multi-tool-agent
Merge pull request #18 from laharikarumanchi-AI-ML/docs/spec-add-tool-use-failed
docs(spec): add tool_use_failed retry + _log_http_error_body sections (PR #17 follow-up)
Merge pull request #17 from laharikarumanchi-AI-ML/restore/groq-400-fix
Merge pull request #16 from laharikarumanchi-AI-ML/docs/spec-reality-audit
Merge pull request #15 from laharikarumanchi-AI-ML/feat/auto-dotenv
docs(llm): note tool_use_failed retry exception in chat_with_tools docstring
fix(llm): retry Groq HTTP 400 with code=tool_use_failed
fix(orchestrator): omit assistant `content` field when None alongside tool_calls
fix(llm): log response body on Groq HTTP error before raising
Merge pull request #14 from laharikarumanchi-AI-ML/chore/unused-imports-sweep
docs(spec): audit + reconcile spec vs built reality (6 drifts addressed)
test: stub load_project_env() in conftest to keep tests hermetic
feat(env): auto-load .env at CLI + eval entry points (no more `source .env`)
chore: remove unused imports across multitool/ and tests/
Merge pull request #13 from laharikarumanchi-AI-ML/revert-11-fix/groq-400-multi-turn
Revert "docs(llm): note tool_use_failed retry exception in chat_with_tools do…"
Merge pull request #12 from laharikarumanchi-AI-ML/revert-10-fix/groq-400-multi-turn
Revert "fix(llm): retry Groq HTTP 400 tool_use_failed (real root cause of 36% eval crashes)"
Merge pull request #11 from laharikarumanchi-AI-ML/fix/groq-400-multi-turn
docs(llm): note tool_use_failed retry exception in chat_with_tools docstring
Merge pull request #10 from laharikarumanchi-AI-ML/fix/groq-400-multi-turn
fix(llm): retry Groq HTTP 400 with code=tool_use_failed
fix(orchestrator): omit assistant `content` field when None alongside tool_calls
fix(llm): log response body on Groq HTTP error before raising
Merge pull request #9 from laharikarumanchi-AI-ML/feat/streamlit-demo
test(demo): smoke tests for app load, missing API key, example chips
chore(demo): HF Spaces frontmatter + requirements.txt note + .gitignore
feat(demo): Streamlit app for multi-tool agent
Merge pull request #8 from laharikarumanchi-AI-ML/feat/cli
fix(cli): treat --trace PATH as directory, always (avoid silent trace loss)
fix(cli): drop dead max-steps partial-answer branch + correct test contract
test(cli): cover argparse errors, missing key, stdout, verbose, max-steps
feat(cli): add multitool ask subcommand with argparse
Merge pull request #7 from laharikarumanchi-AI-ML/feat/eval
fix(eval): regex truncation, tolerance=None crash, empty-queries crash
feat(eval): run.py harness with per-task checkpointing
feat(eval): scorer with first-float-in-string heuristic
feat(eval): 25-query hand-curated test set, balanced across 5 categories
Merge pull request #6 from laharikarumanchi-AI-ML/feat/orchestrator
fix(agent): code-review polish — I-1, I-2 + 4 minor improvements
test(agent): end-to-end with scripted mock LLM
test(agent): per-dispatch retry budget + step-ceiling backstop
feat(agent): Orchestrator.run() — main function-calling loop
feat(agent): _dispatch_with_retry with 2-attempt budget
feat(agent): Orchestrator + AgentResult skeleton
feat(agent): Trace — JSON logger flushed after every step
feat(agent): system prompt for the orchestrator
Merge pull request #5 from laharikarumanchi-AI-ML/feat/llm-client
fix(llm): code-review polish — C1 + I1-I5 from PR #5 reviewer
feat(llm): GeminiClient.chat_with_tools() with synthesized call IDs
