PtcRunner.SubAgent.Telemetry (PtcRunner v0.5.1)
View SourceTelemetry event emission for SubAgent execution.
This module provides helpers for emitting telemetry events during SubAgent execution, enabling integration with observability tools like Prometheus, OpenTelemetry, and custom handlers.
Events
All events are prefixed with [:ptc_runner, :sub_agent].
| Event | Measurements | Metadata |
|---|---|---|
[:run, :start] | %{} | agent, context |
[:run, :stop] | %{duration: native_time} | agent, step, status |
[:run, :exception] | %{duration: native_time} | agent, kind, reason, stacktrace |
[:turn, :start] | %{} | agent, turn |
[:turn, :stop] | %{duration: native_time, tokens: n} | agent, turn, program |
[:llm, :start] | %{} | agent, turn, messages |
[:llm, :stop] | %{duration: native_time, tokens: n} | agent, turn, response |
[:tool, :start] | %{} | agent, tool_name, args |
[:tool, :stop] | %{duration: native_time} | agent, tool_name, result |
[:tool, :exception] | %{duration: native_time} | agent, tool_name, kind, reason, stacktrace |
Usage
Attach handlers using :telemetry.attach_many/4:
:telemetry.attach_many(
"my-handler",
[
[:ptc_runner, :sub_agent, :run, :stop],
[:ptc_runner, :sub_agent, :tool, :stop]
],
&MyApp.Telemetry.handle_event/4,
nil
)Duration
Duration measurements use native time units via System.monotonic_time/0.
Convert to milliseconds with System.convert_time_unit(duration, :native, :millisecond).
Summary
Functions
Emit a telemetry event.
Returns the telemetry event prefix.
Execute a function within a telemetry span.
Functions
Emit a telemetry event.
Parameters
event_suffix- List of atoms to append to the prefixmeasurements- Map of measurements (default:%{})metadata- Map of metadata
@spec prefix() :: [atom()]
Returns the telemetry event prefix.
Examples
iex> PtcRunner.SubAgent.Telemetry.prefix()
[:ptc_runner, :sub_agent]
Execute a function within a telemetry span.
Emits :start, :stop, and :exception events automatically.
The start metadata is passed as-is. The stop metadata receives
any additional measurements or metadata returned from the function.
Parameters
event_suffix- List of atoms to append to the prefix (e.g.,[:run])start_meta- Metadata map for the start eventfun- Zero-arity function to execute. Should return one of:{result, stop_meta}- wherestop_metais merged into stop event metadata{result, extra_measurements, stop_meta}- whereextra_measurementsis merged into stop measurements andstop_metais merged into stop event metadata