All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Added the
distributed-tracingextra and high-levelconfigure_distributed_tracing()setup for Splunk AO export plus supported upstream FastAPI/Starlette, Requests, HTTPX, and aiohttp-client instrumentation. The lower-levelinstrument_distributed_tracing()transport helper remains available for applications that configure their provider separately. - Explicit SDK sessions now propagate across supported services as standard
W3C
gen_ai.conversation.idbaggage. Session selection is ambient within the current thread or async execution context and is shared by logger instances in that context. SDK routing, authentication, and application identity are not propagated. - Added module-level
get_tracing_headers()andextract_tracing_context()helpers for standard W3Ctraceparentandtracestatepropagation.TracingMiddlewarenow extracts and scopes that OpenTelemetry context for Starlette/FastAPI requests. - SDK-owned authentication, validation, and CRUD HTTP requests are suppressed from automatic application HTTP instrumentation, preventing control-plane calls from appearing as unrelated application traces.
- The temporarily retained
mode="batch"andmode="distributed"values now use identical scheduled OTLP batch export and W3C propagation. Concluding an operation ends and queues it; a per-operationflush()is not required. - Callback handlers keep a live real root during framework execution so outbound W3C context uses the same identity and visible hierarchy that is exported at commit.
- Normal LangChain, CrewAI, Google ADK, and OpenAI Agents callbacks now enqueue
each completed operation into the existing
BatchSpanProcessorat that operation's end callback. The deprecatedingestion_hookretains its whole-tree compatibility behavior. - Incoming W3C sampling decisions are honored. A remote parent with its sampled flag unset continues to propagate its trace identity, but its Splunk AO descendants are not exported.
- Default logger-owned batching now honors standard OpenTelemetry
OTEL_BSP_*configuration, matching caller-owned OTel paths. Explicit internalBatchConfigvalues remain authoritative when supplied.
- Breaking: Removed
trace_id=andspan_id=fromSplunkAOLogger, the logger-level proprietaryget_tracing_headers()method, and customSplunk-AO-Trace-ID/Splunk-AO-Parent-IDcontinuation. Use the new module-level W3C helpers instead. - Removed the obsolete distributed-only REST streaming worker and task queue;
normal telemetry in both retained modes uses the existing
BatchSpanProcessorpath.
- Automatic HTTP setup now imports only the requested optional instrumentors and rolls back components installed by the current call when later setup fails, avoiding partial ownership state.
- Explicit
clear_session()now masks an inboundgen_ai.conversation.idfor subsequent local spans and outbound propagation in the same execution context. - Handler cleanup now releases unfinished OTel activations in nesting order, isolates malformed child telemetry from the remaining handler trace, and keeps async LangChain callback activation in the application's execution context.
- OpenAI Agents processor state is isolated per framework trace, including concurrent traces, and its public lifecycle path now has regression coverage.
- Local configuration directory renamed from
~/.galileoto~/.splunk. The override environment variable is nowSPLUNK_AO_HOME_DIR(previouslyGALILEO_HOME_DIR).
- Agent and workflow output conversion now removes confirmed repeated input
history and keeps only the last message as the terminal output; intermediate
tool-call and tool-response messages are no longer included in
gen_ai.output.messagesfor full-history spans. The trim is now gated on the prefix-match dedup check so parallel tool-call outputs (e.g. a ToolNode with multiple simultaneous calls) are never collapsed to one message when the output does not echo the input. gen_ai.output.messagesassistant entries whose parts contain atool_callbut carry no explicitfinish_reasonnow receive"tool_call"instead of"unknown". Explicit source finish reasons and tool-response messages are unaffected.
0.2.1 - 2026-08-07
- Galileo multimodal URL and base64 data blocks now export as OpenTelemetry
GenAI
uriandblobmessage parts for both input and output messages while preserving modality, MIME type, and supported extension fields.
0.2.0 - 2026-08-06
- Agent Control spans exported over OTLP now include the control discriminator
and complete
agent_control.*field set required for backend classification and Controls-card rendering.
- Config file renamed (HYBIM-918): The non-secret debug snapshot written to
~/.galileo/on logout/reset is now namedsplunk-ao-config.json(wasgalileo-python-config.json). The old file can be deleted or ignored — it is never read back and has no effect on authentication or config resolution. - Evaluator terminology alignment in docs and errors: Updated
SplunkAOEvaluatorsdocstrings, agent stream/evaluator API docstrings, and user-visible error messages to use evaluator and agent stream vocabulary following theSplunkAOMetrics→SplunkAOEvaluatorsrename. Enum values are documented as matching scorer labels via the legacy/scorersAPI paths. The publicmetrics=parameter name is unchanged for API compatibility. Renamed staletest_galileo_metrics_*andtest_lookup_by_galileo_metrics_enumtest identifiers.
0.1.1 - 2026-08-03
- Breaking:
monitor_progress()job_idparameter removed (HYBIM-931). The deprecatedjob_idkeyword argument ofExperiment.monitor_progress()has been fully removed. Callers passingjob_id=must remove that argument.
0.1.0 - 2026-07-31
- Added deployment-aware configuration and authentication for Splunk Observability Cloud and standalone Agent Observability deployments.
- Added O11y Cloud configuration through
SPLUNK_AO_REALM,SPLUNK_AO_O11Y_TOKEN, and the optionalSPLUNK_AO_O11Y_API_TOKEN. - Added native OTLP trace export for SDK handlers and standard OpenTelemetry or OpenInference instrumentations.
- Added Project and Agent Stream routing by name or ID in both OTLP request headers and OpenTelemetry Resource attributes.
- Added standard OpenTelemetry Resource detection, including a valid
service.namefallback and support forOTEL_SERVICE_NAME. - Added structured input and output capture for workflow, agent, LLM, tool, and retriever spans, including supported multimodal content.
- Completed spans are queued immediately in an OpenTelemetry
BatchSpanProcessorand exported on its configured schedule. flush()andasync_flush()now drain completed spans without concluding an active operation.- Independent top-level decorated calls own separate traces, while nested calls remain children of their outer operation.
- Exceptions from decorated functions, synchronous generators, and asynchronous generators are re-raised after telemetry finalization.
- Reserved Agent Observability routing keys in
OTEL_RESOURCE_ATTRIBUTESare removed so SDK routing configuration remains consistent with request headers.
- Standard OpenTelemetry exporter logging reports transport, authentication, retry, and non-2xx HTTP failures.
- Successful HTTP responses that reject telemetry produce sanitized, rate-limited SDK error logs and a recovery log after a later accepted response.
- Exporters expose bounded, read-only receiver-acknowledgement health. Health is unknown before an acknowledgement and after ordinary transport or non-2xx failures; it is not a delivery guarantee.