Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

**Go SDK (agenttel-go) — Full Feature Parity**

Core (`go.agenttel.dev/agenttel`):
Core (`go.agenttel.dev/agenttel-go`):
- Semantic attributes (~60 constants) matching Java/Python SDKs
- All enums (`ServiceTier`, `ErrorCategory`, `DependencyType`, etc.)
- YAML configuration loader from `agenttel.yml`
Expand All @@ -21,8 +21,8 @@ Core (`go.agenttel.dev/agenttel`):
- HTTP, Gin, and gRPC middleware

GenAI Instrumentation (sub-modules):
- `go.agenttel.dev/agenttel/genai/openai` — OpenAI SDK wrapper (sync + streaming)
- `go.agenttel.dev/agenttel/genai/anthropic` — Anthropic SDK wrapper (sync + streaming)
- `go.agenttel.dev/agenttel-go/genai/openai` — OpenAI SDK wrapper (sync + streaming)
- `go.agenttel.dev/agenttel-go/genai/anthropic` — Anthropic SDK wrapper (sync + streaming)
- `GenAiSpanBuilder` for consistent span creation with cost calculation

Agentic Observability:
Expand Down
12 changes: 6 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
<a href="https://central.sonatype.com/search?q=dev.agenttel"><img src="https://img.shields.io/maven-central/v/dev.agenttel/agenttel-core?label=Maven%20Central&logo=apachemaven" alt="Maven Central"></a>
<a href="https://www.npmjs.com/package/@agenttel/node"><img src="https://img.shields.io/npm/v/@agenttel/node?label=npm&logo=npm" alt="npm"></a>
<a href="https://pypi.org/project/agenttel/"><img src="https://img.shields.io/pypi/v/agenttel?label=PyPI&logo=python&logoColor=white" alt="PyPI"></a>
<a href="https://pkg.go.dev/go.agenttel.dev/agenttel"><img src="https://img.shields.io/badge/Go-pkg.go.dev-00ADD8?logo=go&logoColor=white" alt="Go Reference"></a>
<a href="https://pkg.go.dev/go.agenttel.dev/agenttel-go"><img src="https://img.shields.io/badge/Go-pkg.go.dev-00ADD8?logo=go&logoColor=white" alt="Go Reference"></a>
</p>

<p align="center">
Expand Down Expand Up @@ -445,7 +445,7 @@ All spans are now enriched with topology, baselines, anomaly detection, and SLO
#### 1. Install

```bash
go get go.agenttel.dev/agenttel@latest
go get go.agenttel.dev/agenttel-go@latest
```

#### 2. Configure
Expand All @@ -468,8 +468,8 @@ agenttel:

