From 05f1c73a3c5bc98b5073ae730dc372f556a0c243 Mon Sep 17 00:00:00 2001 From: "devin-ai-integration[bot]" <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sun, 4 Oct 2026 10:00:48 -0700 Subject: [PATCH] refactor(ui): move TraceView into components/lens/traces (#44501) Co-authored-by: Yujong Lee Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> --- ui/litellm-dashboard/eslint.config.mjs | 2 +- .../lens/LensPage.integration.test.tsx | 2 +- .../src/components/lens/LensWorkspace.tsx | 8 +++--- .../src/components/lens/data/LensServices.tsx | 2 +- .../lens/data/demo/createLensDemo.ts | 2 +- .../src/components/lens/data/demo/fixtures.ts | 2 +- .../lens/data/demo/lensDemoLongTrace.ts | 2 +- .../components/lens/hooks/useLensReadiness.ts | 2 +- .../lens/investigations/Evidence.tsx | 4 +-- .../FindingDetails.integration.test.tsx | 4 +-- .../InvestigationsView.integration.test.tsx | 2 +- .../investigations/InvestigationsView.tsx | 2 +- .../lens/onboarding/OnboardingContext.tsx | 2 +- .../lens/onboarding/OnboardingSteps.tsx | 2 +- .../TracingSetupCard.integration.test.tsx | 8 +++--- .../onboarding/tracing}/TracingSetupCard.tsx | 14 +++++----- .../onboarding/tracing}/previewTrace.json | 0 .../onboarding/tracing}/sampleTrace.test.ts | 0 .../onboarding/tracing}/sampleTrace.ts | 0 .../onboarding/tracing}/tracingSetupGuides.ts | 26 ++++++++--------- .../src/components/lens/route.ts | 2 +- .../__fixtures__/deep_agent_trace.json | 0 .../traces}/__fixtures__/research_trace.json | 0 .../traces}/__fixtures__/swarm_trace.json | 0 .../traces}/__fixtures__/trace_list.json | 0 .../tracesApi.ts => lens/traces/api.ts} | 2 +- .../traces/detail}/AttributesDetail.tsx | 2 +- .../traces/detail}/DetailContent.tsx | 8 +++--- .../detail}/DetailPane.integration.test.tsx | 12 ++++---- .../traces/detail}/DetailPane.tsx | 18 ++++++------ .../traces/detail}/KeyValueRows.tsx | 2 +- .../traces/detail}/MessageCard.test.tsx | 2 +- .../traces/detail}/MessageCard.tsx | 6 ++-- .../traces/detail}/RequestDetail.tsx | 10 +++---- .../traces/detail}/SpanHoverCard.tsx | 10 +++---- .../traces/detail}/SpanTree.tsx | 12 ++++---- .../TraceConversation.integration.test.tsx | 12 ++++---- .../traces/detail}/TraceConversation.tsx | 8 +++--- .../traces/detail}/TraceDrawer.test.tsx | 20 ++++++------- .../traces/detail}/TraceDrawer.tsx | 18 ++++++------ .../traces/detail}/conversation.test.ts | 4 +-- .../traces/detail}/conversation.ts | 4 +-- .../traces/detail}/useSpanRequestLog.ts | 4 +-- .../traces/list}/AgentTracesPage.tsx | 4 +-- .../AgentTracesSection.integration.test.tsx | 14 +++++----- .../traces/list}/AgentTracesSection.tsx | 10 +++---- .../traces/list}/AgentTracesTable.test.tsx | 8 +++--- .../traces/list}/AgentTracesTable.tsx | 12 ++++---- .../traces/list}/TimeRangeControls.tsx | 0 .../traces/list}/TracesTimeline.test.ts | 2 +- .../traces/list}/TracesTimeline.tsx | 4 +-- .../traces/list}/runSearch/RunSearch.test.tsx | 0 .../traces/list}/runSearch/RunSearch.tsx | 2 +- .../traces/list}/runSearch/RunsToolbar.tsx | 2 +- .../list}/runSearch/__fixtures__/runs.ts | 2 +- .../traces/list}/runSearch/runQuery.test.ts | 0 .../traces/list}/runSearch/runQuery.ts | 4 +-- .../traces/list}/runSearch/runSql.test.ts | 0 .../traces/list}/runSearch/runSql.ts | 0 .../traces/list}/useAgentTraces.test.ts | 2 +- .../traces/list}/useAgentTraces.ts | 9 +++--- .../traces/routing.ts} | 6 ++-- .../traceTree.ts => lens/traces/tree.ts} | 4 +-- .../traceTypes.ts => lens/traces/types.ts} | 0 .../traces/ui}/ActiveDot.tsx | 0 .../TraceView => lens/traces/ui}/Collapse.tsx | 0 .../traces/ui}/CopyButton.tsx | 0 .../TraceView => lens/traces/ui}/IdChip.tsx | 0 .../TraceView => lens/traces/ui}/PaneBar.tsx | 0 .../TraceView => lens/traces/ui}/SpanIcon.tsx | 2 +- .../traces/ui}/StatusMark.tsx | 0 .../traces/ui}/TraceFramework.test.ts | 0 .../traces/ui}/TraceFramework.tsx | 28 +++++++++---------- .../traces/ui}/spanProvider.test.ts | 0 .../traces/ui}/spanProvider.ts | 2 +- .../traces/utils.test.ts} | 6 ++-- .../traceUtils.ts => lens/traces/utils.ts} | 4 +-- .../ui}/LensPreviewButton.tsx | 0 .../src/components/networking.tsx | 2 +- .../src/lib/http/api.test-d.ts | 2 +- 80 files changed, 187 insertions(+), 186 deletions(-) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/onboarding/tracing}/TracingSetupCard.integration.test.tsx (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/onboarding/tracing}/TracingSetupCard.tsx (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/onboarding/tracing}/previewTrace.json (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/onboarding/tracing}/sampleTrace.test.ts (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/onboarding/tracing}/sampleTrace.ts (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/onboarding/tracing}/tracingSetupGuides.ts (93%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces}/__fixtures__/deep_agent_trace.json (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces}/__fixtures__/research_trace.json (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces}/__fixtures__/swarm_trace.json (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces}/__fixtures__/trace_list.json (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView/tracesApi.ts => lens/traces/api.ts} (99%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/AttributesDetail.tsx (97%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/DetailContent.tsx (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/DetailPane.integration.test.tsx (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/DetailPane.tsx (94%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/KeyValueRows.tsx (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/MessageCard.test.tsx (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/MessageCard.tsx (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/RequestDetail.tsx (92%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/SpanHoverCard.tsx (96%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/SpanTree.tsx (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/TraceConversation.integration.test.tsx (97%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/TraceConversation.tsx (97%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/TraceDrawer.test.tsx (97%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/TraceDrawer.tsx (97%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/conversation.test.ts (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/conversation.ts (99%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/detail}/useSpanRequestLog.ts (93%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/AgentTracesPage.tsx (93%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/AgentTracesSection.integration.test.tsx (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/AgentTracesSection.tsx (97%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/AgentTracesTable.test.tsx (91%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/AgentTracesTable.tsx (97%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/TimeRangeControls.tsx (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/TracesTimeline.test.ts (98%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/TracesTimeline.tsx (99%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/runSearch/RunSearch.test.tsx (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/runSearch/RunSearch.tsx (96%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/runSearch/RunsToolbar.tsx (94%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/runSearch/__fixtures__/runs.ts (94%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/runSearch/runQuery.test.ts (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/runSearch/runQuery.ts (93%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/runSearch/runSql.test.ts (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/runSearch/runSql.ts (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/useAgentTraces.test.ts (95%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/list}/useAgentTraces.ts (95%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView/traceRouting.ts => lens/traces/routing.ts} (97%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView/traceTree.ts => lens/traces/tree.ts} (86%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView/traceTypes.ts => lens/traces/types.ts} (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/ActiveDot.tsx (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/Collapse.tsx (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/CopyButton.tsx (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/IdChip.tsx (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/PaneBar.tsx (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/SpanIcon.tsx (97%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/StatusMark.tsx (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/TraceFramework.test.ts (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/TraceFramework.tsx (68%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/spanProvider.test.ts (100%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/traces/ui}/spanProvider.ts (97%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView/traceUtils.test.ts => lens/traces/utils.test.ts} (99%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView/traceUtils.ts => lens/traces/utils.ts} (99%) rename ui/litellm-dashboard/src/components/{view_logs/TraceView => lens/ui}/LensPreviewButton.tsx (100%) diff --git a/ui/litellm-dashboard/eslint.config.mjs b/ui/litellm-dashboard/eslint.config.mjs index ad2923bf2a0..ce2d933292d 100644 --- a/ui/litellm-dashboard/eslint.config.mjs +++ b/ui/litellm-dashboard/eslint.config.mjs @@ -100,7 +100,7 @@ const eslintConfig = [ rules: { "local/no-ad-hoc-z-index": ["error", { allowPopupLayer: true }] }, }, { - files: ["src/components/view_logs/TraceView/**/*.tsx", "src/components/lens/**/*.tsx"], + files: ["src/components/lens/**/*.tsx"], ignores: ["src/**/*.test.tsx"], rules: { "local/no-arbitrary-design-value": "error" }, }, diff --git a/ui/litellm-dashboard/src/components/lens/LensPage.integration.test.tsx b/ui/litellm-dashboard/src/components/lens/LensPage.integration.test.tsx index 320dbef4142..32e4e069cc1 100644 --- a/ui/litellm-dashboard/src/components/lens/LensPage.integration.test.tsx +++ b/ui/litellm-dashboard/src/components/lens/LensPage.integration.test.tsx @@ -7,7 +7,7 @@ import LensPage from "@/app/(dashboard)/lens/page"; const { auth } = vi.hoisted(() => ({ auth: vi.fn() })); vi.mock("@/app/(dashboard)/hooks/useAuthorized", () => ({ default: auth })); -vi.mock("@/components/view_logs/TraceView/AgentTracesPage", () => ({ +vi.mock("@/components/lens/traces/list/AgentTracesPage", () => ({ default: ({ isActive }: { isActive: boolean }) =>
Trace polling {isActive ? "active" : "paused"}
, })); vi.mock("./investigations/InvestigationsView", () => ({ diff --git a/ui/litellm-dashboard/src/components/lens/LensWorkspace.tsx b/ui/litellm-dashboard/src/components/lens/LensWorkspace.tsx index caa8576bdd7..ccd2f665564 100644 --- a/ui/litellm-dashboard/src/components/lens/LensWorkspace.tsx +++ b/ui/litellm-dashboard/src/components/lens/LensWorkspace.tsx @@ -3,13 +3,13 @@ import { useId, useState } from "react"; import { useQuery } from "@tanstack/react-query"; import { Aperture, ArrowUpRight } from "lucide-react"; -import AgentTracesPage from "@/components/view_logs/TraceView/AgentTracesPage"; +import AgentTracesPage from "@/components/lens/traces/list/AgentTracesPage"; import { Button } from "@/components/ui/button"; -import type { TraceSummary } from "@/components/view_logs/TraceView/traceTypes"; +import type { TraceSummary } from "@/components/lens/traces/types"; import { Switch } from "@/components/ui/switch"; import { Tabs, TabsContent } from "@/components/ui/tabs"; import { LensServicesProvider, useLensAccessToken, useLensApi, useLiveLensServices } from "./data/LensServices"; -import { LensPreviewContext } from "@/components/view_logs/TraceView/LensPreviewButton"; +import { LensPreviewContext } from "@/components/lens/ui/LensPreviewButton"; import { isProxyAdminRole, isProxyAdminTierRole } from "@/utils/roles"; import { InvestigationsView } from "./investigations/InvestigationsView"; import { LensSettings } from "./settings/LensSettings"; @@ -22,7 +22,7 @@ import { cn } from "@/lib/cva.config"; import { useDialogRoute, useLensRoute, type LensDialog, type LensTab } from "./route"; import { LensIntroDialog, useLensIntro } from "./onboarding/LensIntroDialog"; import { OnboardingProvider, type Onboarding } from "./onboarding/OnboardingContext"; -import { traceRefOf, useOpenTraceRouting } from "@/components/view_logs/TraceView/traceRouting"; +import { traceRefOf, useOpenTraceRouting } from "@/components/lens/traces/routing"; type WorkspaceProps = { accessToken: string; userRole: string; readOnly: boolean }; diff --git a/ui/litellm-dashboard/src/components/lens/data/LensServices.tsx b/ui/litellm-dashboard/src/components/lens/data/LensServices.tsx index 8abeab16a78..9ef2c316225 100644 --- a/ui/litellm-dashboard/src/components/lens/data/LensServices.tsx +++ b/ui/litellm-dashboard/src/components/lens/data/LensServices.tsx @@ -2,7 +2,7 @@ import { createContext, useContext, useMemo, type ReactNode } from "react"; import { apiClient } from "@/components/networking"; -import { liveTracesApi, TracesApiContext, type TracesApi } from "@/components/view_logs/TraceView/tracesApi"; +import { liveTracesApi, TracesApiContext, type TracesApi } from "@/components/lens/traces/api"; import { liveLensApi, type LensApi } from "./service"; export interface LensServices { diff --git a/ui/litellm-dashboard/src/components/lens/data/demo/createLensDemo.ts b/ui/litellm-dashboard/src/components/lens/data/demo/createLensDemo.ts index 97ab6c84e91..c0b3aa50f41 100644 --- a/ui/litellm-dashboard/src/components/lens/data/demo/createLensDemo.ts +++ b/ui/litellm-dashboard/src/components/lens/data/demo/createLensDemo.ts @@ -1,5 +1,5 @@ import { ApiError } from "@/lib/http/client"; -import type { TracesApi } from "@/components/view_logs/TraceView/tracesApi"; +import type { TracesApi } from "@/components/lens/traces/api"; import type { LensServices } from "../LensServices"; import type { LensApi } from "../service"; import { createLensDemoData, type LensDemoData } from "./fixtures"; diff --git a/ui/litellm-dashboard/src/components/lens/data/demo/fixtures.ts b/ui/litellm-dashboard/src/components/lens/data/demo/fixtures.ts index 51dc89e6fa6..becdff35d40 100644 --- a/ui/litellm-dashboard/src/components/lens/data/demo/fixtures.ts +++ b/ui/litellm-dashboard/src/components/lens/data/demo/fixtures.ts @@ -1,4 +1,4 @@ -import type { Trace, Span, SpanDetail } from "@/components/view_logs/TraceView/traceTypes"; +import type { Trace, Span, SpanDetail } from "@/components/lens/traces/types"; import type { Lens, Finding, Job, Settings } from "../../model/types"; import { withReleaseCases } from "./lensDemoLongTrace"; import { scenarios, type Scenario } from "./scenarios"; diff --git a/ui/litellm-dashboard/src/components/lens/data/demo/lensDemoLongTrace.ts b/ui/litellm-dashboard/src/components/lens/data/demo/lensDemoLongTrace.ts index e30cff6ee1d..866f1042b73 100644 --- a/ui/litellm-dashboard/src/components/lens/data/demo/lensDemoLongTrace.ts +++ b/ui/litellm-dashboard/src/components/lens/data/demo/lensDemoLongTrace.ts @@ -1,4 +1,4 @@ -import type { Span, SpanDetail, Trace } from "@/components/view_logs/TraceView/traceTypes"; +import type { Span, SpanDetail, Trace } from "@/components/lens/traces/types"; export function withReleaseCases(run: { trace: Trace; details: SpanDetail[] }) { const { trace } = run; diff --git a/ui/litellm-dashboard/src/components/lens/hooks/useLensReadiness.ts b/ui/litellm-dashboard/src/components/lens/hooks/useLensReadiness.ts index a41c9b909c3..36dc613d5ab 100644 --- a/ui/litellm-dashboard/src/components/lens/hooks/useLensReadiness.ts +++ b/ui/litellm-dashboard/src/components/lens/hooks/useLensReadiness.ts @@ -1,7 +1,7 @@ "use client"; import { useQuery } from "@tanstack/react-query"; -import { isTracingNotEnabled, useTraceAvailability } from "@/components/view_logs/TraceView/useAgentTraces"; +import { isTracingNotEnabled, useTraceAvailability } from "@/components/lens/traces/list/useAgentTraces"; import { useLensAccessToken, useLensApi } from "../data/LensServices"; import { lensQueries } from "../data/queries"; import { readiness, type Readiness, type ReadinessInput } from "../model/readiness"; diff --git a/ui/litellm-dashboard/src/components/lens/investigations/Evidence.tsx b/ui/litellm-dashboard/src/components/lens/investigations/Evidence.tsx index 1023e636537..05017e76b68 100644 --- a/ui/litellm-dashboard/src/components/lens/investigations/Evidence.tsx +++ b/ui/litellm-dashboard/src/components/lens/investigations/Evidence.tsx @@ -5,8 +5,8 @@ import { useQuery } from "@tanstack/react-query"; import { Inspector } from "@/components/shared/Inspector"; import { Button } from "@/components/ui/button"; -import { RunView } from "@/components/view_logs/TraceView/TraceDrawer"; -import { useLocalRunSelection } from "@/components/view_logs/TraceView/traceRouting"; +import { RunView } from "@/components/lens/traces/detail/TraceDrawer"; +import { useLocalRunSelection } from "@/components/lens/traces/routing"; import { lensQueries } from "../data/queries"; import { useLensAccessToken, useLensApi } from "../data/LensServices"; diff --git a/ui/litellm-dashboard/src/components/lens/investigations/FindingDetails.integration.test.tsx b/ui/litellm-dashboard/src/components/lens/investigations/FindingDetails.integration.test.tsx index a8abcf9bc25..93942cb8fa9 100644 --- a/ui/litellm-dashboard/src/components/lens/investigations/FindingDetails.integration.test.tsx +++ b/ui/litellm-dashboard/src/components/lens/investigations/FindingDetails.integration.test.tsx @@ -2,7 +2,7 @@ import { fireEvent, screen, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { afterEach, expect, it, vi } from "vitest"; -import type { RunSelection } from "@/components/view_logs/TraceView/traceRouting"; +import type { RunSelection } from "@/components/lens/traces/routing"; import { renderWithLens } from "@/../tests/lens-test-utils"; import { Inspector } from "@/components/shared/Inspector"; @@ -11,7 +11,7 @@ import type { OwnedFinding } from "../model/inbox"; import type { Finding, Lens } from "../model/types"; import { FindingPanel, ownedFindingKey } from "./FindingDetails"; -vi.mock("@/components/view_logs/TraceView/TraceDrawer", () => ({ +vi.mock("@/components/lens/traces/detail/TraceDrawer", () => ({ RunView: ({ traceId, selection }: { traceId: string; selection: RunSelection }) => (
{traceId} at {selection.spanId} diff --git a/ui/litellm-dashboard/src/components/lens/investigations/InvestigationsView.integration.test.tsx b/ui/litellm-dashboard/src/components/lens/investigations/InvestigationsView.integration.test.tsx index 5d90281a080..fded81f230a 100644 --- a/ui/litellm-dashboard/src/components/lens/investigations/InvestigationsView.integration.test.tsx +++ b/ui/litellm-dashboard/src/components/lens/investigations/InvestigationsView.integration.test.tsx @@ -7,7 +7,7 @@ import { ApiError } from "@/lib/http/client"; import { apiClient } from "@/components/networking"; import { lensKeys } from "../data/queries"; import { InvestigationsView } from "./InvestigationsView"; -import { LensPreviewContext } from "@/components/view_logs/TraceView/LensPreviewButton"; +import { LensPreviewContext } from "@/components/lens/ui/LensPreviewButton"; import { briefMarkdown } from "../model/findings"; import { findingKey } from "../model/inbox"; import { runTime } from "../model/format"; diff --git a/ui/litellm-dashboard/src/components/lens/investigations/InvestigationsView.tsx b/ui/litellm-dashboard/src/components/lens/investigations/InvestigationsView.tsx index c668bba3799..a99133d6ca2 100644 --- a/ui/litellm-dashboard/src/components/lens/investigations/InvestigationsView.tsx +++ b/ui/litellm-dashboard/src/components/lens/investigations/InvestigationsView.tsx @@ -5,7 +5,7 @@ import { useQuery } from "@tanstack/react-query"; import { Plus } from "lucide-react"; import { Button } from "@/components/ui/button"; import { cn } from "@/lib/cva.config"; -import { LensPreviewButton } from "@/components/view_logs/TraceView/LensPreviewButton"; +import { LensPreviewButton } from "@/components/lens/ui/LensPreviewButton"; import { useInvalidateLenses } from "../data/mutations"; import { lensQueries } from "../data/queries"; diff --git a/ui/litellm-dashboard/src/components/lens/onboarding/OnboardingContext.tsx b/ui/litellm-dashboard/src/components/lens/onboarding/OnboardingContext.tsx index c7a1a05c6f4..bcbf8ebaa6e 100644 --- a/ui/litellm-dashboard/src/components/lens/onboarding/OnboardingContext.tsx +++ b/ui/litellm-dashboard/src/components/lens/onboarding/OnboardingContext.tsx @@ -1,7 +1,7 @@ "use client"; import { createContext, useContext } from "react"; -import type { TraceSummary } from "@/components/view_logs/TraceView/traceTypes"; +import type { TraceSummary } from "@/components/lens/traces/types"; export interface Onboarding { readonly readOnly: boolean; diff --git a/ui/litellm-dashboard/src/components/lens/onboarding/OnboardingSteps.tsx b/ui/litellm-dashboard/src/components/lens/onboarding/OnboardingSteps.tsx index 2b321a46c2e..165908bc77d 100644 --- a/ui/litellm-dashboard/src/components/lens/onboarding/OnboardingSteps.tsx +++ b/ui/litellm-dashboard/src/components/lens/onboarding/OnboardingSteps.tsx @@ -3,7 +3,7 @@ import { useId, useRef, useState, type ReactNode } from "react"; import { ArrowRight, ChevronDown } from "lucide-react"; import { Button } from "@/components/ui/button"; -import { TracingSetupFields } from "@/components/view_logs/TraceView/TracingSetupCard"; +import { TracingSetupFields } from "@/components/lens/onboarding/tracing/TracingSetupCard"; import { cn } from "@/lib/cva.config"; import { useLensAccessToken } from "../data/LensServices"; import type { LensReadiness } from "../hooks/useLensReadiness"; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/TracingSetupCard.integration.test.tsx b/ui/litellm-dashboard/src/components/lens/onboarding/tracing/TracingSetupCard.integration.test.tsx similarity index 98% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/TracingSetupCard.integration.test.tsx rename to ui/litellm-dashboard/src/components/lens/onboarding/tracing/TracingSetupCard.integration.test.tsx index 26e0be89104..abb535a5cb2 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/TracingSetupCard.integration.test.tsx +++ b/ui/litellm-dashboard/src/components/lens/onboarding/tracing/TracingSetupCard.integration.test.tsx @@ -3,8 +3,8 @@ import userEvent from "@testing-library/user-event"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { chooseSelectOption, renderWithProviders } from "@/../tests/test-utils"; import { copyToClipboard } from "@/utils/dataUtils"; -import { LensPreviewContext } from "./LensPreviewButton"; -import { agentTraceCall, apiClient, sendOtlpTraceCall } from "../../networking"; +import { LensPreviewContext } from "../../ui/LensPreviewButton"; +import { agentTraceCall, apiClient, sendOtlpTraceCall } from "../../../networking"; import { codingAgentCommand, codingAgentPrompt, @@ -14,9 +14,9 @@ import { TracingSetupCard, } from "./TracingSetupCard"; import { FRAMEWORKS } from "./tracingSetupGuides"; -import type { Trace } from "./traceTypes"; +import type { Trace } from "../../traces/types"; -vi.mock("../../networking", () => ({ +vi.mock("../../../networking", () => ({ getProxyBaseUrl: () => "http://proxy.test/", sendOtlpTraceCall: vi.fn(), agentTraceCall: vi.fn(), diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/TracingSetupCard.tsx b/ui/litellm-dashboard/src/components/lens/onboarding/tracing/TracingSetupCard.tsx similarity index 98% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/TracingSetupCard.tsx rename to ui/litellm-dashboard/src/components/lens/onboarding/tracing/TracingSetupCard.tsx index dcb458fc367..5d608e2908b 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/TracingSetupCard.tsx +++ b/ui/litellm-dashboard/src/components/lens/onboarding/tracing/TracingSetupCard.tsx @@ -5,19 +5,19 @@ import { useState } from "react"; import { useTimeout } from "usehooks-ts"; import { cn } from "@/lib/cva.config"; -import { LensPreviewButton } from "./LensPreviewButton"; +import { LensPreviewButton } from "../../ui/LensPreviewButton"; import { Button } from "@/components/ui/button"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { copyToClipboard } from "@/utils/dataUtils"; -import anthropicLogo from "../../../../public/assets/logos/anthropic.svg"; -import openaiLogo from "../../../../public/assets/logos/openai_small.svg"; -import otelLogo from "../../../../public/assets/logos/opentelemetry.svg"; -import { agentTraceCall, apiClient, getProxyBaseUrl, sendOtlpTraceCall } from "../../networking"; -import { ActiveDot } from "./ActiveDot"; +import anthropicLogo from "../../../../../public/assets/logos/anthropic.svg"; +import openaiLogo from "../../../../../public/assets/logos/openai_small.svg"; +import otelLogo from "../../../../../public/assets/logos/opentelemetry.svg"; +import { agentTraceCall, apiClient, getProxyBaseUrl, sendOtlpTraceCall } from "../../../networking"; +import { ActiveDot } from "../../traces/ui/ActiveDot"; import { sampleTraceExport } from "./sampleTrace"; import { FRAMEWORKS, frameworkSnippet, type FrameworkGuide } from "./tracingSetupGuides"; -import type { TraceSummary } from "./traceTypes"; +import type { TraceSummary } from "../../traces/types"; const COPIED_RESET_MS = 1500; const DOCS_URL = "https://docs.litellm.ai/docs/proxy/lens"; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/previewTrace.json b/ui/litellm-dashboard/src/components/lens/onboarding/tracing/previewTrace.json similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/previewTrace.json rename to ui/litellm-dashboard/src/components/lens/onboarding/tracing/previewTrace.json diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/sampleTrace.test.ts b/ui/litellm-dashboard/src/components/lens/onboarding/tracing/sampleTrace.test.ts similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/sampleTrace.test.ts rename to ui/litellm-dashboard/src/components/lens/onboarding/tracing/sampleTrace.test.ts diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/sampleTrace.ts b/ui/litellm-dashboard/src/components/lens/onboarding/tracing/sampleTrace.ts similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/sampleTrace.ts rename to ui/litellm-dashboard/src/components/lens/onboarding/tracing/sampleTrace.ts diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/tracingSetupGuides.ts b/ui/litellm-dashboard/src/components/lens/onboarding/tracing/tracingSetupGuides.ts similarity index 93% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/tracingSetupGuides.ts rename to ui/litellm-dashboard/src/components/lens/onboarding/tracing/tracingSetupGuides.ts index af85c38cb9b..474d80d0d48 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/tracingSetupGuides.ts +++ b/ui/litellm-dashboard/src/components/lens/onboarding/tracing/tracingSetupGuides.ts @@ -1,17 +1,17 @@ -import langgraphLogo from "../../../../public/assets/logos/langgraph-color.svg"; -import langchainLogo from "../../../../public/assets/logos/langchain.svg"; -import openaiAgentsLogo from "../../../../public/assets/logos/openai-agents.svg"; -import anthropicLogo from "../../../../public/assets/logos/anthropic.svg"; -import crewaiLogo from "../../../../public/assets/logos/crewai-color.svg"; -import pydanticAiLogo from "../../../../public/assets/logos/pydantic-ai-color.svg"; -import llamaindexLogo from "../../../../public/assets/logos/llamaindex-color.svg"; -import vercelLogo from "../../../../public/assets/logos/vercel.svg"; -import otelLogo from "../../../../public/assets/logos/opentelemetry.svg"; +import langgraphLogo from "../../../../../public/assets/logos/langgraph-color.svg"; +import langchainLogo from "../../../../../public/assets/logos/langchain.svg"; +import openaiAgentsLogo from "../../../../../public/assets/logos/openai-agents.svg"; +import anthropicLogo from "../../../../../public/assets/logos/anthropic.svg"; +import crewaiLogo from "../../../../../public/assets/logos/crewai-color.svg"; +import pydanticAiLogo from "../../../../../public/assets/logos/pydantic-ai-color.svg"; +import llamaindexLogo from "../../../../../public/assets/logos/llamaindex-color.svg"; +import vercelLogo from "../../../../../public/assets/logos/vercel.svg"; +import otelLogo from "../../../../../public/assets/logos/opentelemetry.svg"; -import adkLogo from "../../../../public/assets/logos/google-adk.png"; -import strandsLogo from "../../../../public/assets/logos/strands.svg"; -import hermesLogo from "../../../../public/assets/logos/hermes.png"; -import openclawLogo from "../../../../public/assets/logos/openclaw.png"; +import adkLogo from "../../../../../public/assets/logos/google-adk.png"; +import strandsLogo from "../../../../../public/assets/logos/strands.svg"; +import hermesLogo from "../../../../../public/assets/logos/hermes.png"; +import openclawLogo from "../../../../../public/assets/logos/openclaw.png"; export interface FrameworkGuide { id: string; diff --git a/ui/litellm-dashboard/src/components/lens/route.ts b/ui/litellm-dashboard/src/components/lens/route.ts index cd16165d5a5..e4b05c9ca71 100644 --- a/ui/litellm-dashboard/src/components/lens/route.ts +++ b/ui/litellm-dashboard/src/components/lens/route.ts @@ -2,7 +2,7 @@ import { parseAsBoolean, parseAsString, parseAsStringLiteral, useQueryStates } from "nuqs"; import { useCallback } from "react"; -import { OPEN_TRACE_PARSERS, RUN_FILTER_PARSERS } from "@/components/view_logs/TraceView/traceRouting"; +import { OPEN_TRACE_PARSERS, RUN_FILTER_PARSERS } from "@/components/lens/traces/routing"; export const LENS_TABS = { traces: "Traces", investigations: "Investigations", settings: "Settings" } as const; export type LensTab = keyof typeof LENS_TABS; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/__fixtures__/deep_agent_trace.json b/ui/litellm-dashboard/src/components/lens/traces/__fixtures__/deep_agent_trace.json similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/__fixtures__/deep_agent_trace.json rename to ui/litellm-dashboard/src/components/lens/traces/__fixtures__/deep_agent_trace.json diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/__fixtures__/research_trace.json b/ui/litellm-dashboard/src/components/lens/traces/__fixtures__/research_trace.json similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/__fixtures__/research_trace.json rename to ui/litellm-dashboard/src/components/lens/traces/__fixtures__/research_trace.json diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/__fixtures__/swarm_trace.json b/ui/litellm-dashboard/src/components/lens/traces/__fixtures__/swarm_trace.json similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/__fixtures__/swarm_trace.json rename to ui/litellm-dashboard/src/components/lens/traces/__fixtures__/swarm_trace.json diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/__fixtures__/trace_list.json b/ui/litellm-dashboard/src/components/lens/traces/__fixtures__/trace_list.json similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/__fixtures__/trace_list.json rename to ui/litellm-dashboard/src/components/lens/traces/__fixtures__/trace_list.json diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/tracesApi.ts b/ui/litellm-dashboard/src/components/lens/traces/api.ts similarity index 99% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/tracesApi.ts rename to ui/litellm-dashboard/src/components/lens/traces/api.ts index 33f6e7166a5..03ea4d068bb 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/tracesApi.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/api.ts @@ -9,7 +9,7 @@ import { apiClient, getProxyBaseUrl, } from "../../networking"; -import type { SpanDetail, SpanErrorPage, Trace, TracePage } from "./traceTypes"; +import type { SpanDetail, SpanErrorPage, Trace, TracePage } from "./types"; export interface TraceWindow { readonly startMs: number; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/AttributesDetail.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/AttributesDetail.tsx similarity index 97% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/AttributesDetail.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/AttributesDetail.tsx index 00371bacfc4..4461a3ca429 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/AttributesDetail.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/AttributesDetail.tsx @@ -2,7 +2,7 @@ import { type KeyValue, KeyValueRows } from "./KeyValueRows"; import { Card } from "./MessageCard"; -import type { Span } from "./traceTypes"; +import type { Span } from "../types"; interface AttributesDetailProps { traceId: string; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/DetailContent.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/DetailContent.tsx similarity index 98% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/DetailContent.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/DetailContent.tsx index 187fa5ca83f..b9c0d9bd0b3 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/DetailContent.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/DetailContent.tsx @@ -1,5 +1,5 @@ "use client"; -import { useTracesApi } from "./tracesApi"; +import { useTracesApi } from "../api"; import { useQuery, type UseQueryOptions } from "@tanstack/react-query"; import { useState } from "react"; @@ -10,9 +10,9 @@ import { cn } from "@/lib/cva.config"; import { type KeyValue, KeyValueRows, objectEntries } from "./KeyValueRows"; import { Card, MessageCard, Section, ToolResultCard } from "./MessageCard"; -import type { ErrorSource } from "./traceTree"; -import type { Span, SpanDetail, SpanErrorPage, TraceMessage, UIContent, UIMessage } from "./traceTypes"; -import { errorSource, parseJson, parseMessages, prettyPayload } from "./traceUtils"; +import type { ErrorSource } from "../tree"; +import type { Span, SpanDetail, SpanErrorPage, TraceMessage, UIContent, UIMessage } from "../types"; +import { errorSource, parseJson, parseMessages, prettyPayload } from "../utils"; const ERROR_SOURCE_LABEL: Record = { tool: "Tool", model: "Model", litellm: "LiteLLM" }; const TRACEBACK_MARKER = "Traceback (most recent call last):"; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/DetailPane.integration.test.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/DetailPane.integration.test.tsx similarity index 98% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/DetailPane.integration.test.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/DetailPane.integration.test.tsx index 1bc6d371841..907a5a67129 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/DetailPane.integration.test.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/DetailPane.integration.test.tsx @@ -3,20 +3,20 @@ import userEvent from "@testing-library/user-event"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { type ComponentProps, useState } from "react"; -import { renderWithProviders, testQueryClient } from "../../../../tests/test-utils"; +import { renderWithProviders, testQueryClient } from "../../../../../tests/test-utils"; import { DetailPane } from "./DetailPane"; -import type { SpanTab } from "./traceRouting"; +import type { SpanTab } from "../routing"; import { absoluteTime, SpanHoverCard, spanFacts } from "./SpanHoverCard"; -import type { GroupRowData, SpanRowData } from "./traceTree"; -import type { Span, SpanDetail, SpanErrorPage, Trace } from "./traceTypes"; +import type { GroupRowData, SpanRowData } from "../tree"; +import type { Span, SpanDetail, SpanErrorPage, Trace } from "../types"; -vi.mock("../../networking", () => ({ +vi.mock("../../../networking", () => ({ agentTraceSpanCall: vi.fn(), agentTraceSpanErrorCall: vi.fn(), getProxyBaseUrl: () => "http://proxy.test/", })); -import { agentTraceSpanCall, agentTraceSpanErrorCall } from "../../networking"; +import { agentTraceSpanCall, agentTraceSpanErrorCall } from "../../../networking"; type SpanFields = Partial & Pick; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/DetailPane.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/DetailPane.tsx similarity index 94% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/DetailPane.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/DetailPane.tsx index f8232d28192..80f9b3da47c 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/DetailPane.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/DetailPane.tsx @@ -6,17 +6,17 @@ import { Button } from "@/components/ui/button"; import { Tabs, TabsList, TabsTrigger, TabsContent } from "@/components/ui/tabs"; import { AttributesDetail } from "./AttributesDetail"; -import { CopyButton } from "./CopyButton"; +import { CopyButton } from "../ui/CopyButton"; import { DetailContent, errorHeadline, useSpanDetail } from "./DetailContent"; -import { IdChip } from "./IdChip"; -import { PaneBar } from "./PaneBar"; +import { IdChip } from "../ui/IdChip"; +import { PaneBar } from "../ui/PaneBar"; import { RequestDetail } from "./RequestDetail"; -import { SpanIcon } from "./SpanIcon"; -import { useTracesApi } from "./tracesApi"; -import { SPAN_TABS, type SpanTab } from "./traceRouting"; -import type { GroupRowData, TreeRow } from "./traceTree"; -import type { Span, SpanType, Trace } from "./traceTypes"; -import { fmtMs, fmtTok } from "./traceUtils"; +import { SpanIcon } from "../ui/SpanIcon"; +import { useTracesApi } from "../api"; +import { SPAN_TABS, type SpanTab } from "../routing"; +import type { GroupRowData, TreeRow } from "../tree"; +import type { Span, SpanType, Trace } from "../types"; +import { fmtMs, fmtTok } from "../utils"; interface SpanTabProps { spanTab: SpanTab; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/KeyValueRows.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/KeyValueRows.tsx similarity index 98% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/KeyValueRows.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/KeyValueRows.tsx index aaf6a935ffe..6eb8217df3b 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/KeyValueRows.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/KeyValueRows.tsx @@ -4,7 +4,7 @@ import { useState } from "react"; import { cn } from "@/lib/cva.config"; -import { FoldChevron } from "./Collapse"; +import { FoldChevron } from "../ui/Collapse"; const LONG_VALUE_CHARS = 90; const ID_KEY = /(^|_)id$/i; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/MessageCard.test.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/MessageCard.test.tsx similarity index 98% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/MessageCard.test.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/MessageCard.test.tsx index 9cb94ee969c..5583e937ed7 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/MessageCard.test.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/MessageCard.test.tsx @@ -4,7 +4,7 @@ import { describe, expect, it, vi } from "vitest"; import { MessageCard, Section, ToolResultCard } from "./MessageCard"; -vi.mock("./spanProvider", () => ({ useSpanProvider: () => null })); +vi.mock("../ui/spanProvider", () => ({ useSpanProvider: () => null })); const LONG_QUERY = "Find every invoice for the customer that was billed twice. ".repeat(3).trim(); diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/MessageCard.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/MessageCard.tsx similarity index 98% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/MessageCard.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/MessageCard.tsx index 310c6278ee4..cd3ea968d1a 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/MessageCard.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/MessageCard.tsx @@ -7,10 +7,10 @@ import remarkGfm from "remark-gfm"; import { cn } from "@/lib/cva.config"; -import { FoldChevron } from "./Collapse"; -import { CopyButton } from "./CopyButton"; +import { FoldChevron } from "../ui/Collapse"; +import { CopyButton } from "../ui/CopyButton"; import { displayValue, type KeyValue, KeyValueRows, objectEntries } from "./KeyValueRows"; -import type { TraceMessage, TraceToolCall } from "./traceTypes"; +import type { TraceMessage, TraceToolCall } from "../types"; const ROLE_LABEL: Record = { user: "User", system: "System", assistant: "Assistant", tool: "Tool" }; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/RequestDetail.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/RequestDetail.tsx similarity index 92% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/RequestDetail.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/RequestDetail.tsx index 6664516cff4..58177ede37a 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/RequestDetail.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/RequestDetail.tsx @@ -5,13 +5,13 @@ import { useState } from "react"; import { Button } from "@/components/ui/button"; -import { LogDetailsDrawer } from "../LogDetailsDrawer"; -import { formatCost } from "./AgentTracesTable"; +import { LogDetailsDrawer } from "../../../view_logs/LogDetailsDrawer"; +import { formatCost } from "../list/AgentTracesTable"; import { DetailGroup } from "./AttributesDetail"; -import { CopyButton } from "./CopyButton"; +import { CopyButton } from "../ui/CopyButton"; import { type KeyValue, KeyValueRows } from "./KeyValueRows"; -import type { Span } from "./traceTypes"; -import { fmtMs, fmtTok } from "./traceUtils"; +import type { Span } from "../types"; +import { fmtMs, fmtTok } from "../utils"; import { useSpanRequestLog } from "./useSpanRequestLog"; interface RequestDetailProps { diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/SpanHoverCard.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/SpanHoverCard.tsx similarity index 96% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/SpanHoverCard.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/SpanHoverCard.tsx index 1eaa1124f47..6d16a8fa713 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/SpanHoverCard.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/SpanHoverCard.tsx @@ -4,12 +4,12 @@ import { Check } from "lucide-react"; import { HoverCard, HoverCardContent, HoverCardTrigger } from "@/components/ui/hover-card"; -import { formatCost } from "./AgentTracesTable"; +import { formatCost } from "../list/AgentTracesTable"; import { errorHeadline } from "./DetailContent"; -import { SpanIcon } from "./SpanIcon"; -import type { GroupRowData } from "./traceTree"; -import type { Span, SpanType } from "./traceTypes"; -import { fmtMs, fmtTok } from "./traceUtils"; +import { SpanIcon } from "../ui/SpanIcon"; +import type { GroupRowData } from "../tree"; +import type { Span, SpanType } from "../types"; +import { fmtMs, fmtTok } from "../utils"; export const HOVER_OPEN_DELAY_MS = 300; const HOVER_CLOSE_DELAY_MS = 100; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/SpanTree.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/SpanTree.tsx similarity index 98% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/SpanTree.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/SpanTree.tsx index 69143bf1b26..f225d92c6a1 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/SpanTree.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/SpanTree.tsx @@ -15,13 +15,13 @@ import { } from "@/components/ui/dropdown-menu"; import { cn } from "@/lib/cva.config"; -import { FoldChevron } from "./Collapse"; -import { PaneBar } from "./PaneBar"; +import { FoldChevron } from "../ui/Collapse"; +import { PaneBar } from "../ui/PaneBar"; import { groupFacts, SpanHoverCard, spanFacts } from "./SpanHoverCard"; -import { SpanIcon } from "./SpanIcon"; -import type { GroupRowData, SpanRowData, TreeRow } from "./traceTree"; -import type { TraceSummary } from "./traceTypes"; -import { fmtMs, previewText, type TreeGuide, treeGuides } from "./traceUtils"; +import { SpanIcon } from "../ui/SpanIcon"; +import type { GroupRowData, SpanRowData, TreeRow } from "../tree"; +import type { TraceSummary } from "../types"; +import { fmtMs, previewText, type TreeGuide, treeGuides } from "../utils"; interface SpanTreeProps { rows: TreeRow[]; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceConversation.integration.test.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/TraceConversation.integration.test.tsx similarity index 97% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/TraceConversation.integration.test.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/TraceConversation.integration.test.tsx index 8a1249472b8..1e8dc0b7c9a 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceConversation.integration.test.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/TraceConversation.integration.test.tsx @@ -2,19 +2,19 @@ import { act, screen, waitFor, within } from "@testing-library/react"; import userEvent from "@testing-library/user-event"; import { beforeEach, describe, expect, it, vi } from "vitest"; import type { ComponentProps } from "react"; -import { renderWithProviders, testQueryClient } from "../../../../tests/test-utils"; +import { renderWithProviders, testQueryClient } from "../../../../../tests/test-utils"; import { RunView } from "./TraceDrawer"; -import { useOpenTraceRouting } from "./traceRouting"; +import { useOpenTraceRouting } from "../routing"; import { TraceConversation } from "./TraceConversation"; -import type { SpanDetail, Trace } from "./traceTypes"; -import research from "./__fixtures__/research_trace.json"; +import type { SpanDetail, Trace } from "../types"; +import research from "../__fixtures__/research_trace.json"; -vi.mock("../../networking", () => ({ +vi.mock("../../../networking", () => ({ agentTraceCall: vi.fn(), agentTraceSpanCall: vi.fn(), getProxyBaseUrl: () => "http://proxy.test", })); -import { agentTraceCall, agentTraceSpanCall } from "../../networking"; +import { agentTraceCall, agentTraceSpanCall } from "../../../networking"; function RoutedRunView(props: Omit, "selection">) { const { selection } = useOpenTraceRouting(); diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceConversation.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/TraceConversation.tsx similarity index 97% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/TraceConversation.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/TraceConversation.tsx index 6d41be9a262..d8dc950767e 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceConversation.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/TraceConversation.tsx @@ -4,14 +4,14 @@ import { useQueries } from "@tanstack/react-query"; import { useState } from "react"; import { ChevronRight, Wrench } from "lucide-react"; import { cn } from "@/lib/cva.config"; -import { CopyButton } from "./CopyButton"; -import { useTracesApi } from "./tracesApi"; +import { CopyButton } from "../ui/CopyButton"; +import { useTracesApi } from "../api"; import { Button } from "@/components/ui/button"; import { buildConversation, conversationSteps, CONVERSATION_PAGE_SIZE, type ConversationItem } from "./conversation"; import { ErrorBlock } from "./DetailContent"; import { Markdown, ToolCallBlock } from "./MessageCard"; -import type { SpanDetail, Trace, TraceMessage } from "./traceTypes"; -import { fmtMs } from "./traceUtils"; +import type { SpanDetail, Trace, TraceMessage } from "../types"; +import { fmtMs } from "../utils"; export function TraceConversation({ trace, diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceDrawer.test.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/TraceDrawer.test.tsx similarity index 97% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/TraceDrawer.test.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/TraceDrawer.test.tsx index 0eb9889f2d8..c2cc01353e2 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceDrawer.test.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/TraceDrawer.test.tsx @@ -3,19 +3,19 @@ import { focusManager, onlineManager } from "@tanstack/react-query"; import userEvent from "@testing-library/user-event"; import { beforeEach, describe, expect, it, vi } from "vitest"; -import { renderWithProviders, testQueryClient } from "../../../../tests/test-utils"; -import researchTrace from "./__fixtures__/research_trace.json"; -import swarmTrace from "./__fixtures__/swarm_trace.json"; +import { renderWithProviders, testQueryClient } from "../../../../../tests/test-utils"; +import researchTrace from "../__fixtures__/research_trace.json"; +import swarmTrace from "../__fixtures__/swarm_trace.json"; import type { ComponentProps } from "react"; import { ShortcutHints } from "@/components/shared/ShortcutHints"; import { initialRunSelection, RunView } from "./TraceDrawer"; -import { useOpenTraceRouting } from "./traceRouting"; -import { agentHandoffText } from "./tracesApi"; -import type { Span } from "./traceTypes"; -import type { Trace } from "./traceTypes"; -import { traceDisplayName } from "./traceUtils"; +import { useOpenTraceRouting } from "../routing"; +import { agentHandoffText } from "../api"; +import type { Span } from "../types"; +import type { Trace } from "../types"; +import { traceDisplayName } from "../utils"; -vi.mock("../../networking", () => ({ +vi.mock("../../../networking", () => ({ agentTraceCall: vi.fn(), agentTraceSpanCall: vi.fn(), getProxyBaseUrl: () => "http://proxy.test/", @@ -36,7 +36,7 @@ vi.mock("@/utils/dataUtils", () => ({ copyToClipboard: vi.fn().mockResolvedValue import { copyToClipboard } from "@/utils/dataUtils"; -import { agentTraceCall } from "../../networking"; +import { agentTraceCall } from "../../../networking"; const swarm = swarmTrace as Trace; const research = researchTrace as Trace; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceDrawer.tsx b/ui/litellm-dashboard/src/components/lens/traces/detail/TraceDrawer.tsx similarity index 97% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/TraceDrawer.tsx rename to ui/litellm-dashboard/src/components/lens/traces/detail/TraceDrawer.tsx index e93fe5dc9c0..4047218177d 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceDrawer.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/TraceDrawer.tsx @@ -1,5 +1,5 @@ "use client"; -import { type TraceHandoff, useTracesApi } from "./tracesApi"; +import { type TraceHandoff, useTracesApi } from "../api"; import { QueryErrorResetBoundary, useQueryClient, useSuspenseInfiniteQuery } from "@tanstack/react-query"; import { ArrowLeft, Check, Copy } from "lucide-react"; @@ -15,15 +15,15 @@ import { cn } from "@/lib/cva.config"; import { copyToClipboard } from "@/utils/dataUtils"; import { DetailPane } from "./DetailPane"; -import { IdChip } from "./IdChip"; -import { formatCost } from "./AgentTracesTable"; -import { SpanIcon } from "./SpanIcon"; +import { IdChip } from "../ui/IdChip"; +import { formatCost } from "../list/AgentTracesTable"; +import { SpanIcon } from "../ui/SpanIcon"; import { SpanTree } from "./SpanTree"; import { TraceConversation } from "./TraceConversation"; -import { FrameworkLogo, traceFramework } from "./TraceFramework"; -import { type RunSelection, traceKey } from "./traceRouting"; -import type { SpanTreeState, TreeRow } from "./traceTree"; -import type { Trace } from "./traceTypes"; +import { FrameworkLogo, traceFramework } from "../ui/TraceFramework"; +import { type RunSelection, traceKey } from "../routing"; +import type { SpanTreeState, TreeRow } from "../tree"; +import type { Trace } from "../types"; import { buildTreeRows, firstErrorSpan, @@ -36,7 +36,7 @@ import { revealSpanInState, traceAgentNames, traceDisplayName, -} from "./traceUtils"; +} from "../utils"; const INITIAL_STATE: SpanTreeState = { hideFramework: true, diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/conversation.test.ts b/ui/litellm-dashboard/src/components/lens/traces/detail/conversation.test.ts similarity index 98% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/conversation.test.ts rename to ui/litellm-dashboard/src/components/lens/traces/detail/conversation.test.ts index 055cdf28288..729fdaffaf4 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/conversation.test.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/conversation.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from "vitest"; import { buildConversation, conversationSteps, newConversationMessages } from "./conversation"; -import type { Span, SpanDetail, TraceMessage } from "./traceTypes"; -import research from "./__fixtures__/research_trace.json"; +import type { Span, SpanDetail, TraceMessage } from "../types"; +import research from "../__fixtures__/research_trace.json"; const root = { ...research.spans[0], span_id: "root", parent_span_id: null, type: "agent" } as Span; const user: TraceMessage = { role: "user", content: "Find my order" }; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/conversation.ts b/ui/litellm-dashboard/src/components/lens/traces/detail/conversation.ts similarity index 99% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/conversation.ts rename to ui/litellm-dashboard/src/components/lens/traces/detail/conversation.ts index 9631bc4a12b..af80191f698 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/conversation.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/conversation.ts @@ -1,5 +1,5 @@ -import type { Span, SpanDetail, TraceMessage, TraceToolCall, UIContent } from "./traceTypes"; -import { isFrameworkSpan, parseJson, parseMessages, prettyPayload } from "./traceUtils"; +import type { Span, SpanDetail, TraceMessage, TraceToolCall, UIContent } from "../types"; +import { isFrameworkSpan, parseJson, parseMessages, prettyPayload } from "../utils"; export const CONVERSATION_PAGE_SIZE = 20; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/useSpanRequestLog.ts b/ui/litellm-dashboard/src/components/lens/traces/detail/useSpanRequestLog.ts similarity index 93% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/useSpanRequestLog.ts rename to ui/litellm-dashboard/src/components/lens/traces/detail/useSpanRequestLog.ts index 083dceac790..c654ca55793 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/useSpanRequestLog.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/detail/useSpanRequestLog.ts @@ -3,8 +3,8 @@ import { useQuery, type UseQueryOptions } from "@tanstack/react-query"; import moment from "moment"; -import { uiSpendLogsCall } from "../../networking"; -import type { LogEntry } from "../columns"; +import { uiSpendLogsCall } from "../../../networking"; +import type { LogEntry } from "../../../view_logs/columns"; /** Spend-log timestamps are written when the call finishes, so pad the span start on both sides. */ const LOOKUP_PAD_MINUTES = 30; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesPage.tsx b/ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesPage.tsx similarity index 93% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesPage.tsx rename to ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesPage.tsx index 8d8e78866d1..dfc4b770994 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesPage.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesPage.tsx @@ -4,8 +4,8 @@ import moment from "moment"; import { useMemo, useState } from "react"; import { AgentTracesSection } from "./AgentTracesSection"; -import { useTracesLive } from "./tracesApi"; -import { useRangeHoursRouting } from "./traceRouting"; +import { useTracesLive } from "../api"; +import { useRangeHoursRouting } from "../routing"; const TIME_FORMAT = "YYYY-MM-DDTHH:mm:ss"; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesSection.integration.test.tsx b/ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesSection.integration.test.tsx similarity index 98% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesSection.integration.test.tsx rename to ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesSection.integration.test.tsx index bf68f31f0cb..be295533651 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesSection.integration.test.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesSection.integration.test.tsx @@ -5,15 +5,15 @@ import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { ApiError } from "@/lib/http/client"; -import { renderWithProviders, testQueryClient } from "../../../../tests/test-utils"; -import traceList from "./__fixtures__/trace_list.json"; -import { LensPreviewContext } from "./LensPreviewButton"; +import { renderWithProviders, testQueryClient } from "../../../../../tests/test-utils"; +import traceList from "../__fixtures__/trace_list.json"; +import { LensPreviewContext } from "../../ui/LensPreviewButton"; import AgentTracesPage from "./AgentTracesPage"; import { filterRuns } from "./runSearch/runQuery"; import { AgentTracesSection, type TimeControls } from "./AgentTracesSection"; -import type { TracePage, TraceSummary } from "./traceTypes"; +import type { TracePage, TraceSummary } from "../types"; -vi.mock("../../networking", () => ({ +vi.mock("../../../networking", () => ({ apiClient: { get: vi.fn(), post: vi.fn() }, agentTraceListCall: vi.fn(), sendOtlpTraceCall: vi.fn(), @@ -22,7 +22,7 @@ vi.mock("../../networking", () => ({ getProxyBaseUrl: () => "http://localhost:4000", })); -vi.mock("./TraceDrawer", () => ({ +vi.mock("../detail/TraceDrawer", () => ({ RunView: ({ traceId, onBack }: { traceId: string; onBack: () => void }) => (
run {traceId} @@ -31,7 +31,7 @@ vi.mock("./TraceDrawer", () => ({ ), })); -import { agentTraceListCall, apiClient } from "../../networking"; +import { agentTraceListCall, apiClient } from "../../../networking"; const runs = (traceList as TracePage).data as TraceSummary[]; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesSection.tsx b/ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesSection.tsx similarity index 97% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesSection.tsx rename to ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesSection.tsx index 7d04a709825..04fce64b551 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesSection.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesSection.tsx @@ -16,13 +16,13 @@ import { useOpenTraceRouting, useRunFilterRouting, useZoomRouting, -} from "./traceRouting"; -import type { TraceSummary } from "./traceTypes"; -import { RunView } from "./TraceDrawer"; +} from "../routing"; +import type { TraceSummary } from "../types"; +import { RunView } from "../detail/TraceDrawer"; import { TimeRangeControls } from "./TimeRangeControls"; import { TracesTimeline, type TimeWindow } from "./TracesTimeline"; -import { TracingSetupCard } from "./TracingSetupCard"; -import { useTracesLive } from "./tracesApi"; +import { TracingSetupCard } from "../../onboarding/tracing/TracingSetupCard"; +import { useTracesLive } from "../api"; import { type AgentTracesResult, traceWindowStartMs, useAgentTraces, useTraceAvailability } from "./useAgentTraces"; const DRAWER_WIDTH_KEY = "litellm.agentTraces.drawerWidth"; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesTable.test.tsx b/ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesTable.test.tsx similarity index 91% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesTable.test.tsx rename to ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesTable.test.tsx index b03cd8a07dd..dff968334f7 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/AgentTracesTable.test.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/list/AgentTracesTable.test.tsx @@ -1,12 +1,12 @@ import { fireEvent, render, screen } from "@testing-library/react"; import { describe, expect, it, vi } from "vitest"; -import { renderWithProviders } from "../../../../tests/test-utils"; +import { renderWithProviders } from "../../../../../tests/test-utils"; import { Inspector } from "@/components/shared/Inspector"; -import traceList from "./__fixtures__/trace_list.json"; +import traceList from "../__fixtures__/trace_list.json"; import { AgentTracesTable } from "./AgentTracesTable"; -import { traceKey } from "./traceRouting"; -import type { TracePage, TraceSummary } from "./traceTypes"; +import { traceKey } from "../routing"; +import type { TracePage, TraceSummary } from "../types"; const inList = (table: React.ReactElement) => ( ): TraceSummary => ({ agent_count: 1, diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/runSearch/runQuery.test.ts b/ui/litellm-dashboard/src/components/lens/traces/list/runSearch/runQuery.test.ts similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/runSearch/runQuery.test.ts rename to ui/litellm-dashboard/src/components/lens/traces/list/runSearch/runQuery.test.ts diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/runSearch/runQuery.ts b/ui/litellm-dashboard/src/components/lens/traces/list/runSearch/runQuery.ts similarity index 93% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/runSearch/runQuery.ts rename to ui/litellm-dashboard/src/components/lens/traces/list/runSearch/runQuery.ts index 08adfa98656..3a69345797c 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/runSearch/runQuery.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/list/runSearch/runQuery.ts @@ -1,7 +1,7 @@ import { Bot, Box, Braces, CircleDashed, Hash, SquareChevronRight } from "lucide-react"; -import type { TraceSummary } from "../traceTypes"; -import { previewText, traceAgentNames } from "../traceUtils"; +import type { TraceSummary } from "../../types"; +import { previewText, traceAgentNames } from "../../utils"; import { type ClientIndex, filterItems } from "@/components/shared/search/evaluate"; import type { FieldSpec, QueryLanguage } from "@/components/shared/search/language"; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/runSearch/runSql.test.ts b/ui/litellm-dashboard/src/components/lens/traces/list/runSearch/runSql.test.ts similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/runSearch/runSql.test.ts rename to ui/litellm-dashboard/src/components/lens/traces/list/runSearch/runSql.test.ts diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/runSearch/runSql.ts b/ui/litellm-dashboard/src/components/lens/traces/list/runSearch/runSql.ts similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/runSearch/runSql.ts rename to ui/litellm-dashboard/src/components/lens/traces/list/runSearch/runSql.ts diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/useAgentTraces.test.ts b/ui/litellm-dashboard/src/components/lens/traces/list/useAgentTraces.test.ts similarity index 95% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/useAgentTraces.test.ts rename to ui/litellm-dashboard/src/components/lens/traces/list/useAgentTraces.test.ts index cbced08785f..039ef950768 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/useAgentTraces.test.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/list/useAgentTraces.test.ts @@ -1,7 +1,7 @@ import { describe, expect, it } from "vitest"; import { traceWindowStartMs } from "./useAgentTraces"; -import { spanLogWindow } from "./useSpanRequestLog"; +import { spanLogWindow } from "../detail/useSpanRequestLog"; const HOUR = 3600 * 1000; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/useAgentTraces.ts b/ui/litellm-dashboard/src/components/lens/traces/list/useAgentTraces.ts similarity index 95% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/useAgentTraces.ts rename to ui/litellm-dashboard/src/components/lens/traces/list/useAgentTraces.ts index 82d190a21ff..d82f224ef58 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/useAgentTraces.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/list/useAgentTraces.ts @@ -1,13 +1,14 @@ -import { useTracesApi } from "./tracesApi"; +import { useTracesApi } from "../api"; import { useInfiniteQuery, useQuery, type UseQueryOptions } from "@tanstack/react-query"; import moment from "moment"; import { useMemo } from "react"; import { ApiError } from "@/lib/http/client"; -import { LIVE_TAIL_INTERVAL_MS } from "../log_filter_logic"; -import type { TracePage, TraceSummary } from "./traceTypes"; -import type { TraceWindow } from "./tracesApi"; +import type { TracePage, TraceSummary } from "../types"; +import type { TraceWindow } from "../api"; + +const LIVE_TAIL_INTERVAL_MS = 15000; interface LoadedTracePage extends TracePage { window: TraceWindow; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/traceRouting.ts b/ui/litellm-dashboard/src/components/lens/traces/routing.ts similarity index 97% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/traceRouting.ts rename to ui/litellm-dashboard/src/components/lens/traces/routing.ts index 17551ab4110..744be6bba2b 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/traceRouting.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/routing.ts @@ -9,9 +9,9 @@ import { } from "nuqs"; import { useCallback, useState } from "react"; -import { RANGE_PRESETS } from "./TimeRangeControls"; -import type { TimeWindow } from "./TracesTimeline"; -import type { TraceSummary } from "./traceTypes"; +import { RANGE_PRESETS } from "./list/TimeRangeControls"; +import type { TimeWindow } from "./list/TracesTimeline"; +import type { TraceSummary } from "./types"; export const TRACE_VIEWS = ["steps", "conversation"] as const; export type TraceView = (typeof TRACE_VIEWS)[number]; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/traceTree.ts b/ui/litellm-dashboard/src/components/lens/traces/tree.ts similarity index 86% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/traceTree.ts rename to ui/litellm-dashboard/src/components/lens/traces/tree.ts index 2f0e66833a4..d18324d75f4 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/traceTree.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/tree.ts @@ -1,8 +1,8 @@ /** * Shared contract for the agent run view (span tree + detail pane). - * Rows are produced by `buildTreeRows` in traceUtils.ts and rendered by SpanTree / DetailPane. + * Rows are produced by `buildTreeRows` in utils.ts and rendered by SpanTree / DetailPane. */ -import type { Span, SpanType } from "./traceTypes"; +import type { Span, SpanType } from "./types"; export type ErrorSource = "model" | "tool" | "litellm"; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/traceTypes.ts b/ui/litellm-dashboard/src/components/lens/traces/types.ts similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/traceTypes.ts rename to ui/litellm-dashboard/src/components/lens/traces/types.ts diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/ActiveDot.tsx b/ui/litellm-dashboard/src/components/lens/traces/ui/ActiveDot.tsx similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/ActiveDot.tsx rename to ui/litellm-dashboard/src/components/lens/traces/ui/ActiveDot.tsx diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/Collapse.tsx b/ui/litellm-dashboard/src/components/lens/traces/ui/Collapse.tsx similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/Collapse.tsx rename to ui/litellm-dashboard/src/components/lens/traces/ui/Collapse.tsx diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/CopyButton.tsx b/ui/litellm-dashboard/src/components/lens/traces/ui/CopyButton.tsx similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/CopyButton.tsx rename to ui/litellm-dashboard/src/components/lens/traces/ui/CopyButton.tsx diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/IdChip.tsx b/ui/litellm-dashboard/src/components/lens/traces/ui/IdChip.tsx similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/IdChip.tsx rename to ui/litellm-dashboard/src/components/lens/traces/ui/IdChip.tsx diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/PaneBar.tsx b/ui/litellm-dashboard/src/components/lens/traces/ui/PaneBar.tsx similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/PaneBar.tsx rename to ui/litellm-dashboard/src/components/lens/traces/ui/PaneBar.tsx diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/SpanIcon.tsx b/ui/litellm-dashboard/src/components/lens/traces/ui/SpanIcon.tsx similarity index 97% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/SpanIcon.tsx rename to ui/litellm-dashboard/src/components/lens/traces/ui/SpanIcon.tsx index 569842f8fdc..4374e535802 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/SpanIcon.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/ui/SpanIcon.tsx @@ -18,7 +18,7 @@ import { Logo } from "@/components/molecules/logo/Logo"; import { cn } from "@/lib/cva.config"; import { useSpanProvider } from "./spanProvider"; -import type { SpanType } from "./traceTypes"; +import type { SpanType } from "../types"; const SIZE = { sm: "size-4 rounded-sm", diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/StatusMark.tsx b/ui/litellm-dashboard/src/components/lens/traces/ui/StatusMark.tsx similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/StatusMark.tsx rename to ui/litellm-dashboard/src/components/lens/traces/ui/StatusMark.tsx diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceFramework.test.ts b/ui/litellm-dashboard/src/components/lens/traces/ui/TraceFramework.test.ts similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/TraceFramework.test.ts rename to ui/litellm-dashboard/src/components/lens/traces/ui/TraceFramework.test.ts diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceFramework.tsx b/ui/litellm-dashboard/src/components/lens/traces/ui/TraceFramework.tsx similarity index 68% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/TraceFramework.tsx rename to ui/litellm-dashboard/src/components/lens/traces/ui/TraceFramework.tsx index f0bb8437abf..9c0ff2ee274 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/TraceFramework.tsx +++ b/ui/litellm-dashboard/src/components/lens/traces/ui/TraceFramework.tsx @@ -1,20 +1,20 @@ -import anthropicLogo from "../../../../public/assets/logos/anthropic.svg"; -import crewaiLogo from "../../../../public/assets/logos/crewai-color.svg"; -import cursorLogo from "../../../../public/assets/logos/cursor.svg"; -import copilotLogo from "../../../../public/assets/logos/github_copilot.svg"; -import googleAdkLogo from "../../../../public/assets/logos/google-adk.png"; -import langchainLogo from "../../../../public/assets/logos/langchain.svg"; -import langgraphLogo from "../../../../public/assets/logos/langgraph-color.svg"; -import llamaIndexLogo from "../../../../public/assets/logos/llamaindex-color.svg"; -import openaiLogo from "../../../../public/assets/logos/openai_small.svg"; -import openaiAgentsLogo from "../../../../public/assets/logos/openai-agents.svg"; -import pydanticAiLogo from "../../../../public/assets/logos/pydantic-ai-color.svg"; -import strandsLogo from "../../../../public/assets/logos/strands.svg"; -import vercelLogo from "../../../../public/assets/logos/vercel.svg"; +import anthropicLogo from "../../../../../public/assets/logos/anthropic.svg"; +import crewaiLogo from "../../../../../public/assets/logos/crewai-color.svg"; +import cursorLogo from "../../../../../public/assets/logos/cursor.svg"; +import copilotLogo from "../../../../../public/assets/logos/github_copilot.svg"; +import googleAdkLogo from "../../../../../public/assets/logos/google-adk.png"; +import langchainLogo from "../../../../../public/assets/logos/langchain.svg"; +import langgraphLogo from "../../../../../public/assets/logos/langgraph-color.svg"; +import llamaIndexLogo from "../../../../../public/assets/logos/llamaindex-color.svg"; +import openaiLogo from "../../../../../public/assets/logos/openai_small.svg"; +import openaiAgentsLogo from "../../../../../public/assets/logos/openai-agents.svg"; +import pydanticAiLogo from "../../../../../public/assets/logos/pydantic-ai-color.svg"; +import strandsLogo from "../../../../../public/assets/logos/strands.svg"; +import vercelLogo from "../../../../../public/assets/logos/vercel.svg"; import { Logo } from "@/components/molecules/logo/Logo"; import { cn } from "@/lib/cva.config"; -import type { TraceSummary } from "./traceTypes"; +import type { TraceSummary } from "../types"; export interface TraceFramework { readonly id: string; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/spanProvider.test.ts b/ui/litellm-dashboard/src/components/lens/traces/ui/spanProvider.test.ts similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/spanProvider.test.ts rename to ui/litellm-dashboard/src/components/lens/traces/ui/spanProvider.test.ts diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/spanProvider.ts b/ui/litellm-dashboard/src/components/lens/traces/ui/spanProvider.ts similarity index 97% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/spanProvider.ts rename to ui/litellm-dashboard/src/components/lens/traces/ui/spanProvider.ts index 2b74d0c44f4..8e5e595f9e9 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/spanProvider.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/ui/spanProvider.ts @@ -1,4 +1,4 @@ -import { useTracesLive } from "./tracesApi"; +import { useTracesLive } from "../api"; import { useModelCostMap } from "@/app/(dashboard)/hooks/models/useModelCostMap"; import { getProviderLogoAndName } from "@/components/provider_info_helpers"; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/traceUtils.test.ts b/ui/litellm-dashboard/src/components/lens/traces/utils.test.ts similarity index 99% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/traceUtils.test.ts rename to ui/litellm-dashboard/src/components/lens/traces/utils.test.ts index c6bf860300c..1bb5f9ec3c1 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/traceUtils.test.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/utils.test.ts @@ -3,8 +3,8 @@ import { describe, expect, it } from "vitest"; import deepAgentTrace from "./__fixtures__/deep_agent_trace.json"; import researchTrace from "./__fixtures__/research_trace.json"; import swarmTrace from "./__fixtures__/swarm_trace.json"; -import { type SpanTreeState, type TreeRow } from "./traceTree"; -import type { Span, Trace } from "./traceTypes"; +import { type SpanTreeState, type TreeRow } from "./tree"; +import type { Span, Trace } from "./types"; import { buildTreeRows, buildVisibleTree, @@ -22,7 +22,7 @@ import { revealSpanInState, ROOT_KEY, treeGuides, -} from "./traceUtils"; +} from "./utils"; const swarm = swarmTrace as Trace; const research = researchTrace as Trace; diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/traceUtils.ts b/ui/litellm-dashboard/src/components/lens/traces/utils.ts similarity index 99% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/traceUtils.ts rename to ui/litellm-dashboard/src/components/lens/traces/utils.ts index 066d30bceed..a1706d11b9e 100644 --- a/ui/litellm-dashboard/src/components/view_logs/TraceView/traceUtils.ts +++ b/ui/litellm-dashboard/src/components/lens/traces/utils.ts @@ -2,8 +2,8 @@ * Pure helpers for the agent trace views. No React in here: everything the span tree * computes lives here so it can be unit-tested directly. */ -import { type ErrorSource, type SpanTreeState, type TreeRow } from "./traceTree"; -import type { Span, TraceMessage, TraceSummary } from "./traceTypes"; +import { type ErrorSource, type SpanTreeState, type TreeRow } from "./tree"; +import type { Span, TraceMessage, TraceSummary } from "./types"; /* ------------------------------------------------------------------ */ /* Formatting */ diff --git a/ui/litellm-dashboard/src/components/view_logs/TraceView/LensPreviewButton.tsx b/ui/litellm-dashboard/src/components/lens/ui/LensPreviewButton.tsx similarity index 100% rename from ui/litellm-dashboard/src/components/view_logs/TraceView/LensPreviewButton.tsx rename to ui/litellm-dashboard/src/components/lens/ui/LensPreviewButton.tsx diff --git a/ui/litellm-dashboard/src/components/networking.tsx b/ui/litellm-dashboard/src/components/networking.tsx index 4e606222eae..c297ca72141 100644 --- a/ui/litellm-dashboard/src/components/networking.tsx +++ b/ui/litellm-dashboard/src/components/networking.tsx @@ -117,7 +117,7 @@ import type { ComplexityRouterConfigPayload } from "./add_model/build_complexity import type { AutoRouterPresetsResponse } from "@/lib/autorouter_presets"; import type { VectorStoreIndex } from "@/app/(dashboard)/vector-stores/_components/IndexesTab"; import type { RoutingDecision } from "./view_logs/LogDetailsDrawer/RoutingDecisionCard"; -import type { SpanDetail, SpanErrorPage, Trace, TracePage } from "./view_logs/TraceView/traceTypes"; +import type { SpanDetail, SpanErrorPage, Trace, TracePage } from "./lens/traces/types"; import { createApiClient, deriveErrorMessage, diff --git a/ui/litellm-dashboard/src/lib/http/api.test-d.ts b/ui/litellm-dashboard/src/lib/http/api.test-d.ts index 7d88865358b..47ef63554dd 100644 --- a/ui/litellm-dashboard/src/lib/http/api.test-d.ts +++ b/ui/litellm-dashboard/src/lib/http/api.test-d.ts @@ -1,7 +1,7 @@ import { expectTypeOf, test } from "vitest"; import type { components } from "./schema"; import type { getClaudeCodePluginsList, userListCall } from "@/components/networking"; -import type { TraceMessage, UIMessage } from "@/components/view_logs/TraceView/traceTypes"; +import type { TraceMessage, UIMessage } from "@/components/lens/traces/types"; import type { TagNewRequest, TagUpdateRequest } from "@/components/tag_management/types"; test("API read functions expose the generated response contracts", () => {