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: 6 additions & 0 deletions agentic_ai/agents/agent_framework/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
# Agent Framework module
# This package contains agent implementations built using the agent_framework SDK

from .single_agent import Agent

__all__ = ["Agent"]
4 changes: 4 additions & 0 deletions agentic_ai/applications/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,13 @@ RUN --mount=type=cache,target=/root/.cache/uv \
COPY applications/backend.py applications/utils.py ./

# Copy ONLY agent_framework directory (not all agents)
COPY agents/__init__.py /app/agents/__init__.py
COPY agents/agent_framework /app/agents/agent_framework
COPY agents/base_agent.py /app/agents/base_agent.py

# Copy observability module
COPY observability /app/observability

# Copy built frontend from previous stage (Vite outputs to 'dist')
COPY --from=frontend-builder /app/frontend/dist ./static

Expand Down
39 changes: 39 additions & 0 deletions agentic_ai/applications/backend.py
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,45 @@ async def set_active_agent(req: SetAgentRequest, token: str = Depends(verify_tok
"message": "Failed to load agent."
}

# ──────────────────────────────────────────────────────────────
# Diagnostic: check observability status
# ──────────────────────────────────────────────────────────────
@app.get("/api/diagnostics/observability")
async def diagnostics_observability():
"""Check if observability is configured and working."""
import importlib
diag: Dict[str, Any] = {
"observability_enabled": _observability_enabled,
"connection_string_set": bool(os.environ.get("APPLICATIONINSIGHTS_CONNECTION_STRING")),
}
# Check key imports
for mod_name in ["azure.monitor.opentelemetry", "agent_framework.observability", "opentelemetry"]:
try:
importlib.import_module(mod_name)
diag[f"import_{mod_name}"] = "ok"
except Exception as e:
diag[f"import_{mod_name}"] = str(e)
# Check OTel tracer provider
try:
from opentelemetry import trace
tp = trace.get_tracer_provider()
diag["tracer_provider"] = type(tp).__name__
if hasattr(tp, '_active_span_processor'):
proc = tp._active_span_processor
diag["span_processors"] = type(proc).__name__
if hasattr(proc, '_span_processors'):
diag["span_processor_list"] = [type(sp).__name__ for sp in proc._span_processors]
except Exception as e:
diag["tracer_provider_error"] = str(e)
# Check OTel meter provider
try:
from opentelemetry import metrics
mp = metrics.get_meter_provider()
diag["meter_provider"] = type(mp).__name__
except Exception as e:
diag["meter_provider_error"] = str(e)
return diag

# ──────────────────────────────────────────────────────────────
# Root route to serve React app
# ──────────────────────────────────────────────────────────────
Expand Down
Loading
Loading