<!--
 ⚠️  AUTO-GENERATED FILE - DO NOT EDIT MANUALLY
 This file is automatically generated by scripts/docs-generator.js
 To make changes, edit the source TypeScript files or update the generator script
-->

[agents](../../) / [Exports](../modules) / IProgressReportingTool

# Interface: IProgressReportingTool

🆕 IProgressReportingTool - Optional interface for tools that can provide their own progress information

This interface extends the standard IToolInterface to allow tools to optionally provide:

- Estimated execution duration
- Step-by-step execution plans
- Real-time progress callbacks

Benefits:

- Tools can provide accurate progress information based on their internal knowledge
- No simulation or fake progress - only real tool-provided estimates
- Completely optional - existing tools work unchanged
- Tools can self-report progress for better user experience

## Hierarchy

- [`IToolInterface`](IToolInterface)

  ↳ **`IProgressReportingTool`**

## Table of contents

### Properties

- [schema](IProgressReportingTool#schema)

### Methods

- [getEstimatedDuration](IProgressReportingTool#getestimatedduration)
- [getExecutionSteps](IProgressReportingTool#getexecutionsteps)
- [setProgressCallback](IProgressReportingTool#setprogresscallback)
- [execute](IProgressReportingTool#execute)
- [validate](IProgressReportingTool#validate)
- [validateParameters](IProgressReportingTool#validateparameters)
- [getDescription](IProgressReportingTool#getdescription)

## Properties

### schema

• **schema**: [`IToolSchema`](IToolSchema)

Tool schema

#### Inherited from

[IToolInterface](IToolInterface).[schema](IToolInterface#schema)

#### Defined in

[packages/agents/src/interfaces/tool.ts:207](https://github.com/woojubb/robota/blob/4f4c8a3197e92ddd43d12dc9186b0771983054c9/packages/agents/src/interfaces/tool.ts#L207)

## Methods

### getEstimatedDuration

▸ **getEstimatedDuration**(`parameters`): `number`

Get estimated execution duration for given parameters (optional)

Tools can implement this to provide accurate time estimates based on:

- Parameter complexity (e.g., search query length, file size)
- Historical execution data
- Internal optimization knowledge

#### Parameters

| Name         | Type                                            | Description                                     |
| :----------- | :---------------------------------------------- | :---------------------------------------------- |
| `parameters` | [`TToolParameters`](../modules#ttoolparameters) | The parameters that will be passed to execute() |

#### Returns

`number`

Estimated duration in milliseconds, or undefined if not available

#### Defined in

[packages/agents/src/interfaces/progress-reporting.ts:51](https://github.com/woojubb/robota/blob/4f4c8a3197e92ddd43d12dc9186b0771983054c9/packages/agents/src/interfaces/progress-reporting.ts#L51)

---

### getExecutionSteps

▸ **getExecutionSteps**(`parameters`): [`IToolExecutionStep`](IToolExecutionStep)[]

Get execution steps for given parameters (optional)

Tools can implement this to provide step-by-step execution plans:

- webSearch: [query processing, API call, result parsing, filtering]
- fileSearch: [file scanning, content reading, pattern matching, result formatting]
- github-mcp: [authentication, API request, response processing, data transformation]

#### Parameters

| Name         | Type                                            | Description                                     |
| :----------- | :---------------------------------------------- | :---------------------------------------------- |
| `parameters` | [`TToolParameters`](../modules#ttoolparameters) | The parameters that will be passed to execute() |

#### Returns

[`IToolExecutionStep`](IToolExecutionStep)[]

Array of execution steps, or undefined if not available

#### Defined in

[packages/agents/src/interfaces/progress-reporting.ts:64](https://github.com/woojubb/robota/blob/4f4c8a3197e92ddd43d12dc9186b0771983054c9/packages/agents/src/interfaces/progress-reporting.ts#L64)

---

### setProgressCallback

▸ **setProgressCallback**(`callback`): `void`

Set progress callback for real-time updates (optional)

Tools can implement this to provide real-time progress updates during execution:

- Called when each step starts/completes
- Progress value between 0-100 representing completion percentage
- Step name helps users understand what's currently happening

#### Parameters

| Name       | Type                                                        | Description                            |
| :--------- | :---------------------------------------------------------- | :------------------------------------- |
| `callback` | [`TToolProgressCallback`](../modules#ttoolprogresscallback) | Function to call with progress updates |

#### Returns

`void`

#### Defined in

[packages/agents/src/interfaces/progress-reporting.ts:76](https://github.com/woojubb/robota/blob/4f4c8a3197e92ddd43d12dc9186b0771983054c9/packages/agents/src/interfaces/progress-reporting.ts#L76)

---

### execute

▸ **execute**(`parameters`, `context?`): `Promise`\<[`IToolResult`](IToolResult)\>

Execute the tool with given parameters

#### Parameters

| Name         | Type                                             |
| :----------- | :----------------------------------------------- |
| `parameters` | [`TToolParameters`](../modules#ttoolparameters)  |
| `context?`   | [`IToolExecutionContext`](IToolExecutionContext) |

#### Returns

`Promise`\<[`IToolResult`](IToolResult)\>

#### Inherited from

[IToolInterface](IToolInterface).[execute](IToolInterface#execute)

#### Defined in

[packages/agents/src/interfaces/tool.ts:212](https://github.com/woojubb/robota/blob/4f4c8a3197e92ddd43d12dc9186b0771983054c9/packages/agents/src/interfaces/tool.ts#L212)

---

### validate

▸ **validate**(`parameters`): `boolean`

Validate tool parameters

#### Parameters

| Name         | Type                                            |
| :----------- | :---------------------------------------------- |
| `parameters` | [`TToolParameters`](../modules#ttoolparameters) |

#### Returns

`boolean`

#### Inherited from

[IToolInterface](IToolInterface).[validate](IToolInterface#validate)

#### Defined in

[packages/agents/src/interfaces/tool.ts:217](https://github.com/woojubb/robota/blob/4f4c8a3197e92ddd43d12dc9186b0771983054c9/packages/agents/src/interfaces/tool.ts#L217)

---

### validateParameters

▸ **validateParameters**(`parameters`): [`IParameterValidationResult`](IParameterValidationResult)

Validate tool parameters with detailed result

#### Parameters

| Name         | Type                                            |
| :----------- | :---------------------------------------------- |
| `parameters` | [`TToolParameters`](../modules#ttoolparameters) |

#### Returns

[`IParameterValidationResult`](IParameterValidationResult)

#### Inherited from

[IToolInterface](IToolInterface).[validateParameters](IToolInterface#validateparameters)

#### Defined in

[packages/agents/src/interfaces/tool.ts:222](https://github.com/woojubb/robota/blob/4f4c8a3197e92ddd43d12dc9186b0771983054c9/packages/agents/src/interfaces/tool.ts#L222)

---

### getDescription

▸ **getDescription**(): `string`

Get tool description

#### Returns

`string`

#### Inherited from

[IToolInterface](IToolInterface).[getDescription](IToolInterface#getdescription)

#### Defined in

[packages/agents/src/interfaces/tool.ts:227](https://github.com/woojubb/robota/blob/4f4c8a3197e92ddd43d12dc9186b0771983054c9/packages/agents/src/interfaces/tool.ts#L227)
