Merge branch 'master' into llm-fn-call
This commit is contained in:
commit
377a670ac8
|
|
@ -5,12 +5,13 @@ All notable changes to this project will be documented in this file.
|
|||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [Unreleased]
|
||||
## [0.10.3] - 1024-12-27
|
||||
|
||||
- Fix logging on interrupt.
|
||||
- Fix web research prompt.
|
||||
- Simplify planning stage by executing tasks directly.
|
||||
- Make research notes available to more agents/tools.
|
||||
- Make read_file always output status panel.
|
||||
|
||||
## [0.10.2] - 2024-12-26
|
||||
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
"""Version information."""
|
||||
|
||||
__version__ = "0.10.1"
|
||||
__version__ = "0.10.3"
|
||||
|
|
|
|||
|
|
@ -15,22 +15,13 @@ CHUNK_SIZE = 8192
|
|||
@tool
|
||||
def read_file_tool(
|
||||
filepath: str,
|
||||
verbose: bool = True,
|
||||
encoding: str = 'utf-8'
|
||||
) -> Dict[str, str]:
|
||||
"""Read and return the contents of a text file.
|
||||
|
||||
Args:
|
||||
filepath: Path to the file to read
|
||||
verbose: Whether to display a Rich panel with read statistics (default: True)
|
||||
encoding: File encoding to use (default: utf-8)
|
||||
|
||||
Returns:
|
||||
Dict containing:
|
||||
- content: The file contents as a string (truncated if needed)
|
||||
|
||||
Raises:
|
||||
RuntimeError: If file cannot be read or does not exist
|
||||
"""
|
||||
start_time = time.time()
|
||||
try:
|
||||
|
|
@ -60,12 +51,11 @@ def read_file_tool(
|
|||
logging.debug(f"File read complete: {total_bytes} bytes in {elapsed:.2f}s")
|
||||
logging.debug(f"Pre-truncation stats: {total_bytes} bytes, {line_count} lines")
|
||||
|
||||
if verbose:
|
||||
console.print(Panel(
|
||||
f"Read {line_count} lines ({total_bytes} bytes) from {filepath} in {elapsed:.2f}s",
|
||||
title="📄 File Read",
|
||||
border_style="bright_blue"
|
||||
))
|
||||
console.print(Panel(
|
||||
f"Read {line_count} lines ({total_bytes} bytes) from {filepath} in {elapsed:.2f}s",
|
||||
title="📄 File Read",
|
||||
border_style="bright_blue"
|
||||
))
|
||||
|
||||
# Truncate if needed
|
||||
truncated = truncate_output(full_content) if full_content else ""
|
||||
|
|
|
|||
|
|
@ -54,19 +54,19 @@ def test_get_implementation_tools():
|
|||
def test_get_web_research_tools():
|
||||
# Test with expert enabled
|
||||
tools = get_web_research_tools(expert_enabled=True)
|
||||
assert len(tools) == 4
|
||||
assert len(tools) == 5
|
||||
assert all(callable(tool) for tool in tools)
|
||||
|
||||
# Get tool names and verify exact matches
|
||||
tool_names = [tool.name for tool in tools]
|
||||
expected_names = ['emit_expert_context', 'ask_expert', 'web_search_tavily', 'emit_research_notes']
|
||||
expected_names = ['emit_expert_context', 'ask_expert', 'web_search_tavily', 'emit_research_notes', 'task_completed']
|
||||
assert sorted(tool_names) == sorted(expected_names)
|
||||
|
||||
# Test without expert enabled
|
||||
tools_no_expert = get_web_research_tools(expert_enabled=False)
|
||||
assert len(tools_no_expert) == 2
|
||||
assert len(tools_no_expert) == 3
|
||||
assert all(callable(tool) for tool in tools_no_expert)
|
||||
|
||||
# Verify exact tool names when expert is disabled
|
||||
tool_names_no_expert = [tool.name for tool in tools_no_expert]
|
||||
assert sorted(tool_names_no_expert) == sorted(['web_search_tavily', 'emit_research_notes'])
|
||||
assert sorted(tool_names_no_expert) == sorted(['web_search_tavily', 'emit_research_notes', 'task_completed'])
|
||||
|
|
|
|||
Loading…
Reference in New Issue