Skip to content

feat: context compression, integration tests, MCP client#5

Merged
zeroasterisk merged 1 commit intomainfrom
feat/context-compression-integration-mcp
Mar 9, 2026
Merged

feat: context compression, integration tests, MCP client#5
zeroasterisk merged 1 commit intomainfrom
feat/context-compression-integration-mcp

Conversation

@zeroasterisk
Copy link
Copy Markdown
Owner

Context Compression (#80) — P2

  • ADK.Context.Compressor behaviour with configurable strategies
  • ADK.Context.Compressor.Truncate — keeps system messages + last N non-system messages
  • ADK.Context.Compressor.Summarize — uses LLM to summarize older messages into condensed history
  • Wired into LlmAgent via context_compressor option — compresses before sending to LLM
  • Configurable threshold (default 50 messages) before compression kicks in
  • 13 new tests

Integration Tests (#92) — P1

  • test/integration/gemini_api_test.exs with 6 test cases hitting real Gemini API
  • Single-turn Q&A, multi-turn with memory, tool use (function call + response round-trip)
  • Agent transfer between sub-agents via Runner
  • Error handling (bad model name, invalid request)
  • Tagged @tag :integration, excluded by default
  • Run: GEMINI_API_KEY=key mix test --include integration
  • Uses gemini-2.0-flash-lite to minimize cost

MCP Client (#77) — Already Complete

  • ADK.MCP.Client with stdio transport, JSON-RPC initialization, list_tools/1, call_tool/3
  • ADK.MCP.ToolAdapter converts MCP tools to ADK FunctionTool structs
  • Mock MCP server in test/support/ for testing
  • 9 existing tests all passing

Tests

  • mix test (excluding integration): 226 tests, 0 failures, 6 excluded
  • Pre-existing flaky async tests occasionally fail (race conditions in test cleanup, not related to this PR)

## Context Compression (#80)
- ADK.Context.Compressor behaviour with configurable strategies
- Truncate strategy: keeps system + last N messages
- Summarize strategy: uses LLM to condense older messages
- Wired into LlmAgent via context_compressor option
- Configurable threshold before compression kicks in

## Integration Tests (#92)
- test/integration/gemini_api_test.exs with real Gemini API tests
- Single-turn Q&A, multi-turn conversation, tool use round-trip
- Agent transfer, error handling (bad model, invalid request)
- Tagged @tag :integration, excluded by default
- Run with: GEMINI_API_KEY=key mix test --include integration

## MCP Client (#77)
- Already implemented in prior PRs with full test coverage
- Client connects via stdio, performs JSON-RPC initialization
- ToolAdapter converts MCP tools to ADK FunctionTools
- Mock MCP server for testing

## Housekeeping
- Added examples build artifacts to .gitignore
@zeroasterisk zeroasterisk merged commit d477eec into main Mar 9, 2026
0 of 4 checks passed
@zeroasterisk zeroasterisk deleted the feat/context-compression-integration-mcp branch March 18, 2026 01:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant