@ls-stack/agent-eval 0.2.0 → 0.4.0
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.
- package/dist/{app-CKa9TjXw.mjs → app-CljutWb7.mjs} +3 -3
- package/dist/apps/web/dist/assets/index-B2GWGl5i.css +1 -0
- package/dist/apps/web/dist/assets/index-ibhQ_P7i.js +109 -0
- package/dist/apps/web/dist/index.html +2 -2
- package/dist/bin.mjs +1 -1
- package/dist/{cli-CwEFLP0w.mjs → cli-B0QmsWCU.mjs} +506 -77
- package/dist/index.d.mts +147 -81
- package/dist/index.mjs +3 -3
- package/dist/{runner-CD5aDJ0C.mjs → runner-BY-y4OzF.mjs} +2 -2
- package/dist/{runner-Ck4X0H3p.mjs → runner-CsSJwWE4.mjs} +1 -1
- package/dist/src-Bivx1C6b.mjs +2 -0
- package/package.json +3 -3
- package/dist/apps/web/dist/assets/index-BUz24J7O.css +0 -1
- package/dist/apps/web/dist/assets/index-Dm50Ynbs.js +0 -109
- package/dist/src-BDRmaWFu.mjs +0 -2
package/dist/index.d.mts
CHANGED
|
@@ -122,19 +122,13 @@ declare const cellValueSchema: z.ZodUnion<readonly [z.ZodType<string | number |
|
|
|
122
122
|
type CellValue = z.infer<typeof cellValueSchema>;
|
|
123
123
|
//#endregion
|
|
124
124
|
//#region ../shared/src/schemas/trace.d.ts
|
|
125
|
-
/**
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
scorer: "scorer";
|
|
133
|
-
checkpoint: "checkpoint";
|
|
134
|
-
custom: "custom";
|
|
135
|
-
}>;
|
|
136
|
-
/** Semantic category used to classify a trace span in the UI. */
|
|
137
|
-
type TraceSpanKind = z.infer<typeof traceSpanKindSchema>;
|
|
125
|
+
/**
|
|
126
|
+
* Schema for span categories recorded in traces.
|
|
127
|
+
*
|
|
128
|
+
* The value is intentionally open-ended so external tracers can preserve their
|
|
129
|
+
* native span kinds instead of collapsing them into the built-in categories.
|
|
130
|
+
*/
|
|
131
|
+
declare const traceSpanKindSchema: z.ZodString;
|
|
138
132
|
/** Schema for the supported presentation formats of trace attributes. */
|
|
139
133
|
declare const traceAttributeDisplayFormatSchema: z.ZodEnum<{
|
|
140
134
|
string: "string";
|
|
@@ -306,16 +300,7 @@ declare const traceSpanSchema: z.ZodObject<{
|
|
|
306
300
|
id: z.ZodString;
|
|
307
301
|
parentId: z.ZodNullable<z.ZodString>;
|
|
308
302
|
caseId: z.ZodString;
|
|
309
|
-
kind: z.
|
|
310
|
-
eval: "eval";
|
|
311
|
-
agent: "agent";
|
|
312
|
-
llm: "llm";
|
|
313
|
-
tool: "tool";
|
|
314
|
-
retrieval: "retrieval";
|
|
315
|
-
scorer: "scorer";
|
|
316
|
-
checkpoint: "checkpoint";
|
|
317
|
-
custom: "custom";
|
|
318
|
-
}>;
|
|
303
|
+
kind: z.ZodString;
|
|
319
304
|
name: z.ZodString;
|
|
320
305
|
startedAt: z.ZodString;
|
|
321
306
|
endedAt: z.ZodNullable<z.ZodString>;
|
|
@@ -650,16 +635,7 @@ declare const scoreTraceSchema: z.ZodObject<{
|
|
|
650
635
|
id: z.ZodString;
|
|
651
636
|
parentId: z.ZodNullable<z.ZodString>;
|
|
652
637
|
caseId: z.ZodString;
|
|
653
|
-
kind: z.
|
|
654
|
-
custom: "custom";
|
|
655
|
-
eval: "eval";
|
|
656
|
-
agent: "agent";
|
|
657
|
-
llm: "llm";
|
|
658
|
-
tool: "tool";
|
|
659
|
-
retrieval: "retrieval";
|
|
660
|
-
scorer: "scorer";
|
|
661
|
-
checkpoint: "checkpoint";
|
|
662
|
-
}>;
|
|
638
|
+
kind: z.ZodString;
|
|
663
639
|
name: z.ZodString;
|
|
664
640
|
startedAt: z.ZodString;
|
|
665
641
|
endedAt: z.ZodNullable<z.ZodString>;
|
|
@@ -724,16 +700,7 @@ declare const caseDetailSchema: z.ZodObject<{
|
|
|
724
700
|
id: z.ZodString;
|
|
725
701
|
parentId: z.ZodNullable<z.ZodString>;
|
|
726
702
|
caseId: z.ZodString;
|
|
727
|
-
kind: z.
|
|
728
|
-
custom: "custom";
|
|
729
|
-
eval: "eval";
|
|
730
|
-
agent: "agent";
|
|
731
|
-
llm: "llm";
|
|
732
|
-
tool: "tool";
|
|
733
|
-
retrieval: "retrieval";
|
|
734
|
-
scorer: "scorer";
|
|
735
|
-
checkpoint: "checkpoint";
|
|
736
|
-
}>;
|
|
703
|
+
kind: z.ZodString;
|
|
737
704
|
name: z.ZodString;
|
|
738
705
|
startedAt: z.ZodString;
|
|
739
706
|
endedAt: z.ZodNullable<z.ZodString>;
|
|
@@ -783,16 +750,7 @@ declare const caseDetailSchema: z.ZodObject<{
|
|
|
783
750
|
id: z.ZodString;
|
|
784
751
|
parentId: z.ZodNullable<z.ZodString>;
|
|
785
752
|
caseId: z.ZodString;
|
|
786
|
-
kind: z.
|
|
787
|
-
custom: "custom";
|
|
788
|
-
eval: "eval";
|
|
789
|
-
agent: "agent";
|
|
790
|
-
llm: "llm";
|
|
791
|
-
tool: "tool";
|
|
792
|
-
retrieval: "retrieval";
|
|
793
|
-
scorer: "scorer";
|
|
794
|
-
checkpoint: "checkpoint";
|
|
795
|
-
}>;
|
|
753
|
+
kind: z.ZodString;
|
|
796
754
|
name: z.ZodString;
|
|
797
755
|
startedAt: z.ZodString;
|
|
798
756
|
endedAt: z.ZodNullable<z.ZodString>;
|
|
@@ -1410,6 +1368,11 @@ type AgentEvalsConfig = {
|
|
|
1410
1368
|
cache?: {
|
|
1411
1369
|
/** Disable the cache entirely; spans with `cache` options execute as if uncached. */enabled?: boolean; /** Override the directory used to persist cache entries. */
|
|
1412
1370
|
dir?: string;
|
|
1371
|
+
/**
|
|
1372
|
+
* Maximum entries retained in each per-eval cache file. Defaults to `100`;
|
|
1373
|
+
* non-positive or non-finite values fall back to the default.
|
|
1374
|
+
*/
|
|
1375
|
+
maxEntriesPerEval?: number;
|
|
1413
1376
|
};
|
|
1414
1377
|
};
|
|
1415
1378
|
/** Zod schema for validating `agent-evals.config.ts` input. */
|
|
@@ -1455,6 +1418,7 @@ declare const agentEvalsConfigSchema: z.ZodObject<{
|
|
|
1455
1418
|
cache: z.ZodOptional<z.ZodObject<{
|
|
1456
1419
|
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
1457
1420
|
dir: z.ZodOptional<z.ZodString>;
|
|
1421
|
+
maxEntriesPerEval: z.ZodPipe<z.ZodTransform<number | undefined, unknown>, z.ZodOptional<z.ZodNumber>>;
|
|
1458
1422
|
}, z.core.$strip>>;
|
|
1459
1423
|
}, z.core.$strip>;
|
|
1460
1424
|
//#endregion
|
|
@@ -1485,16 +1449,7 @@ declare const cacheListItemSchema: z.ZodObject<{
|
|
|
1485
1449
|
key: z.ZodString;
|
|
1486
1450
|
namespace: z.ZodString;
|
|
1487
1451
|
spanName: z.ZodString;
|
|
1488
|
-
spanKind: z.
|
|
1489
|
-
eval: "eval";
|
|
1490
|
-
agent: "agent";
|
|
1491
|
-
llm: "llm";
|
|
1492
|
-
tool: "tool";
|
|
1493
|
-
retrieval: "retrieval";
|
|
1494
|
-
scorer: "scorer";
|
|
1495
|
-
checkpoint: "checkpoint";
|
|
1496
|
-
custom: "custom";
|
|
1497
|
-
}>;
|
|
1452
|
+
spanKind: z.ZodString;
|
|
1498
1453
|
storedAt: z.ZodString;
|
|
1499
1454
|
codeFingerprint: z.ZodString;
|
|
1500
1455
|
sizeBytes: z.ZodNumber;
|
|
@@ -1503,7 +1458,7 @@ declare const cacheListItemSchema: z.ZodObject<{
|
|
|
1503
1458
|
type CacheListItem = z.infer<typeof cacheListItemSchema>;
|
|
1504
1459
|
/** Serialized nested span captured while recording a cached operation. */
|
|
1505
1460
|
type SerializedCacheSpan = {
|
|
1506
|
-
kind:
|
|
1461
|
+
kind: string;
|
|
1507
1462
|
name: string;
|
|
1508
1463
|
attributes?: Record<string, unknown>;
|
|
1509
1464
|
status: 'running' | 'ok' | 'error' | 'cancelled';
|
|
@@ -1569,16 +1524,7 @@ declare const cacheEntrySchema: z.ZodObject<{
|
|
|
1569
1524
|
key: z.ZodString;
|
|
1570
1525
|
namespace: z.ZodString;
|
|
1571
1526
|
spanName: z.ZodString;
|
|
1572
|
-
spanKind: z.
|
|
1573
|
-
eval: "eval";
|
|
1574
|
-
agent: "agent";
|
|
1575
|
-
llm: "llm";
|
|
1576
|
-
tool: "tool";
|
|
1577
|
-
retrieval: "retrieval";
|
|
1578
|
-
scorer: "scorer";
|
|
1579
|
-
checkpoint: "checkpoint";
|
|
1580
|
-
custom: "custom";
|
|
1581
|
-
}>;
|
|
1527
|
+
spanKind: z.ZodString;
|
|
1582
1528
|
storedAt: z.ZodString;
|
|
1583
1529
|
codeFingerprint: z.ZodString;
|
|
1584
1530
|
recording: z.ZodObject<{
|
|
@@ -1604,6 +1550,42 @@ declare const cacheEntrySchema: z.ZodObject<{
|
|
|
1604
1550
|
}, z.core.$strip>;
|
|
1605
1551
|
/** Persisted cache file contents. */
|
|
1606
1552
|
type CacheEntry = z.infer<typeof cacheEntrySchema>;
|
|
1553
|
+
/** Persisted per-owner cache file containing multiple cache entries. */
|
|
1554
|
+
declare const cacheFileSchema: z.ZodObject<{
|
|
1555
|
+
version: z.ZodLiteral<1>;
|
|
1556
|
+
owner: z.ZodString;
|
|
1557
|
+
entries: z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
1558
|
+
version: z.ZodLiteral<1>;
|
|
1559
|
+
key: z.ZodString;
|
|
1560
|
+
namespace: z.ZodString;
|
|
1561
|
+
spanName: z.ZodString;
|
|
1562
|
+
spanKind: z.ZodString;
|
|
1563
|
+
storedAt: z.ZodString;
|
|
1564
|
+
codeFingerprint: z.ZodString;
|
|
1565
|
+
recording: z.ZodObject<{
|
|
1566
|
+
returnValue: z.ZodUnknown;
|
|
1567
|
+
finalAttributes: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
1568
|
+
ops: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
1569
|
+
kind: z.ZodLiteral<"setOutput">;
|
|
1570
|
+
key: z.ZodString;
|
|
1571
|
+
value: z.ZodUnknown;
|
|
1572
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
1573
|
+
kind: z.ZodLiteral<"incrementOutput">;
|
|
1574
|
+
key: z.ZodString;
|
|
1575
|
+
delta: z.ZodNumber;
|
|
1576
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
1577
|
+
kind: z.ZodLiteral<"checkpoint">;
|
|
1578
|
+
name: z.ZodString;
|
|
1579
|
+
data: z.ZodUnknown;
|
|
1580
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
1581
|
+
kind: z.ZodLiteral<"subSpan">;
|
|
1582
|
+
span: z.ZodType<SerializedCacheSpan, unknown, z.core.$ZodTypeInternals<SerializedCacheSpan, unknown>>;
|
|
1583
|
+
}, z.core.$strip>], "kind">>;
|
|
1584
|
+
}, z.core.$strip>;
|
|
1585
|
+
}, z.core.$strip>>;
|
|
1586
|
+
}, z.core.$strip>;
|
|
1587
|
+
/** Persisted per-owner cache file contents. */
|
|
1588
|
+
type CacheFile = z.infer<typeof cacheFileSchema>;
|
|
1607
1589
|
//#endregion
|
|
1608
1590
|
//#region ../sdk/src/types.d.ts
|
|
1609
1591
|
/** Single authored eval case with its stable identifier and input payload. */
|
|
@@ -1652,7 +1634,7 @@ type EvalTraceTree = {
|
|
|
1652
1634
|
spans: EvalTraceSpan[];
|
|
1653
1635
|
rootSpans: EvalTraceSpan[];
|
|
1654
1636
|
findSpan: (name: string) => EvalTraceSpan | undefined;
|
|
1655
|
-
findSpansByKind: (kind:
|
|
1637
|
+
findSpansByKind: (kind: string) => EvalTraceSpan[];
|
|
1656
1638
|
flattenDfs: () => EvalTraceSpan[];
|
|
1657
1639
|
checkpoints: Map<string, unknown>;
|
|
1658
1640
|
};
|
|
@@ -1906,6 +1888,50 @@ type TraceActiveSpan = {
|
|
|
1906
1888
|
setAttribute(key: string, value: unknown): void; /** Merge multiple attributes into the active span. */
|
|
1907
1889
|
setAttributes(value: Record<string, unknown>): void;
|
|
1908
1890
|
};
|
|
1891
|
+
/** Timestamp accepted by the external span lifecycle API. */
|
|
1892
|
+
type TraceSpanTimestamp = Date | string;
|
|
1893
|
+
/** Info accepted by `evalTracer.startSpan(info)` for externally managed spans. */
|
|
1894
|
+
type TraceExternalSpanStartInfo = {
|
|
1895
|
+
/** Stable span id from the upstream tracer. Generated when omitted. */id?: string; /** Parent span id from the upstream tracer. Defaults to the active eval span. */
|
|
1896
|
+
parentId?: string | null; /** Semantic category used by the trace UI. */
|
|
1897
|
+
kind: string; /** Display name for the span. */
|
|
1898
|
+
name: string; /** Span start time. Defaults to now. */
|
|
1899
|
+
startedAt?: TraceSpanTimestamp; /** Initial span attributes. Later updates merge into this object. */
|
|
1900
|
+
attributes?: Record<string, unknown>;
|
|
1901
|
+
};
|
|
1902
|
+
/** Info accepted by `evalTracer.updateSpan(info)` for lifecycle updates. */
|
|
1903
|
+
type TraceExternalSpanUpdateInfo = {
|
|
1904
|
+
/** Span id previously passed to `evalTracer.startSpan(...)`. */id: string; /** Optional replacement display name. */
|
|
1905
|
+
name?: string; /** Attributes to merge into the recorded span. */
|
|
1906
|
+
attributes?: Record<string, unknown>; /** Optional status override, useful when the upstream tracer emits one. */
|
|
1907
|
+
status?: EvalTraceSpan['status']; /** Optional error payload to attach to the span. */
|
|
1908
|
+
error?: EvalTraceSpan['error'];
|
|
1909
|
+
};
|
|
1910
|
+
/** Info accepted by `evalTracer.endSpan(info)` for externally managed spans. */
|
|
1911
|
+
type TraceExternalSpanEndInfo = TraceExternalSpanUpdateInfo & {
|
|
1912
|
+
/** Span end time. Defaults to now. */endedAt?: TraceSpanTimestamp;
|
|
1913
|
+
};
|
|
1914
|
+
/** Info accepted by `evalTracer.recordSpan(info)` for completed external spans. */
|
|
1915
|
+
type TraceExternalSpanRecordInfo = {
|
|
1916
|
+
/** Stable span id from the upstream tracer. Generated when omitted. */id?: string; /** Parent span id from the upstream tracer. Defaults to the active eval span. */
|
|
1917
|
+
parentId?: string | null; /** Semantic category used by the trace UI. */
|
|
1918
|
+
kind: string; /** Display name for the span. */
|
|
1919
|
+
name: string; /** Span start time. Defaults to now. */
|
|
1920
|
+
startedAt?: TraceSpanTimestamp; /** Span end time. Defaults to the start time. */
|
|
1921
|
+
endedAt?: TraceSpanTimestamp | null; /** Final span status. Defaults to `ok`. */
|
|
1922
|
+
status?: EvalTraceSpan['status']; /** Final span attributes. */
|
|
1923
|
+
attributes?: Record<string, unknown>; /** Optional error payload to attach to the span. */
|
|
1924
|
+
error?: EvalTraceSpan['error'];
|
|
1925
|
+
};
|
|
1926
|
+
/** Mutable handle returned by `evalTracer.startSpan(...)`. */
|
|
1927
|
+
type TraceExternalSpanHandle = TraceActiveSpan & {
|
|
1928
|
+
/** Recorded span id, either caller-provided or generated by the SDK. */id: string; /** Finish the external span and merge any final fields. */
|
|
1929
|
+
end(info?: Omit<TraceExternalSpanEndInfo, 'id'>): void;
|
|
1930
|
+
};
|
|
1931
|
+
declare function startExternalSpan(info: TraceExternalSpanStartInfo): TraceExternalSpanHandle;
|
|
1932
|
+
declare function updateExternalSpan(info: TraceExternalSpanUpdateInfo): void;
|
|
1933
|
+
declare function endExternalSpan(info: TraceExternalSpanEndInfo): void;
|
|
1934
|
+
declare function recordExternalSpan(info: TraceExternalSpanRecordInfo): string;
|
|
1909
1935
|
/**
|
|
1910
1936
|
* Ambient handle for the active span in the current async context.
|
|
1911
1937
|
*
|
|
@@ -1913,7 +1939,7 @@ type TraceActiveSpan = {
|
|
|
1913
1939
|
*/
|
|
1914
1940
|
declare const evalSpan: TraceActiveSpan;
|
|
1915
1941
|
type TraceSpanInfoBase = {
|
|
1916
|
-
kind:
|
|
1942
|
+
kind: string;
|
|
1917
1943
|
name: string;
|
|
1918
1944
|
attributes?: Record<string, unknown>;
|
|
1919
1945
|
};
|
|
@@ -1942,17 +1968,57 @@ declare function traceSpan(info: TraceSpanInfoCached, fn: (span: TraceActiveSpan
|
|
|
1942
1968
|
* execution.
|
|
1943
1969
|
*/
|
|
1944
1970
|
declare const evalTracer: {
|
|
1945
|
-
/** Run a callback inside a new trace span and record its lifecycle. */span: typeof traceSpan;
|
|
1971
|
+
/** Run a callback inside a new trace span and record its lifecycle. */span: typeof traceSpan;
|
|
1972
|
+
/**
|
|
1973
|
+
* Start a span whose lifecycle is controlled by an external tracer/exporter.
|
|
1974
|
+
*
|
|
1975
|
+
* Calls are no-ops outside an eval case scope, except that a generated or
|
|
1976
|
+
* caller-provided id is still returned for ergonomic adapter code.
|
|
1977
|
+
*/
|
|
1978
|
+
startSpan: typeof startExternalSpan;
|
|
1979
|
+
/**
|
|
1980
|
+
* Merge updates into an externally managed span that was started earlier.
|
|
1981
|
+
*
|
|
1982
|
+
* This is intended for observability exporters that receive span update
|
|
1983
|
+
* events before the final end event.
|
|
1984
|
+
*/
|
|
1985
|
+
updateSpan: typeof updateExternalSpan;
|
|
1986
|
+
/**
|
|
1987
|
+
* Finish an externally managed span and attach final attributes or errors.
|
|
1988
|
+
*
|
|
1989
|
+
* Missing spans are ignored so exporter adapters can safely forward events
|
|
1990
|
+
* even when they are emitted outside an eval case scope.
|
|
1991
|
+
*/
|
|
1992
|
+
endSpan: typeof endExternalSpan;
|
|
1993
|
+
/**
|
|
1994
|
+
* Record a complete external span in one call.
|
|
1995
|
+
*
|
|
1996
|
+
* Use this when an upstream tracer only exposes completed spans rather than
|
|
1997
|
+
* start/update/end events.
|
|
1998
|
+
*/
|
|
1999
|
+
recordSpan: typeof recordExternalSpan; /** Record a named point-in-time value alongside the trace. */
|
|
1946
2000
|
checkpoint(name: string, data: unknown): void;
|
|
1947
2001
|
};
|
|
1948
2002
|
/** Build a queryable trace tree helper from a flat span list and checkpoints. */
|
|
1949
2003
|
declare function buildTraceTree(spans: EvalTraceSpan[], checkpoints: Map<string, unknown>): EvalTraceTree;
|
|
1950
|
-
|
|
1951
|
-
declare function hashCacheKey(input: {
|
|
2004
|
+
type CacheKeyHashInput = {
|
|
1952
2005
|
namespace: string;
|
|
1953
2006
|
codeFingerprint: string;
|
|
1954
2007
|
key: unknown;
|
|
1955
|
-
}
|
|
2008
|
+
};
|
|
2009
|
+
/**
|
|
2010
|
+
* Hash the components of a cache key into a deterministic hex digest.
|
|
2011
|
+
*
|
|
2012
|
+
* Native `Blob` and `File` values are read asynchronously and hashed by
|
|
2013
|
+
* content. Use `hashCacheKeySync` only when the key contains no async values.
|
|
2014
|
+
*/
|
|
2015
|
+
declare function hashCacheKey(input: CacheKeyHashInput): Promise<string>;
|
|
2016
|
+
/**
|
|
2017
|
+
* Synchronously hash cache key components. This supports JSON-like data and
|
|
2018
|
+
* in-memory binary values such as `Buffer`, `ArrayBuffer`, and typed arrays,
|
|
2019
|
+
* but cannot content-hash native `Blob` or `File` values.
|
|
2020
|
+
*/
|
|
2021
|
+
declare function hashCacheKeySync(input: CacheKeyHashInput): string;
|
|
1956
2022
|
//#endregion
|
|
1957
2023
|
//#region ../runner/src/cacheStore.d.ts
|
|
1958
2024
|
/** Filter accepted by `FsCacheStore.clear` to narrow the set of entries removed. */
|
|
@@ -2040,4 +2106,4 @@ declare function createRunner({
|
|
|
2040
2106
|
*/
|
|
2041
2107
|
declare function runCli(argv: string[]): Promise<void>;
|
|
2042
2108
|
//#endregion
|
|
2043
|
-
export { type AgentEvalsConfig, type AssertionFailure, type CacheAdapter, type CacheEntry, type CacheListItem, type CacheMode, type CacheRecording, type CacheRecordingFrame, type CacheRecordingOp, type CacheScopeContext, type CaseDetail, type CaseRow, type CellValue, type ColumnDef, type ColumnFormat, type ColumnKind, type CreateRunRequest, type DerivedStatus, EvalAssertionError, type EvalCase, type EvalCaseScope, type EvalChartAggregate, type EvalChartAxis, type EvalChartBuiltinMetric, type EvalChartColor, type EvalChartConfig, type EvalChartMetric, type EvalChartTooltipExtra, type EvalChartType, type EvalChartsConfig, type EvalColumnOverride, type EvalColumns, type EvalDefinition, type EvalDeriveContext, type EvalDisplayStatus, type EvalExecuteContext, type EvalFreshnessStatus, type EvalManualScoreDef, type EvalRunner, type EvalScoreContext, type EvalScoreDef, type EvalScoreFn, type EvalStatAggregate, type EvalStatItem, type EvalStatsConfig, type EvalSummary, type EvalTraceSpan, type EvalTraceTree, type FileRef, type JsonCell, type NumberDisplayOptions, type RepoFileRef, type RunArtifactRef, type RunInEvalScopeOptions, type RunManifest, type RunSummary, type ScalarCell, type ScopedCaseSummary, type ScoreTrace, type SerializedCacheSpan, type SpanCacheOptions, type SseEnvelope, type SseEventType, type TraceActiveSpan, type TraceAttributeDisplay, type TraceAttributeDisplayFormat, type TraceAttributeDisplayInput, type TraceAttributeDisplayPlacement, type TraceAttributeTransform, type TraceAttributeTransformContext, type TraceDisplayConfig, type TraceDisplayInputConfig, type TraceSpanInfo, type
|
|
2109
|
+
export { type AgentEvalsConfig, type AssertionFailure, type CacheAdapter, type CacheEntry, type CacheFile, type CacheListItem, type CacheMode, type CacheRecording, type CacheRecordingFrame, type CacheRecordingOp, type CacheScopeContext, type CaseDetail, type CaseRow, type CellValue, type ColumnDef, type ColumnFormat, type ColumnKind, type CreateRunRequest, type DerivedStatus, EvalAssertionError, type EvalCase, type EvalCaseScope, type EvalChartAggregate, type EvalChartAxis, type EvalChartBuiltinMetric, type EvalChartColor, type EvalChartConfig, type EvalChartMetric, type EvalChartTooltipExtra, type EvalChartType, type EvalChartsConfig, type EvalColumnOverride, type EvalColumns, type EvalDefinition, type EvalDeriveContext, type EvalDisplayStatus, type EvalExecuteContext, type EvalFreshnessStatus, type EvalManualScoreDef, type EvalRunner, type EvalScoreContext, type EvalScoreDef, type EvalScoreFn, type EvalStatAggregate, type EvalStatItem, type EvalStatsConfig, type EvalSummary, type EvalTraceSpan, type EvalTraceTree, type FileRef, type JsonCell, type NumberDisplayOptions, type RepoFileRef, type RunArtifactRef, type RunInEvalScopeOptions, type RunManifest, type RunSummary, type ScalarCell, type ScopedCaseSummary, type ScoreTrace, type SerializedCacheSpan, type SpanCacheOptions, type SseEnvelope, type SseEventType, type TraceActiveSpan, type TraceAttributeDisplay, type TraceAttributeDisplayFormat, type TraceAttributeDisplayInput, type TraceAttributeDisplayPlacement, type TraceAttributeTransform, type TraceAttributeTransformContext, type TraceDisplayConfig, type TraceDisplayInputConfig, type TraceSpanInfo, type TrialSelectionMode, type UpdateManualScoreRequest, agentEvalsConfigSchema, assertionFailureSchema, buildTraceTree, cacheEntrySchema, cacheFileSchema, cacheListItemSchema, cacheModeSchema, cacheRecordingOpSchema, cacheRecordingSchema, caseDetailSchema, caseRowSchema, cellValueSchema, columnDefSchema, columnFormatSchema, columnKindSchema, createRunRequestSchema, createRunner, defineEval, deriveScopedSummaryFromCases, deriveStatusFromCaseRows, deriveStatusFromChildStatuses, evalAssert, evalChartAggregateSchema, evalChartAxisSchema, evalChartBuiltinMetricSchema, evalChartColorSchema, evalChartConfigSchema, evalChartMetricSchema, evalChartTooltipExtraSchema, evalChartTypeSchema, evalChartsConfigSchema, evalFreshnessStatusSchema, evalSpan, evalStatAggregateSchema, evalStatItemSchema, evalStatsConfigSchema, evalSummarySchema, evalTracer, fileRefSchema, getCurrentScope, getEvalDisplayStatus, getEvalRegistry, getEvalTitle, hashCacheKey, hashCacheKeySync, incrementEvalOutput, isInEvalScope, jsonCellSchema, numberDisplayOptionsSchema, repoFile, repoFileRefSchema, runArtifactRefSchema, runCli, runInEvalScope, runManifestSchema, runSummarySchema, scoreTraceSchema, serializedCacheSpanSchema, setEvalOutput, setScopeCacheContext, spanCacheOptionsSchema, sseEnvelopeSchema, traceAttributeDisplayFormatSchema, traceAttributeDisplayInputSchema, traceAttributeDisplayPlacementSchema, traceAttributeDisplaySchema, traceDisplayConfigSchema, traceDisplayInputConfigSchema, traceSpanKindSchema, traceSpanSchema, trialSelectionModeSchema, updateManualScoreRequestSchema };
|
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { $ as
|
|
2
|
-
import "./src-
|
|
3
|
-
export { EvalAssertionError, agentEvalsConfigSchema, assertionFailureSchema, buildTraceTree, cacheEntrySchema, cacheListItemSchema, cacheModeSchema, cacheRecordingOpSchema, cacheRecordingSchema, caseDetailSchema, caseRowSchema, cellValueSchema, columnDefSchema, columnFormatSchema, columnKindSchema, createRunRequestSchema, createRunner, defineEval, deriveScopedSummaryFromCases, deriveStatusFromCaseRows, deriveStatusFromChildStatuses, evalAssert, evalChartAggregateSchema, evalChartAxisSchema, evalChartBuiltinMetricSchema, evalChartColorSchema, evalChartConfigSchema, evalChartMetricSchema, evalChartTooltipExtraSchema, evalChartTypeSchema, evalChartsConfigSchema, evalFreshnessStatusSchema, evalSpan, evalStatAggregateSchema, evalStatItemSchema, evalStatsConfigSchema, evalSummarySchema, evalTracer, fileRefSchema, getCurrentScope, getEvalDisplayStatus, getEvalRegistry, getEvalTitle, hashCacheKey, incrementEvalOutput, isInEvalScope, jsonCellSchema, numberDisplayOptionsSchema, repoFile, repoFileRefSchema, runArtifactRefSchema, runCli, runInEvalScope, runManifestSchema, runSummarySchema, scoreTraceSchema, serializedCacheSpanSchema, setEvalOutput, setScopeCacheContext, spanCacheOptionsSchema, sseEnvelopeSchema, traceAttributeDisplayFormatSchema, traceAttributeDisplayInputSchema, traceAttributeDisplayPlacementSchema, traceAttributeDisplaySchema, traceDisplayConfigSchema, traceDisplayInputConfigSchema, traceSpanKindSchema, traceSpanSchema, trialSelectionModeSchema, updateManualScoreRequestSchema };
|
|
1
|
+
import { $ as fileRefSchema, A as evalSummarySchema, B as evalChartsConfigSchema, C as assertionFailureSchema, D as evalStatAggregateSchema, E as evalFreshnessStatusSchema, F as evalChartColorSchema, G as traceDisplayConfigSchema, H as traceAttributeDisplayInputSchema, I as evalChartConfigSchema, J as traceSpanSchema, K as traceDisplayInputConfigSchema, L as evalChartMetricSchema, M as evalChartAggregateSchema, N as evalChartAxisSchema, O as evalStatItemSchema, P as evalChartBuiltinMetricSchema, Q as columnKindSchema, R as evalChartTooltipExtraSchema, S as spanCacheOptionsSchema, T as caseRowSchema, U as traceAttributeDisplayPlacementSchema, V as traceAttributeDisplayFormatSchema, W as traceAttributeDisplaySchema, X as columnDefSchema, Y as cellValueSchema, Z as columnFormatSchema, _ as cacheListItemSchema, _t as repoFile, a as sseEnvelopeSchema, at as evalSpan, b as cacheRecordingSchema, c as deriveScopedSummaryFromCases, ct as hashCacheKeySync, d as runManifestSchema, dt as getCurrentScope, et as jsonCellSchema, f as runSummarySchema, ft as incrementEvalOutput, g as cacheFileSchema, gt as setScopeCacheContext, h as cacheEntrySchema, ht as setEvalOutput, i as updateManualScoreRequestSchema, it as buildTraceTree, j as scoreTraceSchema, k as evalStatsConfigSchema, l as deriveStatusFromCaseRows, lt as EvalAssertionError, m as trialSelectionModeSchema, mt as runInEvalScope, n as createRunner, nt as repoFileRefSchema, o as getEvalTitle, ot as evalTracer, p as agentEvalsConfigSchema, pt as isInEvalScope, q as traceSpanKindSchema, r as createRunRequestSchema, rt as runArtifactRefSchema, s as getEvalDisplayStatus, st as hashCacheKey, t as runCli, tt as numberDisplayOptionsSchema, u as deriveStatusFromChildStatuses, ut as evalAssert, v as cacheModeSchema, vt as defineEval, w as caseDetailSchema, x as serializedCacheSpanSchema, y as cacheRecordingOpSchema, yt as getEvalRegistry, z as evalChartTypeSchema } from "./cli-B0QmsWCU.mjs";
|
|
2
|
+
import "./src-Bivx1C6b.mjs";
|
|
3
|
+
export { EvalAssertionError, agentEvalsConfigSchema, assertionFailureSchema, buildTraceTree, cacheEntrySchema, cacheFileSchema, cacheListItemSchema, cacheModeSchema, cacheRecordingOpSchema, cacheRecordingSchema, caseDetailSchema, caseRowSchema, cellValueSchema, columnDefSchema, columnFormatSchema, columnKindSchema, createRunRequestSchema, createRunner, defineEval, deriveScopedSummaryFromCases, deriveStatusFromCaseRows, deriveStatusFromChildStatuses, evalAssert, evalChartAggregateSchema, evalChartAxisSchema, evalChartBuiltinMetricSchema, evalChartColorSchema, evalChartConfigSchema, evalChartMetricSchema, evalChartTooltipExtraSchema, evalChartTypeSchema, evalChartsConfigSchema, evalFreshnessStatusSchema, evalSpan, evalStatAggregateSchema, evalStatItemSchema, evalStatsConfigSchema, evalSummarySchema, evalTracer, fileRefSchema, getCurrentScope, getEvalDisplayStatus, getEvalRegistry, getEvalTitle, hashCacheKey, hashCacheKeySync, incrementEvalOutput, isInEvalScope, jsonCellSchema, numberDisplayOptionsSchema, repoFile, repoFileRefSchema, runArtifactRefSchema, runCli, runInEvalScope, runManifestSchema, runSummarySchema, scoreTraceSchema, serializedCacheSpanSchema, setEvalOutput, setScopeCacheContext, spanCacheOptionsSchema, sseEnvelopeSchema, traceAttributeDisplayFormatSchema, traceAttributeDisplayInputSchema, traceAttributeDisplayPlacementSchema, traceAttributeDisplaySchema, traceDisplayConfigSchema, traceDisplayInputConfigSchema, traceSpanKindSchema, traceSpanSchema, trialSelectionModeSchema, updateManualScoreRequestSchema };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { n as createRunner } from "./cli-
|
|
2
|
-
import "./src-
|
|
1
|
+
import { n as createRunner } from "./cli-B0QmsWCU.mjs";
|
|
2
|
+
import "./src-Bivx1C6b.mjs";
|
|
3
3
|
//#region ../../apps/server/src/runner.ts
|
|
4
4
|
let runnerInstance = null;
|
|
5
5
|
function getRunnerInstance() {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { n as initRunner, t as getRunnerInstance } from "./runner-
|
|
1
|
+
import { n as initRunner, t as getRunnerInstance } from "./runner-BY-y4OzF.mjs";
|
|
2
2
|
export { getRunnerInstance, initRunner };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ls-stack/agent-eval",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"bin": {
|
|
6
6
|
"agent-evals": "./dist/bin.mjs"
|
|
@@ -42,9 +42,9 @@
|
|
|
42
42
|
"platform": "node"
|
|
43
43
|
},
|
|
44
44
|
"dependencies": {
|
|
45
|
-
"@hono/zod-validator": "^0.7.3",
|
|
46
45
|
"@hono/node-server": "^1.14.3",
|
|
47
|
-
"@
|
|
46
|
+
"@hono/zod-validator": "^0.7.3",
|
|
47
|
+
"@ls-stack/utils": "^3.77.0",
|
|
48
48
|
"chokidar": "^4.0.3",
|
|
49
49
|
"glob": "^11.0.2",
|
|
50
50
|
"hono": "^4.9.9",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
@import"https://fonts.googleapis.com/css2?family=Geist:wght@300;400;500;600;700&family=Geist+Mono:wght@400;500;600&display=swap";.json-view{display:block;color:#4d4d4d;text-align:left;--json-property: #009033;--json-index: #676dff;--json-number: #676dff;--json-string: #b2762e;--json-boolean: #dc155e;--json-null: #dc155e}.json-view .json-view--property{color:var(--json-property)}.json-view .json-view--index{color:var(--json-index)}.json-view .json-view--number{color:var(--json-number)}.json-view .json-view--string{color:var(--json-string)}.json-view .json-view--boolean{color:var(--json-boolean)}.json-view .json-view--null{color:var(--json-null)}.json-view .jv-indent{padding-left:1em}.json-view .jv-chevron{display:inline-block;vertical-align:-20%;cursor:pointer;opacity:.4;width:1em;height:1em}:is(.json-view .jv-chevron:hover,.json-view .jv-size:hover+.jv-chevron){opacity:.8}.json-view .jv-size{cursor:pointer;opacity:.4;font-size:.875em;font-style:italic;margin-left:.5em;vertical-align:-5%;line-height:1}.json-view :is(.json-view--copy,.json-view--edit),.json-view .json-view--link svg{display:none;width:1em;height:1em;margin-left:.25em;cursor:pointer}.json-view .json-view--input{width:120px;margin-left:.25em;border-radius:4px;border:1px solid currentColor;padding:0 4px;font-size:87.5%;line-height:1.25;background:transparent}.json-view .json-view--deleting{outline:1px solid #da0000;background-color:#da000011;text-decoration-line:line-through}:is(.json-view:hover,.json-view--pair:hover)>:is(.json-view--copy,.json-view--edit),:is(.json-view:hover,.json-view--pair:hover)>.json-view--link svg{display:inline-block}.json-view .jv-button{background:transparent;outline:none;border:none;cursor:pointer;color:inherit}.json-view .cursor-pointer{cursor:pointer}.json-view svg{vertical-align:-10%}.jv-size-chevron~svg{vertical-align:-16%}.json-view_a11y{color:#545454;--json-property: #aa5d00;--json-index: #007299;--json-number: #007299;--json-string: #008000;--json-boolean: #d91e18;--json-null: #d91e18}.json-view_github{color:#005cc5;--json-property: #005cc5;--json-index: #005cc5;--json-number: #005cc5;--json-string: #032f62;--json-boolean: #005cc5;--json-null: #005cc5}.json-view_vscode{color:#005cc5;--json-property: #0451a5;--json-index: #0000ff;--json-number: #0000ff;--json-string: #a31515;--json-boolean: #0000ff;--json-null: #0000ff}.json-view_atom{color:#383a42;--json-property: #e45649;--json-index: #986801;--json-number: #986801;--json-string: #50a14f;--json-boolean: #0184bc;--json-null: #0184bc}.json-view_winter-is-coming{color:#0431fa;--json-property: #3a9685;--json-index: #ae408b;--json-number: #ae408b;--json-string: #8123a9;--json-boolean: #0184bc;--json-null: #0184bc}.json-view_vitesse{color:#393a34;--json-property: #998418;--json-index: #2f798a;--json-number: #2f798a;--json-string: #b56959;--json-boolean: #1e754f;--json-null: #ab5959}.vh724ok-1{display:flex;align-items:stretch;justify-content:flex-start;height:100vh;overflow:hidden;background:#fcfcfc}.vh724ok-2{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;flex:1;min-width:0;overflow-x:hidden;overflow-y:hidden}.vh724ok-2.vwx8nfh{overflow-x:auto}.vh724ok-3{width:100%;height:100%}.vh724ok-3.vwx8nfh{min-width:600px}.v9f9dyw-1{border-left:1px solid #e8e8eb;background:#f7f7f8;display:flex;align-items:center;justify-content:center;color:#6b6e76;font-size:12px;flex-shrink:0}.v9f9dyw-2{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;position:relative;flex-shrink:0;border-left:1px solid #e8e8eb;background:#f7f7f8;overflow:hidden}.v9f9dyw-3{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:10px;padding:14px 18px 12px;border-bottom:1px solid #e8e8eb;background:#f7f7f8;flex-shrink:0}.v9f9dyw-4{display:flex;align-items:center;justify-content:space-between;gap:10px}.v9f9dyw-5{display:flex;align-items:center;justify-content:flex-start;gap:2px}.v9f9dyw-6{.vnc6dc-9 color: #6b6e76}.v9f9dyw-7{display:flex;align-items:center;justify-content:flex-start;gap:10px;min-width:0}.v9f9dyw-8{display:flex;align-items:center;justify-content:flex-start;gap:12px;min-width:0}.v9f9dyw-9{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:17px;color:#0a0b0d;font-weight:600;letter-spacing:-.01em}.v9f9dyw-10{display:flex;align-items:center;justify-content:flex-start;gap:4px;border-bottom:1px solid #e8e8eb;padding:10px 14px 0;flex-shrink:0;overflow-x:auto}.v9f9dyw-11{position:relative;padding:8px 12px;background:transparent;border:none;font-size:12px;font-weight:500;color:#6b6e76;white-space:nowrap;margin-bottom:-1px;border-bottom:1.5px solid transparent;text-transform:capitalize}.v9f9dyw-11:hover{color:#0a0b0d}.v9f9dyw-11.v18pp08p{color:#0a0b0d;border-bottom-color:#22d3ee}.v9f9dyw-12{flex:1;overflow:auto;padding:18px 20px}.v9f9dyw-13{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start}.v9f9dyw-14{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px;padding:14px 0;border-bottom:1px solid #e8e8eb}.v9f9dyw-14:first-child{padding-top:0}.v9f9dyw-14:last-child{border-bottom:none;padding-bottom:0}.v9f9dyw-15{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;color:#6b6e76}.v9f9dyw-16{font-size:13px;color:#0a0b0d}.v9f9dyw-17{color:#dc2626}.v9f9dyw-18{font-weight:600;margin-bottom:8px}.v9f9dyw-19{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:11px;white-space:pre-wrap;opacity:.8;background:#f0f0f2;border:1px solid #e8e8eb;border-radius:var(--radius-sm);padding:10px}.v9f9dyw-20{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:14px}.v9f9dyw-21{.vnc6dc-9 color: #6b6e76;margin-bottom:8px}.v9f9dyw-22{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:13px;color:#0a0b0d;word-break:break-word}.v9f9dyw-23{color:#dc2626}.v9f9dyw-24{color:#16a34a}.v9f9dyw-25{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:12px}.v9f9dyw-26{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px;padding:12px 14px;background:#fcfcfc;border:1px solid #e8e8eb;border-radius:var(--radius-md)}.v9f9dyw-27{display:flex;align-items:center;justify-content:space-between;gap:10px}.v9f9dyw-28{font-size:12.5px;font-weight:600;color:#0a0b0d;letter-spacing:-.005em}.v9f9dyw-29{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:13px;font-weight:500;color:#0a0b0d}.v9f9dyw-30{position:relative;height:6px;border-radius:4px;background:#f0f0f2;overflow:hidden}.v9f9dyw-31{position:absolute;left:0;top:0;bottom:0;border-radius:4px;background:#a4a7af}.v9f9dyw-31.vbz8yk8{background:#16a34a}.v9f9dyw-31.v173w9ek{background:#dc2626}.v9f9dyw-32{display:flex;align-items:center;justify-content:flex-start;gap:10px;font-size:11px;color:#6b6e76}.v9f9dyw-33{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;padding:2px 6px;border-radius:var(--radius-sm);background:#f0f0f2;color:#6b6e76;font-size:9.5px;letter-spacing:.04em;line-height:1.2}.v9f9dyw-33.vbz8yk8{background:#16a34a1f;color:#16a34a}.v9f9dyw-33.v173w9ek{background:#dc26261f;color:#dc2626}.v9f9dyw-34{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:18px}.v9f9dyw-35{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:10px}.v9f9dyw-36{display:flex;align-items:center;justify-content:space-between;gap:10px}.v9f9dyw-37{font-size:12.5px;font-weight:600;color:#0a0b0d}.v9f9dyw-38{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:10px;list-style:none;padding:0;margin:0}.v9f9dyw-39{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:6px;padding:12px;background:#fcfcfc;border:1px solid #e8e8eb;border-radius:var(--radius-md)}.v9f9dyw-40{color:#dc2626;font-size:12.5px;line-height:1.5}.v1f0s106-1{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;flex:1;height:100%;text-align:center;padding:48px}.v1f0s106-2{width:56px;height:56px;border-radius:var(--radius-md);background:#f7f7f8;border:1px solid #e8e8eb;display:flex;align-items:center;justify-content:center;color:#22d3ee;margin-bottom:4px}.v1f0s106-2>svg{width:24px;height:24px}.v1f0s106-3{.vnc6dc-9 color: #6b6e76}.v1f0s106-4{color:#0a0b0d;font-size:18px;font-weight:600;letter-spacing:-.01em}.v1f0s106-5{color:#6b6e76;font-size:12.5px;max-width:360px;line-height:1.55}.v1460r1i-1{white-space:pre-wrap;margin:0;font-size:13px;line-height:1.55}.v1460r1i-2{color:#0a0b0d;font-size:13px;line-height:1.55}.v1460r1i-2>:first-child{margin-top:0}.v1460r1i-2>:last-child{margin-bottom:0}.v1460r1i-2 p,.v1460r1i-2 ul,.v1460r1i-2 ol,.v1460r1i-2 blockquote,.v1460r1i-2 pre,.v1460r1i-2 table{margin:0 0 10px}.v1460r1i-2 h1,.v1460r1i-2 h2,.v1460r1i-2 h3,.v1460r1i-2 h4,.v1460r1i-2 h5,.v1460r1i-2 h6{margin:0 0 10px;color:#0a0b0d;line-height:1.25}.v1460r1i-2 h1{font-size:18px}.v1460r1i-2 h2{font-size:15px}.v1460r1i-2 h3{font-size:13.5px}.v1460r1i-2 ul,.v1460r1i-2 ol{padding-left:20px}.v1460r1i-2 li+li{margin-top:4px}.v1460r1i-2 code{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:12px;background:#f0f0f2;border:1px solid #e8e8eb;border-radius:6px;padding:1px 5px}.v1460r1i-2 pre{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:12px;overflow-x:auto;background:#f0f0f2;border:1px solid #e8e8eb;border-radius:var(--radius-sm);padding:12px}.v1460r1i-2 pre code{background:transparent;border:none;padding:0;font-size:inherit}.v1460r1i-2 blockquote{padding-left:12px;border-left:3px solid #e8e8eb;color:#6b6e76}.v1460r1i-2 a{color:#22d3ee;text-decoration:underline;text-underline-offset:2px}.v1460r1i-2 table{width:100%;border-collapse:collapse}.v1460r1i-2 th,.v1460r1i-2 td{border:1px solid #e8e8eb;padding:8px 10px;text-align:left;vertical-align:top}.v1460r1i-2 th{background:#f0f0f2}.v1460r1i-3{max-width:100%;border-radius:var(--radius-md)}.v1460r1i-4{width:100%}.v1460r1i-5{max-width:100%;border-radius:var(--radius-md)}.v1460r1i-6{color:#22d3ee}.vqnpbvz-1{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:12px;line-height:1.6;color:#0a0b0d;background:#fcfcfc;border:1px solid #e8e8eb;border-radius:var(--radius-md);padding:12px 14px;overflow:auto;min-width:0}.vqnpbvz-1.vh8ay32{font-size:11px;padding:10px 12px}.vqnpbvz-1.v14y6o4h{max-height:200px}.vqnpbvz-1.valvosx{max-height:320px}.vqnpbvz-1 .json-view{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";color:#0a0b0d;font-size:inherit;line-height:inherit;--json-property: #0e7490;--json-index: #22d3ee;--json-number: #22d3ee;--json-string: #ea580c;--json-boolean: #dc2626;--json-null: #a4a7af}.vqnpbvz-1 .jv-size,.vqnpbvz-1 .jv-chevron{color:#a4a7af}.vqnpbvz-1 .json-view--copy,.vqnpbvz-1 .json-view--edit,.vqnpbvz-1 .json-view--link svg{color:#a4a7af}.vqnpbvz-1 .json-view--input{color:#0a0b0d}.v4yt9wa-1{.vnc6dc-1 transition: .24s cubic-bezier(.4,0,.2,1);transition-property:background,color;width:28px;height:28px;border-radius:var(--radius-sm);border:none;background:transparent;color:#6b6e76;flex-shrink:0}.v4yt9wa-1.van04w6{width:32px;height:32px;border-radius:var(--radius-md)}.v4yt9wa-1:hover:not(:disabled){background:#f0f0f2;color:#0a0b0d}.v4yt9wa-1:disabled{cursor:not-allowed;opacity:.5}.v4yt9wa-1>svg{width:14px;height:14px}.v4yt9wa-1.van04w6>svg{width:16px;height:16px}.vpbub9f-1{position:absolute;top:0;bottom:0;width:7px;right:-3px;cursor:col-resize;z-index:5;-webkit-user-select:none;user-select:none;touch-action:none}.vpbub9f-1.v1xij6d4{right:auto;left:-3px}.vpbub9f-1:after{content:"";position:absolute;top:0;bottom:0;left:3px;width:1px;background:transparent;transition:background .15s ease}.vpbub9f-1:hover:after,.vpbub9f-1.veyzh35:after{background:#22d3ee}.vno9i23-1{display:flex;align-items:center;justify-content:flex-start;gap:6px;font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";display:inline-flex;font-size:11px;font-weight:500;letter-spacing:.01em;padding:3px 8px;border-radius:20px;color:#6b6e76;background:#f0f0f2}.vno9i23-1.v1bls63k{color:#16a34a;background:#16a34a1a}.vno9i23-1.v1843cka{color:#dc2626;background:#dc26261a}.vno9i23-1.v1w33htl{color:#0e7490;background:#22d3ee1f}.vno9i23-1.v1o7znqr{color:#ea580c;background:#ea580c1a}.vno9i23-1.v1ptx2rj{color:#6b6e76;background:#e4e4e7}.vno9i23-1.vwlrmf0{color:#ea580c;background:#ea580c24}.vno9i23-1.v1mlprpv{color:#0e7490;background:#22d3ee1a}.vno9i23-2{width:5px;height:5px;border-radius:5px;flex-shrink:0;background:#a4a7af;@keyframes pulseDot{0%,to{opacity:1}50%{opacity:.4}}}.vno9i23-2.v1bls63k{background:#16a34a}.vno9i23-2.v1843cka{background:#dc2626}.vno9i23-2.v1w33htl{background:#22d3ee;animation:pulseDot 1.6s ease-in-out infinite}.vno9i23-2.v1o7znqr{background:#ea580c}.vno9i23-2.v1ptx2rj{background:#d4d4d8}.vno9i23-2.vwlrmf0{background:#ea580c}.vno9i23-2.v1mlprpv{background:#22d3ee}.vxv787s-1{display:flex;gap:12px;height:100%;align-items:stretch;position:relative;min-width:0}.vxv787s-2{display:flex;flex-direction:column;flex:1;min-width:0;border:1px solid #e8e8eb;border-radius:var(--radius-md);background:#fcfcfc;overflow:hidden}.vxv787s-3{flex:1 1 0;min-width:300px;max-width:460px;overflow:auto;border:1px solid #e8e8eb;border-radius:var(--radius-md);background:#fcfcfc;padding:14px 16px}.vxv787s-4{position:absolute;inset:0 0 0 auto;width:min(420px,85%);display:flex;flex-direction:column;background:#f7f7f8;border:1px solid #d4d4d8;border-radius:var(--radius-md);box-shadow:-10px 0 28px #0a0b0d24;z-index:2}.vxv787s-5{display:flex;align-items:center;justify-content:space-between;padding:6px 8px 6px 12px;border-bottom:1px solid #e8e8eb;flex-shrink:0}.vxv787s-6{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:#6b6e76}.vxv787s-7{overflow:auto;padding:14px 16px}.vxv787s-8{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,color;background:none;border:none;padding:4px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;color:#6b6e76;cursor:pointer}.vxv787s-8:hover{background:#f0f0f2;color:#0a0b0d}.vxv787s-8>svg{width:14px;height:14px}.vxv787s-9{flex:1;overflow:auto;min-width:0}.vxv787s-10{display:flex;flex-direction:column;min-width:560px}.vxv787s-10.v1qsea3x{min-width:0}.vxv787s-11{display:grid;grid-template-columns:minmax(200px,40%) 1fr;flex-shrink:0;border-bottom:1px solid #e8e8eb;background:#f7f7f8;height:24px;position:sticky;top:0;z-index:1}.vxv787s-11.v1qsea3x{grid-template-columns:1fr}.vxv787s-12{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 6px 0 10px;height:100%}.vxv787s-13{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,color;background:none;border:none;padding:3px;border-radius:4px;display:inline-flex;align-items:center;justify-content:center;color:#6b6e76;cursor:pointer;flex-shrink:0}.vxv787s-13:hover{background:#f0f0f2;color:#0a0b0d}.vxv787s-13>svg{width:14px;height:14px}.vxv787s-14{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:#a4a7af}.vxv787s-15{position:relative;padding-right:12px}.vxv787s-16{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";position:absolute;top:50%;transform:translate(-50%,-50%);font-size:9.5px;font-variant-numeric:tabular-nums;color:#a4a7af;white-space:nowrap}.vxv787s-17{padding:4px 0}.vxv787s-18{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,color;display:grid;grid-template-columns:minmax(200px,40%) 1fr;align-items:stretch;cursor:pointer;font-size:11.5px;min-height:26px;border-left:2px solid transparent;color:#6b6e76}.vxv787s-18.v1qsea3x{grid-template-columns:1fr}.vxv787s-18:hover{background:#f7f7f8;color:#0a0b0d}.vxv787s-18.vkduw8x{background:#f0f0f2;color:#0a0b0d;border-left-color:#22d3ee}.vxv787s-19{display:flex;align-items:center;justify-content:flex-start;gap:7px;min-width:0;padding-right:10px}.vxv787s-20{position:relative;height:26px;padding-right:12px;background-image:linear-gradient(to right,transparent calc(25% - 1px),#e8e8ebb3 calc(25% - 1px),#e8e8ebb3 25%,transparent 25%),linear-gradient(to right,transparent calc(50% - 1px),#e8e8ebb3 calc(50% - 1px),#e8e8ebb3 50%,transparent 50%),linear-gradient(to right,transparent calc(75% - 1px),#e8e8ebb3 calc(75% - 1px),#e8e8ebb3 75%,transparent 75%)}.vxv787s-21{position:absolute;top:7px;height:12px;min-width:2px;border-radius:3px;background:#d4d4d8;border:1px solid transparent}.vxv787s-21.v127f36m{background:#a78bfa8c}.vxv787s-21.v4mth87{background:#67e8f9b3}.vxv787s-21.v18d8prp{background:#f0abfc99}.vxv787s-21.vaaxwzo{background:#ea580c8c}.vxv787s-21.v10m3aoc{background:#ec489980}.vxv787s-21.v1glys7{background:#6366f180}.vxv787s-21.vwj5tm0{background:#e4e4e7}.vxv787s-21.v1z0zxx1{background:repeating-linear-gradient(45deg,#22d3ee66 0 6px,#22d3ee26 6px 12px)}.vxv787s-21.v12vnxco{border-color:#dc2626}.vxv787s-22{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";position:absolute;top:5px;font-size:9.5px;font-variant-numeric:tabular-nums;color:#6b6e76;white-space:nowrap;pointer-events:none}.vxv787s-23{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:transform;background:none;border:none;padding:0;display:inline-flex;width:14px;height:14px;align-items:center;justify-content:center;color:#a4a7af;flex-shrink:0;cursor:pointer}.vxv787s-23>svg{width:12px;height:12px}.vxv787s-23.v1sa0q0h>svg{transform:rotate(90deg)}.vxv787s-24{width:14px;flex-shrink:0}.vxv787s-25{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";padding:2px 6px;border-radius:4px;font-size:9.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#6b6e76;background:#f0f0f2;flex-shrink:0}.vxv787s-25.v127f36m{background:#a78bfa24;color:#7c3aed}.vxv787s-25.v4mth87{background:#67e8f92e;color:#0e7490}.vxv787s-25.v18d8prp{background:#f0abfc2e;color:#a21caf}.vxv787s-25.vaaxwzo{background:#ea580c1f;color:#ea580c}.vxv787s-25.v10m3aoc{background:#ec489926;color:#be185d}.vxv787s-25.v1glys7{background:#6366f126;color:#4338ca}.vxv787s-25.vwj5tm0{background:#f0f0f2;color:#6b6e76}.vxv787s-26{font-weight:500;font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.vxv787s-27{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";padding:1px 5px;border-radius:3px;font-size:9.5px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;flex-shrink:0;background:#d4d4d8;color:#6b6e76}.vxv787s-27.vquhj6c{background:#16a34a26;color:#16a34a}.vxv787s-27.v1bt5ce3{background:#ea580c26;color:#ea580c}.vxv787s-27.vgubnqx{background:#22d3ee26;color:#22d3ee}.vxv787s-27.vk5fxpe{background:#d4d4d8;color:#6b6e76}.vxv787s-28{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";color:#dc2626;font-size:10px;flex-shrink:0}.vxv787s-29{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:9.5px;letter-spacing:.04em;flex-shrink:0;color:#a4a7af}.vxv787s-30{padding:16px;color:#6b6e76;font-size:12px;text-align:center}.vn93px5-1{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:14px;font-size:12px}.vn93px5-2{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:13px;font-weight:600;letter-spacing:-.005em;color:#0a0b0d}.vn93px5-3{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:6px}.vn93px5-4{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;background:#fcfcfc;border:1px solid #e8e8eb;border-radius:var(--radius-sm)}.vn93px5-5{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;color:#6b6e76}.vn93px5-6{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:11.5px;color:#0a0b0d;text-align:right;max-width:60%;word-break:break-all}.vn93px5-7{color:#dc2626}.vn93px5-8{font-weight:600;margin-bottom:4px}.vn93px5-9{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:10px;white-space:pre-wrap;opacity:.8}.vn93px5-10{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:6px}.vn93px5-11{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;color:#6b6e76}.vn93px5-12{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:11px;line-height:1.55;white-space:pre-wrap;word-break:break-word;color:#6b6e76;background:#f7f7f8;border:1px solid #e8e8eb;padding:10px 12px;border-radius:var(--radius-sm);max-height:200px;overflow:auto}.vmn9mpb-1{height:100%;overflow:auto}.vmn9mpb-2{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:6px;padding:22px 32px 18px;border-bottom:1px solid #e8e8eb;background:#fcfcfc;position:sticky;top:0;z-index:3}.vmn9mpb-3{display:flex;align-items:center;justify-content:space-between;gap:14px}.vmn9mpb-4{display:flex;align-items:center;justify-content:flex-start;gap:12px}.vmn9mpb-5{display:flex;align-items:center;justify-content:flex-start;gap:6px;flex-wrap:wrap}.vmn9mpb-6{display:flex;align-items:center;justify-content:flex-start;gap:5px;font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;padding:3px 9px;border-radius:999px;background:#f0f0f2;color:#6b6e76;font-size:9.5px;line-height:1;letter-spacing:.04em}.vmn9mpb-7{font-size:11px;font-weight:600;color:#0a0b0d;letter-spacing:-.01em}.vmn9mpb-8{display:flex;align-items:center;justify-content:flex-start;gap:5px;transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,border-color,color;appearance:none;padding:3px 9px;border-radius:999px;font-size:9.5px;line-height:1;letter-spacing:.04em;text-transform:uppercase;font-weight:500;color:#6b6e76;background:#f0f0f2;border:1px solid transparent;cursor:pointer}.vmn9mpb-8:hover{background:#ececee;color:#0a0b0d}.vmn9mpb-8.v124n73o{color:#fcfcfc;background:#0a0b0d;border-color:#0a0b0d}.vmn9mpb-8.v18aowuu:not(.v124n73o){color:#16a34a;background:#16a34a14;border-color:#16a34a2e}.vmn9mpb-8.vind66p:not(.v124n73o){color:#dc2626;background:#dc262614;border-color:#dc26262e}.vmn9mpb-8.v11id82e:not(.v124n73o){color:#0e7490;background:#22d3ee1a;border-color:#22d3ee38}.vmn9mpb-8.v1i2guj2:not(.v124n73o){color:#ea580c;background:#ea580c14;border-color:#ea580c2e}.vmn9mpb-8.v12gavlj:not(.v124n73o){color:#6b6e76;background:#e4e4e7;border-color:#e8e8eb}.vmn9mpb-8.v9duj39:not(.v124n73o){color:#ea580c;background:#ea580c1a;border-color:#ea580c38}.vmn9mpb-8.vjtgbed:not(.v124n73o){color:#0e7490;background:#22d3ee17;border-color:#22d3ee33}.vmn9mpb-8.vt17xas:not(.v124n73o){color:#6b6e76;background:#f0f0f2;border-color:#e8e8eb}.vmn9mpb-9{font-size:11px;font-weight:600;letter-spacing:-.01em}.vmn9mpb-10{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:20px;padding:24px 32px 40px}.v1d1autj-1{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;background:transparent}.v1d1autj-1.vra3f9d{border:1px solid #e8e8eb;border-radius:var(--radius-lg);overflow:hidden;background:#fcfcfc}.v1d1autj-1.v1ofnfk9{height:100%;overflow:hidden}.v1d1autj-2{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:22px 32px;border-bottom:1px solid #e8e8eb;background:#fcfcfc}.v1d1autj-2.v16nf7cu{position:sticky;top:0;z-index:3}.v1d1autj-2.vp8tseb{cursor:pointer;padding:16px 24px}.v1d1autj-3{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%}.v1d1autj-4{margin-bottom:14px}.v1d1autj-5{display:flex;align-items:center;justify-content:flex-start;gap:12px;min-width:0;flex:1}.v1d1autj-6{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px;min-width:0;flex:1}.v1d1autj-7{display:flex;align-items:center;justify-content:flex-start;gap:12px;min-width:0}.v1d1autj-8{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:16px;font-weight:600;color:#0a0b0d;letter-spacing:-.02em;margin:0}.v1d1autj-8.v8omtap{font-size:30px;font-weight:600;letter-spacing:-.025em;line-height:1.1}.v1d1autj-9{font-size:12.5px;color:#6b6e76;max-width:720px;line-height:1.5}.v1d1autj-10{display:inline-flex}.v1d1autj-11{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:11.5px;color:#6b6e76}.v1d1autj-12{display:flex;align-items:center;justify-content:flex-start;gap:8px;flex-shrink:0}.v1d1autj-13{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:transform;display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;color:#a4a7af;transform:rotate(-90deg)}.v1d1autj-13.v12vk5oa{transform:rotate(0)}.v1d1autj-13>svg{width:14px;height:14px}.v1d1autj-14{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start}.v1d1autj-14.v1dyggfg{flex:1;min-height:0;overflow:hidden}.v1d1autj-15{display:grid;grid-template-columns:repeat(auto-fit,minmax(max(25%,140px),1fr));gap:1px;background:#e8e8eb;border-bottom:1px solid #e8e8eb}.v1d1autj-16{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:6px;padding:12px 16px 13px;background:#fcfcfc}.v1d1autj-17{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;font-size:9px;color:#6b6e76}.v1d1autj-18{font-variant-numeric:tabular-nums;font-size:20px;font-weight:500;color:#0a0b0d;letter-spacing:-.02em;line-height:1.1}.v1d1autj-18.vsjzv4v{color:#0e7490}.v1d1autj-19{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:20px 32px 24px}.v1d1autj-19:not(:last-child){border-bottom:1px solid #e8e8eb}.v1d1autj-19.v1i7hsdh{flex:1;min-height:0}.v1d1autj-20{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.v1d1autj-20.vskhn2m{margin-bottom:0}.v1d1autj-21{display:flex;align-items:center;justify-content:flex-start;gap:8px;background:none;border:none;padding:0;margin:0;cursor:pointer;color:inherit;font:inherit;text-align:left}.v1d1autj-22{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:transform;display:inline-flex;width:16px;height:16px;align-items:center;justify-content:center;color:#a4a7af;transform:rotate(-90deg)}.v1d1autj-22.v12vk5oa{transform:rotate(0)}.v1d1autj-22>svg{width:14px;height:14px}.v1d1autj-23{font-size:13.5px;font-weight:600;color:#0a0b0d;letter-spacing:-.01em}.v1d1autj-24{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:10.5px;color:#6b6e76}.v1d1autj-25{display:flex;align-items:center;justify-content:flex-start;gap:4px}.vzvspbh-1{height:150px;padding:10px 14px 8px;border:1px solid #e8e8eb;border-radius:var(--radius-lg);background:#fcfcfc}.vzvspbh-2{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;color:#6b6e76;padding:0 2px 4px}.vzvspbh-3{display:flex;flex-direction:column;gap:4px}.vzvspbh-3+.vzvspbh-3{margin-top:16px}.vzvspbh-4{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";padding:10px 12px;font-size:11px;line-height:1.5;color:#0a0b0d;min-width:160px}.vzvspbh-5{display:flex;justify-content:space-between;gap:14px}.vzvspbh-5+.vzvspbh-5{margin-top:4px}.vzvspbh-6{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;color:#6b6e76}.vzvspbh-7{color:#0e7490}.v1v3ddx1-1{padding:30px 24px;border:1px dashed #e8e8eb;border-radius:var(--radius-lg);text-align:center;color:#6b6e76;font-size:12.5px}.v1v3ddx1-2{border:1px solid #e8e8eb;border-radius:var(--radius-lg);background:#fcfcfc;overflow:auto}.v1v3ddx1-2.v72uwfi{flex:1;min-height:0}.v1v3ddx1-3{width:max-content;min-width:100%;border-collapse:collapse;font-size:12px;table-layout:auto}.v1v3ddx1-4{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;position:sticky;top:0;z-index:1;padding:10px 16px;background:#f7f7f8;box-shadow:inset 0 -1px #e8e8eb;color:#6b6e76;text-align:left;white-space:nowrap}.v1v3ddx1-4.v10rcuqw{text-align:right}.v1v3ddx1-4.vl7rjcc{padding-left:36px}.v1v3ddx1-5{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background;cursor:pointer;border-top:1px solid #e8e8eb;border-left:3px solid transparent;background:#f7f7f8}.v1v3ddx1-5:first-child{border-top:none}.v1v3ddx1-5:hover{background:#f0f0f2}.v1v3ddx1-5.v9wbf1x{background:#22d3ee0f}.v1v3ddx1-5.v9wbf1x:hover{background:#22d3ee1a}.v1v3ddx1-5.v1wi22g7{border-left-color:#22d3ee}.v1v3ddx1-6{padding:12px 16px;vertical-align:middle;white-space:nowrap;color:#0a0b0d;font-size:12px}.v1v3ddx1-6.v10rcuqw{text-align:right}.v1v3ddx1-6.vh68gi{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-variant-numeric:tabular-nums;font-size:11.5px;color:#6b6e76}.v1v3ddx1-7{display:flex;align-items:center;justify-content:flex-start;gap:8px}.v1v3ddx1-8{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:color;display:inline-flex;align-items:center;justify-content:center;padding:2px;background:transparent;border:none;cursor:pointer;color:#6b6e76}.v1v3ddx1-8:hover{color:#0a0b0d}.v1v3ddx1-9{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;font-weight:500;padding:3px 6px;border-radius:var(--radius-sm);background:#22d3ee1f;color:#0e7490;font-size:10px;letter-spacing:.04em;line-height:1}.v1v3ddx1-10{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";padding:3px 6px;border-radius:var(--radius-sm);background:#f0f0f2;color:#6b6e76;font-size:10.5px;line-height:1}.v1v3ddx1-11{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;font-weight:500;padding:3px 6px;border-radius:var(--radius-sm);background:#f0f0f2;color:#6b6e76;font-size:10px;letter-spacing:.04em;line-height:1}.v1v3ddx1-12{font-size:12.5px;font-weight:500;color:#0a0b0d;letter-spacing:-.005em}.v1v3ddx1-12.v9wbf1x{color:#0e7490}.v1v3ddx1-13{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background;cursor:pointer;border-top:1px solid #e8e8eb;border-left:3px solid transparent}.v1v3ddx1-13:hover{background:#f7f7f8}.v1v3ddx1-13.v1wi22g7{border-left-color:#22d3ee}.v1v3ddx1-14{padding:10px 16px;vertical-align:middle;white-space:nowrap;color:#0a0b0d;font-size:12px}.v1v3ddx1-14.v10rcuqw{text-align:right}.v1v3ddx1-14.vh68gi{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-variant-numeric:tabular-nums;font-size:11.5px;color:#6b6e76}.v1v3ddx1-14.vl7rjcc{padding-left:36px}.v1v3ddx1-15{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:12px;color:#0a0b0d;max-width:260px}.v1v3ddx1-16{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block;max-width:320px}.v1v3ddx1-17{color:#a4a7af}.v1v3ddx1-18{border-top:1px solid #e8e8eb}.v1v3ddx1-19{padding:18px;text-align:center;font-size:12px;color:#6b6e76}.v6nngvf-1{color:#a4a7af}.v6nngvf-2{display:inline-block;width:40px;height:3px;border-radius:4px;background:#f0f0f2;position:relative;overflow:hidden;margin-right:8px;vertical-align:middle}.v6nngvf-3{position:absolute;left:0;top:0;bottom:0;border-radius:4px;background:#a4a7af}.v6nngvf-3.vj3xmch{background:#16a34a}.v6nngvf-3.v1b0sr1n{background:#ea580c}.v6nngvf-3.v3vjwcw{background:#dc2626}.v6nngvf-4{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-variant-numeric:tabular-nums;font-size:12px;color:#0a0b0d;font-weight:500}.v6nngvf-5{display:flex;align-items:center;justify-content:flex-start;display:inline-flex}.v6nngvf-6{display:flex;align-items:center;justify-content:flex-start;gap:5px;display:inline-flex;justify-content:center;min-width:54px;padding:3px 7px;border-radius:var(--radius-sm);color:#6b6e76;background:#f0f0f2;font-size:11px;font-weight:600}.v6nngvf-6.vj3xmch{color:#16a34a;background:#16a34a1a}.v6nngvf-6.v3vjwcw{color:#dc2626;background:#dc26261a}.v6nngvf-7{display:flex;align-items:center;justify-content:flex-start;gap:1px;display:inline-flex;color:#a4a7af}.v6nngvf-7>svg{width:13px;height:13px}.v6nngvf-7>.filled{color:#ea580c;fill:currentColor}.v6nngvf-8{display:flex;align-items:center;justify-content:flex-end;gap:4px}.v6nngvf-9{display:flex;align-items:center;justify-content:flex-start;gap:4px;justify-content:center;height:24px;min-width:28px;padding:0 7px;border:1px solid #d4d4d8;border-radius:var(--radius-sm);background:#fcfcfc;color:#6b6e76;font-size:11px;font-weight:600}.v6nngvf-9>svg{width:12px;height:12px}.v6nngvf-9:hover:not(:disabled){border-color:#22d3ee80;background:#f0f0f2;color:#0a0b0d}.v6nngvf-9:disabled{opacity:.6}.v6nngvf-9.vrka86m{color:#16a34a;border-color:#16a34a80;background:#16a34a1a}.v6nngvf-9.v14fx5bw{color:#dc2626;border-color:#dc262680;background:#dc26261a}.v6nngvf-10{display:flex;align-items:center;justify-content:center;width:20px;height:24px;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:#a4a7af}.v6nngvf-10>svg{width:14px;height:14px}.v6nngvf-10:hover:not(:disabled),.v6nngvf-10.v3c191l{color:#ea580c}.v6nngvf-10.v3c191l>svg{fill:currentColor}.v6nngvf-10:disabled{opacity:.6}.v1fkevfp-1{background:#000;color:#fff;font-size:12px;line-height:1.4;padding:4px 8px;border-radius:4px;box-shadow:0 2px 8px #0006;pointer-events:none;z-index:10000;max-width:300px;white-space:pre-line;overflow-wrap:break-word}.v1it1iyw-1{position:relative;display:inline-flex}.v1it1iyw-2{.vnc6dc-1 transition: .24s cubic-bezier(.4,0,.2,1);transition-property:background,color,border-color;appearance:none;padding:0;width:32px;height:32px;border-radius:var(--radius-md);border:1px solid #e8e8eb;background:#fcfcfc;color:#6b6e76;line-height:0;box-shadow:0 1px 2px #00000014}.v1it1iyw-2:hover:not(:disabled){background:#f0f0f2;color:#0a0b0d;border-color:#d4d4d8}.v1it1iyw-2:disabled{cursor:not-allowed;opacity:.5}.v1it1iyw-2>svg{width:16px;height:16px}.v1it1iyw-3{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;position:absolute;top:calc(100% + 6px);right:0;min-width:210px;background:#f7f7f8;border:1px solid #d4d4d8;box-shadow:0 14px 30px -12px #22d3ee40;z-index:40;padding:6px 0}.v1it1iyw-4{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:2px;transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,color;text-align:left;background:transparent;border:0;padding:8px 14px;color:#0a0b0d;cursor:pointer}.v1it1iyw-4:hover{background:#ececee}.v1it1iyw-4.vp2z70{color:#dc2626}.v1it1iyw-4.vp2z70:hover{background:#dc26261a}.v1it1iyw-5{font-size:12px;font-weight:600;letter-spacing:.02em}.v1it1iyw-6{font-size:11px;color:#6b6e76}.v1it1iyw-7{height:1px;background:#e8e8eb;margin:4px 0}.v1gbsfzf-1{position:relative;display:inline-flex}.v1gbsfzf-2{display:flex;align-items:center;justify-content:flex-start}.v1gbsfzf-3{display:flex;align-items:center;justify-content:flex-start;gap:8px;transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,border-color,color,box-shadow;display:inline-flex;height:28px;padding:0 14px;border-radius:0;border:1px solid transparent;font-size:11px;font-weight:600;line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none;text-transform:uppercase;letter-spacing:.14em;background:#22d3ee;color:#0a0b0d;box-shadow:0 0 0 1px #0e7490,0 6px 16px -8px #22d3ee8c}.v1gbsfzf-3>svg{width:13px;height:13px;flex-shrink:0}.v1gbsfzf-3:hover:not(:disabled){background:#06b6d4}.v1gbsfzf-3:active:not(:disabled){background:#0e7490}.v1gbsfzf-3:disabled{cursor:not-allowed;opacity:.4}.v1gbsfzf-4{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,border-color,color;display:inline-flex;align-items:center;justify-content:center;height:28px;width:26px;margin-left:1px;border-radius:0;border:1px solid transparent;background:#22d3ee;color:#0a0b0d;box-shadow:0 0 0 1px #0e7490}.v1gbsfzf-4>svg{width:13px;height:13px;transition:transform .18s ease}.v1gbsfzf-4.v9mb724>svg{transform:rotate(180deg)}.v1gbsfzf-4:hover:not(:disabled){background:#06b6d4}.v1gbsfzf-4:disabled{cursor:not-allowed;opacity:.4}.v1gbsfzf-5{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;position:absolute;top:calc(100% + 6px);right:0;min-width:220px;background:#f7f7f8;border:1px solid #d4d4d8;box-shadow:0 14px 30px -12px #22d3ee59;z-index:40;padding:6px 0}.v1gbsfzf-6{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:2px;transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,color;text-align:left;background:transparent;border:0;padding:8px 14px;color:#0a0b0d;cursor:pointer}.v1gbsfzf-6:hover{background:#ececee}.v1gbsfzf-6.v1g7o2ge{color:#dc2626}.v1gbsfzf-6.v1g7o2ge:hover{background:#dc26261a}.v1gbsfzf-7{font-size:12px;font-weight:600;letter-spacing:.02em}.v1gbsfzf-8{font-size:11px;color:#6b6e76}.v1gbsfzf-9{height:1px;background:#e8e8eb;margin:4px 0}.v1eplm6x-1{display:flex;align-items:center;justify-content:flex-start;gap:8px;font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:13px;color:#6b6e76}.v1eplm6x-2{color:#a4a7af;margin:0 6px}.v1eplm6x-3{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:color;font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";appearance:none;background:transparent;border:none;padding:0;color:#6b6e76;cursor:pointer}.v1eplm6x-3:hover,.v1eplm6x-4{color:#0a0b0d}.vgxz95z-1{border-left:1px solid #e8e8eb;background:#f7f7f8;display:flex;align-items:center;justify-content:center;color:#6b6e76;font-size:12px;flex-shrink:0}.vgxz95z-2{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;position:relative;flex-shrink:0;border-left:1px solid #e8e8eb;background:#f7f7f8;overflow:hidden}.vgxz95z-3{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:10px;padding:14px 18px 12px;border-bottom:1px solid #e8e8eb;background:#f7f7f8;flex-shrink:0}.vgxz95z-4{display:flex;align-items:center;justify-content:space-between;gap:10px}.vgxz95z-5{display:flex;align-items:center;justify-content:flex-start;gap:6px}.vgxz95z-6{.vnc6dc-9 color: #6b6e76}.vgxz95z-7{display:flex;align-items:center;justify-content:flex-start;gap:10px;min-width:0}.vgxz95z-8{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:9.5px;font-weight:600;padding:3px 8px;border-radius:4px;color:#0a0b0d;background:#22d3ee}.vgxz95z-9{font-size:15px;font-weight:600;color:#0a0b0d;letter-spacing:-.01em;font-variant-numeric:tabular-nums}.vgxz95z-10{flex:1;overflow:auto;padding:16px;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:18px}.vgxz95z-11{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:8px}.vgxz95z-12{.vnc6dc-9 color: #6b6e76}.vgxz95z-13{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.vgxz95z-14{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:6px;padding:12px 14px;background:#fcfcfc;border:1px solid #e8e8eb;border-radius:var(--radius-md)}.vgxz95z-15{.vnc6dc-9 color: #6b6e76}.vgxz95z-16{font-variant-numeric:tabular-nums;font-size:18px;font-weight:500;color:#0a0b0d;letter-spacing:-.02em}.vgxz95z-16.v15guhoh{color:#0e7490}.vgxz95z-16.v1amf7no{color:#dc2626}.vgxz95z-17{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;margin:0}.vgxz95z-18{font-size:12px;color:#6b6e76}.vgxz95z-19{margin:0;font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-variant-numeric:tabular-nums;font-size:11.5px;color:#0a0b0d;word-break:break-all}.vgxz95z-20{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;border:1px solid #e8e8eb;border-radius:var(--radius-md);overflow:hidden;background:#fcfcfc}.vgxz95z-21{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background;display:flex;align-items:center;justify-content:flex-start;gap:10px;width:100%;padding:10px 12px;background:transparent;border:none;border-top:1px solid #e8e8eb;cursor:pointer;text-align:left}.vgxz95z-21:first-child{border-top:none}.vgxz95z-21:hover{background:#f0f0f2}.vgxz95z-22{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:2px;flex:1;min-width:0}.vgxz95z-23{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:12px;color:#0a0b0d}.vgxz95z-24{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:10.5px;color:#6b6e76}.vgxz95z-25{display:flex;align-items:center;justify-content:flex-start;gap:10px;flex-shrink:0}.vgxz95z-26{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-variant-numeric:tabular-nums;font-size:11px;color:#6b6e76;min-width:44px;text-align:right}.vgxz95z-27{padding:18px 14px;text-align:center;font-size:11.5px;color:#6b6e76;border:1px dashed #e8e8eb;border-radius:var(--radius-md)}.vgxz95z-28{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:11.5px;line-height:1.55;white-space:pre-wrap;word-break:break-word;color:#dc2626;background:#dc26260f;border:1px solid #dc26264d;border-radius:var(--radius-md);padding:12px 14px;margin:0}.v11wyrim-1{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;flex-shrink:0;border-right:1px solid #e8e8eb;background:#f7f7f8;overflow:hidden;position:relative}.v11wyrim-2{display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:14px 16px;border-bottom:1px solid #e8e8eb}.v11wyrim-3{width:26px;height:26px;background:linear-gradient(135deg,#22d3ee,#0e7490);border-radius:7px;display:grid;place-items:center;color:#0a0b0d;font-weight:700;font-size:12.5px;letter-spacing:-.02em;box-shadow:0 0 20px #22d3ee33}.v11wyrim-4{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;gap:1px;flex:1;min-width:0}.v11wyrim-5{font-size:13px;font-weight:600;letter-spacing:-.01em;color:#0a0b0d}.v11wyrim-6{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;color:#6b6e76;font-variant-numeric:tabular-nums}.v11wyrim-7{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:12px 16px 6px}.v11wyrim-8{display:flex;align-items:center;justify-content:flex-start;gap:6px;flex-wrap:wrap;padding:10px 12px 0}.v11wyrim-9{display:flex;align-items:center;justify-content:flex-start;gap:5px;transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,border-color,color;appearance:none;border:1px solid #e8e8eb;border-radius:999px;background:#f0f0f2;color:#6b6e76;padding:4px 8px;font-size:10px;line-height:1;font-weight:500;text-transform:uppercase;cursor:pointer}.v11wyrim-9:hover{background:#ececee;color:#0a0b0d}.v11wyrim-9.v6lqv3n{background:#0a0b0d;border-color:#0a0b0d;color:#fcfcfc}.v11wyrim-9.v19qld18:not(.v6lqv3n){color:#16a34a;background:#16a34a14;border-color:#16a34a2e}.v11wyrim-9.v1cg0dpp:not(.v6lqv3n){color:#dc2626;background:#dc262614;border-color:#dc26262e}.v11wyrim-9.v87wrzh:not(.v6lqv3n){color:#0e7490;background:#22d3ee1a;border-color:#22d3ee38}.v11wyrim-9.vs27jp:not(.v6lqv3n){color:#ea580c;background:#ea580c14;border-color:#ea580c2e}.v11wyrim-9.vyxbtsk:not(.v6lqv3n){background:#e4e4e7}.v11wyrim-9.vfa0aud:not(.v6lqv3n){color:#ea580c;background:#ea580c1a;border-color:#ea580c38}.v11wyrim-9.vrfu41b:not(.v6lqv3n){color:#0e7490;background:#22d3ee17;border-color:#22d3ee33}.v11wyrim-9.v177364w:not(.v6lqv3n){color:#6b6e76;background:#f0f0f2;border-color:#e8e8eb}.v11wyrim-10{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;font-weight:650;font-variant-numeric:tabular-nums}.v11wyrim-11{.vnc6dc-9 transition: .24s cubic-bezier(.4,0,.2,1);transition-property:color;appearance:none;background:transparent;border:none;padding:0;color:#6b6e76;cursor:pointer}.v11wyrim-11:hover,.v11wyrim-11.v6lqv3n{color:#0a0b0d}.v11wyrim-12{display:flex;align-items:center;justify-content:flex-start;gap:4px}.v11wyrim-13{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-size:10px;color:#a4a7af;font-variant-numeric:tabular-nums}.v11wyrim-14{display:flex;align-items:center;justify-content:center;transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,color;width:22px;height:22px;background:transparent;border:none;border-radius:var(--radius-sm);padding:0;color:#a4a7af;cursor:pointer}.v11wyrim-14:hover{background:#f0f0f2;color:#0a0b0d}.v11wyrim-14:disabled{opacity:.4;cursor:default}.v11wyrim-14>svg{width:14px;height:14px}.v11wyrim-15{flex:1;overflow:auto;padding-bottom:10px}.vwomtc5-1{padding:2px 0 10px}.vwomtc5-2{padding:20px;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:10px}.vwomtc5-3{color:#6b6e76;font-size:11.5px;font-weight:600;letter-spacing:-.005em}.vwomtc5-4{color:#6b6e76;font-size:12px;line-height:1.5;white-space:pre-wrap}.vwomtc5-5{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";display:block;width:100%;overflow:auto;color:#0a0b0d;background:#f0f0f2;border:1px solid #e8e8eb;border-radius:var(--radius-sm);padding:10px 12px}.vwomtc5-6{display:flex;align-items:center;justify-content:flex-start;gap:8px;transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,color;position:relative;width:calc(100% - 16px);margin:1px 8px;background:transparent;border:none;border-radius:var(--radius-sm);text-align:left;color:#6b6e76;font-size:12.5px;line-height:20px;min-height:30px;padding-top:5px;padding-bottom:5px;padding-right:10px;overflow:hidden}.vwomtc5-6.depth0{padding-left:10px}.vwomtc5-6.depth1{padding-left:24px}.vwomtc5-6.depth2{padding-left:38px}.vwomtc5-6.depth3{padding-left:52px}.vwomtc5-6.active{background:#f0f0f2;color:#0a0b0d}.vwomtc5-6.active:before{content:"";position:absolute;left:-8px;top:6px;bottom:6px;width:2px;background:#22d3ee;border-radius:2px}.vwomtc5-7{display:flex;align-items:center;justify-content:flex-start;gap:8px;transition:.24s cubic-bezier(.4,0,.2,1);transition-property:background,color;position:relative;width:calc(100% - 16px);margin:1px 8px;background:transparent;border:none;border-radius:var(--radius-sm);text-align:left;color:#6b6e76;font-size:12.5px;line-height:20px;min-height:30px;padding-top:5px;padding-bottom:5px;padding-right:10px;overflow:hidden;cursor:pointer}.vwomtc5-7.vhb7hne{padding-left:10px}.vwomtc5-7.v1dycipb{padding-left:24px}.vwomtc5-7.v1qfp5hv{padding-left:38px}.vwomtc5-7.v5btrph{padding-left:52px}.vwomtc5-7.viu82ah{background:#f0f0f2;color:#0a0b0d}.vwomtc5-7.viu82ah:before{content:"";position:absolute;left:-8px;top:6px;bottom:6px;width:2px;background:#22d3ee;border-radius:2px}.vwomtc5-7:not(.viu82ah):hover{background:#fcfcfc;color:#0a0b0d}.vwomtc5-8{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:transform,background,color;display:inline-flex;width:18px;height:18px;align-items:center;justify-content:center;background:transparent;border:none;border-radius:var(--radius-sm);padding:0;color:#a4a7af;opacity:.8;flex-shrink:0;cursor:pointer}.vwomtc5-8:hover{background:#f0f0f2;color:#0a0b0d;opacity:1}.vwomtc5-8>svg{transition:.24s cubic-bezier(.4,0,.2,1);transition-property:transform;width:12px;height:12px}.vwomtc5-8.vk7wfis>svg{transform:rotate(90deg)}.vwomtc5-9{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:600;font-size:12.5px;color:#0a0b0d}.vwomtc5-10{color:#a4a7af;font-weight:400}.vwomtc5-11{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:500;font-size:12.5px}.vwomtc5-12{color:#a4a7af;font-weight:400}.vwomtc5-13{color:#a4a7af;font-weight:400;margin:0 4px}.vwomtc5-14{display:flex;align-items:center;justify-content:flex-start;gap:6px;flex-shrink:0}.vwomtc5-15{font-family:Geist Mono,JetBrains Mono,SF Mono,ui-monospace,monospace;font-feature-settings:"tnum","zero";font-size:10px;color:#a4a7af;font-variant-numeric:tabular-nums;flex-shrink:0}.v15ec1hr-1{height:100%;overflow:hidden;background:transparent}:root{color-scheme:light;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 12px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;font-family:Geist,-apple-system,BlinkMacSystemFont,Inter,Segoe UI,system-ui,sans-serif;font-feature-settings:"ss01","ss03","cv11";background:#fcfcfc;color:#0a0b0d;font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;letter-spacing:-.005em}#root{height:100%}::selection{background:#22d3ee4d;color:#0a0b0d}button{cursor:pointer;font-family:inherit;font-size:inherit;color:inherit;letter-spacing:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}a{color:#0e7490;text-decoration:none}a:hover{color:#22d3ee;text-decoration:underline;text-underline-offset:3px}
|