> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Context Trace Emitter • Rust AI Agent SDK

> ContextTraceEmitter: Context trace emitter.

# ContextTraceEmitter

> Defined in the [**trace**](../modules/trace) module.

<Badge color="orange">Rust AI Agent SDK</Badge>

Context trace emitter.

## Fields

| Name   | Type                                      | Description |
| ------ | ----------------------------------------- | ----------- |
| `sink` | `Box&lt;dyn ContextTraceSinkProtocol&gt;` | -           |

## Methods

### `new`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn new(sink: impl ContextTraceSinkProtocol + 'static) -> Self
```

Create with a specific sink.

**Parameters:**

| Name   | Type                                      |
| ------ | ----------------------------------------- |
| `sink` | `impl ContextTraceSinkProtocol + 'static` |

### `noop`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn noop() -> Self
```

Create with no-op sink (zero overhead).

### `with_list_sink`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn with_list_sink() -> Self
```

Create with list sink.

### `emit`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn emit(&mut self, event: ContextEvent) -> ()
```

Emit an event.

**Parameters:**

| Name    | Type           |
| ------- | -------------- |
| `event` | `ContextEvent` |

### `events`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn events(&self) -> &[ContextEvent]
```

Get events.

### `clear`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn clear(&mut self) -> ()
```

Clear events.

### `agent_start`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn agent_start(&mut self, agent_id: &str, agent_name: &str, input: &str) -> ()
```

Emit agent start event.

**Parameters:**

| Name         | Type   |
| ------------ | ------ |
| `agent_id`   | `&str` |
| `agent_name` | `&str` |
| `input`      | `&str` |

### `agent_end`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn agent_end(&mut self, agent_id: &str, agent_name: &str, output: &str, duration_ms: u64) -> ()
```

Emit agent end event.

**Parameters:**

| Name          | Type   |
| ------------- | ------ |
| `agent_id`    | `&str` |
| `agent_name`  | `&str` |
| `output`      | `&str` |
| `duration_ms` | `u64`  |

### `tool_start`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn tool_start(&mut self, tool_name: &str, args: serde_json::Value) -> ()
```

Emit tool start event.

**Parameters:**

| Name        | Type                |
| ----------- | ------------------- |
| `tool_name` | `&str`              |
| `args`      | `serde_json::Value` |

### `tool_end`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn tool_end(&mut self, tool_name: &str, result: serde_json::Value, duration_ms: u64) -> ()
```

Emit tool end event.

**Parameters:**

| Name          | Type                |
| ------------- | ------------------- |
| `tool_name`   | `&str`              |
| `result`      | `serde_json::Value` |
| `duration_ms` | `u64`               |

## Source

<Card title="View on GitHub" icon="github" href="https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-rust/praisonai/src/trace/mod.rs#L629">
  `praisonai/src/trace/mod.rs` at line 629
</Card>

***

## Related Documentation

<CardGroup cols={2}>
  <Card title="Rust Context Management" icon="layer-group" href="/docs/rust/context-management" />

  <Card title="Rust Token Management" icon="coins" href="/docs/rust/token-management" />

  <Card title="Rust Tracing" icon="chart-line" href="/docs/rust/tracing" />

  <Card title="Rust Telemetry" icon="signal" href="/docs/rust/telemetry" />
</CardGroup>
