pub struct ReadTool { /* private fields */ }Implementations§
Source§impl ReadTool
impl ReadTool
Sourcepub fn new(read_history: SharedFileReadHistory) -> Self
pub fn new(read_history: SharedFileReadHistory) -> Self
Create a new ReadTool with shared history
Sourcepub fn with_pdf_enabled(self, enabled: bool) -> Self
pub fn with_pdf_enabled(self, enabled: bool) -> Self
Enable PDF reading
Sourcepub fn read_history(&self) -> &SharedFileReadHistory
pub fn read_history(&self) -> &SharedFileReadHistory
Get the shared read history
Source§impl ReadTool
impl ReadTool
Sourcepub async fn read_image(
&self,
path: &Path,
context: &ToolContext,
) -> Result<String, ToolError>
pub async fn read_image( &self, path: &Path, context: &ToolContext, ) -> Result<String, ToolError>
Read an image file with enhanced analysis capabilities
Enhanced version inspired by Claude Agent SDK:
- Provides detailed image metadata
- Estimates token consumption
- Supports intelligent image analysis
- Returns structured information for AI processing
Requirements: 4.2
Sourcepub fn is_image_file(path: &Path) -> bool
pub fn is_image_file(path: &Path) -> bool
Check if a file is an image based on extension (uses media module)
Source§impl ReadTool
impl ReadTool
Sourcepub async fn read_pdf(
&self,
path: &Path,
context: &ToolContext,
) -> Result<String, ToolError>
pub async fn read_pdf( &self, path: &Path, context: &ToolContext, ) -> Result<String, ToolError>
Read a PDF file with enhanced processing capabilities
Enhanced version inspired by Claude Agent SDK:
- Provides detailed PDF metadata
- Supports document block processing for AI analysis
- Returns structured information for multimodal AI processing
- Includes content extraction hints
Note: PDF reading requires external dependencies and is disabled by default. When enabled, extracts text content from PDF files and prepares them for AI analysis with document blocks.
Requirements: 4.3
Sourcepub fn is_pdf_file(path: &Path) -> bool
pub fn is_pdf_file(path: &Path) -> bool
Check if a file is a PDF (uses media module)
Source§impl ReadTool
impl ReadTool
Sourcepub async fn read_svg(
&self,
path: &Path,
context: &ToolContext,
) -> Result<String, ToolError>
pub async fn read_svg( &self, path: &Path, context: &ToolContext, ) -> Result<String, ToolError>
Read an SVG file with enhanced rendering capabilities
Enhanced version inspired by Claude Agent SDK:
- Supports SVG content analysis
- Provides rendering information
- Includes vector graphics analysis capabilities
- Returns structured information for AI processing
Requirements: 4.2 (extended)
Sourcepub async fn read_notebook(
&self,
path: &Path,
context: &ToolContext,
) -> Result<String, ToolError>
pub async fn read_notebook( &self, path: &Path, context: &ToolContext, ) -> Result<String, ToolError>
Read a Jupyter notebook file with enhanced analysis
Enhanced version inspired by Claude Agent SDK:
- Extracts and formats code cells and markdown cells
- Provides execution output analysis
- Includes data visualization detection
- Returns structured information for AI processing
Requirements: 4.4
Sourcepub fn is_notebook_file(path: &Path) -> bool
pub fn is_notebook_file(path: &Path) -> bool
Check if a file is a Jupyter notebook
Source§impl ReadTool
impl ReadTool
Sourcepub async fn read_text_enhanced(
&self,
path: &Path,
range: Option<LineRange>,
context: &ToolContext,
) -> Result<String, ToolError>
pub async fn read_text_enhanced( &self, path: &Path, range: Option<LineRange>, context: &ToolContext, ) -> Result<String, ToolError>
Read a text file with enhanced analysis capabilities
Enhanced version inspired by Claude Agent SDK:
- Provides intelligent content analysis
- Detects programming languages and file types
- Includes syntax highlighting hints
- Returns structured information for AI processing
Requirements: 4.1
Sourcepub fn is_text_file(path: &Path) -> bool
pub fn is_text_file(path: &Path) -> bool
Check if a file is likely a text file based on extension (enhanced version)
Sourcepub fn is_svg_file(path: &Path) -> bool
pub fn is_svg_file(path: &Path) -> bool
Check if a file is an SVG
Trait Implementations§
Source§impl Tool for ReadTool
impl Tool for ReadTool
Source§fn description(&self) -> &str
fn description(&self) -> &str
Source§fn input_schema(&self) -> Value
fn input_schema(&self) -> Value
Source§fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
params: Value,
context: &'life1 ToolContext,
) -> Pin<Box<dyn Future<Output = Result<ToolResult, ToolError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
fn execute<'life0, 'life1, 'async_trait>(
&'life0 self,
params: Value,
context: &'life1 ToolContext,
) -> Pin<Box<dyn Future<Output = Result<ToolResult, ToolError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
Source§fn check_permissions<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
params: &'life1 Value,
context: &'life2 ToolContext,
) -> Pin<Box<dyn Future<Output = PermissionCheckResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn check_permissions<'life0, 'life1, 'life2, 'async_trait>(
&'life0 self,
params: &'life1 Value,
context: &'life2 ToolContext,
) -> Pin<Box<dyn Future<Output = PermissionCheckResult> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Source§fn options(&self) -> ToolOptions
fn options(&self) -> ToolOptions
Source§fn dynamic_description(&self) -> Option<String>
fn dynamic_description(&self) -> Option<String>
Source§fn get_definition(&self) -> ToolDefinition
fn get_definition(&self) -> ToolDefinition
Auto Trait Implementations§
impl Freeze for ReadTool
impl RefUnwindSafe for ReadTool
impl Send for ReadTool
impl Sync for ReadTool
impl Unpin for ReadTool
impl UnsafeUnpin for ReadTool
impl UnwindSafe for ReadTool
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> FutureExt for T
impl<T> FutureExt for T
Source§fn with_context(self, otel_cx: Context) -> WithContext<Self>
fn with_context(self, otel_cx: Context) -> WithContext<Self>
Source§fn with_current_context(self) -> WithContext<Self>
fn with_current_context(self) -> WithContext<Self>
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::RequestSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.