```go
import (
agenttel "go.agenttel.dev/agenttel"
agmw "go.agenttel.dev/agenttel/middleware/http"
agenttel "go.agenttel.dev/agenttel-go"
agmw "go.agenttel.dev/agenttel-go/middleware/http"
)

cfg, _ := agenttel.LoadConfigFile("agenttel.yml")
Expand Down Expand Up @@ -630,7 +630,7 @@ Then ask your IDE agent: *"Analyze my codebase and generate AgentTel configurati
| `agenttel-javaagent` | `dev.agenttel:agenttel-javaagent` | Zero-code OTel javaagent extension. Drop-in enrichment for any JVM app — no Spring dependency. |
| `agenttel-spring-boot-starter` | `dev.agenttel:agenttel-spring-boot-starter` | Spring Boot auto-configuration. Single dependency for Spring Boot apps. |
| `agenttel-web` | `@agenttel/web` (npm) | Browser telemetry SDK — auto-instrumentation of page loads, navigation, API calls, errors, Web Vitals, journey tracking, anomaly detection, W3C trace propagation. |
| `agenttel-go` | `go.agenttel.dev/agenttel` (Go module) | Go SDK — full feature parity. Core enrichment, net/http + Gin + gRPC middleware, GenAI instrumentation, MCP agent interface, agentic observability. |
| `agenttel-go` | `go.agenttel.dev/agenttel-go` (Go module) | Go SDK — full feature parity. Core enrichment, net/http + Gin + gRPC middleware, GenAI instrumentation, MCP agent interface, agentic observability. |
| `agenttel-node` | `@agenttel/node` (npm) | Node.js SDK — full feature parity. Core enrichment, Express + Fastify middleware, GenAI instrumentation, MCP agent interface, agentic observability. |
| `agenttel-types` | `@agenttel/types` (npm) | Shared TypeScript types, enums, and attribute constants for `@agenttel/web` and `@agenttel/node`. |
| `agenttel-python` | `agenttel` (pip) | Python SDK — full feature parity with JVM SDK. Core enrichment, FastAPI integration, GenAI instrumentation, MCP agent interface, agentic observability. |
Expand Down Expand Up @@ -773,7 +773,7 @@ implementation 'dev.agenttel:agenttel-spring-boot-starter:0.3.0-alpha'

| Module | Description |
|--------|-------------|
| `go.agenttel.dev/agenttel` | Go SDK — core enrichment, middleware (net/http, Gin, gRPC), GenAI, Agent/MCP, agentic observability |
| `go.agenttel.dev/agenttel-go` | Go SDK — core enrichment, middleware (net/http, Gin, gRPC), GenAI, Agent/MCP, agentic observability |

**npm (Browser + Node.js):**

Expand Down
4 changes: 2 additions & 2 deletions agenttel-go/agent/incident.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package agent
import (
"time"

"go.agenttel.dev/agenttel/enums"
"go.agenttel.dev/agenttel/models"
"go.agenttel.dev/agenttel-go/enums"
"go.agenttel.dev/agenttel-go/models"
)

// IncidentContext holds all context needed for incident investigation.
Expand Down
4 changes: 2 additions & 2 deletions agenttel-go/agentic/orchestration.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"

agattr "go.agenttel.dev/agenttel/attributes"
"go.agenttel.dev/agenttel/enums"
agattr "go.agenttel.dev/agenttel-go/attributes"
"go.agenttel.dev/agenttel-go/enums"
)

// SequentialOrchestrator runs agent stages in sequence.
Expand Down
2 changes: 1 addition & 1 deletion agenttel-go/agentic/scopes.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"

agattr "go.agenttel.dev/agenttel/attributes"
agattr "go.agenttel.dev/agenttel-go/attributes"
)

// StepScope represents a single reasoning step.
Expand Down
4 changes: 2 additions & 2 deletions agenttel-go/agentic/tracer.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"

agattr "go.agenttel.dev/agenttel/attributes"
"go.agenttel.dev/agenttel/enums"
agattr "go.agenttel.dev/agenttel-go/attributes"
"go.agenttel.dev/agenttel-go/enums"
)

// AgentTracer creates agent invocation traces.
Expand Down
4 changes: 2 additions & 2 deletions agenttel-go/agentic/tracer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ import (
"go.opentelemetry.io/otel/sdk/trace/tracetest"
oteltrace "go.opentelemetry.io/otel/trace"

agattr "go.agenttel.dev/agenttel/attributes"
"go.agenttel.dev/agenttel/enums"
agattr "go.agenttel.dev/agenttel-go/attributes"
"go.agenttel.dev/agenttel-go/enums"
)

func setupTracer() (*tracetest.InMemoryExporter, oteltrace.Tracer) {
Expand Down
16 changes: 8 additions & 8 deletions agenttel-go/agenttel.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,14 @@
package agenttel

import (
"go.agenttel.dev/agenttel/anomaly"
"go.agenttel.dev/agenttel/baseline"
"go.agenttel.dev/agenttel/errorclass"
"go.agenttel.dev/agenttel/events"
"go.agenttel.dev/agenttel/models"
"go.agenttel.dev/agenttel/processor"
"go.agenttel.dev/agenttel/slo"
"go.agenttel.dev/agenttel/topology"
"go.agenttel.dev/agenttel-go/anomaly"
"go.agenttel.dev/agenttel-go/baseline"
"go.agenttel.dev/agenttel-go/errorclass"
"go.agenttel.dev/agenttel-go/events"
"go.agenttel.dev/agenttel-go/models"
"go.agenttel.dev/agenttel-go/processor"
"go.agenttel.dev/agenttel-go/slo"
"go.agenttel.dev/agenttel-go/topology"
)

// Engine is the top-level orchestrator for all AgentTel components.
Expand Down
2 changes: 1 addition & 1 deletion agenttel-go/anomaly/detector.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ package anomaly
import (
"math"

"go.agenttel.dev/agenttel/models"
"go.agenttel.dev/agenttel-go/models"
)

// Detector performs z-score-based anomaly detection.
Expand Down
4 changes: 2 additions & 2 deletions agenttel-go/anomaly/detector_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ package anomaly
import (
"testing"

"go.agenttel.dev/agenttel/enums"
"go.agenttel.dev/agenttel/models"
"go.agenttel.dev/agenttel-go/enums"
"go.agenttel.dev/agenttel-go/models"
)

func TestDetector_NormalValue(t *testing.T) {
Expand Down
4 changes: 2 additions & 2 deletions agenttel-go/anomaly/patterns.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ import (
"sync"
"time"

"go.agenttel.dev/agenttel/enums"
"go.agenttel.dev/agenttel/models"
"go.agenttel.dev/agenttel-go/enums"
"go.agenttel.dev/agenttel-go/models"
)

// PatternMatcher detects known incident patterns from telemetry observations.
Expand Down
2 changes: 1 addition & 1 deletion agenttel-go/baseline/composite.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package baseline

import (
"go.agenttel.dev/agenttel/models"
"go.agenttel.dev/agenttel-go/models"
)

// CompositeProvider chains multiple providers with fallback semantics.
Expand Down
2 changes: 1 addition & 1 deletion agenttel-go/baseline/composite_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import (
"testing"
"time"

"go.agenttel.dev/agenttel/models"
"go.agenttel.dev/agenttel-go/models"
)

func TestCompositeProvider_PriorityOrder(t *testing.T) {
Expand Down
2 changes: 1 addition & 1 deletion agenttel-go/baseline/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
package baseline

import (
"go.agenttel.dev/agenttel/models"
"go.agenttel.dev/agenttel-go/models"
)

// Provider returns baseline data for a named operation.
Expand Down
2 changes: 1 addition & 1 deletion agenttel-go/baseline/rolling.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import (
"sync/atomic"
"time"

"go.agenttel.dev/agenttel/models"
"go.agenttel.dev/agenttel-go/models"
)

// RollingWindow is a lock-free ring buffer for latency and error tracking.
Expand Down
4 changes: 2 additions & 2 deletions agenttel-go/errorclass/classifier.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ package errorclass
import (
"strings"

"go.agenttel.dev/agenttel/enums"
"go.agenttel.dev/agenttel/models"
"go.agenttel.dev/agenttel-go/enums"
"go.agenttel.dev/agenttel-go/models"
)

// Classifier categorizes errors from exception types and HTTP status codes.
Expand Down
4 changes: 2 additions & 2 deletions agenttel-go/genai/anthropic/anthropic.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
//
// import (
// "github.com/anthropics/anthropic-sdk-go"
// agenttelAnthropic "go.agenttel.dev/agenttel/genai/anthropic"
// agenttelAnthropic "go.agenttel.dev/agenttel-go/genai/anthropic"
// )
//
// client := anthropic.NewClient()
Expand All @@ -20,7 +20,7 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"

"go.agenttel.dev/agenttel/genai"
"go.agenttel.dev/agenttel-go/genai"
)

const (
Expand Down
4 changes: 2 additions & 2 deletions agenttel-go/genai/anthropic/anthropic_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import (
"go.opentelemetry.io/otel/sdk/trace/tracetest"
oteltrace "go.opentelemetry.io/otel/trace"

attrs "go.agenttel.dev/agenttel/attributes"
"go.agenttel.dev/agenttel/genai"
attrs "go.agenttel.dev/agenttel-go/attributes"
"go.agenttel.dev/agenttel-go/genai"
)

func setupTracer() (*tracetest.InMemoryExporter, oteltrace.Tracer) {
Expand Down
6 changes: 3 additions & 3 deletions agenttel-go/genai/anthropic/go.mod
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
module go.agenttel.dev/agenttel/genai/anthropic
module go.agenttel.dev/agenttel-go/genai/anthropic

go 1.24.0

toolchain go1.24.13

require (
github.com/anthropics/anthropic-sdk-go v1.27.1
go.agenttel.dev/agenttel v0.1.0
go.agenttel.dev/agenttel-go v0.1.0
go.opentelemetry.io/otel v1.39.0
go.opentelemetry.io/otel/sdk v1.39.0
go.opentelemetry.io/otel/trace v1.39.0
Expand All @@ -27,4 +27,4 @@ require (
golang.org/x/sys v0.39.0 // indirect
)

replace go.agenttel.dev/agenttel => ../../
replace go.agenttel.dev/agenttel-go => ../../
6 changes: 3 additions & 3 deletions agenttel-go/genai/openai/go.mod
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
module go.agenttel.dev/agenttel/genai/openai
module go.agenttel.dev/agenttel-go/genai/openai

go 1.24.0

toolchain go1.24.13

require (
github.com/sashabaranov/go-openai v1.36.1
go.agenttel.dev/agenttel v0.1.0
go.agenttel.dev/agenttel-go v0.1.0
go.opentelemetry.io/otel v1.39.0
go.opentelemetry.io/otel/sdk v1.39.0
go.opentelemetry.io/otel/trace v1.39.0
Expand All @@ -22,4 +22,4 @@ require (
golang.org/x/sys v0.39.0 // indirect
)

replace go.agenttel.dev/agenttel => ../../
replace go.agenttel.dev/agenttel-go => ../../
4 changes: 2 additions & 2 deletions agenttel-go/genai/openai/openai.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
//
// import (
// openai "github.com/sashabaranov/go-openai"
// agenttelOpenAI "go.agenttel.dev/agenttel/genai/openai"
// agenttelOpenAI "go.agenttel.dev/agenttel-go/genai/openai"
// )
//
// client := openai.NewClient("sk-...")
Expand All @@ -21,7 +21,7 @@ import (
"go.opentelemetry.io/otel"
"go.opentelemetry.io/otel/trace"

"go.agenttel.dev/agenttel/genai"
"go.agenttel.dev/agenttel-go/genai"
)

const (
Expand Down
4 changes: 2 additions & 2 deletions agenttel-go/genai/openai/openai_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@ import (
"go.opentelemetry.io/otel/sdk/trace/tracetest"
oteltrace "go.opentelemetry.io/otel/trace"

attrs "go.agenttel.dev/agenttel/attributes"
"go.agenttel.dev/agenttel/genai"
attrs "go.agenttel.dev/agenttel-go/attributes"
"go.agenttel.dev/agenttel-go/genai"
)

// setupTracer creates an in-memory exporter and a tracer for testing.
Expand Down
2 changes: 1 addition & 1 deletion agenttel-go/genai/span_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"

attrs "go.agenttel.dev/agenttel/attributes"
attrs "go.agenttel.dev/agenttel-go/attributes"
)

// SpanBuilder creates properly-formed GenAI spans following OTel semantic conventions.
Expand Down
2 changes: 1 addition & 1 deletion agenttel-go/go.mod
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module go.agenttel.dev/agenttel
module go.agenttel.dev/agenttel-go

go 1.24.0

Expand Down
6 changes: 3 additions & 3 deletions agenttel-go/middleware/gin/middleware.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"

attrs "go.agenttel.dev/agenttel/attributes"
"go.agenttel.dev/agenttel/baseline"
"go.agenttel.dev/agenttel/topology"
attrs "go.agenttel.dev/agenttel-go/attributes"
"go.agenttel.dev/agenttel-go/baseline"
"go.agenttel.dev/agenttel-go/topology"
)

// GinContext is a minimal interface for the gin.Context methods we need,
Expand Down
6 changes: 3 additions & 3 deletions agenttel-go/middleware/grpc/interceptor.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ import (
"go.opentelemetry.io/otel/trace"
"google.golang.org/grpc"

attrs "go.agenttel.dev/agenttel/attributes"
"go.agenttel.dev/agenttel/baseline"
"go.agenttel.dev/agenttel/topology"
attrs "go.agenttel.dev/agenttel-go/attributes"
"go.agenttel.dev/agenttel-go/baseline"
"go.agenttel.dev/agenttel-go/topology"
)

// Config holds interceptor configuration.
Expand Down
6 changes: 3 additions & 3 deletions agenttel-go/middleware/http/middleware.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,9 @@ import (
"go.opentelemetry.io/otel/attribute"
"go.opentelemetry.io/otel/trace"

attrs "go.agenttel.dev/agenttel/attributes"
"go.agenttel.dev/agenttel/baseline"
"go.agenttel.dev/agenttel/topology"
attrs "go.agenttel.dev/agenttel-go/attributes"
"go.agenttel.dev/agenttel-go/baseline"
"go.agenttel.dev/agenttel-go/topology"
)

// Config holds middleware configuration.
Expand Down
14 changes: 7 additions & 7 deletions agenttel-go/processor/processor.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,13 +9,13 @@ import (
"go.opentelemetry.io/otel/codes"
sdktrace "go.opentelemetry.io/otel/sdk/trace"

"go.agenttel.dev/agenttel/anomaly"
"go.agenttel.dev/agenttel/attributes"
"go.agenttel.dev/agenttel/baseline"
"go.agenttel.dev/agenttel/errorclass"
"go.agenttel.dev/agenttel/events"
"go.agenttel.dev/agenttel/slo"
"go.agenttel.dev/agenttel/topology"
"go.agenttel.dev/agenttel-go/anomaly"
"go.agenttel.dev/agenttel-go/attributes"
"go.agenttel.dev/agenttel-go/baseline"
"go.agenttel.dev/agenttel-go/errorclass"
"go.agenttel.dev/agenttel-go/events"
"go.agenttel.dev/agenttel-go/slo"
"go.agenttel.dev/agenttel-go/topology"
)

// SpanCompletionListener is called after a span is processed.
Expand Down
Loading
Loading