Skip to content

feat(adk): deepagents support default filesystem tools#773

Open
meguminnnnnnnnn wants to merge 27 commits intoalpha/08from
feat/wdz/deep_fs
Open

feat(adk): deepagents support default filesystem tools#773
meguminnnnnnnnn wants to merge 27 commits intoalpha/08from
feat/wdz/deep_fs

Conversation

@meguminnnnnnnnn
Copy link
Contributor

What type of PR is this?

Check the PR title.

  • This PR title match the format: <type>(optional scope): <description>
  • The description of this PR title is user-oriented and clear enough for others to understand.
  • Attach the PR updating the user documentation if the current PR requires user awareness at the usage level. User docs repo

(Optional) Translate the PR title into Chinese.

(Optional) More detailed description for this PR(en: English/zh: Chinese).

en:
zh(optional):

(Optional) Which issue(s) this PR fixes:

(optional) The PR that updates user documentation:

shentongmartin and others added 26 commits February 4, 2026 14:32
…722)

* feat: add enhanced tool support with multimodal output capabilities and improve message formatting

This commit introduces enhanced tool interfaces that support structured multimodal outputs,
enabling tools to return rich content beyond simple text responses.

Key Changes:

1. New Enhanced Tool Interfaces:
   - Added EnhancedInvokableTool and EnhancedStreamableTool interfaces for multimodal tool execution
   - Both interfaces use ToolCallInfo as input and return ToolResult for structured output

2. ToolResult Schema:
   - Introduced ToolResult type to represent multimodal tool outputs
   - Supports multiple content types: text, image, audio, video, and file
   - Added ToolOutputPart with Index field for streaming chunk merging
   - Implemented ToMessageInputParts() for seamless model integration

3. ToolsNode Enhancements:
   - Extended ToolsNode to support both legacy and enhanced tool types
   - Added automatic conversion between invokable and streamable endpoints
   - Implemented middleware support for enhanced tools
   - Enhanced interrupt and rerun mechanism to handle ToolResult

4. React Agent Integration:
   - Introduce enhancedToolResultSender and enhancedStreamToolResultSender types
   - Support sending *schema.ToolResult with multimodal content (images, audio, video, files)
   - Implement EnhancedInvokable and EnhancedStreamable middleware in tool result collector

5. Message.String() Enhancement:
   - Add formatting support for UserInputMultiContent, AssistantGenMultiContent, and MultiContent
   - Implement formatInputPart, formatOutputPart, and formatChatMessagePart helper functions
   - Create mediaPartFormatter interface with wrapper types for unified media formatting

6. User Input Multi-Content Concatenation:
   - Implement concatUserMultiContent function for merging MessageInputPart slices
   - Support text and base64 audio merging with proper MIME type handling
   - Integrate into ConcatMessages function

7. Callback System:
   - Added CallbackInput and CallbackOutput types for tool callbacks
   - Implemented conversion functions for different callback input/output types

8. Comprehensive Test Coverage:
   - Added tests for enhanced invokable and streamable tools
   - Added TestMessageString with 14 test cases covering various message types

Impact:
- Enables tools to return rich multimodal content (images, audio, video, files)
- Provides foundation for more sophisticated tool implementations
- Maintains full backward compatibility with existing tool ecosystem
…string]bool (#737)

- Update ToolsConfig.ReturnDirectly type
- Update ChatModelAgentContext.ReturnDirectly type
- Update internal types: chatModelAgentExecCtx, execContext, reactConfig
- Update all related function signatures
- Update test files with new type syntax

Change-Id: I7d819f1c44da91b76cf9a9f867a88008068153b8
Change-Id: I61cd3709e78b5e1ef1fe169572913e7e35946d56
* feat(adk): tool reduction middleware

* refactor(adk): move ancient reduction middleware to internal package

* chore(adk): reduction mw add i18n, rename TokenCounter

* chore(adk): add reduction mw comments

* chore(adk): refactor reduction mw config field, tool stream copy
…to value types and added extensive test suite for backend_inmemory GrepRaw implementation (#750)

* feat(adk): enhance GrepRequest with value-type parameters and comprehensive test coverage

Enhanced GrepRequest API by converting pointer parameters to value types and added extensive test suite for backend_inmemory GrepRaw implementation.

Key Improvements:

1. GrepRequest Parameter Enhancement (backend.go):
   - Converted AfterLines, BeforeLines, ContextLines, HeadLimit, Offset from *int to int
   - Simplified parameter usage: direct value assignment instead of pointer references
   - Added clear semantics: values <= 0 indicate unset/default state
   - Improved API ergonomics and reduced boilerplate code

2. Backend_inmemory GrepRaw Support (backend_inmemory.go):
   - Updated parameter handling logic to support value-based parameters
   - Enhanced applyContext function with proper value validation (> 0 checks)
   - Improved applyPagination to handle int parameters correctly
   - Maintained backward compatibility while simplifying implementation

3. Middleware Integration (middlewares/filesystem/filesystem.go):
   - Added seamless pointer-to-value conversion for parameter passing
   - Implemented proper default value handling for HeadLimit and Offset
   - Ensured compatibility between middleware and backend layers

4. Comprehensive Test Suite (backend_inmemory_test.go):
   - Added 40+ table-driven test scenarios for GrepRaw functionality
   - Implemented concurrent safety tests (50 goroutines)
   - Added edge case tests (long lines, unicode, special characters)
   - Created detailed content validation tests
   - Added 4 performance benchmark tests
   - Included complete test coverage documentation

Test Coverage:
- All output modes: 100% (files_with_matches, content, count)
- Parameter combinations: comprehensive coverage
- Context lines: all combinations tested
- Pagination: HeadLimit + Offset scenarios
- Error handling: invalid patterns, boundary conditions
- Concurrency: thread-safety verified
- Performance: benchmarked common use cases

Impact:
- Simplified API: ContextLines: 1 instead of &contextLines
- Better usability: no pointer variable creation needed
- Enhanced reliability: comprehensive test coverage added
- Improved maintainability: clear parameter semantics

Files Changed:
- adk/filesystem/backend.go: parameter type definitions
- adk/filesystem/backend_inmemory.go: GrepRaw implementation
- adk/filesystem/backend_inmemory_test.go: comprehensive test suite
- adk/middlewares/filesystem/filesystem.go: middleware integration
- adk/middlewares/filesystem/filesystem_test.go: test updates
- adk/middlewares/filesystem/prompt.go: minor adjustments

* feat(adk): add jsonschema descriptions to filesystem tool arguments

Add detailed JSON Schema descriptions to all filesystem tool argument
structs for better AI model understanding and tool invocation.

Changes:
- readFileArgs: Added descriptions for file_path, offset, and limit fields
- writeFileArgs: Added descriptions for file_path and content fields
- editFileArgs: Added descriptions for file_path, old_string, new_string,
  and replace_all fields with default value annotation
- globArgs: Added descriptions for pattern and path fields
- grepArgs: Added comprehensive descriptions for all 14 fields including
  pattern, path, glob, output_mode (with enum values), context options
  (-A/-B/-C), line numbers, case sensitivity, file type, pagination
  (head_limit/offset), and multiline mode

Also updated tool descriptions in prompt.go:
- WriteFileToolDesc: Improved usage guidelines with clearer instructions
- GlobToolDesc: Simplified description focusing on key capabilities

This enhancement enables LLM-based agents to better understand tool
parameters and generate more accurate tool calls.
* refactor(adk): refactor tool reduction middleware

* refactor(adk): flatten reducton middleware configs, remove redundant parts
@meguminnnnnnnnn meguminnnnnnnnn force-pushed the feat/wdz/deep_fs branch 2 times, most recently from e036435 to a015ab4 Compare February 5, 2026 13:58
@codecov
Copy link

codecov bot commented Feb 5, 2026

Codecov Report

❌ Patch coverage is 54.23729% with 27 lines in your changes missing coverage. Please review.
⚠️ Please upload report for BASE (alpha/08@679b911). Learn more about missing BASE report.

Files with missing lines Patch % Lines
adk/prebuilt/deep/deep.go 44.00% 13 Missing and 1 partial ⚠️
adk/middlewares/filesystem/filesystem.go 41.17% 7 Missing and 3 partials ⚠️
adk/prebuilt/deep/task_tool.go 50.00% 3 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##             alpha/08     #773   +/-   ##
===========================================
  Coverage            ?   79.74%           
===========================================
  Files               ?      146           
  Lines               ?    15857           
  Branches            ?        0           
===========================================
  Hits                ?    12645           
  Misses              ?     2228           
  Partials            ?      984           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

7 participants