@linxiraos/pi-stats 1.1.8 → 1.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/package.json +87 -94
  3. package/src/gain-aggregator.ts +1 -1
  4. package/src/index.ts +0 -0
  5. package/THIRD-PARTY-NOTICES.txt +0 -22909
  6. package/dist/client/index.css +0 -1
  7. package/dist/client/index.html +0 -24
  8. package/dist/client/index.js +0 -257
  9. package/dist/client/styles.css +0 -1956
  10. package/dist/types/aggregator.d.ts +0 -103
  11. package/dist/types/client/App.d.ts +0 -1
  12. package/dist/types/client/api.d.ts +0 -28
  13. package/dist/types/client/app/AppLayout.d.ts +0 -16
  14. package/dist/types/client/app/NavRail.d.ts +0 -7
  15. package/dist/types/client/app/RangeControl.d.ts +0 -7
  16. package/dist/types/client/app/SyncButton.d.ts +0 -14
  17. package/dist/types/client/app/ThemeToggle.d.ts +0 -1
  18. package/dist/types/client/app/TopBar.d.ts +0 -15
  19. package/dist/types/client/app/routes.d.ts +0 -12
  20. package/dist/types/client/components/AgentTokenShare.d.ts +0 -5
  21. package/dist/types/client/components/chart-shared.d.ts +0 -178
  22. package/dist/types/client/components/models-table-shared.d.ts +0 -175
  23. package/dist/types/client/components/range-meta.d.ts +0 -21
  24. package/dist/types/client/data/charts.d.ts +0 -1
  25. package/dist/types/client/data/formatters.d.ts +0 -13
  26. package/dist/types/client/data/useHashRoute.d.ts +0 -10
  27. package/dist/types/client/data/useResource.d.ts +0 -13
  28. package/dist/types/client/data/view-models.d.ts +0 -75
  29. package/dist/types/client/index.d.ts +0 -2
  30. package/dist/types/client/routes/BehaviorRoute.d.ts +0 -7
  31. package/dist/types/client/routes/CostsRoute.d.ts +0 -7
  32. package/dist/types/client/routes/ErrorsRoute.d.ts +0 -8
  33. package/dist/types/client/routes/GainRoute.d.ts +0 -7
  34. package/dist/types/client/routes/ModelsRoute.d.ts +0 -7
  35. package/dist/types/client/routes/OverviewRoute.d.ts +0 -8
  36. package/dist/types/client/routes/ProjectsRoute.d.ts +0 -7
  37. package/dist/types/client/routes/ProvidersRoute.d.ts +0 -7
  38. package/dist/types/client/routes/RequestsRoute.d.ts +0 -8
  39. package/dist/types/client/routes/ToolsRoute.d.ts +0 -7
  40. package/dist/types/client/routes/TracesRoute.d.ts +0 -11
  41. package/dist/types/client/routes/index.d.ts +0 -11
  42. package/dist/types/client/traces/AggregatesPanel.d.ts +0 -9
  43. package/dist/types/client/traces/Minimap.d.ts +0 -14
  44. package/dist/types/client/traces/SpanDrawer.d.ts +0 -14
  45. package/dist/types/client/traces/SummaryStrip.d.ts +0 -9
  46. package/dist/types/client/traces/TimelineCanvas.d.ts +0 -25
  47. package/dist/types/client/traces/TraceView.d.ts +0 -11
  48. package/dist/types/client/traces/TranscriptList.d.ts +0 -24
  49. package/dist/types/client/traces/time-scale.d.ts +0 -40
  50. package/dist/types/client/traces/trace-colors.d.ts +0 -31
  51. package/dist/types/client/types.d.ts +0 -63
  52. package/dist/types/client/ui/AsyncBoundary.d.ts +0 -12
  53. package/dist/types/client/ui/DataTable.d.ts +0 -17
  54. package/dist/types/client/ui/EmptyState.d.ts +0 -7
  55. package/dist/types/client/ui/ErrorState.d.ts +0 -6
  56. package/dist/types/client/ui/JsonBlock.d.ts +0 -7
  57. package/dist/types/client/ui/MetricCluster.d.ts +0 -5
  58. package/dist/types/client/ui/Panel.d.ts +0 -7
  59. package/dist/types/client/ui/RequestDrawer.d.ts +0 -5
  60. package/dist/types/client/ui/SegmentedControl.d.ts +0 -12
  61. package/dist/types/client/ui/Skeleton.d.ts +0 -8
  62. package/dist/types/client/ui/StatusPill.d.ts +0 -7
  63. package/dist/types/client/ui/index.d.ts +0 -11
  64. package/dist/types/client/useSystemTheme.d.ts +0 -11
  65. package/dist/types/db.d.ts +0 -183
  66. package/dist/types/embedded-client.d.ts +0 -18
  67. package/dist/types/gain-aggregator.d.ts +0 -26
  68. package/dist/types/index.d.ts +0 -17
  69. package/dist/types/parser.d.ts +0 -61
  70. package/dist/types/port-conflict.d.ts +0 -16
  71. package/dist/types/server.d.ts +0 -15
  72. package/dist/types/shared-types.d.ts +0 -551
  73. package/dist/types/sync-worker.d.ts +0 -31
  74. package/dist/types/trace.d.ts +0 -33
  75. package/dist/types/types.d.ts +0 -198
  76. package/dist/types/usage-windows.d.ts +0 -72
  77. package/dist/types/user-metrics.d.ts +0 -81
@@ -1,75 +0,0 @@
1
- import type { AgentType, AgentTypeStats, BehaviorOverallStats, BehaviorTimeSeriesPoint, CostTimeSeriesPoint, FolderStats, ModelPerformancePoint, TimeRange, ToolUsageStats } from "../types.js";
2
- export interface ConversationTokenStats {
3
- totalInputTokens: number;
4
- totalOutputTokens: number;
5
- totalCacheReadTokens: number;
6
- totalCacheWriteTokens: number;
7
- }
8
- /** Sum every conversation-token bucket shown by the overview. */
9
- export declare function sumConversationTokens(stats: ConversationTokenStats): number;
10
- export interface AgentTokenSegment {
11
- agentType: AgentType;
12
- /** input + output + cache read + cache write — the displayed denominator. */
13
- tokens: number;
14
- requests: number;
15
- cost: number;
16
- /** Fraction (0-1) of total tokens across all present agent types. */
17
- share: number;
18
- }
19
- export interface AgentTokenShareView {
20
- totalTokens: number;
21
- totalCost: number;
22
- segments: AgentTokenSegment[];
23
- }
24
- /**
25
- * Build the "token usage by agent" breakdown: one segment per agent type that
26
- * appears in the data, ordered main -> subagents -> advisor, each carrying its
27
- * token total and share of the grand total. Token counts use the same four
28
- * conversation-token buckets as the overview total so the two views reconcile.
29
- */
30
- export declare function buildAgentTokenShare(stats: AgentTypeStats[]): AgentTokenShareView;
31
- export interface CostSummaryView {
32
- totalCost: number;
33
- unpricedRequests: number;
34
- avgDailyCost: number;
35
- topModelName: string;
36
- topModelCost: number;
37
- }
38
- export interface ModelPerformanceDataPoint {
39
- timestamp: number;
40
- avgTtftSeconds: number | null;
41
- avgTokensPerSecond: number | null;
42
- requests: number;
43
- }
44
- export interface ModelPerformanceSeries {
45
- label: string;
46
- data: ModelPerformanceDataPoint[];
47
- }
48
- export interface BehaviorSummaryView {
49
- totalMessages: number;
50
- totalYelling: number;
51
- totalProfanity: number;
52
- totalAnguish: number;
53
- totalFrustration: number;
54
- highestFrictionModel: {
55
- model: string;
56
- provider: string;
57
- score: number;
58
- } | null;
59
- }
60
- export interface FolderRowView extends FolderStats {
61
- costPercentage: number;
62
- requestsPercentage: number;
63
- }
64
- export declare function buildCostSummary(costSeries: CostTimeSeriesPoint[]): CostSummaryView;
65
- export declare function buildModelPerformanceLookup(points: ModelPerformancePoint[], range: TimeRange): Map<string, ModelPerformanceSeries>;
66
- export declare function buildBehaviorSummary(overall: BehaviorOverallStats, series: BehaviorTimeSeriesPoint[]): BehaviorSummaryView;
67
- export declare function buildFolderRows(folders: FolderStats[]): FolderRowView[];
68
- /** Table row for the Tools route: usage stats plus derived rates/shares. */
69
- export interface ToolRowView extends ToolUsageStats {
70
- /** errors / calls (0 for zero calls). */
71
- errorRate: number;
72
- /** Calls relative to the busiest tool, 0-100, for the share bar. */
73
- callsPercentage: number;
74
- }
75
- export declare function buildToolRows(tools: ToolUsageStats[]): ToolRowView[];
@@ -1,2 +0,0 @@
1
- import "./styles.css";
2
- import "./data/charts.js";
@@ -1,7 +0,0 @@
1
- import type { TimeRange } from "../types.js";
2
- export interface BehaviorRouteProps {
3
- active: boolean;
4
- range: TimeRange;
5
- refreshTrigger: number;
6
- }
7
- export declare function BehaviorRoute({ active, range, refreshTrigger }: BehaviorRouteProps): import("react").JSX.Element;
@@ -1,7 +0,0 @@
1
- import type { TimeRange } from "../types.js";
2
- export interface CostsRouteProps {
3
- active: boolean;
4
- range: TimeRange;
5
- refreshTrigger: number;
6
- }
7
- export declare function CostsRoute({ active, range, refreshTrigger }: CostsRouteProps): import("react").JSX.Element;
@@ -1,8 +0,0 @@
1
- import type { TimeRange } from "../types.js";
2
- export interface ErrorsRouteProps {
3
- active: boolean;
4
- range: TimeRange;
5
- refreshTrigger: number;
6
- onRequestClick: (id: number) => void;
7
- }
8
- export declare function ErrorsRoute({ active, range, refreshTrigger, onRequestClick }: ErrorsRouteProps): import("react").JSX.Element;
@@ -1,7 +0,0 @@
1
- import type { TimeRange } from "../types.js";
2
- export interface GainRouteProps {
3
- active: boolean;
4
- range: TimeRange;
5
- refreshTrigger: number;
6
- }
7
- export declare function GainRoute({ active, range, refreshTrigger }: GainRouteProps): import("react").JSX.Element;
@@ -1,7 +0,0 @@
1
- import type { TimeRange } from "../types.js";
2
- export interface ModelsRouteProps {
3
- active: boolean;
4
- range: TimeRange;
5
- refreshTrigger: number;
6
- }
7
- export declare function ModelsRoute({ active, range, refreshTrigger }: ModelsRouteProps): import("react").JSX.Element;
@@ -1,8 +0,0 @@
1
- import type { TimeRange } from "../types.js";
2
- export interface OverviewRouteProps {
3
- active: boolean;
4
- range: TimeRange;
5
- refreshTrigger: number;
6
- onRequestClick: (id: number) => void;
7
- }
8
- export declare function OverviewRoute({ active, range, refreshTrigger, onRequestClick }: OverviewRouteProps): import("react").JSX.Element;
@@ -1,7 +0,0 @@
1
- import type { TimeRange } from "../types.js";
2
- export interface ProjectsRouteProps {
3
- active: boolean;
4
- range: TimeRange;
5
- refreshTrigger: number;
6
- }
7
- export declare function ProjectsRoute({ active, range, refreshTrigger }: ProjectsRouteProps): import("react").JSX.Element;
@@ -1,7 +0,0 @@
1
- import type { TimeRange } from "../types.js";
2
- export interface ProvidersRouteProps {
3
- active: boolean;
4
- range: TimeRange;
5
- refreshTrigger: number;
6
- }
7
- export declare function ProvidersRoute({ active, range, refreshTrigger }: ProvidersRouteProps): import("react").JSX.Element;
@@ -1,8 +0,0 @@
1
- import type { TimeRange } from "../types.js";
2
- export interface RequestsRouteProps {
3
- active: boolean;
4
- range: TimeRange;
5
- refreshTrigger: number;
6
- onRequestClick: (id: number) => void;
7
- }
8
- export declare function RequestsRoute({ active, refreshTrigger, onRequestClick }: RequestsRouteProps): import("react").JSX.Element;
@@ -1,7 +0,0 @@
1
- import type { TimeRange } from "../types.js";
2
- export interface ToolsRouteProps {
3
- active: boolean;
4
- range: TimeRange;
5
- refreshTrigger: number;
6
- }
7
- export declare function ToolsRoute({ active, range, refreshTrigger }: ToolsRouteProps): import("react").JSX.Element;
@@ -1,11 +0,0 @@
1
- /**
2
- * Traces section: root-session list (subagents folded in) that opens the
3
- * flamegraph trace viewer for a selected session.
4
- */
5
- export interface TracesRouteProps {
6
- active: boolean;
7
- session: string | null;
8
- onOpenSession: (file: string | null) => void;
9
- refreshTrigger: number;
10
- }
11
- export declare function TracesRoute({ active, session, onOpenSession, refreshTrigger }: TracesRouteProps): import("react").JSX.Element;
@@ -1,11 +0,0 @@
1
- export * from "./BehaviorRoute.js";
2
- export * from "./CostsRoute.js";
3
- export * from "./ErrorsRoute.js";
4
- export * from "./GainRoute.js";
5
- export * from "./ModelsRoute.js";
6
- export * from "./OverviewRoute.js";
7
- export * from "./ProjectsRoute.js";
8
- export * from "./ProvidersRoute.js";
9
- export * from "./RequestsRoute.js";
10
- export * from "./ToolsRoute.js";
11
- export * from "./TracesRoute.js";
@@ -1,9 +0,0 @@
1
- /**
2
- * Collapsible per-tool duration aggregates for one trace, sorted by total
3
- * time descending (as produced by the server).
4
- */
5
- import type { TraceToolStat } from "../types.js";
6
- export interface AggregatesPanelProps {
7
- toolStats: TraceToolStat[];
8
- }
9
- export declare function AggregatesPanel({ toolStats }: AggregatesPanelProps): import("react").JSX.Element | null;
@@ -1,14 +0,0 @@
1
- /**
2
- * Timeline overview strip: per-category density over the full virtual domain
3
- * plus a draggable/resizable viewport brush, mirroring DevTools' overview.
4
- */
5
- import type { TraceTrack } from "../types.js";
6
- import type { TimelineViewport } from "./TimelineCanvas.js";
7
- import type { TraceScale } from "./time-scale.js";
8
- export interface MinimapProps {
9
- tracks: TraceTrack[];
10
- scale: TraceScale;
11
- viewport: TimelineViewport;
12
- onViewportChange: (viewport: TimelineViewport) => void;
13
- }
14
- export declare function Minimap({ tracks, scale, viewport, onViewportChange }: MinimapProps): import("react").JSX.Element;
@@ -1,14 +0,0 @@
1
- /**
2
- * Detail drawer for a selected trace span. Fetches the full journal entry on
3
- * demand (`/api/session/entry`) and renders per-kind detail: model usage grid
4
- * + text blocks, tool args/result, user text, subagent task text.
5
- */
6
- import type { TraceSpan, TraceTrack } from "../types.js";
7
- export interface SpanDrawerProps {
8
- span: TraceSpan | null;
9
- track: TraceTrack | null;
10
- onClose: () => void;
11
- /** Selects the first span of the given child track ("open child track"). */
12
- onOpenChildTrack?: (childTrackId: string) => void;
13
- }
14
- export declare function SpanDrawer({ span, track, onClose, onOpenChildTrack }: SpanDrawerProps): import("react").JSX.Element | null;
@@ -1,9 +0,0 @@
1
- /**
2
- * Headline chips for one trace: wall/model/tool/idle time, turns, requests,
3
- * tool calls, agents, tokens, cost.
4
- */
5
- import type { TraceSummary } from "../types.js";
6
- export interface SummaryStripProps {
7
- summary: TraceSummary;
8
- }
9
- export declare function SummaryStrip({ summary }: SummaryStripProps): import("react").JSX.Element;
@@ -1,25 +0,0 @@
1
- /**
2
- * The trace flamegraph: one DPR-scaled canvas with a DOM gutter (track/lane
3
- * labels, collapse chevrons) and a DOM tooltip. Implements the Chrome
4
- * DevTools interaction contract: cursor-anchored wheel zoom, drag pan, WASD,
5
- * fit/focus keys, hover tooltips, click-to-select, double-click-to-zoom.
6
- */
7
- import type { TraceTrack } from "../types.js";
8
- import { type TraceScale } from "./time-scale.js";
9
- export interface TimelineViewport {
10
- u0: number;
11
- u1: number;
12
- }
13
- export interface TimelineCanvasProps {
14
- tracks: TraceTrack[];
15
- scale: TraceScale;
16
- viewport: TimelineViewport;
17
- onViewportChange: (viewport: TimelineViewport) => void;
18
- selection: string | null;
19
- onSelect: (spanId: string | null) => void;
20
- search: string;
21
- collapsed: ReadonlySet<string>;
22
- onToggleCollapse: (trackId: string) => void;
23
- traceStart: number;
24
- }
25
- export declare function TimelineCanvas({ tracks, scale, viewport, onViewportChange, selection, onSelect, search, collapsed, onToggleCollapse, traceStart, }: TimelineCanvasProps): import("react").JSX.Element;
@@ -1,11 +0,0 @@
1
- /**
2
- * Single-session trace viewer: summary strip, axis-mode toolbar, minimap,
3
- * flamegraph canvas, transcript list, tool aggregates, and the span drawer.
4
- * Owns the shared viewport/selection state so all pieces stay in sync.
5
- */
6
- export interface TraceViewProps {
7
- file: string;
8
- active: boolean;
9
- onBack: () => void;
10
- }
11
- export declare function TraceView({ file, active, onBack }: TraceViewProps): import("react").JSX.Element;
@@ -1,24 +0,0 @@
1
- /**
2
- * Windowed transcript list under the timeline: all spans + markers flattened
3
- * chronologically across tracks, bidirectionally synced with the canvas
4
- * selection. Hand-rolled fixed-row virtualization (32px rows, spacer divs).
5
- */
6
- import type { TraceMarker, TraceSpan, TraceTrack } from "../types.js";
7
- export interface TranscriptRow {
8
- key: string;
9
- time: number;
10
- span?: TraceSpan;
11
- marker?: TraceMarker;
12
- track: TraceTrack;
13
- depth: number;
14
- }
15
- export interface TranscriptListProps {
16
- tracks: TraceTrack[];
17
- selection: string | null;
18
- onSelect: (spanId: string) => void;
19
- search: string;
20
- traceStart: number;
21
- }
22
- /** Flatten all spans and markers across tracks into chronological rows. */
23
- export declare function buildTranscriptRows(tracks: TraceTrack[]): TranscriptRow[];
24
- export declare function TranscriptList({ tracks, selection, onSelect, search, traceStart }: TranscriptListProps): import("react").JSX.Element;
@@ -1,40 +0,0 @@
1
- /**
2
- * Virtual time axis for the trace flamegraph.
3
- *
4
- * All three axis modes are piecewise-linear monotonic maps over global wall
5
- * time, so cross-track alignment is preserved in every mode:
6
- * - `time`: identity, or idle-compressed (long gaps collapse to fixed bridges)
7
- * - `turns`: each main-track turn interval gets equal virtual width
8
- * - `calls`: each interval between consecutive span boundaries gets equal width
9
- */
10
- import type { TraceTrack } from "../types.js";
11
- export type AxisMode = "time" | "turns" | "calls";
12
- export interface TraceScale {
13
- /** ms epoch → virtual axis; monotonic non-decreasing. */
14
- toU(t: number): number;
15
- /** Inverse (clamped to domain). */
16
- toT(u: number): number;
17
- /** Virtual axis domain. */
18
- domain: [number, number];
19
- /** Idle bridges (time mode + compression): real gap [t0,t1] at virtual uMid. */
20
- gaps: Array<{
21
- t0: number;
22
- t1: number;
23
- uMid: number;
24
- }>;
25
- }
26
- /** Build the axis map for the given mode over all tracks. */
27
- export declare function buildScale(tracks: TraceTrack[], mode: AxisMode, compressIdle: boolean): TraceScale;
28
- export interface Tick {
29
- u: number;
30
- label: string;
31
- major: boolean;
32
- }
33
- /** Offset label from trace start: `+mm:ss.mmm`, hours prepended when needed. */
34
- export declare function formatOffset(deltaMs: number): string;
35
- /**
36
- * Ruler ticks inside `[u0, u1]`. Ticks are placed at nice wall-time steps in
37
- * the underlying t-space (per linear segment in compressed/sequence modes),
38
- * with major ticks labelled as local wall clock and minors as offsets.
39
- */
40
- export declare function buildTicks(scale: TraceScale, u0: number, u1: number, widthPx: number): Tick[];
@@ -1,31 +0,0 @@
1
- /**
2
- * Category palette + canvas chrome tokens for the trace flamegraph, keyed by
3
- * resolved theme. Hues align with the dashboard chip palette; chrome tokens
4
- * mirror `CHART_THEMES` so the canvas matches the chart.js surfaces.
5
- */
6
- import type { TraceSpanKind } from "../types.js";
7
- export interface TraceTheme {
8
- /** Span fill per category. */
9
- category: Record<TraceSpanKind, string>;
10
- /** Error fill tint + left-edge accent. */
11
- error: string;
12
- /** Marker diamond fill. */
13
- marker: string;
14
- /** Alternating turn-band fill. */
15
- turnBand: string;
16
- /** Canvas background. */
17
- surface: string;
18
- /** Ruler/lane hairlines. */
19
- grid: string;
20
- /** Ruler tick labels. */
21
- tick: string;
22
- /** Span label text drawn inside blocks. */
23
- spanText: string;
24
- /** Selection outline (brand cyan focus ring). */
25
- selection: string;
26
- tooltipBackground: string;
27
- tooltipTitle: string;
28
- tooltipBody: string;
29
- tooltipBorder: string;
30
- }
31
- export declare const TRACE_THEMES: Record<"dark" | "light", TraceTheme>;
@@ -1,63 +0,0 @@
1
- /**
2
- * Client-side type definitions.
3
- *
4
- * Shared shapes (aggregations, time-series, dashboard payloads) live in
5
- * `../shared-types` and are re-exported here. The types declared inline below
6
- * are deliberately client-only because:
7
- * - `Usage` is redeclared locally so the client bundle avoids importing
8
- * `@linxiraos/pi-ai` (the server-side AI types package).
9
- * - `MessageStats.stopReason` is widened from the server's `StopReason`
10
- * enum to `string`, again to keep the client free of pi-ai types.
11
- * - `TimeRange`, `OverviewStats`, `ModelDashboardStats`,
12
- * `CostDashboardStats` are UI-only view shapes the server never produces.
13
- */
14
- import type { AgentTypeStats, AggregatedStats, CostTimeSeriesPoint, ModelPerformancePoint, ModelStats, ModelTimeSeriesPoint, TimeSeriesPoint } from "../shared-types.js";
15
- export * from "../shared-types.js";
16
- export interface Usage {
17
- input: number;
18
- output: number;
19
- cacheRead: number;
20
- cacheWrite: number;
21
- totalTokens: number;
22
- premiumRequests?: number;
23
- cost: {
24
- input: number;
25
- output: number;
26
- cacheRead: number;
27
- cacheWrite: number;
28
- total: number;
29
- };
30
- }
31
- export interface MessageStats {
32
- id?: number;
33
- sessionFile: string;
34
- entryId: string;
35
- folder: string;
36
- model: string;
37
- provider: string;
38
- api: string;
39
- timestamp: number;
40
- duration: number | null;
41
- ttft: number | null;
42
- stopReason: string;
43
- errorMessage: string | null;
44
- usage: Usage;
45
- }
46
- export interface RequestDetails extends MessageStats {
47
- messages: unknown[];
48
- output: unknown;
49
- }
50
- export type TimeRange = "1h" | "24h" | "7d" | "30d" | "90d" | "all";
51
- export interface OverviewStats {
52
- overall: AggregatedStats;
53
- byAgentType: AgentTypeStats[];
54
- timeSeries: TimeSeriesPoint[];
55
- }
56
- export interface ModelDashboardStats {
57
- byModel: ModelStats[];
58
- modelSeries: ModelTimeSeriesPoint[];
59
- modelPerformanceSeries: ModelPerformancePoint[];
60
- }
61
- export interface CostDashboardStats {
62
- costSeries: CostTimeSeriesPoint[];
63
- }
@@ -1,12 +0,0 @@
1
- import type React from "react";
2
- export interface AsyncBoundaryProps {
3
- loading: boolean;
4
- error: Error | null;
5
- data: unknown | null;
6
- empty?: boolean;
7
- emptyText?: string;
8
- fallback?: React.ReactNode;
9
- onRetry?: () => void;
10
- children: React.ReactNode;
11
- }
12
- export declare function AsyncBoundary({ loading, error, data, empty, emptyText, fallback, onRetry, children, }: AsyncBoundaryProps): React.JSX.Element;
@@ -1,17 +0,0 @@
1
- import type React from "react";
2
- export interface DataTableColumn<T> {
3
- key: string;
4
- header: React.ReactNode;
5
- render?: (item: T) => React.ReactNode;
6
- className?: string;
7
- numeric?: boolean;
8
- }
9
- export interface DataTableProps<T> {
10
- columns: DataTableColumn<T>[];
11
- data: T[];
12
- keyExtractor: (item: T) => string | number;
13
- onRowClick?: (item: T) => void;
14
- renderMobileCard?: (item: T, onClick?: () => void) => React.ReactNode;
15
- emptyText?: string;
16
- }
17
- export declare function DataTable<T>({ columns, data, keyExtractor, onRowClick, renderMobileCard, emptyText, }: DataTableProps<T>): React.JSX.Element;
@@ -1,7 +0,0 @@
1
- import { type LucideIcon } from "lucide-react";
2
- export interface EmptyStateProps {
3
- message?: string;
4
- icon?: LucideIcon;
5
- className?: string;
6
- }
7
- export declare function EmptyState({ message, icon: Icon, className }: EmptyStateProps): import("react").JSX.Element;
@@ -1,6 +0,0 @@
1
- export interface ErrorStateProps {
2
- error?: Error | null;
3
- onRetry?: () => void;
4
- className?: string;
5
- }
6
- export declare function ErrorState({ error, onRetry, className }: ErrorStateProps): import("react").JSX.Element;
@@ -1,7 +0,0 @@
1
- import type React from "react";
2
- export interface JsonBlockProps {
3
- data: unknown;
4
- title?: string;
5
- initialCollapsed?: boolean;
6
- }
7
- export declare function JsonBlock({ data, title, initialCollapsed }: JsonBlockProps): React.JSX.Element;
@@ -1,5 +0,0 @@
1
- import type { AggregatedStats } from "../types.js";
2
- export interface MetricClusterProps {
3
- stats: AggregatedStats;
4
- }
5
- export declare function MetricCluster({ stats }: MetricClusterProps): import("react").JSX.Element;
@@ -1,7 +0,0 @@
1
- import type React from "react";
2
- export interface PanelProps extends Omit<React.HTMLAttributes<HTMLDivElement>, "title"> {
3
- title?: React.ReactNode;
4
- subtitle?: React.ReactNode;
5
- actions?: React.ReactNode;
6
- }
7
- export declare function Panel({ title, subtitle, actions, children, className, ...props }: PanelProps): React.JSX.Element;
@@ -1,5 +0,0 @@
1
- export interface RequestDrawerProps {
2
- id: number | null;
3
- onClose: () => void;
4
- }
5
- export declare function RequestDrawer({ id, onClose }: RequestDrawerProps): import("react").JSX.Element | null;
@@ -1,12 +0,0 @@
1
- export interface SegmentedControlOption<T> {
2
- value: T;
3
- label: string;
4
- title?: string;
5
- }
6
- export interface SegmentedControlProps<T> {
7
- options: SegmentedControlOption<T>[];
8
- value: T;
9
- onChange: (value: T) => void;
10
- className?: string;
11
- }
12
- export declare function SegmentedControl<T>({ options, value, onChange, className }: SegmentedControlProps<T>): import("react").JSX.Element;
@@ -1,8 +0,0 @@
1
- import type React from "react";
2
- export interface SkeletonProps {
3
- variant?: "text" | "rect" | "circle";
4
- width?: string | number;
5
- height?: string | number;
6
- className?: string;
7
- }
8
- export declare function Skeleton({ variant, width, height, className }: SkeletonProps): React.JSX.Element;
@@ -1,7 +0,0 @@
1
- import type React from "react";
2
- export interface StatusPillProps {
3
- variant: "success" | "danger" | "warning" | "info" | "default";
4
- children: React.ReactNode;
5
- className?: string;
6
- }
7
- export declare function StatusPill({ variant, children, className }: StatusPillProps): React.JSX.Element;
@@ -1,11 +0,0 @@
1
- export * from "./AsyncBoundary.js";
2
- export * from "./DataTable.js";
3
- export * from "./EmptyState.js";
4
- export * from "./ErrorState.js";
5
- export * from "./JsonBlock.js";
6
- export * from "./MetricCluster.js";
7
- export * from "./Panel.js";
8
- export * from "./RequestDrawer.js";
9
- export * from "./SegmentedControl.js";
10
- export * from "./Skeleton.js";
11
- export * from "./StatusPill.js";
@@ -1,11 +0,0 @@
1
- export type SystemTheme = "light" | "dark";
2
- export type ThemePreference = "system" | "light" | "dark";
3
- export declare function setThemePreference(next: ThemePreference): void;
4
- /** Reader for the active resolved theme. Reflects system default and overrides. */
5
- export declare function useSystemTheme(): SystemTheme;
6
- /** Reader + writer for the theme preference (powers the toggle). */
7
- export declare function useThemePreference(): {
8
- preference: ThemePreference;
9
- resolved: SystemTheme;
10
- setPreference: (next: ThemePreference) => void;
11
- };