dsh-context 0.50.0 → 0.51.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/README.md +3 -3
- package/lib/client.js +610 -260
- package/lib/index.d.ts +24 -17
- package/lib/index.js +76 -54
- package/package.json +6 -2
package/lib/client.js
CHANGED
|
@@ -31,11 +31,15 @@ window.__ModuleLoader__.load({
|
|
|
31
31
|
"stats.toolCalls": "工具调用",
|
|
32
32
|
"stats.cacheHit": "缓存命中",
|
|
33
33
|
"stats.cost": "预估费用",
|
|
34
|
-
"stats.costTip": "按
|
|
35
|
-
"stats.
|
|
34
|
+
"stats.costTip": "按 models.dev 刊例价估算整个会话的累计费用,人民币按 1 元 = 0.15 美元换算,仅供参考。",
|
|
35
|
+
"stats.costTipDeepseek": "DeepSeek 高峰时段(北京时间工作日 9:00–12:00、14:00–18:00)按挂牌价计费,其余时段半价。",
|
|
36
|
+
"stats.costPriceHead": "每百万 tokens 价格:",
|
|
37
|
+
"stats.costPriceHeadPair": "每百万 tokens 价格(高峰|空闲):",
|
|
36
38
|
"stats.costHit": "命中",
|
|
37
39
|
"stats.costMiss": "未命中",
|
|
40
|
+
"stats.costWrite": "写入",
|
|
38
41
|
"stats.costOut": "输出",
|
|
42
|
+
"stats.costUnavailable": "模型价格暂不可用(自动重试中),费用暂无法估算。",
|
|
39
43
|
"timing.title": "耗时统计",
|
|
40
44
|
"timing.total": "活跃时长",
|
|
41
45
|
"timing.ttft": "模型等待",
|
|
@@ -69,6 +73,7 @@ window.__ModuleLoader__.load({
|
|
|
69
73
|
"placement.all": "全部",
|
|
70
74
|
"settings.gran": "趋势图 · 默认粒度",
|
|
71
75
|
"settings.mode": "趋势图 · 默认展示方式",
|
|
76
|
+
"settings.toolSort": "工具定义 · 默认排序",
|
|
72
77
|
"settings.fileSort": "文件活动 · 默认排序",
|
|
73
78
|
"settings.expand": "展开",
|
|
74
79
|
"settings.collapse": "收起",
|
|
@@ -264,8 +269,10 @@ window.__ModuleLoader__.load({
|
|
|
264
269
|
"tool.jsonHide": "收起",
|
|
265
270
|
"tool.search": "按名称、描述或参数过滤…",
|
|
266
271
|
"tool.sort.size": "按大小",
|
|
272
|
+
"tool.sort.count": "按次数",
|
|
267
273
|
"tool.sort.name": "按名称",
|
|
268
|
-
"tool.sortTip": "
|
|
274
|
+
"tool.sortTip": "工具排序:按当前步骤中的调用次数(默认)、token 大小或名称",
|
|
275
|
+
"tool.hitsTip": "当前展示步骤的上下文中,该工具被调用并返回结果的次数",
|
|
269
276
|
"tool.noMatch": "没有匹配当前过滤条件的工具",
|
|
270
277
|
"rich.raw": "原文",
|
|
271
278
|
"rich.md": "Markdown",
|
|
@@ -323,11 +330,15 @@ window.__ModuleLoader__.load({
|
|
|
323
330
|
"stats.toolCalls": "Tool Calls",
|
|
324
331
|
"stats.cacheHit": "Cache Hit",
|
|
325
332
|
"stats.cost": "Cost",
|
|
326
|
-
"stats.costTip": "Rough cumulative cost of the whole session at
|
|
327
|
-
"stats.
|
|
333
|
+
"stats.costTip": "Rough cumulative cost of the whole session at the models.dev list prices; the CNY display converts at 1 CNY = 0.15 USD. Prices are for reference only.",
|
|
334
|
+
"stats.costTipDeepseek": "DeepSeek bills peak windows (Beijing Time weekdays 09:00–12:00, 14:00–18:00) at list price; all other hours are half price.",
|
|
335
|
+
"stats.costPriceHead": "Per-1M-token rates:",
|
|
336
|
+
"stats.costPriceHeadPair": "Per-1M-token rates (peak|off-peak):",
|
|
328
337
|
"stats.costHit": "hit",
|
|
329
338
|
"stats.costMiss": "miss",
|
|
339
|
+
"stats.costWrite": "write",
|
|
330
340
|
"stats.costOut": "output",
|
|
341
|
+
"stats.costUnavailable": "Model prices are unavailable (retrying automatically) — the cost cannot be estimated yet.",
|
|
331
342
|
"timing.title": "Timing Stats",
|
|
332
343
|
"timing.total": "Active Time",
|
|
333
344
|
"timing.ttft": "TTFT",
|
|
@@ -361,6 +372,7 @@ window.__ModuleLoader__.load({
|
|
|
361
372
|
"placement.all": "All",
|
|
362
373
|
"settings.gran": "Trend Chart · Default granularity",
|
|
363
374
|
"settings.mode": "Trend Chart · Default display",
|
|
375
|
+
"settings.toolSort": "Tool Schemas · Default sort",
|
|
364
376
|
"settings.fileSort": "File Activity · Default sort",
|
|
365
377
|
"settings.expand": "Expand",
|
|
366
378
|
"settings.collapse": "Collapse",
|
|
@@ -556,8 +568,10 @@ window.__ModuleLoader__.load({
|
|
|
556
568
|
"tool.jsonHide": "Collapse",
|
|
557
569
|
"tool.search": "Filter by name, description, or parameters…",
|
|
558
570
|
"tool.sort.size": "By size",
|
|
571
|
+
"tool.sort.count": "By calls",
|
|
559
572
|
"tool.sort.name": "By name",
|
|
560
|
-
"tool.sortTip": "Sort tools by
|
|
573
|
+
"tool.sortTip": "Sort tools by call count in the shown step (default), token size, or name",
|
|
574
|
+
"tool.hitsTip": "Times this tool was called and answered within the shown step’s context",
|
|
561
575
|
"tool.noMatch": "No tools match the current filter",
|
|
562
576
|
"rich.raw": "Raw",
|
|
563
577
|
"rich.md": "Markdown",
|
|
@@ -708,27 +722,27 @@ window.__ModuleLoader__.load({
|
|
|
708
722
|
const CATS = [
|
|
709
723
|
{
|
|
710
724
|
key: "system",
|
|
711
|
-
color: "
|
|
725
|
+
color: "var(--color-indigo-500)"
|
|
712
726
|
},
|
|
713
727
|
{
|
|
714
728
|
key: "tools",
|
|
715
|
-
color: "
|
|
729
|
+
color: "var(--color-amber-500)"
|
|
716
730
|
},
|
|
717
731
|
{
|
|
718
732
|
key: "user",
|
|
719
|
-
color: "
|
|
733
|
+
color: "var(--color-green-500)"
|
|
720
734
|
},
|
|
721
735
|
{
|
|
722
736
|
key: "inject",
|
|
723
|
-
color: "
|
|
737
|
+
color: "var(--color-purple-500)"
|
|
724
738
|
},
|
|
725
739
|
{
|
|
726
740
|
key: "assistant",
|
|
727
|
-
color: "
|
|
741
|
+
color: "var(--color-blue-500)"
|
|
728
742
|
},
|
|
729
743
|
{
|
|
730
744
|
key: "tool",
|
|
731
|
-
color: "
|
|
745
|
+
color: "var(--color-teal-500)"
|
|
732
746
|
}
|
|
733
747
|
];
|
|
734
748
|
/** Category key → bar color, for per-item bands (the browser's DNA mode) that bypass the CATS-order part builders. */
|
|
@@ -833,7 +847,7 @@ window.__ModuleLoader__.load({
|
|
|
833
847
|
value: 0
|
|
834
848
|
})), {
|
|
835
849
|
key: "output",
|
|
836
|
-
color: "
|
|
850
|
+
color: "var(--color-pink-500)",
|
|
837
851
|
value: Math.max(0, usage.outputTokens)
|
|
838
852
|
}];
|
|
839
853
|
}
|
|
@@ -966,6 +980,51 @@ window.__ModuleLoader__.load({
|
|
|
966
980
|
};
|
|
967
981
|
}
|
|
968
982
|
/**
|
|
983
|
+
* The session-cost raw material, re-proved per provider/model/period/bucket
|
|
984
|
+
* (the shape the client's cost.ts prices): a branch, model, or period that
|
|
985
|
+
* is not a plain record drops whole — never a half-proved row — and bucket
|
|
986
|
+
* fields zero out via numOf, so garbage can only price as zero, never as
|
|
987
|
+
* NaN. Absent stays absent.
|
|
988
|
+
*/
|
|
989
|
+
function costOf(value) {
|
|
990
|
+
const data = asRecord(value);
|
|
991
|
+
if (data === null || Array.isArray(data)) return void 0;
|
|
992
|
+
const out = {};
|
|
993
|
+
for (const provider of Object.keys(data)) {
|
|
994
|
+
const models = asRecord(data[provider]);
|
|
995
|
+
if (models === null || Array.isArray(models)) continue;
|
|
996
|
+
const branch = {};
|
|
997
|
+
for (const model of Object.keys(models)) {
|
|
998
|
+
const periods = asRecord(models[model]);
|
|
999
|
+
if (periods === null || Array.isArray(periods)) continue;
|
|
1000
|
+
const copy = {};
|
|
1001
|
+
for (const period of ["peak", "off"]) {
|
|
1002
|
+
const b = asRecord(periods[period]);
|
|
1003
|
+
if (b === null || Array.isArray(b)) continue;
|
|
1004
|
+
copy[period] = {
|
|
1005
|
+
uncached: numOf(b.uncached),
|
|
1006
|
+
cacheRead: numOf(b.cacheRead),
|
|
1007
|
+
cacheWrite: numOf(b.cacheWrite),
|
|
1008
|
+
output: numOf(b.output)
|
|
1009
|
+
};
|
|
1010
|
+
}
|
|
1011
|
+
branch[model] = copy;
|
|
1012
|
+
}
|
|
1013
|
+
out[provider] = branch;
|
|
1014
|
+
}
|
|
1015
|
+
return out;
|
|
1016
|
+
}
|
|
1017
|
+
/** The fast-path structural check for `cost`: every branch is a plain record (bucket fields re-prove in costOf/cost.ts). */
|
|
1018
|
+
function costFastOk(value) {
|
|
1019
|
+
if (value === void 0) return true;
|
|
1020
|
+
const data = asRecord(value);
|
|
1021
|
+
if (data === null || Array.isArray(data)) return false;
|
|
1022
|
+
return Object.keys(data).every((provider) => {
|
|
1023
|
+
const models = asRecord(data[provider]);
|
|
1024
|
+
return models !== null && !Array.isArray(models);
|
|
1025
|
+
});
|
|
1026
|
+
}
|
|
1027
|
+
/**
|
|
969
1028
|
* Narrow a delivered projection value to a RENDER-SAFE context timeline —
|
|
970
1029
|
* the client's no-white-screen guarantee against backend/parse failures.
|
|
971
1030
|
*
|
|
@@ -990,9 +1049,9 @@ window.__ModuleLoader__.load({
|
|
|
990
1049
|
"assistant",
|
|
991
1050
|
"tool",
|
|
992
1051
|
"total"
|
|
993
|
-
].every((k) => typeof current[k] === "number") && recordsOnly(data.requests) && recordsOnly(data.events) && recordsOnly(data.nodes) && recordsOnly(data.archive) && systemsFastOk(data.systems) && timingFastOk(data.timing)) return data;
|
|
1052
|
+
].every((k) => typeof current[k] === "number") && recordsOnly(data.requests) && recordsOnly(data.events) && recordsOnly(data.nodes) && recordsOnly(data.archive) && systemsFastOk(data.systems) && timingFastOk(data.timing) && costFastOk(data.cost)) return data;
|
|
994
1053
|
const safeCurrent = current !== null && typeof current === "object" ? current : {};
|
|
995
|
-
const cost =
|
|
1054
|
+
const cost = costOf(data.cost);
|
|
996
1055
|
const timing = timingOf(data.timing);
|
|
997
1056
|
const unsupported = unsupportedOf(data.unsupported);
|
|
998
1057
|
const counts = countsOf(data.counts);
|
|
@@ -2397,7 +2456,7 @@ window.__ModuleLoader__.load({
|
|
|
2397
2456
|
className: cls,
|
|
2398
2457
|
children: props.onRetry !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2399
2458
|
type: "button",
|
|
2400
|
-
className: "lc-br-retry",
|
|
2459
|
+
className: "lc-br-retry hover:brightness-[1.15]",
|
|
2401
2460
|
onClick: props.onRetry,
|
|
2402
2461
|
children: t("detail.loadFailed")
|
|
2403
2462
|
}) : t("detail.loadFailed")
|
|
@@ -2487,7 +2546,7 @@ window.__ModuleLoader__.load({
|
|
|
2487
2546
|
if (state === "absent") return t("browser.notInLog");
|
|
2488
2547
|
if (state === "failed") return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
2489
2548
|
type: "button",
|
|
2490
|
-
className: "lc-br-retry",
|
|
2549
|
+
className: "lc-br-retry hover:brightness-[1.15]",
|
|
2491
2550
|
onClick: onRetry,
|
|
2492
2551
|
children: t("browser.loadFailed")
|
|
2493
2552
|
});
|
|
@@ -2835,7 +2894,7 @@ window.__ModuleLoader__.load({
|
|
|
2835
2894
|
};
|
|
2836
2895
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
2837
2896
|
type: "button",
|
|
2838
|
-
className: "lc-att-item",
|
|
2897
|
+
className: "lc-att-item hover:border-(--dsw-alias-label-dimmed) hover:bg-[var(--dsw-alias-interactive-bg-hover,var(--dsw-alias-bg-layer-2))]",
|
|
2839
2898
|
title: error ? t("attach.loadFailed") : t("attach.open"),
|
|
2840
2899
|
onClick: activate,
|
|
2841
2900
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -3112,7 +3171,7 @@ window.__ModuleLoader__.load({
|
|
|
3112
3171
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
3113
3172
|
className: "lc-br-toolctl",
|
|
3114
3173
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
3115
|
-
className: "lc-br-tool-search",
|
|
3174
|
+
className: "lc-br-tool-search focus:border-(--dsw-alias-label-dimmed)",
|
|
3116
3175
|
value: props.value,
|
|
3117
3176
|
placeholder: props.placeholder,
|
|
3118
3177
|
onChange: (ev) => {
|
|
@@ -3175,7 +3234,7 @@ window.__ModuleLoader__.load({
|
|
|
3175
3234
|
className: "lc-ts-json",
|
|
3176
3235
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
3177
3236
|
type: "button",
|
|
3178
|
-
className: "lc-ts-json-toggle",
|
|
3237
|
+
className: "lc-ts-json-toggle hover:text-(--dsw-alias-label-primary) hover:underline",
|
|
3179
3238
|
onClick: () => {
|
|
3180
3239
|
setJsonOpen((o) => !o);
|
|
3181
3240
|
},
|
|
@@ -3438,7 +3497,7 @@ window.__ModuleLoader__.load({
|
|
|
3438
3497
|
* context) stays a hoverable/clickable filament instead of a sub-pixel sliver. Tooltips still report true shares.
|
|
3439
3498
|
*/
|
|
3440
3499
|
const DNA_MIN_BAND = .35;
|
|
3441
|
-
function makeContextBrowser(kit, StackedBar) {
|
|
3500
|
+
function makeContextBrowser(kit, StackedBar, settings) {
|
|
3442
3501
|
const { t, fmt, fmtTime, catLabel } = kit;
|
|
3443
3502
|
const DetailNote = makeDetailNote(kit);
|
|
3444
3503
|
const nodeText = makeNodeText(kit);
|
|
@@ -3451,7 +3510,7 @@ window.__ModuleLoader__.load({
|
|
|
3451
3510
|
const [openCat, setOpenCat] = (0, react.useState)(null);
|
|
3452
3511
|
const [openElem, setOpenElem] = (0, react.useState)(null);
|
|
3453
3512
|
const [rowQuery, setRowQuery] = (0, react.useState)("");
|
|
3454
|
-
const [toolSort, setToolSort] = (0, react.useState)(
|
|
3513
|
+
const [toolSort, setToolSort] = (0, react.useState)(() => settings.defaultToolSort());
|
|
3455
3514
|
const [dna, setDna] = (0, react.useState)(false);
|
|
3456
3515
|
const [dnaKey, setDnaKey] = (0, react.useState)(null);
|
|
3457
3516
|
const onOpenCat = props.onOpenCat;
|
|
@@ -3527,6 +3586,9 @@ window.__ModuleLoader__.load({
|
|
|
3527
3586
|
const prevView = refReq !== null ? assemble(data, headers, refReq.seq) : null;
|
|
3528
3587
|
const prevByCat = prevView !== null ? byCatOf(prevView) : null;
|
|
3529
3588
|
const byCat = byCatOf(view);
|
|
3589
|
+
const toolHits = /* @__PURE__ */ new Map();
|
|
3590
|
+
for (const n of view.nodes) if (n.cat === "tool" && n.tool !== void 0) toolHits.set(n.tool, (toolHits.get(n.tool) ?? 0) + 1);
|
|
3591
|
+
const toolHitsOf = (tool) => toolHits.get(tool.name) ?? 0;
|
|
3530
3592
|
const dnaLabel = (it) => {
|
|
3531
3593
|
let base;
|
|
3532
3594
|
if (!("node" in it)) base = it.cat === "system" ? catLabel("system") : it.key.slice(5);
|
|
@@ -3591,7 +3653,7 @@ window.__ModuleLoader__.load({
|
|
|
3591
3653
|
className: "lc-br-elem" + (open ? " lc-br-elem-on" : ""),
|
|
3592
3654
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
3593
3655
|
type: "button",
|
|
3594
|
-
className: "lc-br-elem-row",
|
|
3656
|
+
className: "lc-br-elem-row hover:bg-(--dsw-alias-interactive-bg-hover)",
|
|
3595
3657
|
onClick: () => {
|
|
3596
3658
|
toggleElem(key);
|
|
3597
3659
|
},
|
|
@@ -3670,13 +3732,17 @@ window.__ModuleLoader__.load({
|
|
|
3670
3732
|
const row = contentByName.get(tool.name);
|
|
3671
3733
|
if (row === void 0) return false;
|
|
3672
3734
|
return (row.description ?? "").toLowerCase().includes(q) || schemaTextOf(row.schema).toLowerCase().includes(q);
|
|
3673
|
-
}).sort((a, b) => toolSort === "size" ? b.tokens - a.tokens : a.name < b.name ? -1 : 1);
|
|
3735
|
+
}).sort((a, b) => toolSort === "count" ? toolHitsOf(b) - toolHitsOf(a) || (a.name < b.name ? -1 : 1) : toolSort === "size" ? b.tokens - a.tokens : a.name < b.name ? -1 : 1);
|
|
3674
3736
|
const toolctl = /* @__PURE__ */ (0, react_jsx_runtime.jsx)(RowToolbar, {
|
|
3675
3737
|
value: rowQuery,
|
|
3676
3738
|
placeholder: t("tool.search"),
|
|
3677
3739
|
tip: t("tool.sortTip"),
|
|
3678
3740
|
onChange: setRowQuery,
|
|
3679
|
-
children: [
|
|
3741
|
+
children: [
|
|
3742
|
+
"size",
|
|
3743
|
+
"count",
|
|
3744
|
+
"name"
|
|
3745
|
+
].map((k) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
3680
3746
|
type: "button",
|
|
3681
3747
|
className: "lc-gran-btn" + (toolSort === k ? " lc-gran-on" : ""),
|
|
3682
3748
|
onClick: () => {
|
|
@@ -3707,11 +3773,15 @@ window.__ModuleLoader__.load({
|
|
|
3707
3773
|
});
|
|
3708
3774
|
};
|
|
3709
3775
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [toolctl, shown.map((tool) => {
|
|
3710
|
-
const trailing = tool.plugin !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
3776
|
+
const trailing = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [tool.plugin !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
3711
3777
|
className: "lc-br-tag lc-br-tool-plugin",
|
|
3712
3778
|
title: tool.plugin === "<unknown-plugin>" ? t("tool.unknownTitle") : t("tool.plugin"),
|
|
3713
3779
|
children: tool.plugin === "<unknown-plugin>" ? t("tool.unknown") : tool.plugin
|
|
3714
|
-
}) : null
|
|
3780
|
+
}) : null, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
3781
|
+
className: "lc-br-hits",
|
|
3782
|
+
title: t("tool.hitsTip"),
|
|
3783
|
+
children: "×" + fmt(toolHitsOf(tool))
|
|
3784
|
+
})] });
|
|
3715
3785
|
return elemRow("tool:" + tool.name, null, tool.name, tool.tokens, void 0, toolBody(tool), false, trailing);
|
|
3716
3786
|
})] });
|
|
3717
3787
|
}
|
|
@@ -3884,7 +3954,7 @@ window.__ModuleLoader__.load({
|
|
|
3884
3954
|
className: "lc-br-cat" + (openable ? "" : " lc-br-cat-empty"),
|
|
3885
3955
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
3886
3956
|
type: "button",
|
|
3887
|
-
className: "lc-br-cat-row" + (linked && props.hoverKey === c.key ? " lc-br-cat-on" : ""),
|
|
3957
|
+
className: "lc-br-cat-row hover:bg-(--dsw-alias-interactive-bg-hover)" + (linked && props.hoverKey === c.key ? " lc-br-cat-on" : ""),
|
|
3888
3958
|
/* v8 ignore start -- the handlers exist only when linked,
|
|
3889
3959
|
and linked already requires onHoverKey defined (above). */
|
|
3890
3960
|
onMouseEnter: linked ? () => {
|
|
@@ -4038,7 +4108,7 @@ window.__ModuleLoader__.load({
|
|
|
4038
4108
|
visible.map((p, i) => {
|
|
4039
4109
|
const on = props.hoverKey !== void 0 && (props.hoverKey === p.key || p.group !== void 0 && props.hoverKey === p.group);
|
|
4040
4110
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
4041
|
-
className: "lc-stacked-seg" + (on ? " lc-stacked-seg-on" : "") + (pickKey !== void 0 ? " lc-stacked-seg-pick" : ""),
|
|
4111
|
+
className: "lc-stacked-seg animate-lc-stacked-in motion-reduce:animate-none" + (on ? " lc-stacked-seg-on" : "") + (pickKey !== void 0 ? " lc-stacked-seg-pick" : ""),
|
|
4042
4112
|
style: {
|
|
4043
4113
|
width: `${widths[i]}%`,
|
|
4044
4114
|
backgroundColor: p.color,
|
|
@@ -4053,7 +4123,7 @@ window.__ModuleLoader__.load({
|
|
|
4053
4123
|
}, p.key);
|
|
4054
4124
|
}),
|
|
4055
4125
|
free > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
4056
|
-
className: "lc-stacked-free" + (props.hoverKey === "free" ? " lc-stacked-free-on" : ""),
|
|
4126
|
+
className: "lc-stacked-free animate-lc-stacked-in motion-reduce:animate-none" + (props.hoverKey === "free" ? " lc-stacked-free-on" : ""),
|
|
4057
4127
|
style: {
|
|
4058
4128
|
width: `${free / scale * 100}%`,
|
|
4059
4129
|
"--lc-i": Math.min(visible.length, 9)
|
|
@@ -4207,7 +4277,7 @@ window.__ModuleLoader__.load({
|
|
|
4207
4277
|
}),
|
|
4208
4278
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
4209
4279
|
type: "button",
|
|
4210
|
-
className: "lc-error-retry",
|
|
4280
|
+
className: "lc-error-retry hover:border-(--dsw-alias-label-primary)",
|
|
4211
4281
|
onClick: () => {
|
|
4212
4282
|
this.setState({ error: null });
|
|
4213
4283
|
},
|
|
@@ -4253,11 +4323,11 @@ window.__ModuleLoader__.load({
|
|
|
4253
4323
|
* current-composition overview and the shared Context browser; rendered from the `conversation.input.overlay` slot and opened/closed
|
|
4254
4324
|
* through the per-session modal store, so the trigger flips it and no message ever enters session history.
|
|
4255
4325
|
*/
|
|
4256
|
-
function makeContextModal(ctx, kit) {
|
|
4326
|
+
function makeContextModal(ctx, kit, settings) {
|
|
4257
4327
|
const { t } = kit;
|
|
4258
4328
|
const StackedBar = makeStackedBar(kit);
|
|
4259
4329
|
const CurrentComposition = makeCurrentComposition(kit, StackedBar, makeLegend(kit));
|
|
4260
|
-
const ContextBrowser = makeContextBrowser(kit, StackedBar);
|
|
4330
|
+
const ContextBrowser = makeContextBrowser(kit, StackedBar, settings);
|
|
4261
4331
|
const ErrorBoundary = makeErrorBoundary(t);
|
|
4262
4332
|
function ContextModalBody(props) {
|
|
4263
4333
|
const sessionId = typeof props.sessionId === "string" ? props.sessionId : "";
|
|
@@ -4320,7 +4390,7 @@ window.__ModuleLoader__.load({
|
|
|
4320
4390
|
className: "lc-modal-title",
|
|
4321
4391
|
children: t("tab")
|
|
4322
4392
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
4323
|
-
className: "lc-modal-close",
|
|
4393
|
+
className: "lc-modal-close hover:text-(--dsw-alias-label-primary) hover:bg-(--dsw-alias-bg-layer-2)",
|
|
4324
4394
|
"aria-label": t("cmd.close"),
|
|
4325
4395
|
onClick: close,
|
|
4326
4396
|
children: "×"
|
|
@@ -4442,7 +4512,7 @@ window.__ModuleLoader__.load({
|
|
|
4442
4512
|
portal: true,
|
|
4443
4513
|
anchor: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
4444
4514
|
type: "button",
|
|
4445
|
-
className: "lc-settings-select",
|
|
4515
|
+
className: "lc-settings-select hover:enabled:bg-(--dsw-alias-interactive-bg-hover) disabled:opacity-50 disabled:cursor-default",
|
|
4446
4516
|
disabled: props.disabled,
|
|
4447
4517
|
"aria-haspopup": "menu",
|
|
4448
4518
|
"aria-expanded": open,
|
|
@@ -4550,6 +4620,28 @@ window.__ModuleLoader__.load({
|
|
|
4550
4620
|
props.set?.("defaultTrendMode", id);
|
|
4551
4621
|
}
|
|
4552
4622
|
}),
|
|
4623
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PrefRow, {
|
|
4624
|
+
label: t("settings.toolSort"),
|
|
4625
|
+
value: state.toolSort,
|
|
4626
|
+
disabled,
|
|
4627
|
+
options: [
|
|
4628
|
+
{
|
|
4629
|
+
id: "size",
|
|
4630
|
+
label: t("tool.sort.size")
|
|
4631
|
+
},
|
|
4632
|
+
{
|
|
4633
|
+
id: "count",
|
|
4634
|
+
label: t("tool.sort.count")
|
|
4635
|
+
},
|
|
4636
|
+
{
|
|
4637
|
+
id: "name",
|
|
4638
|
+
label: t("tool.sort.name")
|
|
4639
|
+
}
|
|
4640
|
+
],
|
|
4641
|
+
onPick: (id) => {
|
|
4642
|
+
props.set?.("defaultToolSort", id);
|
|
4643
|
+
}
|
|
4644
|
+
}),
|
|
4553
4645
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PrefRow, {
|
|
4554
4646
|
label: t("settings.fileSort"),
|
|
4555
4647
|
value: state.fileSort,
|
|
@@ -4586,6 +4678,7 @@ window.__ModuleLoader__.load({
|
|
|
4586
4678
|
...v.defaultPlacement === "all" || v.defaultPlacement === "tab" || v.defaultPlacement === "sidebar" ? { placement: v.defaultPlacement } : {},
|
|
4587
4679
|
...v.defaultGranularity === "step" || v.defaultGranularity === "turn" ? { granularity: v.defaultGranularity } : {},
|
|
4588
4680
|
...v.defaultTrendMode === "total" || v.defaultTrendMode === "delta" ? { mode: v.defaultTrendMode } : {},
|
|
4681
|
+
...v.defaultToolSort === "size" || v.defaultToolSort === "count" || v.defaultToolSort === "name" ? { toolSort: v.defaultToolSort } : {},
|
|
4589
4682
|
...v.defaultFileSort === "count" || v.defaultFileSort === "latest" || v.defaultFileSort === "path" ? { fileSort: v.defaultFileSort } : {}
|
|
4590
4683
|
};
|
|
4591
4684
|
}
|
|
@@ -4595,13 +4688,14 @@ window.__ModuleLoader__.load({
|
|
|
4595
4688
|
placement: "all",
|
|
4596
4689
|
granularity: "step",
|
|
4597
4690
|
mode: "total",
|
|
4691
|
+
toolSort: "count",
|
|
4598
4692
|
fileSort: "count",
|
|
4599
4693
|
writable: false
|
|
4600
4694
|
};
|
|
4601
4695
|
let scope;
|
|
4602
4696
|
const listeners = /* @__PURE__ */ new Set();
|
|
4603
4697
|
const publish = (next) => {
|
|
4604
|
-
if (next.status === state.status && next.placement === state.placement && next.granularity === state.granularity && next.mode === state.mode && next.fileSort === state.fileSort && next.writable === state.writable) return;
|
|
4698
|
+
if (next.status === state.status && next.placement === state.placement && next.granularity === state.granularity && next.mode === state.mode && next.toolSort === state.toolSort && next.fileSort === state.fileSort && next.writable === state.writable) return;
|
|
4605
4699
|
state = next;
|
|
4606
4700
|
for (const listener of listeners) listener();
|
|
4607
4701
|
};
|
|
@@ -4614,6 +4708,7 @@ window.__ModuleLoader__.load({
|
|
|
4614
4708
|
placement: prefs.placement ?? (rawPlacement === void 0 ? state.placement : "all"),
|
|
4615
4709
|
granularity: prefs.granularity ?? state.granularity,
|
|
4616
4710
|
mode: prefs.mode ?? state.mode,
|
|
4711
|
+
toolSort: prefs.toolSort ?? state.toolSort,
|
|
4617
4712
|
fileSort: prefs.fileSort ?? state.fileSort,
|
|
4618
4713
|
writable: snap.writable
|
|
4619
4714
|
});
|
|
@@ -4632,6 +4727,7 @@ window.__ModuleLoader__.load({
|
|
|
4632
4727
|
defaultPlacement: () => state.placement,
|
|
4633
4728
|
defaultGranularity: () => state.granularity,
|
|
4634
4729
|
defaultTrendMode: () => state.mode,
|
|
4730
|
+
defaultToolSort: () => state.toolSort,
|
|
4635
4731
|
defaultFileSort: () => state.fileSort,
|
|
4636
4732
|
attach(bound) {
|
|
4637
4733
|
scope = bound;
|
|
@@ -5925,9 +6021,9 @@ window.__ModuleLoader__.load({
|
|
|
5925
6021
|
/** Fallback arc color for pressure-only nodes (no composition data), by fill ratio. */
|
|
5926
6022
|
function ringColorOf(pct) {
|
|
5927
6023
|
if (pct === null) return "var(--dsw-alias-border-l1)";
|
|
5928
|
-
if (pct >= 90) return "
|
|
5929
|
-
if (pct >= 70) return "
|
|
5930
|
-
return "
|
|
6024
|
+
if (pct >= 90) return "var(--color-red-500)";
|
|
6025
|
+
if (pct >= 70) return "var(--color-amber-500)";
|
|
6026
|
+
return "var(--color-green-500)";
|
|
5931
6027
|
}
|
|
5932
6028
|
function makeAgentGraph(ctx, kit) {
|
|
5933
6029
|
const { t, fmt, catLabel } = kit;
|
|
@@ -6052,15 +6148,14 @@ window.__ModuleLoader__.load({
|
|
|
6052
6148
|
children: [layout.links.map((link) => {
|
|
6053
6149
|
const d = `M ${link.x1} ${link.y1} L ${link.x2} ${link.y2}`;
|
|
6054
6150
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("g", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
6055
|
-
className: "lc-agents-link" + (link.running ? " lc-agents-link-live" : ""),
|
|
6151
|
+
className: "lc-agents-link stroke-[1.5px] stroke-opacity-45" + (link.running ? " lc-agents-link-live" : ""),
|
|
6056
6152
|
d,
|
|
6057
6153
|
stroke: link.color,
|
|
6058
6154
|
fill: "none"
|
|
6059
6155
|
}), link.running ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("path", {
|
|
6060
|
-
className: "lc-agents-flow",
|
|
6156
|
+
className: "lc-agents-flow animate-lc-agent-flow fill-none stroke-2",
|
|
6061
6157
|
d,
|
|
6062
|
-
stroke: link.color
|
|
6063
|
-
fill: "none"
|
|
6158
|
+
stroke: link.color
|
|
6064
6159
|
}) : null] }, link.to);
|
|
6065
6160
|
}), forest.nodes.map((node) => {
|
|
6066
6161
|
const point = layout.points.find((p) => p.id === node.id);
|
|
@@ -6118,7 +6213,7 @@ window.__ModuleLoader__.load({
|
|
|
6118
6213
|
const pct = node.head !== null ? node.head.pct : null;
|
|
6119
6214
|
const ring = 2 * Math.PI * 20;
|
|
6120
6215
|
const segs = node.head !== null ? ringSegments(node.head.parts, pct, 20, ringColorOf(pct)) : [];
|
|
6121
|
-
const cls = "lc-agent-node" + (node.isCurrent ? " lc-agent-self" : "") + (node.running ? " lc-agent-running" : "") + (node.completed && !node.running ? " lc-agent-done" : "") + (props.hovered ? " lc-agent-hover" : "") + (node.isCurrent ? "" : " lc-agent-clickable");
|
|
6216
|
+
const cls = "lc-agent-node" + (node.isCurrent ? " lc-agent-self" : "") + (node.running ? " lc-agent-running" : "") + (node.completed && !node.running ? " lc-agent-done" : "") + (props.hovered ? " lc-agent-hover" : "") + (node.isCurrent ? "" : " lc-agent-clickable") + " group/agent";
|
|
6122
6217
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("g", {
|
|
6123
6218
|
className: cls,
|
|
6124
6219
|
transform: `translate(${x}, ${y})`,
|
|
@@ -6137,23 +6232,23 @@ window.__ModuleLoader__.load({
|
|
|
6137
6232
|
},
|
|
6138
6233
|
children: [
|
|
6139
6234
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
6140
|
-
className: "lc-agent-halo",
|
|
6235
|
+
className: "lc-agent-halo fill-transparent group-hover/agent:fill-[var(--dsw-alias-interactive-bg-hover,var(--dsw-alias-bg-layer-2))] group-focus-visible/agent:fill-[var(--dsw-alias-interactive-bg-hover,var(--dsw-alias-bg-layer-2))]" + (node.running ? " animate-lc-agent-glow" : ""),
|
|
6141
6236
|
r: 35
|
|
6142
6237
|
}),
|
|
6143
6238
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
6144
|
-
className: "lc-agent-track",
|
|
6239
|
+
className: "lc-agent-track fill-(--dsw-alias-bg-layer-1) stroke-(--dsw-alias-border-l1) stroke-[1.5px]",
|
|
6145
6240
|
r: 26
|
|
6146
6241
|
}),
|
|
6147
6242
|
segs.map((seg) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
6148
|
-
className: "lc-agent-seg" + (seg.free ? " lc-agent-free" : ""),
|
|
6243
|
+
className: "lc-agent-seg fill-none stroke-9" + (seg.free ? " lc-agent-free" : ""),
|
|
6149
6244
|
r: 20,
|
|
6150
|
-
stroke: seg.free ? void 0 : seg.color,
|
|
6151
6245
|
strokeDasharray: `${seg.len} ${ring - seg.len}`,
|
|
6152
6246
|
strokeDashoffset: -seg.offset,
|
|
6247
|
+
style: { stroke: seg.free ? void 0 : seg.color },
|
|
6153
6248
|
transform: "rotate(-90)"
|
|
6154
6249
|
}, seg.key)),
|
|
6155
6250
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("text", {
|
|
6156
|
-
className: "lc-agent-pct",
|
|
6251
|
+
className: "lc-agent-pct fill-(--dsw-alias-label-primary)",
|
|
6157
6252
|
textAnchor: "middle",
|
|
6158
6253
|
dy: "0.32em",
|
|
6159
6254
|
children: pct !== null ? `${pct}%` : node.head !== null ? props.fmt(node.head.tokens) : "—"
|
|
@@ -6268,7 +6363,7 @@ window.__ModuleLoader__.load({
|
|
|
6268
6363
|
}
|
|
6269
6364
|
const hovering = props.hoverKey !== null && props.hoverKey !== void 0 && arcs.some((a) => a.key === props.hoverKey);
|
|
6270
6365
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
6271
|
-
className: "lc-donut" + (hovering ? " lc-donut-dim" : ""),
|
|
6366
|
+
className: "lc-donut @max-[240px]/lc-card:mx-auto" + (hovering ? " lc-donut-dim" : ""),
|
|
6272
6367
|
style: {
|
|
6273
6368
|
width: size,
|
|
6274
6369
|
height: size
|
|
@@ -6282,23 +6377,21 @@ window.__ModuleLoader__.load({
|
|
|
6282
6377
|
height: size,
|
|
6283
6378
|
"aria-hidden": "true",
|
|
6284
6379
|
children: arcs.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
6285
|
-
className: "lc-donut-track",
|
|
6380
|
+
className: "lc-donut-track fill-none stroke-4",
|
|
6286
6381
|
cx: "21",
|
|
6287
6382
|
cy: "21",
|
|
6288
|
-
r: "15.9155"
|
|
6289
|
-
fill: "none",
|
|
6290
|
-
strokeWidth: "4"
|
|
6383
|
+
r: "15.9155"
|
|
6291
6384
|
}) : arcs.map((a, i) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("circle", {
|
|
6292
|
-
className: "lc-donut-seg" + (props.hoverKey === a.key ? " lc-donut-seg-on" : ""),
|
|
6385
|
+
className: "lc-donut-seg fill-none stroke-4 animate-lc-donut-in motion-reduce:animate-none" + (props.hoverKey === a.key ? " lc-donut-seg-on" : ""),
|
|
6293
6386
|
cx: "21",
|
|
6294
6387
|
cy: "21",
|
|
6295
6388
|
r: "15.9155",
|
|
6296
|
-
fill: "none",
|
|
6297
|
-
stroke: a.color,
|
|
6298
|
-
strokeWidth: "4",
|
|
6299
6389
|
strokeDasharray: `${a.len} ${100 - a.len}`,
|
|
6300
6390
|
strokeDashoffset: a.offset,
|
|
6301
|
-
style: {
|
|
6391
|
+
style: {
|
|
6392
|
+
"--lc-i": i,
|
|
6393
|
+
stroke: a.color
|
|
6394
|
+
},
|
|
6302
6395
|
onMouseEnter: () => {
|
|
6303
6396
|
if (props.onHoverKey !== void 0) props.onHoverKey(a.key);
|
|
6304
6397
|
}
|
|
@@ -6430,7 +6523,7 @@ window.__ModuleLoader__.load({
|
|
|
6430
6523
|
const at = eventAt(ev);
|
|
6431
6524
|
const glyph = ev.kind === "inject" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconPlusOutline16, {}) : ev.kind === "model" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.IconBranchOutline16, {}) : EVENT_ICONS[ev.kind] || "•";
|
|
6432
6525
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
6433
|
-
className: "lc-event",
|
|
6526
|
+
className: "lc-event @max-[380px]/lc-card:flex-wrap",
|
|
6434
6527
|
children: [
|
|
6435
6528
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6436
6529
|
className: "lc-event-icon lc-event-" + ev.kind,
|
|
@@ -6441,7 +6534,7 @@ window.__ModuleLoader__.load({
|
|
|
6441
6534
|
children: t("kind." + ev.kind)
|
|
6442
6535
|
}),
|
|
6443
6536
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6444
|
-
className: "lc-event-label",
|
|
6537
|
+
className: "lc-event-label flex-1 @max-[380px]/lc-card:basis-[calc(100%-92px)]",
|
|
6445
6538
|
children: label
|
|
6446
6539
|
}),
|
|
6447
6540
|
at !== null ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -6599,7 +6692,7 @@ window.__ModuleLoader__.load({
|
|
|
6599
6692
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
6600
6693
|
className: "lc-fa-ctl",
|
|
6601
6694
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
6602
|
-
className: "lc-gran",
|
|
6695
|
+
className: "lc-gran @max-[380px]/lc-card:flex-wrap",
|
|
6603
6696
|
children: chips.map((c) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
6604
6697
|
type: "button",
|
|
6605
6698
|
className: "lc-gran-btn" + (filter === c.key ? " lc-gran-on" : "") + (c.key === "read" || c.key === "write" || c.key === "search" ? " lc-fa-chip-" + c.key : ""),
|
|
@@ -6616,7 +6709,7 @@ window.__ModuleLoader__.load({
|
|
|
6616
6709
|
})]
|
|
6617
6710
|
}, c.key))
|
|
6618
6711
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
6619
|
-
className: "lc-fa-search",
|
|
6712
|
+
className: "lc-fa-search focus:border-(--dsw-alias-label-dimmed)",
|
|
6620
6713
|
value: query,
|
|
6621
6714
|
placeholder: t("files.search"),
|
|
6622
6715
|
onChange: (ev) => {
|
|
@@ -6629,12 +6722,12 @@ window.__ModuleLoader__.load({
|
|
|
6629
6722
|
children: [
|
|
6630
6723
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("files.files", { n: activity.entries.length }) }),
|
|
6631
6724
|
activity.totals.added + activity.totals.removed > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
6632
|
-
className: "lc-fa-meta-delta",
|
|
6725
|
+
className: "lc-fa-meta-delta group/tip",
|
|
6633
6726
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(DeltaPair, {
|
|
6634
6727
|
added: activity.totals.added,
|
|
6635
6728
|
removed: activity.totals.removed
|
|
6636
6729
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6637
|
-
className: "lc-tip lc-fa-meta-tip",
|
|
6730
|
+
className: "lc-tip lc-fa-meta-tip group-hover/tip:opacity-100",
|
|
6638
6731
|
role: "tooltip",
|
|
6639
6732
|
children: t("files.deltaTip")
|
|
6640
6733
|
})]
|
|
@@ -6678,7 +6771,7 @@ window.__ModuleLoader__.load({
|
|
|
6678
6771
|
className: "lc-fa-item" + (open ? " lc-fa-item-on" : ""),
|
|
6679
6772
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
6680
6773
|
type: "button",
|
|
6681
|
-
className: "lc-fa-row",
|
|
6774
|
+
className: "lc-fa-row hover:bg-(--dsw-alias-interactive-bg-hover) @max-[380px]/lc-card:flex-wrap",
|
|
6682
6775
|
title: e.path,
|
|
6683
6776
|
onClick: () => {
|
|
6684
6777
|
setOpenPath(open ? null : e.path);
|
|
@@ -6698,9 +6791,9 @@ window.__ModuleLoader__.load({
|
|
|
6698
6791
|
}) : glyph.glyph
|
|
6699
6792
|
}),
|
|
6700
6793
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
6701
|
-
className: "lc-fa-path",
|
|
6794
|
+
className: "lc-fa-path flex-1 @max-[380px]/lc-card:basis-[calc(100%-46px)]",
|
|
6702
6795
|
children: [dir !== "" ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("em", { children: dir }) : null, openable ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", {
|
|
6703
|
-
className: "lc-fa-file",
|
|
6796
|
+
className: "lc-fa-file hover:underline",
|
|
6704
6797
|
title: t(previewable ? "files.preview" : "files.open"),
|
|
6705
6798
|
onClick: (ev) => {
|
|
6706
6799
|
ev.stopPropagation();
|
|
@@ -6745,7 +6838,7 @@ window.__ModuleLoader__.load({
|
|
|
6745
6838
|
const key = `${op.seq}:${i}`;
|
|
6746
6839
|
return onLocate !== void 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
6747
6840
|
type: "button",
|
|
6748
|
-
className: "lc-fa-op lc-fa-op-link",
|
|
6841
|
+
className: "lc-fa-op lc-fa-op-link hover:bg-(--dsw-alias-interactive-bg-hover)",
|
|
6749
6842
|
title: t("files.locate"),
|
|
6750
6843
|
onClick: () => {
|
|
6751
6844
|
onLocate(op);
|
|
@@ -6816,7 +6909,7 @@ window.__ModuleLoader__.load({
|
|
|
6816
6909
|
function makePluginInfo(kit) {
|
|
6817
6910
|
const { t } = kit;
|
|
6818
6911
|
const row = (label, value, href, hint) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("a", {
|
|
6819
|
-
className: "lc-pi-row",
|
|
6912
|
+
className: "lc-pi-row group/pi",
|
|
6820
6913
|
href,
|
|
6821
6914
|
target: "_blank",
|
|
6822
6915
|
rel: "noreferrer",
|
|
@@ -6824,7 +6917,7 @@ window.__ModuleLoader__.load({
|
|
|
6824
6917
|
className: "lc-pi-label",
|
|
6825
6918
|
children: label
|
|
6826
6919
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
6827
|
-
className: "lc-pi-value",
|
|
6920
|
+
className: "lc-pi-value group-hover/pi:underline",
|
|
6828
6921
|
title: hint,
|
|
6829
6922
|
children: value
|
|
6830
6923
|
})]
|
|
@@ -6832,7 +6925,7 @@ window.__ModuleLoader__.load({
|
|
|
6832
6925
|
return function PluginInfo() {
|
|
6833
6926
|
const [latest, setLatest] = (0, react.useState)(null);
|
|
6834
6927
|
(0, react.useEffect)(() => {
|
|
6835
|
-
if ("0.
|
|
6928
|
+
if ("0.51.0".includes("-dev")) return;
|
|
6836
6929
|
let on = true;
|
|
6837
6930
|
fetchLatestVersion().then((v) => {
|
|
6838
6931
|
if (on && v) setLatest(v);
|
|
@@ -6841,22 +6934,22 @@ window.__ModuleLoader__.load({
|
|
|
6841
6934
|
on = false;
|
|
6842
6935
|
};
|
|
6843
6936
|
}, []);
|
|
6844
|
-
const update = latest !== null && isNewerVersion(latest, "0.
|
|
6845
|
-
const nameText = "dsh-context (v0.
|
|
6937
|
+
const update = latest !== null && isNewerVersion(latest, "0.51.0") ? latest : null;
|
|
6938
|
+
const nameText = "dsh-context (v0.51.0)";
|
|
6846
6939
|
const nameValue = [nameText];
|
|
6847
6940
|
if (update) nameValue.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6848
6941
|
className: "lc-pi-update",
|
|
6849
6942
|
children: "↑ v" + update
|
|
6850
6943
|
}, "update"));
|
|
6851
6944
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
6852
|
-
className: "lc-card",
|
|
6945
|
+
className: "lc-card flex-1 min-w-[min(360px,100%)]",
|
|
6853
6946
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
6854
6947
|
className: "lc-card-title",
|
|
6855
6948
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6856
6949
|
className: "lc-card-title-text",
|
|
6857
6950
|
children: t("plugin.title")
|
|
6858
6951
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("a", {
|
|
6859
|
-
className: "lc-card-sub lc-pi-hint",
|
|
6952
|
+
className: "lc-card-sub lc-pi-hint hover:underline",
|
|
6860
6953
|
href: PLUGIN_REPO,
|
|
6861
6954
|
target: "_blank",
|
|
6862
6955
|
rel: "noreferrer",
|
|
@@ -6865,11 +6958,11 @@ window.__ModuleLoader__.load({
|
|
|
6865
6958
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
6866
6959
|
className: "lc-pi-grid",
|
|
6867
6960
|
children: [
|
|
6868
|
-
row(t("plugin.name"), nameValue, PLUGIN_REPO
|
|
6961
|
+
row(t("plugin.name"), nameValue, PLUGIN_REPO, update !== null ? nameText + " ↑ v" + update : nameText),
|
|
6869
6962
|
row(t("plugin.github"), PLUGIN_REPO_SHORT, PLUGIN_REPO, PLUGIN_REPO_SHORT),
|
|
6870
6963
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
6871
6964
|
type: "button",
|
|
6872
|
-
className: "lc-pi-row lc-pi-row-btn",
|
|
6965
|
+
className: "lc-pi-row lc-pi-row-btn group/pi",
|
|
6873
6966
|
onClick: () => {
|
|
6874
6967
|
openPluginSettings();
|
|
6875
6968
|
},
|
|
@@ -6877,7 +6970,7 @@ window.__ModuleLoader__.load({
|
|
|
6877
6970
|
className: "lc-pi-label",
|
|
6878
6971
|
children: t("plugin.settings")
|
|
6879
6972
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
6880
|
-
className: "lc-pi-value",
|
|
6973
|
+
className: "lc-pi-value group-hover/pi:underline",
|
|
6881
6974
|
title: t("plugin.settingsOpen"),
|
|
6882
6975
|
children: t("plugin.settingsOpen")
|
|
6883
6976
|
})]
|
|
@@ -6929,7 +7022,7 @@ window.__ModuleLoader__.load({
|
|
|
6929
7022
|
className: "lc-modal-title",
|
|
6930
7023
|
children: t("gate.title")
|
|
6931
7024
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
6932
|
-
className: "lc-modal-close",
|
|
7025
|
+
className: "lc-modal-close hover:text-(--dsw-alias-label-primary) hover:bg-(--dsw-alias-bg-layer-2)",
|
|
6933
7026
|
"aria-label": t("cmd.close"),
|
|
6934
7027
|
onClick: close,
|
|
6935
7028
|
children: "×"
|
|
@@ -6972,7 +7065,7 @@ window.__ModuleLoader__.load({
|
|
|
6972
7065
|
className: "lc-gate-actions",
|
|
6973
7066
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
6974
7067
|
type: "button",
|
|
6975
|
-
className: "lc-gate-ok",
|
|
7068
|
+
className: "lc-gate-ok hover:brightness-110",
|
|
6976
7069
|
onClick: close,
|
|
6977
7070
|
children: t("gate.ok")
|
|
6978
7071
|
})
|
|
@@ -6993,9 +7086,9 @@ window.__ModuleLoader__.load({
|
|
|
6993
7086
|
*/
|
|
6994
7087
|
function BriefRow(props) {
|
|
6995
7088
|
const inner = /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
6996
|
-
className: "lc-brief-tag",
|
|
7089
|
+
className: "lc-brief-tag group/tip",
|
|
6997
7090
|
children: [props.tag, /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6998
|
-
className: "lc-tip lc-brief-tip",
|
|
7091
|
+
className: "lc-tip lc-brief-tip group-hover/tip:opacity-100",
|
|
6999
7092
|
role: "tooltip",
|
|
7000
7093
|
children: props.tagTip
|
|
7001
7094
|
})]
|
|
@@ -7011,7 +7104,7 @@ window.__ModuleLoader__.load({
|
|
|
7011
7104
|
};
|
|
7012
7105
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
7013
7106
|
type: "button",
|
|
7014
|
-
className: "lc-brief-row lc-brief-row-link",
|
|
7107
|
+
className: "lc-brief-row lc-brief-row-link hover:bg-(--dsw-alias-interactive-bg-hover)",
|
|
7015
7108
|
onClick: locate,
|
|
7016
7109
|
children: inner
|
|
7017
7110
|
});
|
|
@@ -7107,7 +7200,7 @@ window.__ModuleLoader__.load({
|
|
|
7107
7200
|
const nodeChip = (n, onClick, grow = false) => {
|
|
7108
7201
|
const { tag, text } = chipParts(n, convOf(n.seq));
|
|
7109
7202
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
7110
|
-
className: "lc-brief-chip" + (grow ? " lc-brief-chip-grow" : "") + (onClick !== void 0 ? " lc-brief-chip-link" : ""),
|
|
7203
|
+
className: "lc-brief-chip" + (grow ? " lc-brief-chip-grow" : "") + (onClick !== void 0 ? " lc-brief-chip-link hover:bg-(--dsw-alias-interactive-bg-hover)" : ""),
|
|
7111
7204
|
title: factTitle(tag, text) + hint,
|
|
7112
7205
|
onClick,
|
|
7113
7206
|
children: [
|
|
@@ -7298,116 +7391,312 @@ window.__ModuleLoader__.load({
|
|
|
7298
7391
|
});
|
|
7299
7392
|
}
|
|
7300
7393
|
//#endregion
|
|
7301
|
-
//#region src/
|
|
7302
|
-
/**
|
|
7303
|
-
|
|
7304
|
-
|
|
7305
|
-
|
|
7306
|
-
|
|
7307
|
-
|
|
7308
|
-
|
|
7309
|
-
|
|
7310
|
-
|
|
7311
|
-
|
|
7312
|
-
|
|
7313
|
-
|
|
7314
|
-
}
|
|
7315
|
-
},
|
|
7316
|
-
cny: {
|
|
7317
|
-
peak: {
|
|
7318
|
-
hit: .04,
|
|
7319
|
-
miss: 2,
|
|
7320
|
-
out: 8
|
|
7321
|
-
},
|
|
7322
|
-
off: {
|
|
7323
|
-
hit: .02,
|
|
7324
|
-
miss: 1,
|
|
7325
|
-
out: 4
|
|
7326
|
-
}
|
|
7327
|
-
}
|
|
7394
|
+
//#region src/shared/providers.ts
|
|
7395
|
+
/**
|
|
7396
|
+
* The provider-id seam between dsh request envelopes and the models.dev
|
|
7397
|
+
* registry: client/cost.ts resolves price-book branches through it, and
|
|
7398
|
+
* host/fold.ts uses the DeepSeek resolution to split the session-cost totals
|
|
7399
|
+
* into peak/off-peak periods. Only the renames live here — an id absent
|
|
7400
|
+
* from the table passes through verbatim.
|
|
7401
|
+
*/
|
|
7402
|
+
const MODELS_DEV_PROVIDER_IDS = {
|
|
7403
|
+
"deepseek-official": "deepseek",
|
|
7404
|
+
"kimi-coding": "moonshotai",
|
|
7405
|
+
"minimax-cn": "minimax",
|
|
7406
|
+
"zai-coding-cn": "zhipuai"
|
|
7328
7407
|
};
|
|
7329
|
-
/** The
|
|
7330
|
-
|
|
7331
|
-
|
|
7332
|
-
|
|
7333
|
-
|
|
7334
|
-
|
|
7335
|
-
|
|
7336
|
-
|
|
7337
|
-
|
|
7338
|
-
|
|
7339
|
-
|
|
7340
|
-
|
|
7341
|
-
|
|
7342
|
-
|
|
7343
|
-
|
|
7344
|
-
|
|
7345
|
-
|
|
7346
|
-
|
|
7347
|
-
|
|
7348
|
-
|
|
7349
|
-
|
|
7350
|
-
|
|
7351
|
-
|
|
7352
|
-
|
|
7353
|
-
|
|
7408
|
+
/** The models.dev provider id that prices a dsh provider (identity for unmapped ids). */
|
|
7409
|
+
function modelsDevProviderOf(dshProviderId) {
|
|
7410
|
+
return MODELS_DEV_PROVIDER_IDS[dshProviderId] ?? dshProviderId;
|
|
7411
|
+
}
|
|
7412
|
+
/** Whether a dsh provider prices through DeepSeek's period-based list (peak / half-price off-peak). */
|
|
7413
|
+
function isDeepSeekProvider(dshProviderId) {
|
|
7414
|
+
return modelsDevProviderOf(dshProviderId) === "deepseek";
|
|
7415
|
+
}
|
|
7416
|
+
//#endregion
|
|
7417
|
+
//#region src/client/cost.ts
|
|
7418
|
+
/** 1 CNY = 0.15 USD — the fixed CNY-display conversion rate. */
|
|
7419
|
+
const USD_PER_CNY = .15;
|
|
7420
|
+
/** Off-peak DeepSeek rates are half the peak rates (the official list). */
|
|
7421
|
+
const OFF_PEAK_FACTOR = .5;
|
|
7422
|
+
/** A USD amount in the display currency (CNY divides the fixed rate). */
|
|
7423
|
+
function toCurrency(usd, currency) {
|
|
7424
|
+
return currency === "cny" ? usd / USD_PER_CNY : usd;
|
|
7425
|
+
}
|
|
7426
|
+
/** One rate triple at the half-price off-peak rate (the tooltip's `peak | off` pair). */
|
|
7427
|
+
function offPeakOf(rate) {
|
|
7428
|
+
return {
|
|
7429
|
+
hit: rate.hit * OFF_PEAK_FACTOR,
|
|
7430
|
+
miss: rate.miss * OFF_PEAK_FACTOR,
|
|
7431
|
+
write: rate.write * OFF_PEAK_FACTOR,
|
|
7432
|
+
out: rate.out * OFF_PEAK_FACTOR
|
|
7433
|
+
};
|
|
7434
|
+
}
|
|
7435
|
+
/** One book branch (a provider's models), as far as runtime can prove it. */
|
|
7436
|
+
function branchOf(book, id) {
|
|
7437
|
+
const v = book[id];
|
|
7438
|
+
return v !== null && typeof v === "object" ? v : null;
|
|
7439
|
+
}
|
|
7440
|
+
/**
|
|
7441
|
+
* One branch's model id → rates, as far as runtime can prove it: exact own
|
|
7442
|
+
* key first (the book is untrusted wire data), then case-insensitively, then
|
|
7443
|
+
* by id SUFFIX — dsh spells some models short (`k3`) where the registry
|
|
7444
|
+
* namespaces them (`kimi-k3`). Several suffix candidates (e.g. `k3` vs a
|
|
7445
|
+
* hypothetical `other-k3`) are ambiguous and price nothing.
|
|
7446
|
+
*/
|
|
7447
|
+
function lookup(models, model) {
|
|
7448
|
+
if (Object.hasOwn(models, model)) return models[model];
|
|
7449
|
+
const m = model.toLowerCase();
|
|
7450
|
+
let found = null;
|
|
7451
|
+
let seen = null;
|
|
7452
|
+
for (const id in models) {
|
|
7453
|
+
const lower = id.toLowerCase();
|
|
7454
|
+
if (lower !== m && !lower.endsWith("-" + m)) continue;
|
|
7455
|
+
if (seen !== null && seen !== lower) return null;
|
|
7456
|
+
seen = lower;
|
|
7457
|
+
found = models[id];
|
|
7354
7458
|
}
|
|
7355
|
-
|
|
7356
|
-
|
|
7357
|
-
|
|
7358
|
-
|
|
7359
|
-
|
|
7360
|
-
|
|
7361
|
-
|
|
7362
|
-
|
|
7363
|
-
|
|
7459
|
+
return found;
|
|
7460
|
+
}
|
|
7461
|
+
/**
|
|
7462
|
+
* The book's rates for one folded (provider, model) bucket, or null when
|
|
7463
|
+
* the book cannot price it: the dsh provider id resolves through
|
|
7464
|
+
* modelsDevProviderOf (unmapped ids pass through) and prices by model id —
|
|
7465
|
+
* exact, case-insensitive, or suffix; a provider the book does not carry
|
|
7466
|
+
* falls back to a cross-provider scan, priced only when exactly one branch
|
|
7467
|
+
* carries the model id.
|
|
7468
|
+
*/
|
|
7469
|
+
function priceOf(prices, provider, model) {
|
|
7470
|
+
if (prices === null || prices === void 0) return null;
|
|
7471
|
+
const direct = branchOf(prices, modelsDevProviderOf(provider));
|
|
7472
|
+
if (direct !== null) return lookup(direct, model);
|
|
7473
|
+
let found = null;
|
|
7474
|
+
for (const models of Object.values(prices)) {
|
|
7475
|
+
const rate = lookup(models, model);
|
|
7476
|
+
if (rate === null) continue;
|
|
7477
|
+
if (found !== null) return null;
|
|
7478
|
+
found = rate;
|
|
7364
7479
|
}
|
|
7365
|
-
|
|
7480
|
+
return found;
|
|
7481
|
+
}
|
|
7366
7482
|
/**
|
|
7367
7483
|
* Price the session's cumulative billed-token totals. Cache reads bill at
|
|
7368
|
-
* the hit rate
|
|
7369
|
-
* output (reasoning included)
|
|
7370
|
-
*
|
|
7371
|
-
|
|
7372
|
-
|
|
7373
|
-
|
|
7484
|
+
* the hit rate, uncached input at the miss rate, cache writes at the write
|
|
7485
|
+
* rate, output (reasoning included) at the out rate; `off` buckets (the
|
|
7486
|
+
* Host splits DeepSeek's period-based list at fold time) price at half.
|
|
7487
|
+
* Null when nothing was priced (no usage folded, no book yet, or no model
|
|
7488
|
+
* the book prices), so the cell can show a dash.
|
|
7489
|
+
*/
|
|
7490
|
+
function estimateSessionCost(usage, prices, currency) {
|
|
7491
|
+
if (usage === null || usage === void 0 || prices === null || prices === void 0) return null;
|
|
7374
7492
|
let total = 0;
|
|
7375
7493
|
let any = false;
|
|
7376
|
-
for (const
|
|
7377
|
-
const
|
|
7378
|
-
if (
|
|
7379
|
-
|
|
7380
|
-
|
|
7381
|
-
|
|
7382
|
-
const
|
|
7383
|
-
|
|
7384
|
-
|
|
7494
|
+
for (const provider of Object.keys(usage)) {
|
|
7495
|
+
const models = asRecord(usage[provider]);
|
|
7496
|
+
if (models === null) continue;
|
|
7497
|
+
const offPeak = isDeepSeekProvider(provider);
|
|
7498
|
+
for (const model of Object.keys(models)) {
|
|
7499
|
+
const rate = priceOf(prices, provider, model);
|
|
7500
|
+
const periods = asRecord(models[model]);
|
|
7501
|
+
if (rate === null || periods === null) continue;
|
|
7502
|
+
for (const period of ["peak", "off"]) {
|
|
7503
|
+
const bucket = asRecord(periods[period]);
|
|
7504
|
+
if (bucket === null) continue;
|
|
7505
|
+
const price = (numOf(bucket.cacheRead) * rate.hit + numOf(bucket.uncached) * rate.miss + numOf(bucket.cacheWrite) * rate.write + numOf(bucket.output) * rate.out) / 1e6;
|
|
7506
|
+
total += offPeak && period === "off" ? price * OFF_PEAK_FACTOR : price;
|
|
7507
|
+
any = true;
|
|
7508
|
+
}
|
|
7385
7509
|
}
|
|
7386
7510
|
}
|
|
7387
|
-
return any ? total : null;
|
|
7511
|
+
return any ? toCurrency(total, currency) : null;
|
|
7388
7512
|
}
|
|
7389
7513
|
function formatCost(amount, currency) {
|
|
7390
7514
|
return (currency === "cny" ? "¥" : "$") + (amount >= 1 ? amount.toFixed(2) : amount.toPrecision(2));
|
|
7391
7515
|
}
|
|
7392
|
-
/**
|
|
7393
|
-
* All priced model families for one currency, in display order, with their
|
|
7394
|
-
* peak/off-peak rate triples — the raw material of the stats-board tooltip's
|
|
7395
|
-
* price list. The numbers stay hardcoded in PRICES above; this function only
|
|
7396
|
-
* reshapes the table for display, so what the tooltip prints can never drift
|
|
7397
|
-
* from the math that prices the session.
|
|
7398
|
-
*/
|
|
7399
|
-
function sessionPrices(currency) {
|
|
7400
|
-
return ["flash", "pro"].map((id) => ({
|
|
7401
|
-
family: id === "flash" ? "deepseek-flash / deepseek-v4-flash" : "deepseek-v4-pro",
|
|
7402
|
-
peak: PRICES[currency][id].peak,
|
|
7403
|
-
off: PRICES[currency][id].off
|
|
7404
|
-
}));
|
|
7405
|
-
}
|
|
7406
7516
|
/** Price-list figure: the same money format as formatCost, trailing zeros trimmed (¥3.00 → ¥3, $0.0070 → $0.007). */
|
|
7407
7517
|
function formatPriceRate(amount, currency) {
|
|
7408
7518
|
return formatCost(amount, currency).replace(/0+$/, "").replace(/\.$/, "");
|
|
7409
7519
|
}
|
|
7410
7520
|
//#endregion
|
|
7521
|
+
//#region node_modules/.pnpm/@opencode-ai+models@0.0.72/node_modules/@opencode-ai/models/dist/error.js
|
|
7522
|
+
/**
|
|
7523
|
+
* The only error thrown by the models.dev client.
|
|
7524
|
+
*
|
|
7525
|
+
* - `Transport` — the fetch itself failed (network, DNS, abort). `cause` is the underlying error.
|
|
7526
|
+
* - `UnexpectedStatus` — non-2xx response. `cause` is `{ status: number }`.
|
|
7527
|
+
* - `MalformedResponse` — the body was empty or not valid JSON. `cause` is the parse error, if any.
|
|
7528
|
+
*/
|
|
7529
|
+
var ModelsDevError = class extends Error {
|
|
7530
|
+
reason;
|
|
7531
|
+
name = "ModelsDevError";
|
|
7532
|
+
constructor(reason, options) {
|
|
7533
|
+
super(reason, options);
|
|
7534
|
+
this.reason = reason;
|
|
7535
|
+
}
|
|
7536
|
+
};
|
|
7537
|
+
//#endregion
|
|
7538
|
+
//#region node_modules/.pnpm/@opencode-ai+models@0.0.72/node_modules/@opencode-ai/models/dist/client.js
|
|
7539
|
+
/**
|
|
7540
|
+
* Creates a stateless models.dev client. Every method performs exactly one
|
|
7541
|
+
* `GET` and nothing is ever cached — callers who want caching should wrap
|
|
7542
|
+
* calls with their own policy. For a no-network alternative, see the
|
|
7543
|
+
* `@opencode-ai/models/snapshot` entrypoint.
|
|
7544
|
+
*/
|
|
7545
|
+
function make(options = {}) {
|
|
7546
|
+
const baseUrl = options.baseUrl ?? "https://models.dev";
|
|
7547
|
+
const base = baseUrl.endsWith("/") ? baseUrl : baseUrl + "/";
|
|
7548
|
+
const request = async (path, requestOptions) => {
|
|
7549
|
+
const fetch = options.fetch ?? globalThis.fetch;
|
|
7550
|
+
const headers = new Headers();
|
|
7551
|
+
for (const [key, value] of new Headers(options.headers)) headers.set(key, value);
|
|
7552
|
+
for (const [key, value] of new Headers(requestOptions?.headers)) headers.set(key, value);
|
|
7553
|
+
let response;
|
|
7554
|
+
try {
|
|
7555
|
+
response = await fetch(new URL(path, base), {
|
|
7556
|
+
method: "GET",
|
|
7557
|
+
headers,
|
|
7558
|
+
signal: requestOptions?.signal
|
|
7559
|
+
});
|
|
7560
|
+
} catch (cause) {
|
|
7561
|
+
throw new ModelsDevError("Transport", { cause });
|
|
7562
|
+
}
|
|
7563
|
+
if (!response.ok) {
|
|
7564
|
+
try {
|
|
7565
|
+
await response.body?.cancel();
|
|
7566
|
+
} catch {}
|
|
7567
|
+
throw new ModelsDevError("UnexpectedStatus", { cause: { status: response.status } });
|
|
7568
|
+
}
|
|
7569
|
+
let text;
|
|
7570
|
+
try {
|
|
7571
|
+
text = await response.text();
|
|
7572
|
+
} catch (cause) {
|
|
7573
|
+
throw new ModelsDevError("Transport", { cause });
|
|
7574
|
+
}
|
|
7575
|
+
if (text === "") throw new ModelsDevError("MalformedResponse");
|
|
7576
|
+
try {
|
|
7577
|
+
return JSON.parse(text);
|
|
7578
|
+
} catch (cause) {
|
|
7579
|
+
throw new ModelsDevError("MalformedResponse", { cause });
|
|
7580
|
+
}
|
|
7581
|
+
};
|
|
7582
|
+
return {
|
|
7583
|
+
/** All providers with their models, pricing, and limits (`/api.json`). */
|
|
7584
|
+
providers: (requestOptions) => request("api.json", requestOptions),
|
|
7585
|
+
/** Provider-agnostic model metadata (`/models.json`). */
|
|
7586
|
+
models: (requestOptions) => request("models.json", requestOptions),
|
|
7587
|
+
/** Providers and model metadata in a single request (`/catalog.json`). */
|
|
7588
|
+
catalog: (requestOptions) => request("catalog.json", requestOptions)
|
|
7589
|
+
};
|
|
7590
|
+
}
|
|
7591
|
+
//#endregion
|
|
7592
|
+
//#region src/client/modelPrices.ts
|
|
7593
|
+
/**
|
|
7594
|
+
* The client's model-price book (client/cost.ts prices from it): the
|
|
7595
|
+
* models.dev registry, fetched through the official @opencode-ai/models
|
|
7596
|
+
* SDK. The registry payload is untrusted wire input, so `pricesBookOf`
|
|
7597
|
+
* re-proves every field at the boundary — a non-conforming provider/model/
|
|
7598
|
+
* cost entry drops whole. The book keeps EVERY provider that prices (keyed
|
|
7599
|
+
* by the registry's own provider id), so a dsh provider id outside the
|
|
7600
|
+
* rename table still prices by direct passthrough. One fetch per page load,
|
|
7601
|
+
* kicked on first subscribe; a failure degrades to a visible state the cost
|
|
7602
|
+
* cell notes, with a backed-off automatic retry — never a spinner, and
|
|
7603
|
+
* never an unhandled rejection.
|
|
7604
|
+
*/
|
|
7605
|
+
/** One finite non-negative registry figure, or null. */
|
|
7606
|
+
function rateOf(value) {
|
|
7607
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : null;
|
|
7608
|
+
}
|
|
7609
|
+
/**
|
|
7610
|
+
* Extract the whole registry's per-model USD rates from a delivered
|
|
7611
|
+
* providers payload (`/api.json`), keyed by the registry's provider ids.
|
|
7612
|
+
* Any shape failure skips just that entry; a payload that is not a record
|
|
7613
|
+
* at all returns null (the store treats it as a failed fetch and retries).
|
|
7614
|
+
*/
|
|
7615
|
+
function pricesBookOf(value) {
|
|
7616
|
+
const data = asRecord(value);
|
|
7617
|
+
if (data === null || Array.isArray(data)) return null;
|
|
7618
|
+
const book = {};
|
|
7619
|
+
for (const providerId of Object.keys(data)) {
|
|
7620
|
+
const provider = asRecord(data[providerId]);
|
|
7621
|
+
const modelList = provider !== null ? asRecord(provider.models) : null;
|
|
7622
|
+
if (modelList === null) continue;
|
|
7623
|
+
const models = {};
|
|
7624
|
+
for (const id of Object.keys(modelList)) {
|
|
7625
|
+
const model = asRecord(modelList[id]);
|
|
7626
|
+
const cost = model !== null ? asRecord(model.cost) : null;
|
|
7627
|
+
if (cost === null) continue;
|
|
7628
|
+
const miss = rateOf(cost.input);
|
|
7629
|
+
const out = rateOf(cost.output);
|
|
7630
|
+
if (miss === null || out === null) continue;
|
|
7631
|
+
models[id] = {
|
|
7632
|
+
hit: rateOf(cost.cache_read) ?? miss,
|
|
7633
|
+
miss,
|
|
7634
|
+
write: rateOf(cost.cache_write) ?? miss,
|
|
7635
|
+
out
|
|
7636
|
+
};
|
|
7637
|
+
}
|
|
7638
|
+
if (Object.keys(models).length > 0) book[providerId] = models;
|
|
7639
|
+
}
|
|
7640
|
+
return book;
|
|
7641
|
+
}
|
|
7642
|
+
const defaultLoader = () => make().providers();
|
|
7643
|
+
/** The retry backoff base; each consecutive failure doubles the wait, capped at 3 doublings. */
|
|
7644
|
+
const RETRY_BASE_MS = 3e4;
|
|
7645
|
+
let loader = defaultLoader;
|
|
7646
|
+
let snap = {
|
|
7647
|
+
prices: null,
|
|
7648
|
+
failed: false
|
|
7649
|
+
};
|
|
7650
|
+
let inFlight = false;
|
|
7651
|
+
let failures = 0;
|
|
7652
|
+
let timer = null;
|
|
7653
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
7654
|
+
function fail() {
|
|
7655
|
+
snap = {
|
|
7656
|
+
...snap,
|
|
7657
|
+
failed: true
|
|
7658
|
+
};
|
|
7659
|
+
failures++;
|
|
7660
|
+
timer = setTimeout(() => {
|
|
7661
|
+
timer = null;
|
|
7662
|
+
fire();
|
|
7663
|
+
}, RETRY_BASE_MS * 2 ** Math.min(failures - 1, 3));
|
|
7664
|
+
}
|
|
7665
|
+
async function fire() {
|
|
7666
|
+
inFlight = true;
|
|
7667
|
+
try {
|
|
7668
|
+
const book = pricesBookOf(await loader());
|
|
7669
|
+
if (book !== null) {
|
|
7670
|
+
snap = {
|
|
7671
|
+
prices: book,
|
|
7672
|
+
failed: false
|
|
7673
|
+
};
|
|
7674
|
+
failures = 0;
|
|
7675
|
+
} else fail();
|
|
7676
|
+
} catch {
|
|
7677
|
+
fail();
|
|
7678
|
+
}
|
|
7679
|
+
inFlight = false;
|
|
7680
|
+
for (const fn of listeners) fn();
|
|
7681
|
+
}
|
|
7682
|
+
function kick() {
|
|
7683
|
+
if (snap.prices !== null || inFlight || timer !== null) return;
|
|
7684
|
+
fire();
|
|
7685
|
+
}
|
|
7686
|
+
/** The useSyncExternalStore seam: subscribing also kicks the first fetch. */
|
|
7687
|
+
const subscribeModelPrices = (fn) => {
|
|
7688
|
+
listeners.add(fn);
|
|
7689
|
+
kick();
|
|
7690
|
+
return () => {
|
|
7691
|
+
listeners.delete(fn);
|
|
7692
|
+
};
|
|
7693
|
+
};
|
|
7694
|
+
const getModelPricesSnap = () => snap;
|
|
7695
|
+
/** The stats board's read of the price book (null until the fetch lands). */
|
|
7696
|
+
function useModelPrices() {
|
|
7697
|
+
return (0, react.useSyncExternalStore)(subscribeModelPrices, getModelPricesSnap);
|
|
7698
|
+
}
|
|
7699
|
+
//#endregion
|
|
7411
7700
|
//#region src/client/components/statsContext.tsx
|
|
7412
7701
|
/**
|
|
7413
7702
|
* The Context card: what the session's context IS and how it evolved — a
|
|
@@ -7421,10 +7710,12 @@ window.__ModuleLoader__.load({
|
|
|
7421
7710
|
* formula as the harness chat stats line under the composer, shown with one
|
|
7422
7711
|
* decimal — and dashes until a provider reports usage. The cost cell prices
|
|
7423
7712
|
* the host-folded cumulative billed totals (complete session log, never
|
|
7424
|
-
* trimmed)
|
|
7713
|
+
* trimmed) from the models.dev price book (modelPrices.ts) in the locale's
|
|
7425
7714
|
* currency; its hover bubble (a '?' marker + styled DOM tip) explains the
|
|
7426
|
-
* whole-session estimate and lists the per-1M-token
|
|
7427
|
-
*
|
|
7715
|
+
* whole-session estimate and lists the per-1M-token rates of the models this
|
|
7716
|
+
* session actually billed, straight from the same book (cost.ts), so printed
|
|
7717
|
+
* rates can never drift from the math. A book that has not loaded (or
|
|
7718
|
+
* failed) dashes the cell and notes the outage.
|
|
7428
7719
|
*
|
|
7429
7720
|
* The counts arrive precomputed: the split-generation wire head carries them
|
|
7430
7721
|
* (shared/types.ts `TimelineCounts` — computed over the retained records),
|
|
@@ -7432,6 +7723,36 @@ window.__ModuleLoader__.load({
|
|
|
7432
7723
|
* (`countsOfRecords`). The card itself never touches the collections.
|
|
7433
7724
|
*/
|
|
7434
7725
|
/**
|
|
7726
|
+
* The rate rows for the models this session actually billed — the usage
|
|
7727
|
+
* keys priced against the book, in fold order. Hostile branches skip;
|
|
7728
|
+
* unpriced models drop (their buckets simply do not contribute). The label
|
|
7729
|
+
* carries the provider only when the session billed more than one; a model
|
|
7730
|
+
* with an off-peak bucket (DeepSeek's period-based list) shows the
|
|
7731
|
+
* peak | off-peak pair.
|
|
7732
|
+
*/
|
|
7733
|
+
function priceRowsOf(usage, prices) {
|
|
7734
|
+
if (usage === void 0 || prices === null) return [];
|
|
7735
|
+
const rows = [];
|
|
7736
|
+
const multi = Object.keys(usage).length > 1;
|
|
7737
|
+
for (const provider of Object.keys(usage)) {
|
|
7738
|
+
const models = asRecord(usage[provider]);
|
|
7739
|
+
if (models === null) continue;
|
|
7740
|
+
for (const model of Object.keys(models)) {
|
|
7741
|
+
const rate = priceOf(prices, provider, model);
|
|
7742
|
+
if (rate === null) continue;
|
|
7743
|
+
const periods = asRecord(models[model]);
|
|
7744
|
+
const off = isDeepSeekProvider(provider) && periods !== null && periods.off !== void 0 ? offPeakOf(rate) : void 0;
|
|
7745
|
+
rows.push({
|
|
7746
|
+
key: provider + "/" + model,
|
|
7747
|
+
label: multi && provider !== "" ? `${model} · ${provider}` : model,
|
|
7748
|
+
rate,
|
|
7749
|
+
...off !== void 0 ? { offRate: off } : {}
|
|
7750
|
+
});
|
|
7751
|
+
}
|
|
7752
|
+
}
|
|
7753
|
+
return rows;
|
|
7754
|
+
}
|
|
7755
|
+
/**
|
|
7435
7756
|
* The inline generation's counter derivation — the exact tally the card ran
|
|
7436
7757
|
* over the served collections before the split (distinct turn values, record
|
|
7437
7758
|
* count, per-kind event tallies). The host's split-generation counts match
|
|
@@ -7458,49 +7779,67 @@ window.__ModuleLoader__.load({
|
|
|
7458
7779
|
const { t, fmt } = kit;
|
|
7459
7780
|
return function StatsContext(props) {
|
|
7460
7781
|
const currency = props.locale === "zh" ? "cny" : "usd";
|
|
7461
|
-
const
|
|
7462
|
-
const
|
|
7463
|
-
const
|
|
7464
|
-
|
|
7465
|
-
|
|
7466
|
-
|
|
7467
|
-
|
|
7468
|
-
|
|
7469
|
-
|
|
7470
|
-
|
|
7471
|
-
|
|
7472
|
-
|
|
7473
|
-
|
|
7474
|
-
|
|
7475
|
-
|
|
7476
|
-
|
|
7477
|
-
|
|
7478
|
-
|
|
7479
|
-
|
|
7480
|
-
|
|
7481
|
-
|
|
7482
|
-
|
|
7483
|
-
|
|
7484
|
-
|
|
7485
|
-
|
|
7486
|
-
|
|
7487
|
-
|
|
7488
|
-
|
|
7489
|
-
|
|
7490
|
-
|
|
7491
|
-
|
|
7492
|
-
|
|
7493
|
-
|
|
7494
|
-
|
|
7495
|
-
|
|
7782
|
+
const { prices, failed } = useModelPrices();
|
|
7783
|
+
const cost = estimateSessionCost(props.cost, prices, currency);
|
|
7784
|
+
const fmtRate = (usd) => formatPriceRate(toCurrency(usd, currency), currency);
|
|
7785
|
+
const rows = priceRowsOf(props.cost, prices);
|
|
7786
|
+
const deepseek = props.cost !== void 0 && Object.keys(props.cost).some((p) => isDeepSeekProvider(p));
|
|
7787
|
+
const anyPair = rows.some((r) => r.offRate !== void 0);
|
|
7788
|
+
const unpriced = rows.length === 0 && props.cost !== void 0 && Object.keys(props.cost).length > 0 && (failed || prices !== null);
|
|
7789
|
+
const costTip = [
|
|
7790
|
+
t("stats.costTip") + (deepseek ? " " + t("stats.costTipDeepseek") : ""),
|
|
7791
|
+
rows.length > 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
7792
|
+
className: "lc-stat-tip-prices",
|
|
7793
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
7794
|
+
className: "lc-stat-tip-head",
|
|
7795
|
+
children: anyPair ? t("stats.costPriceHeadPair") : t("stats.costPriceHead")
|
|
7796
|
+
}), rows.map((r) => {
|
|
7797
|
+
const cells = [
|
|
7798
|
+
[
|
|
7799
|
+
t("stats.costHit"),
|
|
7800
|
+
r.rate.hit,
|
|
7801
|
+
r.offRate?.hit
|
|
7802
|
+
],
|
|
7803
|
+
[
|
|
7804
|
+
t("stats.costMiss"),
|
|
7805
|
+
r.rate.miss,
|
|
7806
|
+
r.offRate?.miss
|
|
7807
|
+
],
|
|
7808
|
+
[
|
|
7809
|
+
t("stats.costWrite"),
|
|
7810
|
+
r.rate.write,
|
|
7811
|
+
r.offRate?.write
|
|
7812
|
+
],
|
|
7813
|
+
[
|
|
7814
|
+
t("stats.costOut"),
|
|
7815
|
+
r.rate.out,
|
|
7816
|
+
r.offRate?.out
|
|
7817
|
+
]
|
|
7818
|
+
];
|
|
7819
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
7820
|
+
className: "lc-stat-tip-row",
|
|
7821
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("b", {
|
|
7822
|
+
className: "lc-stat-tip-model",
|
|
7823
|
+
children: r.label
|
|
7824
|
+
}), cells.map(([name, peak, off]) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", { children: [
|
|
7825
|
+
" · ",
|
|
7826
|
+
name,
|
|
7827
|
+
" ",
|
|
7828
|
+
off === void 0 ? fmtRate(peak) : `${fmtRate(peak)}|${fmtRate(off)}`
|
|
7829
|
+
] }, name))]
|
|
7830
|
+
}, r.key);
|
|
7831
|
+
})]
|
|
7832
|
+
}, "prices") : null,
|
|
7833
|
+
unpriced ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: t("stats.costUnavailable") }, "unavailable") : null
|
|
7834
|
+
];
|
|
7496
7835
|
const hit = props.usage === null ? null : cacheHitPercent(numOf(props.usage.cacheReadTokens), numOf(props.usage.uncachedInputTokens) + numOf(props.usage.cacheReadTokens) + numOf(props.usage.cacheWriteTokens), 1);
|
|
7497
7836
|
const cell = (label, value, tip) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
7498
|
-
className: "lc-stat" + (tip === void 0 ? "" : " lc-stat-tipped"),
|
|
7837
|
+
className: "lc-stat" + (tip === void 0 ? "" : " lc-stat-tipped group/tip"),
|
|
7499
7838
|
children: [
|
|
7500
7839
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
|
|
7501
7840
|
className: "lc-stat-label",
|
|
7502
7841
|
children: [label, tip !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("i", {
|
|
7503
|
-
className: "lc-stat-q",
|
|
7842
|
+
className: "lc-stat-q group-hover/tip:text-(--dsw-alias-label-primary) group-hover/tip:border-(--dsw-alias-label-primary)",
|
|
7504
7843
|
"aria-hidden": "true",
|
|
7505
7844
|
children: "?"
|
|
7506
7845
|
})]
|
|
@@ -7510,14 +7849,14 @@ window.__ModuleLoader__.load({
|
|
|
7510
7849
|
children: typeof value === "number" ? fmt(value) : value
|
|
7511
7850
|
}),
|
|
7512
7851
|
tip !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
7513
|
-
className: "lc-tip lc-stat-tip",
|
|
7852
|
+
className: "lc-tip lc-stat-tip group-hover/tip:opacity-100",
|
|
7514
7853
|
role: "tooltip",
|
|
7515
7854
|
children: tip
|
|
7516
7855
|
})
|
|
7517
7856
|
]
|
|
7518
7857
|
});
|
|
7519
7858
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
7520
|
-
className: "lc-card lc-col-stats",
|
|
7859
|
+
className: "lc-card lc-col-stats flex-1 min-w-[min(360px,100%)]",
|
|
7521
7860
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
7522
7861
|
className: "lc-card-title",
|
|
7523
7862
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -7525,7 +7864,7 @@ window.__ModuleLoader__.load({
|
|
|
7525
7864
|
children: t("stats.title")
|
|
7526
7865
|
})
|
|
7527
7866
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
7528
|
-
className: "lc-stats",
|
|
7867
|
+
className: "lc-stats grid grid-cols-[repeat(auto-fit,minmax(108px,1fr))] gap-1.5",
|
|
7529
7868
|
children: [
|
|
7530
7869
|
cell(t("stats.turns"), props.counts.turns),
|
|
7531
7870
|
cell(t("stats.steps"), props.counts.steps),
|
|
@@ -7553,7 +7892,7 @@ window.__ModuleLoader__.load({
|
|
|
7553
7892
|
function makeSliceList(kit) {
|
|
7554
7893
|
return function SliceList(props) {
|
|
7555
7894
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
7556
|
-
className: "lc-sl",
|
|
7895
|
+
className: "lc-sl flex-auto @max-[240px]/lc-card:basis-full",
|
|
7557
7896
|
onMouseLeave: () => {
|
|
7558
7897
|
if (props.onHoverKey !== void 0) props.onHoverKey(null);
|
|
7559
7898
|
},
|
|
@@ -7610,12 +7949,12 @@ window.__ModuleLoader__.load({
|
|
|
7610
7949
|
* row numbers stay true.
|
|
7611
7950
|
*/
|
|
7612
7951
|
const COLOR = {
|
|
7613
|
-
ttft: "
|
|
7614
|
-
reasoning: "
|
|
7615
|
-
text: "
|
|
7616
|
-
toolarg: "
|
|
7617
|
-
tools: "
|
|
7618
|
-
other: "
|
|
7952
|
+
ttft: "var(--color-blue-500)",
|
|
7953
|
+
reasoning: "var(--color-violet-500)",
|
|
7954
|
+
text: "var(--color-pink-500)",
|
|
7955
|
+
toolarg: "var(--color-amber-500)",
|
|
7956
|
+
tools: "var(--color-teal-500)",
|
|
7957
|
+
other: "var(--color-slate-400)"
|
|
7619
7958
|
};
|
|
7620
7959
|
function makeStatsTiming(kit, Donut) {
|
|
7621
7960
|
const { t, fmt, fmtDuration, fmtShare } = kit;
|
|
@@ -7731,7 +8070,7 @@ window.__ModuleLoader__.load({
|
|
|
7731
8070
|
].filter((row) => !row.dim);
|
|
7732
8071
|
}
|
|
7733
8072
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
7734
|
-
className: "lc-card lc-col-stats lc-col-donut",
|
|
8073
|
+
className: "lc-card lc-col-stats lc-col-donut flex-1 min-w-[min(360px,100%)]",
|
|
7735
8074
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
7736
8075
|
className: "lc-card-title",
|
|
7737
8076
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -7742,7 +8081,7 @@ window.__ModuleLoader__.load({
|
|
|
7742
8081
|
className: "lc-empty",
|
|
7743
8082
|
children: t("timing.empty")
|
|
7744
8083
|
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
7745
|
-
className: "lc-donut-row",
|
|
8084
|
+
className: "lc-donut-row flex items-center justify-start gap-3 min-w-0 @max-[320px]/lc-card:gap-2 @max-[240px]/lc-card:flex-wrap",
|
|
7746
8085
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Donut, {
|
|
7747
8086
|
segments,
|
|
7748
8087
|
size: 96,
|
|
@@ -7797,7 +8136,7 @@ window.__ModuleLoader__.load({
|
|
|
7797
8136
|
count: p.key === "output" ? `${fmt(p.value)} · ${t("tokens.outputNote")}` : "≈" + fmt(p.value)
|
|
7798
8137
|
}));
|
|
7799
8138
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
7800
|
-
className: "lc-card lc-col-stats lc-col-donut",
|
|
8139
|
+
className: "lc-card lc-col-stats lc-col-donut flex-1 min-w-[min(360px,100%)]",
|
|
7801
8140
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
7802
8141
|
className: "lc-card-title",
|
|
7803
8142
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -7805,7 +8144,7 @@ window.__ModuleLoader__.load({
|
|
|
7805
8144
|
children: t("tokens.title")
|
|
7806
8145
|
})
|
|
7807
8146
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
7808
|
-
className: "lc-donut-row",
|
|
8147
|
+
className: "lc-donut-row flex items-center justify-start gap-3 min-w-0 @max-[320px]/lc-card:gap-2 @max-[240px]/lc-card:flex-wrap",
|
|
7809
8148
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Donut, {
|
|
7810
8149
|
segments: shown,
|
|
7811
8150
|
size: 96,
|
|
@@ -7885,7 +8224,7 @@ window.__ModuleLoader__.load({
|
|
|
7885
8224
|
const BAR_W = 14;
|
|
7886
8225
|
const BAR_GAP = 2;
|
|
7887
8226
|
const STAGGER_CAP = 20;
|
|
7888
|
-
const TURN_FILLS = ["
|
|
8227
|
+
const TURN_FILLS = ["color-mix(in srgb, var(--color-neutral-500) 12%, transparent)", "color-mix(in srgb, var(--color-neutral-500) 26%, transparent)"];
|
|
7889
8228
|
const LABEL_OVERHANG = 48;
|
|
7890
8229
|
const LABEL_GAP = 2;
|
|
7891
8230
|
const LABEL_FONT = 10;
|
|
@@ -7932,7 +8271,7 @@ window.__ModuleLoader__.load({
|
|
|
7932
8271
|
const diverge = props.upPx !== void 0 && props.downPx !== void 0 && props.deltaScale !== void 0;
|
|
7933
8272
|
const enterStyle = { "--lc-i": Math.min(props.enterIndex, STAGGER_CAP) };
|
|
7934
8273
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
7935
|
-
className: "lc-bar" + (props.selected ? " lc-bar-selected" : "") + (props.hovered ? " lc-bar-hovered" : "") + (props.inTurn ? " lc-bar-in-turn" : ""),
|
|
8274
|
+
className: "lc-bar hover:bg-(--dsw-alias-bg-layer-2)" + (props.selected ? " lc-bar-selected" : "") + (props.hovered ? " lc-bar-hovered" : "") + (props.inTurn ? " lc-bar-in-turn" : ""),
|
|
7936
8275
|
"data-seq": req.seq,
|
|
7937
8276
|
style: { width: `${BAR_W}px` },
|
|
7938
8277
|
onClick: () => {
|
|
@@ -7946,7 +8285,7 @@ window.__ModuleLoader__.load({
|
|
|
7946
8285
|
title: "✂ " + (markerAt !== null ? markerAt + " — " : "") + eventLabel(marker),
|
|
7947
8286
|
children: "✂"
|
|
7948
8287
|
}) : null, diverge ? /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(react_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
7949
|
-
className: "lc-bar-up",
|
|
8288
|
+
className: "lc-bar-up animate-lc-bar-in motion-reduce:animate-none",
|
|
7950
8289
|
style: {
|
|
7951
8290
|
bottom: `${props.downPx}px`,
|
|
7952
8291
|
...enterStyle
|
|
@@ -7964,7 +8303,7 @@ window.__ModuleLoader__.load({
|
|
|
7964
8303
|
}, c.key);
|
|
7965
8304
|
})
|
|
7966
8305
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
7967
|
-
className: "lc-bar-down",
|
|
8306
|
+
className: "lc-bar-down animate-lc-bar-in motion-reduce:animate-none",
|
|
7968
8307
|
style: {
|
|
7969
8308
|
top: `${props.upPx}px`,
|
|
7970
8309
|
...enterStyle
|
|
@@ -7982,7 +8321,7 @@ window.__ModuleLoader__.load({
|
|
|
7982
8321
|
}, c.key);
|
|
7983
8322
|
})
|
|
7984
8323
|
})] }) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
7985
|
-
className: "lc-bar-stack",
|
|
8324
|
+
className: "lc-bar-stack animate-lc-bar-in motion-reduce:animate-none",
|
|
7986
8325
|
style: enterStyle,
|
|
7987
8326
|
children: CATS.map((c) => {
|
|
7988
8327
|
const v = req[c.key] || 0;
|
|
@@ -8461,7 +8800,7 @@ window.__ModuleLoader__.load({
|
|
|
8461
8800
|
const PluginInfo = makePluginInfo(kit);
|
|
8462
8801
|
const UpgradeGate = makeUpgradeGate(kit);
|
|
8463
8802
|
const DetailNote = makeDetailNote(kit);
|
|
8464
|
-
const ContextBrowser = makeContextBrowser(kit, StackedBar);
|
|
8803
|
+
const ContextBrowser = makeContextBrowser(kit, StackedBar, settings);
|
|
8465
8804
|
const AgentGraph = makeAgentGraph(ctx, kit);
|
|
8466
8805
|
const ErrorBoundary = makeErrorBoundary(t);
|
|
8467
8806
|
function ContextViewBody(props) {
|
|
@@ -8829,17 +9168,17 @@ window.__ModuleLoader__.load({
|
|
|
8829
9168
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8830
9169
|
className: "lc-cols lc-cols-main",
|
|
8831
9170
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8832
|
-
className: "lc-col",
|
|
9171
|
+
className: "lc-col flex-1 min-w-[min(360px,100%)]",
|
|
8833
9172
|
children: [compositionCard, trendCard]
|
|
8834
9173
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
8835
|
-
className: "lc-col lc-col-browser",
|
|
9174
|
+
className: "lc-col lc-col-browser flex-1 min-w-[min(360px,100%)]",
|
|
8836
9175
|
children: browserCard
|
|
8837
9176
|
})]
|
|
8838
9177
|
}),
|
|
8839
9178
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8840
9179
|
className: "lc-cols",
|
|
8841
9180
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8842
|
-
className: "lc-card lc-col",
|
|
9181
|
+
className: "lc-card lc-col flex-1 min-w-[min(360px,100%)]",
|
|
8843
9182
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
8844
9183
|
className: "lc-card-title",
|
|
8845
9184
|
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
@@ -8933,7 +9272,7 @@ window.__ModuleLoader__.load({
|
|
|
8933
9272
|
width: "16",
|
|
8934
9273
|
height: "16",
|
|
8935
9274
|
viewBox: "0 0 16 16",
|
|
8936
|
-
|
|
9275
|
+
className: "fill-none",
|
|
8937
9276
|
"aria-hidden": "true",
|
|
8938
9277
|
children: [
|
|
8939
9278
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
|
|
@@ -8942,7 +9281,7 @@ window.__ModuleLoader__.load({
|
|
|
8942
9281
|
width: "12",
|
|
8943
9282
|
height: "2",
|
|
8944
9283
|
rx: "1",
|
|
8945
|
-
|
|
9284
|
+
className: "fill-current"
|
|
8946
9285
|
}),
|
|
8947
9286
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
|
|
8948
9287
|
x: "2",
|
|
@@ -8950,7 +9289,7 @@ window.__ModuleLoader__.load({
|
|
|
8950
9289
|
width: "8.5",
|
|
8951
9290
|
height: "2",
|
|
8952
9291
|
rx: "1",
|
|
8953
|
-
|
|
9292
|
+
className: "fill-current"
|
|
8954
9293
|
}),
|
|
8955
9294
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("rect", {
|
|
8956
9295
|
x: "2",
|
|
@@ -8958,7 +9297,7 @@ window.__ModuleLoader__.load({
|
|
|
8958
9297
|
width: "5.5",
|
|
8959
9298
|
height: "2",
|
|
8960
9299
|
rx: "1",
|
|
8961
|
-
|
|
9300
|
+
className: "fill-current"
|
|
8962
9301
|
})
|
|
8963
9302
|
]
|
|
8964
9303
|
});
|
|
@@ -8979,7 +9318,7 @@ window.__ModuleLoader__.load({
|
|
|
8979
9318
|
side: "bottom",
|
|
8980
9319
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
8981
9320
|
type: "button",
|
|
8982
|
-
className: "lc-jump",
|
|
9321
|
+
className: "lc-jump hover:bg-(--dsw-alias-interactive-bg-hover) hover:text-(--dsw-alias-label-secondary)",
|
|
8983
9322
|
"aria-label": t("jump.title"),
|
|
8984
9323
|
onClick: jump,
|
|
8985
9324
|
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(JumpIcon, {})
|
|
@@ -9185,8 +9524,19 @@ window.__ModuleLoader__.load({
|
|
|
9185
9524
|
};
|
|
9186
9525
|
}
|
|
9187
9526
|
//#endregion
|
|
9527
|
+
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/tailwind.css.mjs
|
|
9528
|
+
const css$14 = "/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */\n@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial}}}:root,:host{--spacing:4px;--color-red-500:oklch(63.7% .237 25.331);--color-amber-500:oklch(76.9% .188 70.08);--color-green-500:oklch(72.3% .219 149.579);--color-teal-500:oklch(70.4% .14 182.503);--color-blue-500:oklch(62.3% .214 259.815);--color-indigo-500:oklch(58.5% .233 277.117);--color-violet-500:oklch(60.6% .25 292.717);--color-purple-500:oklch(62.7% .265 303.9);--color-pink-500:oklch(65.6% .241 354.308);--color-slate-400:oklch(70.4% .04 256.788);--color-neutral-500:oklch(55.6% 0 none);--animate-lc-donut-in:lc-donut-in .45s cubic-bezier(.4, 0, .2, 1) calc(var(--lc-i,0) * 50ms) backwards;--animate-lc-stacked-in:lc-stacked-in .4s cubic-bezier(.4, 0, .2, 1) calc(var(--lc-i,0) * 40ms) backwards;--animate-lc-bar-in:lc-bar-in .35s cubic-bezier(.4, 0, .2, 1) calc(var(--lc-i,0) * 15ms) backwards;--animate-lc-agent-flow:lc-agent-flow .9s linear infinite;--animate-lc-agent-glow:lc-agent-glow 1.8s ease-in-out infinite}.collapse{visibility:collapse}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.container{width:100%}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.table{display:table}.min-w-0{min-width:0}.min-w-\\[min\\(360px\\,100\\%\\)\\]{min-width:min(360px,100%)}.flex-1{flex:1}.flex-auto{flex:auto}.shrink{flex-shrink:1}.grow{flex-grow:1}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.animate-lc-agent-flow{animation:var(--animate-lc-agent-flow)}.animate-lc-agent-glow{animation:var(--animate-lc-agent-glow)}.animate-lc-bar-in{animation:var(--animate-lc-bar-in)}.animate-lc-donut-in{animation:var(--animate-lc-donut-in)}.animate-lc-stacked-in{animation:var(--animate-lc-stacked-in)}.resize{resize:both}.grid-cols-\\[repeat\\(auto-fit\\,minmax\\(108px\\,1fr\\)\\)\\]{grid-template-columns:repeat(auto-fit,minmax(108px,1fr))}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.justify-start{justify-content:flex-start}.gap-1\\.5{gap:calc(var(--spacing) * 1.5)}.gap-3{gap:calc(var(--spacing) * 3)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.border{border-style:var(--tw-border-style);border-width:1px}.fill-\\(--dsw-alias-bg-layer-1\\){fill:var(--dsw-alias-bg-layer-1)}.fill-\\(--dsw-alias-label-primary\\){fill:var(--dsw-alias-label-primary)}.fill-current{fill:currentColor}.fill-none{fill:none}.fill-transparent{fill:#0000}.stroke-\\(--dsw-alias-border-l1\\){stroke:var(--dsw-alias-border-l1)}.stroke-2{stroke-width:2px}.stroke-4{stroke-width:4px}.stroke-9{stroke-width:9px}.stroke-\\[1\\.5px\\]{stroke-width:1.5px}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}@media (hover:hover){.group-hover\\/agent\\:fill-\\[var\\(--dsw-alias-interactive-bg-hover\\,var\\(--dsw-alias-bg-layer-2\\)\\)\\]:is(:where(.group\\/agent):hover *){fill:var(--dsw-alias-interactive-bg-hover,var(--dsw-alias-bg-layer-2))}.group-hover\\/pi\\:underline:is(:where(.group\\/pi):hover *){text-decoration-line:underline}.group-hover\\/tip\\:border-\\(--dsw-alias-label-primary\\):is(:where(.group\\/tip):hover *){border-color:var(--dsw-alias-label-primary)}.group-hover\\/tip\\:text-\\(--dsw-alias-label-primary\\):is(:where(.group\\/tip):hover *){color:var(--dsw-alias-label-primary)}.group-hover\\/tip\\:opacity-100:is(:where(.group\\/tip):hover *){opacity:1}}.group-focus-visible\\/agent\\:fill-\\[var\\(--dsw-alias-interactive-bg-hover\\,var\\(--dsw-alias-bg-layer-2\\)\\)\\]:is(:where(.group\\/agent):focus-visible *){fill:var(--dsw-alias-interactive-bg-hover,var(--dsw-alias-bg-layer-2))}@media (hover:hover){.hover\\:border-\\(--dsw-alias-label-dimmed\\):hover{border-color:var(--dsw-alias-label-dimmed)}.hover\\:border-\\(--dsw-alias-label-primary\\):hover{border-color:var(--dsw-alias-label-primary)}.hover\\:bg-\\(--dsw-alias-bg-layer-2\\):hover{background-color:var(--dsw-alias-bg-layer-2)}.hover\\:bg-\\(--dsw-alias-interactive-bg-hover\\):hover{background-color:var(--dsw-alias-interactive-bg-hover)}.hover\\:bg-\\[var\\(--dsw-alias-interactive-bg-hover\\,var\\(--dsw-alias-bg-layer-2\\)\\)\\]:hover{background-color:var(--dsw-alias-interactive-bg-hover,var(--dsw-alias-bg-layer-2))}.hover\\:text-\\(--dsw-alias-label-primary\\):hover{color:var(--dsw-alias-label-primary)}.hover\\:text-\\(--dsw-alias-label-secondary\\):hover{color:var(--dsw-alias-label-secondary)}.hover\\:underline:hover{text-decoration-line:underline}.hover\\:brightness-110:hover{--tw-brightness:brightness(110%);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.hover\\:brightness-\\[1\\.15\\]:hover{--tw-brightness:brightness(1.15);filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}}.focus\\:border-\\(--dsw-alias-label-dimmed\\):focus{border-color:var(--dsw-alias-label-dimmed)}@media (hover:hover){.hover\\:enabled\\:bg-\\(--dsw-alias-interactive-bg-hover\\):hover:enabled{background-color:var(--dsw-alias-interactive-bg-hover)}}.disabled\\:cursor-default:disabled{cursor:default}.disabled\\:opacity-50:disabled{opacity:.5}@media (prefers-reduced-motion:reduce){.motion-reduce\\:animate-none{animation:none}}@container lc-card (width<380px){.\\@max-\\[380px\\]\\/lc-card\\:basis-\\[calc\\(100\\%-46px\\)\\]{flex-basis:calc(100% - 46px)}.\\@max-\\[380px\\]\\/lc-card\\:basis-\\[calc\\(100\\%-92px\\)\\]{flex-basis:calc(100% - 92px)}.\\@max-\\[380px\\]\\/lc-card\\:flex-wrap{flex-wrap:wrap}}@container lc-card (width<320px){.\\@max-\\[320px\\]\\/lc-card\\:gap-2{gap:calc(var(--spacing) * 2)}}@container lc-card (width<240px){.\\@max-\\[240px\\]\\/lc-card\\:mx-auto{margin-inline:auto}.\\@max-\\[240px\\]\\/lc-card\\:basis-full{flex-basis:100%}.\\@max-\\[240px\\]\\/lc-card\\:flex-wrap{flex-wrap:wrap}}@property --tw-rotate-x{syntax:\"*\";inherits:false}@property --tw-rotate-y{syntax:\"*\";inherits:false}@property --tw-rotate-z{syntax:\"*\";inherits:false}@property --tw-skew-x{syntax:\"*\";inherits:false}@property --tw-skew-y{syntax:\"*\";inherits:false}@property --tw-border-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:\"*\";inherits:false}@property --tw-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:\"*\";inherits:false}@property --tw-inset-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:\"*\";inherits:false}@property --tw-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:\"*\";inherits:false}@property --tw-inset-ring-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:\"*\";inherits:false}@property --tw-ring-offset-width{syntax:\"<length>\";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:\"*\";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:\"*\";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:\"*\";inherits:false;initial-value:solid}@property --tw-blur{syntax:\"*\";inherits:false}@property --tw-brightness{syntax:\"*\";inherits:false}@property --tw-contrast{syntax:\"*\";inherits:false}@property --tw-grayscale{syntax:\"*\";inherits:false}@property --tw-hue-rotate{syntax:\"*\";inherits:false}@property --tw-invert{syntax:\"*\";inherits:false}@property --tw-opacity{syntax:\"*\";inherits:false}@property --tw-saturate{syntax:\"*\";inherits:false}@property --tw-sepia{syntax:\"*\";inherits:false}@property --tw-drop-shadow{syntax:\"*\";inherits:false}@property --tw-drop-shadow-color{syntax:\"*\";inherits:false}@property --tw-drop-shadow-alpha{syntax:\"<percentage>\";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:\"*\";inherits:false}@keyframes lc-donut-in{0%{stroke-dasharray:0 100}}@keyframes lc-stacked-in{0%{transform:scaleX(0)}}@keyframes lc-bar-in{0%{transform:scaleY(0)}}@keyframes lc-agent-flow{to{stroke-dashoffset:-9px}}@keyframes lc-agent-glow{0%,to{opacity:1}50%{opacity:.4}}";
|
|
9529
|
+
const tagId$14 = "dsh-context/tailwind.css";
|
|
9530
|
+
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$14) + "]") === null) {
|
|
9531
|
+
const tag = document.createElement("style");
|
|
9532
|
+
tag.dataset.plugin = "dsh-context";
|
|
9533
|
+
tag.dataset.pluginCss = tagId$14;
|
|
9534
|
+
tag.textContent = css$14;
|
|
9535
|
+
document.head.appendChild(tag);
|
|
9536
|
+
}
|
|
9537
|
+
//#endregion
|
|
9188
9538
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/base.css.mjs
|
|
9189
|
-
const css$13 = ".lc-root{box-sizing:border-box;height:100%;color:var(--dsw-alias-label-primary);padding:16px 20px 32px;font-size:13px;overflow-y:auto}[data-sidebar-right-open] .lc-root,[data-sidebar-right-float-host] .lc-root{height:auto;padding:12px;overflow:visible}.lc-title-icon{flex:none}.lc-title-label{padding-right:30px}.lc-card{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:10px;margin-bottom:14px;padding:14px 16px}.lc-root .lc-card{margin-bottom:7px;padding:7px 8px;container:lc-card/inline-size}.lc-root .lc-cols{gap:7px;margin-bottom:7px}.lc-card-title{flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:10px;font-weight:600;display:flex}.lc-card-title-text{white-space:nowrap;flex:none}.lc-gran,.lc-kinds{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;gap:2px;margin-left:auto;padding:1px;display:flex}.lc-trend-ctl{align-items:center;gap:6px;margin-left:auto;display:flex}.lc-trend-ctl .lc-gran{margin-left:0}.lc-trend-adaptive{flex:none;margin-left:0}.lc-gran-btn{color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:5px;padding:3px 8px;font-family:inherit;font-size:11px;line-height:1}.lc-gran-btn:hover{color:var(--dsw-alias-label-primary)}.lc-gran-on,.lc-gran-on:hover{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.lc-kind-n{font-variant-numeric:tabular-nums;opacity:.65;margin-left:4px}.lc-gran-on .lc-kind-n{opacity:.85}.lc-tip{z-index:6;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);width:max-content;color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv3,0 2px 8px #0000002e);pointer-events:none;opacity:0;transition:opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:6px;padding:6px 10px;font-size:12px;position:absolute}.lc-events,.lc-fa-list{flex-direction:column;gap:2px;height:320px;display:flex;overflow-y:auto}.lc-cols{flex-wrap:wrap;gap:14px;margin-bottom:14px;display:flex}.lc-
|
|
9539
|
+
const css$13 = ".lc-root{box-sizing:border-box;height:100%;color:var(--dsw-alias-label-primary);padding:16px 20px 32px;font-size:13px;overflow-y:auto}[data-sidebar-right-open] .lc-root,[data-sidebar-right-float-host] .lc-root{height:auto;padding:12px;overflow:visible}.lc-title-icon{flex:none}.lc-title-label{padding-right:30px}.lc-card{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);border-radius:10px;margin-bottom:14px;padding:14px 16px}.lc-root .lc-card{margin-bottom:7px;padding:7px 8px;container:lc-card/inline-size}.lc-root .lc-cols{gap:7px;margin-bottom:7px}.lc-card-title{flex-wrap:wrap;align-items:baseline;gap:8px;margin-bottom:10px;font-weight:600;display:flex}.lc-card-title-text{white-space:nowrap;flex:none}.lc-gran,.lc-kinds{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;gap:2px;margin-left:auto;padding:1px;display:flex}.lc-trend-ctl{align-items:center;gap:6px;margin-left:auto;display:flex}.lc-trend-ctl .lc-gran{margin-left:0}.lc-trend-adaptive{flex:none;margin-left:0}.lc-gran-btn{color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:5px;padding:3px 8px;font-family:inherit;font-size:11px;line-height:1}.lc-gran-btn:hover{color:var(--dsw-alias-label-primary)}.lc-gran-on,.lc-gran-on:hover{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.lc-kind-n{font-variant-numeric:tabular-nums;opacity:.65;margin-left:4px}.lc-gran-on .lc-kind-n{opacity:.85}.lc-tip{z-index:6;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);width:max-content;color:var(--dsw-alias-label-primary);box-shadow:var(--dsw-shadow-lv3,0 2px 8px #0000002e);pointer-events:none;opacity:0;transition:opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:6px;padding:6px 10px;font-size:12px;position:absolute}.lc-events,.lc-fa-list{flex-direction:column;gap:2px;height:320px;display:flex;overflow-y:auto}.lc-cols{flex-wrap:wrap;gap:14px;margin-bottom:14px;display:flex}.lc-cols>.lc-card,.lc-col>.lc-card:last-child{margin-bottom:0}.lc-col-browser{flex-direction:column;display:flex}.lc-col-browser>.lc-card{flex:1}.lc-head>.lc-card:has(.lc-stats){flex-direction:column;display:flex}.lc-head .lc-stats{flex:1;align-content:stretch}.lc-head .lc-stat{justify-content:center}.lc-empty{color:var(--dsw-alias-label-secondary);text-align:center;padding:18px 0}.lc-error{flex-direction:column;align-items:center;gap:8px;padding:40px 16px;display:flex}.lc-error-msg{font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--dsw-alias-state-error-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);overflow-wrap:anywhere;border-radius:6px;max-width:100%;padding:4px 8px;font-size:12px}.lc-error-retry{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;transition:border-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:6px;padding:4px 14px;font-size:12px}.lc-foot{color:var(--dsw-alias-label-secondary);margin-top:4px;font-size:12px}[data-conversation-scroll]:has(.lc-root)>[data-composer-seat]:not(:has([data-approval-key],[data-question-key],[data-plan-review-key])),[data-conversation-scroll]:has(.lc-root,.lc-modal-backdrop)~[data-width-handle]{display:none}";
|
|
9190
9540
|
const tagId$13 = "dsh-context/base.css";
|
|
9191
9541
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$13) + "]") === null) {
|
|
9192
9542
|
const tag = document.createElement("style");
|
|
@@ -9197,7 +9547,7 @@ window.__ModuleLoader__.load({
|
|
|
9197
9547
|
}
|
|
9198
9548
|
//#endregion
|
|
9199
9549
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/stats.css.mjs
|
|
9200
|
-
const css$12 = ".lc-
|
|
9550
|
+
const css$12 = ".lc-stat{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;flex-direction:column;gap:2px;min-width:0;padding:6px;display:flex}.lc-stats .lc-stat{padding:6px 3px}.lc-stats .lc-stat-q{margin:0;position:absolute;top:3px;right:4px}.lc-stat-label{color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:11px;font-weight:600;overflow:hidden}.lc-stat-value{color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;text-align:center;font-size:14px;font-weight:600;overflow:hidden}.lc-stat-sub{color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;font-size:11px;overflow:hidden}.lc-stat-tipped{position:relative}.lc-stat-q{text-align:center;width:11px;height:11px;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);cursor:help;transition:color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), border-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:50%;margin-left:4px;font-size:9px;font-style:normal;font-weight:700;line-height:11px;display:inline-block}.lc-stat-tip{max-width:280px;font-weight:400;line-height:1.5;top:calc(100% + 6px);left:0}.lc-stat-tip-prices{border-top:1px dashed var(--dsw-alias-border-l1);margin-top:5px;padding-top:5px;display:block}.lc-stat-tip-head{font-weight:600;display:block}.lc-stat-tip-row{margin-top:2px;display:block}.lc-stat-tip-model{color:var(--dsw-alias-label-primary)}.lc-card-sub{color:var(--dsw-alias-label-secondary);margin-left:auto;font-size:12px;font-weight:400}.lc-overview-num{align-items:baseline;gap:6px;margin-bottom:8px;display:flex}.lc-overview-num>b{font-size:20px}.lc-overview-num span{color:var(--dsw-alias-label-secondary)}.lc-overview-pct{margin-left:auto;font-size:11px}.lc-overview-pct b{color:var(--dsw-alias-label-primary);margin-right:4px;font-size:20px}.lc-stat-head{color:var(--dsw-alias-label-secondary);margin:12px 0 8px;font-size:11px;font-weight:600}.lc-col-donut{flex-direction:column;display:flex}.lc-col-donut .lc-donut-row{flex:1}.lc-donut{flex:none;position:relative}.lc-donut svg{display:block}.lc-donut-track{stroke:color-mix(in srgb, var(--color-neutral-500) 18%, transparent)}.lc-donut-seg{transition:opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out)}.lc-donut-dim .lc-donut-seg{opacity:.35}.lc-donut-dim .lc-donut-seg-on{opacity:1}.lc-donut-center{pointer-events:none;text-align:center;box-sizing:border-box;flex-direction:column;justify-content:center;align-items:center;gap:1px;padding:0 7px;display:flex;position:absolute;inset:0}.lc-donut-center b{white-space:nowrap;text-overflow:ellipsis;max-width:100%;line-height:1.15;overflow:hidden}.lc-donut-center span{color:var(--dsw-alias-label-secondary);white-space:nowrap}.lc-sl{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:4px 20px;min-width:0;display:grid;overflow:hidden}.lc-sl-row{min-width:0;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:6px;flex-direction:column;gap:1px;margin:0 -6px;padding:1px 6px;font-size:12px;display:flex}.lc-sl-row-on{background:var(--dsw-alias-interactive-bg-hover)}.lc-sl-row-dim{opacity:.55}.lc-sl-main{align-items:center;gap:6px;min-width:0;display:flex}.lc-sl-dot{border-radius:2px;flex:none;width:8px;height:8px}.lc-sl-label{white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;font-weight:600;line-height:1.25;overflow:hidden}.lc-sl-pct{text-align:right;font-variant-numeric:tabular-nums;flex:none;min-width:34px;font-weight:700}.lc-sl-sub{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;text-overflow:ellipsis;margin-left:14px;font-size:11px;line-height:1.3;overflow:hidden}.lc-pi-grid{grid-template-columns:1fr;gap:8px;display:grid}.lc-pi-row-btn{appearance:none;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;width:100%;padding:0}.lc-pi-row{min-width:0;color:inherit;flex-direction:row;justify-content:space-between;align-items:baseline;gap:12px;text-decoration:none;display:flex}.lc-pi-hint{text-decoration:none}.lc-pi-update{color:var(--dsw-alias-state-warn-primary);white-space:nowrap;margin-left:6px;font-size:11px}.lc-pi-label{color:var(--dsw-alias-label-secondary);white-space:nowrap;text-overflow:ellipsis;flex:none;font-size:11px;font-weight:600;overflow:hidden}.lc-pi-value{min-width:0;color:var(--dsw-alias-label-primary);white-space:nowrap;text-overflow:ellipsis;text-align:right;font-size:13px;font-weight:600;overflow:hidden}.lc-pi-row-btn .lc-pi-value{font-weight:400}";
|
|
9201
9551
|
const tagId$12 = "dsh-context/stats.css";
|
|
9202
9552
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$12) + "]") === null) {
|
|
9203
9553
|
const tag = document.createElement("style");
|
|
@@ -9208,7 +9558,7 @@ window.__ModuleLoader__.load({
|
|
|
9208
9558
|
}
|
|
9209
9559
|
//#endregion
|
|
9210
9560
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/jump.css.mjs
|
|
9211
|
-
const css$11 = ".lc-jump{width:calc(28px + var(--dsh-content-font-delta,0px));height:calc(28px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);cursor:pointer;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:28px;justify-content:center;align-items:center;padding:6px;display:inline-flex}.lc-jump svg{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px))}
|
|
9561
|
+
const css$11 = ".lc-jump{width:calc(28px + var(--dsh-content-font-delta,0px));height:calc(28px + var(--dsh-content-font-delta,0px));color:var(--dsw-alias-label-tertiary);cursor:pointer;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:28px;justify-content:center;align-items:center;padding:6px;display:inline-flex}.lc-jump svg{width:calc(16px + var(--dsh-content-font-delta,0px));height:calc(16px + var(--dsh-content-font-delta,0px))}";
|
|
9212
9562
|
const tagId$11 = "dsh-context/jump.css";
|
|
9213
9563
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$11) + "]") === null) {
|
|
9214
9564
|
const tag = document.createElement("style");
|
|
@@ -9219,7 +9569,7 @@ window.__ModuleLoader__.load({
|
|
|
9219
9569
|
}
|
|
9220
9570
|
//#endregion
|
|
9221
9571
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/settings.css.mjs
|
|
9222
|
-
const css$10 = ".lc-settings-card{background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);transition:border-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:12px}.lc-settings-card:hover{border-color:var(--dsw-alias-label-dimmed)}.lc-settings-open,.lc-settings-open:hover{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.lc-settings-head{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}.lc-settings-headtext{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.lc-settings-name{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}.lc-settings-desc{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:1.5}.lc-settings-chevron{color:var(--dsw-alias-label-tertiary);transition:transform var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);flex:none}.lc-settings-open .lc-settings-chevron{transform:rotate(180deg)}.lc-settings-body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding:4px 0 12px}.lc-settings-row{align-items:center;gap:8px;padding:8px 0;display:flex}.lc-settings-label{min-width:0;color:var(--dsw-alias-label-primary);flex:1;font-size:14px}.lc-settings-select{background:var(--dsw-alias-bg-module-platform);height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border:none;border-radius:18px;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.lc-settings-
|
|
9572
|
+
const css$10 = ".lc-settings-card{background:var(--dsw-alias-bg-layer-3);border:1px solid var(--dsw-alias-border-l2);transition:border-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:12px}.lc-settings-card:hover{border-color:var(--dsw-alias-label-dimmed)}.lc-settings-open,.lc-settings-open:hover{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-label-dimmed)}.lc-settings-head{appearance:none;width:100%;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;padding:14px 16px;display:flex}.lc-settings-headtext{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.lc-settings-name{color:var(--dsw-alias-label-primary);font-size:15px;font-weight:600;line-height:1.4}.lc-settings-desc{color:var(--dsw-alias-label-tertiary);font-size:13px;line-height:1.5}.lc-settings-chevron{color:var(--dsw-alias-label-tertiary);transition:transform var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);flex:none}.lc-settings-open .lc-settings-chevron{transform:rotate(180deg)}.lc-settings-body{border-top:1px solid var(--dsw-alias-border-l2);margin:0 16px;padding:4px 0 12px}.lc-settings-row{align-items:center;gap:8px;padding:8px 0;display:flex}.lc-settings-label{min-width:0;color:var(--dsw-alias-label-primary);flex:1;font-size:14px}.lc-settings-select{background:var(--dsw-alias-bg-module-platform);height:36px;font:inherit;color:var(--dsw-alias-label-primary);cursor:pointer;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border:none;border-radius:18px;align-items:center;gap:12px;padding:0 14px;font-size:14px;line-height:22px;display:inline-flex}.lc-settings-note{color:var(--dsw-alias-label-tertiary);margin:12px 0 4px;font-size:12px;line-height:1.5}";
|
|
9223
9573
|
const tagId$10 = "dsh-context/settings.css";
|
|
9224
9574
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$10) + "]") === null) {
|
|
9225
9575
|
const tag = document.createElement("style");
|
|
@@ -9230,7 +9580,7 @@ window.__ModuleLoader__.load({
|
|
|
9230
9580
|
}
|
|
9231
9581
|
//#endregion
|
|
9232
9582
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/stackedBar.css.mjs
|
|
9233
|
-
const css$9 = ".lc-stacked-wrap{width:100%;position:relative}.lc-stacked{background
|
|
9583
|
+
const css$9 = ".lc-stacked-wrap{width:100%;position:relative}.lc-stacked{background:color-mix(in srgb, var(--color-neutral-500) 18%, transparent);border-radius:5px;width:100%;display:flex;position:relative;overflow:hidden}.lc-occupied-box{border:2px solid var(--dsw-alias-label-tertiary);box-sizing:border-box;pointer-events:none;opacity:0;box-shadow:0 0 0 1px var(--dsw-alias-bg-layer-2);transition:opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:5px;position:absolute;top:0;bottom:0;left:0}.lc-occupied-box-on{opacity:1}.lc-bar-tip{z-index:5;white-space:nowrap;padding:3px 8px;bottom:calc(100% + 6px);transform:translate(-50%)}.lc-bar-tip-on{opacity:1}.lc-stacked>div{height:100%}.lc-stacked-seg-pick{cursor:pointer}.lc-stacked-seg{transition:filter var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out)}.lc-stacked-free{box-sizing:border-box;transition:box-shadow var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out)}.lc-stacked-seg,.lc-stacked-free{transform-origin:0}.lc-stacked-seg-on{filter:brightness(1.18)}.lc-reserve{z-index:1;pointer-events:auto;cursor:help;background:repeating-linear-gradient(45deg, color-mix(in srgb, var(--dsw-alias-state-warn-primary) 24%, transparent) 0 5px, transparent 5px 10px);position:absolute;top:0;bottom:0}.lc-stacked-free-on{border:2px dashed var(--dsw-alias-label-secondary);border-radius:3px}.lc-stacked-dim .lc-stacked-seg{opacity:.35}.lc-stacked-dim .lc-stacked-seg-on{opacity:1}.lc-stacked-dim .lc-stacked-free{opacity:.35}.lc-stacked-dim .lc-stacked-free-on{opacity:1}.lc-legend{grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:6px 14px;margin-top:10px;display:grid}.lc-chip{min-width:0;color:var(--dsw-alias-label-primary);cursor:pointer;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:6px;align-items:center;gap:5px;padding:1px 6px;display:flex}.lc-chip-label{white-space:nowrap;text-overflow:ellipsis;min-width:0;font-weight:600;overflow:hidden}.lc-chip-nums{white-space:nowrap;flex:none;align-items:baseline;gap:6px;margin-left:auto;display:inline-flex}.lc-chip i,.lc-detail-row i{border-radius:2px;width:8px;height:8px;display:inline-block}.lc-chip i{transition:box-shadow var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out)}.lc-chip em{color:var(--dsw-alias-label-secondary);font-style:normal}.lc-chip-on{background:var(--dsw-alias-interactive-bg-hover);font-weight:600}.lc-chip-on i{box-shadow:0 0 0 1px var(--dsw-alias-brand-primary)}";
|
|
9234
9584
|
const tagId$9 = "dsh-context/stackedBar.css";
|
|
9235
9585
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$9) + "]") === null) {
|
|
9236
9586
|
const tag = document.createElement("style");
|
|
@@ -9241,7 +9591,7 @@ window.__ModuleLoader__.load({
|
|
|
9241
9591
|
}
|
|
9242
9592
|
//#endregion
|
|
9243
9593
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/trendChart.css.mjs
|
|
9244
|
-
const css$8 = ".lc-chartrow{align-items:stretch;gap:6px;display:flex}.lc-axis{box-sizing:border-box;width:40px;height:150px;color:var(--dsw-alias-label-secondary);padding-top:18px;font-size:11px;position:relative}.lc-axis span{line-height:1;position:absolute;right:0}.lc-axis-top{top:13px}.lc-axis-q3{top:41px}.lc-axis-mid{top:69px}.lc-axis-q1{top:97px}.lc-axis-bot{top:125px}.lc-chart-wrap{flex:1;min-width:0;position:relative}.lc-chart-scroll{overscroll-behavior-x:contain;scrollbar-gutter:stable;padding-bottom:var(--dsh-scrollbar-width,8px);overflow:auto hidden}.lc-chart{box-sizing:border-box;align-items:flex-end;gap:2px;width:max-content;min-width:100%;height:130px;padding-top:18px;display:flex;position:relative}.lc-grid{border-top:1px dashed var(--dsw-alias-border-l2);pointer-events:none;position:absolute;left:0;right:0}.lc-grid-top{top:18px}.lc-grid-q3{top:46px}.lc-grid-mid{top:74px}.lc-grid-q1{top:102px}.lc-grid-zero{border-top-style:solid;border-top-color
|
|
9594
|
+
const css$8 = ".lc-chartrow{align-items:stretch;gap:6px;display:flex}.lc-axis{box-sizing:border-box;width:40px;height:150px;color:var(--dsw-alias-label-secondary);padding-top:18px;font-size:11px;position:relative}.lc-axis span{line-height:1;position:absolute;right:0}.lc-axis-top{top:13px}.lc-axis-q3{top:41px}.lc-axis-mid{top:69px}.lc-axis-q1{top:97px}.lc-axis-bot{top:125px}.lc-chart-wrap{flex:1;min-width:0;position:relative}.lc-chart-scroll{overscroll-behavior-x:contain;scrollbar-gutter:stable;padding-bottom:var(--dsh-scrollbar-width,8px);overflow:auto hidden}.lc-chart{box-sizing:border-box;align-items:flex-end;gap:2px;width:max-content;min-width:100%;height:130px;padding-top:18px;display:flex;position:relative}.lc-grid{border-top:1px dashed var(--dsw-alias-border-l2);pointer-events:none;position:absolute;left:0;right:0}.lc-grid-top{top:18px}.lc-grid-q3{top:46px}.lc-grid-mid{top:74px}.lc-grid-q1{top:102px}.lc-grid-zero{border-top-style:solid;border-top-color:color-mix(in srgb, var(--color-neutral-500) 50%, transparent);top:130px}.lc-bar{cursor:pointer;outline-offset:1px;width:14px;height:100%;transition:opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), outline-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:2px;outline:1px dashed #0000;flex:none;align-items:flex-end;display:flex;position:relative}.lc-chart-dim .lc-bar{opacity:.35}.lc-chart-dim .lc-bar-in-turn{opacity:1}.lc-chart-dim .lc-turn{opacity:.35}.lc-chart-dim .lc-turn-on{opacity:1}.lc-chart-tip{z-index:5;box-sizing:border-box;overflow-wrap:break-word;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);max-width:100%;color:var(--dsw-alias-label-primary);pointer-events:none;border-radius:6px;flex-direction:column;gap:2px;padding:3px 8px;font-size:12px;display:flex;position:absolute;bottom:calc(100% + 4px);left:0;box-shadow:0 2px 8px #0000002e}.lc-chart-tip span+span{color:var(--dsw-alias-label-secondary)}.lc-bar-hovered{outline-color:var(--dsw-alias-brand-primary)}.lc-bar-selected{outline:2px solid var(--dsw-alias-label-primary);outline-offset:1px}.lc-bar-in-turn{background:color-mix(in srgb, var(--color-neutral-500) 14%, transparent)}.lc-bar-stack{flex-direction:column-reverse;width:100%;display:flex}.lc-bar-stack>div{width:100%}.lc-bar-stack,.lc-bar-up,.lc-bar-down{transform-origin:50% 100%}.lc-bar-down{transform-origin:50% 0}.lc-bar-stack>div:first-child{border-radius:0 0 2px 2px}.lc-bar-stack>div:last-child{border-radius:2px 2px 0 0}.lc-bar-stack>div:only-child{border-radius:2px}.lc-bar-up,.lc-bar-down{width:100%;display:flex;position:absolute;left:0}.lc-bar-up{flex-direction:column-reverse}.lc-bar-down{flex-direction:column}.lc-bar-up>div,.lc-bar-down>div{width:100%}.lc-bar-up>div:last-child{border-radius:2px 2px 0 0}.lc-bar-down>div:last-child{border-radius:0 0 2px 2px}.lc-cat-seg{transition:filter var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out)}.lc-chart[data-catdim] .lc-cat-seg{opacity:.35}.lc-chart[data-catdim=system] .lc-cat-seg[data-cat=system],.lc-chart[data-catdim=tools] .lc-cat-seg[data-cat=tools],.lc-chart[data-catdim=user] .lc-cat-seg[data-cat=user],.lc-chart[data-catdim=inject] .lc-cat-seg[data-cat=inject],.lc-chart[data-catdim=assistant] .lc-cat-seg[data-cat=assistant],.lc-chart[data-catdim=tool] .lc-cat-seg[data-cat=tool]{opacity:1;filter:brightness(1.18)}.lc-bar-marker{color:var(--dsw-alias-state-warn-primary);font-size:11px;position:absolute;top:-16px;left:50%;transform:translate(-50%)}.lc-turns{gap:2px;width:max-content;min-width:100%;margin-top:4px;display:flex;overflow:hidden}.lc-turn{box-sizing:border-box;text-align:center;color:var(--dsw-alias-label-secondary);white-space:nowrap;cursor:pointer;height:14px;transition:filter var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), opacity var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:3px;flex:none;font-size:10px;font-weight:600;line-height:14px}.lc-turn-on{filter:brightness(1.35);color:var(--dsw-alias-label-primary)}.lc-turn-label{display:inline-block}";
|
|
9245
9595
|
const tagId$8 = "dsh-context/trendChart.css";
|
|
9246
9596
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$8) + "]") === null) {
|
|
9247
9597
|
const tag = document.createElement("style");
|
|
@@ -9252,7 +9602,7 @@ window.__ModuleLoader__.load({
|
|
|
9252
9602
|
}
|
|
9253
9603
|
//#endregion
|
|
9254
9604
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/requestDetail.css.mjs
|
|
9255
|
-
const css$7 = ".lc-detail{border-top:1px solid var(--dsw-alias-border-l1);margin-top:12px;padding-top:12px}.lc-detail-head{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;align-items:center;gap:6px 8px;margin-bottom:10px;display:flex}.lc-detail-head b{color:var(--dsw-alias-label-primary);font-size:13px}.lc-detail-time{font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto;font-size:12px}.lc-detail-marker{color:var(--dsw-alias-state-warn-primary);background:color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);border-radius:6px;padding:1px 7px;font-size:11px}.lc-detail-tag{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-secondary);border-radius:4px;padding:0 6px;font-size:11px}.lc-detail-metric{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-label-secondary) 14%, transparent);border-radius:6px;padding:2px 8px;font-size:12px;font-weight:600}.lc-detail-metric-up{color:var(--dsw-alias-state-success-primary);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 15%, transparent)}.lc-detail-metric-down{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 15%, transparent)}.lc-detail-rows{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:4px 24px;margin-top:10px;display:grid}.lc-brief{flex-direction:column;gap:2px;min-height:76px;margin:-4px 0 10px;display:flex}.lc-brief-row{min-width:0;color:var(--dsw-alias-label-primary);text-align:left;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;margin-left:-6px;margin-right:-6px;padding:3px 6px;font-family:inherit;font-size:12px;line-height:1.5;display:flex}
|
|
9605
|
+
const css$7 = ".lc-detail{border-top:1px solid var(--dsw-alias-border-l1);margin-top:12px;padding-top:12px}.lc-detail-head{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;align-items:center;gap:6px 8px;margin-bottom:10px;display:flex}.lc-detail-head b{color:var(--dsw-alias-label-primary);font-size:13px}.lc-detail-time{font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto;font-size:12px}.lc-detail-marker{color:var(--dsw-alias-state-warn-primary);background:color-mix(in srgb, var(--dsw-alias-state-warn-primary) 12%, transparent);border-radius:6px;padding:1px 7px;font-size:11px}.lc-detail-tag{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-secondary);border-radius:4px;padding:0 6px;font-size:11px}.lc-detail-metric{font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-label-secondary) 14%, transparent);border-radius:6px;padding:2px 8px;font-size:12px;font-weight:600}.lc-detail-metric-up{color:var(--dsw-alias-state-success-primary);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 15%, transparent)}.lc-detail-metric-down{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 15%, transparent)}.lc-detail-rows{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:4px 24px;margin-top:10px;display:grid}.lc-brief{flex-direction:column;gap:2px;min-height:76px;margin:-4px 0 10px;display:flex}.lc-brief-row{min-width:0;color:var(--dsw-alias-label-primary);text-align:left;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;margin-left:-6px;margin-right:-6px;padding:3px 6px;font-family:inherit;font-size:12px;line-height:1.5;display:flex}button.lc-brief-row-link{cursor:pointer}.lc-brief-tag{box-sizing:border-box;text-align:center;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);min-width:56px;color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:0 6px;font-size:11px;position:relative}.lc-brief-tip{white-space:normal;text-align:left;max-width:240px;font-weight:400;line-height:1.5;bottom:calc(100% + 6px);left:0}.lc-brief-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.lc-brief-empty{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-tertiary);flex:1;overflow:hidden}.lc-brief-fact{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);max-width:160px;color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:0 6px;font-size:11px;overflow:hidden}.lc-brief-chip{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);min-width:0;max-width:260px;color:var(--dsw-alias-label-primary);transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:5px;align-items:center;gap:5px;padding:0 7px;font-size:12px;display:inline-flex;overflow:hidden}.lc-brief-chip-grow{flex:1;max-width:none}.lc-brief-chip-tag{text-overflow:ellipsis;white-space:nowrap;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l1);max-width:120px;color:var(--dsw-alias-label-secondary);border-radius:4px;flex:none;padding:0 6px;font-size:11px;overflow:hidden}.lc-brief-chip-text{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.lc-brief-chip-link{cursor:pointer}.lc-brief-more{color:var(--dsw-alias-label-secondary);flex:none;font-size:11px}.lc-detail-row{transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:4px;align-items:center;gap:8px;margin:-1px -4px;padding:1px 4px;display:flex}.lc-detail-row i{transition:box-shadow var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out)}.lc-detail-row-on{background:var(--dsw-alias-interactive-bg-hover)}.lc-detail-row-on i{box-shadow:0 0 0 1px var(--dsw-alias-brand-primary)}.lc-detail-row-on .lc-detail-label{font-weight:600}.lc-detail-label{white-space:nowrap;min-width:70px;color:var(--dsw-alias-label-secondary)}.lc-bar-track{background:color-mix(in srgb, var(--color-neutral-500) 18%, transparent);border-radius:3px;flex:1;height:5px;display:block;position:relative;overflow:hidden}.lc-bar-fill{border-radius:3px;height:100%;display:block}.lc-bar-zero{border-left:1px solid color-mix(in srgb, var(--color-neutral-500) 45%, transparent);position:absolute;top:0;bottom:0;left:50%}.lc-bar-fill-up,.lc-bar-fill-down{height:100%;display:block;position:absolute;top:0}.lc-bar-fill-up{border-radius:0 3px 3px 0;left:50%}.lc-bar-fill-down{border-radius:3px 0 0 3px;right:50%}.lc-detail-num{text-align:right;font-variant-numeric:tabular-nums;width:52px}.lc-detail-num-up{color:var(--dsw-alias-state-success-primary)}.lc-detail-num-down{color:var(--dsw-alias-state-error-primary)}.lc-detail-pct{text-align:right;width:34px;color:var(--dsw-alias-label-secondary)}";
|
|
9256
9606
|
const tagId$7 = "dsh-context/requestDetail.css";
|
|
9257
9607
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$7) + "]") === null) {
|
|
9258
9608
|
const tag = document.createElement("style");
|
|
@@ -9263,7 +9613,7 @@ window.__ModuleLoader__.load({
|
|
|
9263
9613
|
}
|
|
9264
9614
|
//#endregion
|
|
9265
9615
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/events.css.mjs
|
|
9266
|
-
const css$6 = ".lc-event{align-items:center;gap:8px;padding:3px 0;display:flex}.lc-event-icon{text-align:center;width:18px;color:var(--dsw-alias-state-warn-primary)}.lc-event-icon.lc-event-inject{color
|
|
9616
|
+
const css$6 = ".lc-event{align-items:center;gap:8px;padding:3px 0;display:flex}.lc-event-icon{text-align:center;width:18px;color:var(--dsw-alias-state-warn-primary)}.lc-event-icon.lc-event-inject{color:var(--color-purple-500)}.lc-event-icon.lc-event-model{color:var(--dsw-alias-brand-primary)}.lc-event-icon.lc-event-mode{color:var(--dsw-alias-label-secondary)}.lc-kind{white-space:nowrap;border-radius:4px;flex:none;padding:1px 6px;font-size:10px;font-weight:600}.lc-kind-inject{background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 15%, transparent);color:var(--dsw-alias-state-success-primary)}.lc-kind-compaction{background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 15%, transparent);color:var(--dsw-alias-state-error-primary)}.lc-kind-prune{background:color-mix(in srgb, var(--color-violet-500) 15%, transparent);color:var(--color-violet-500)}.lc-kind-model{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 15%, transparent);color:var(--dsw-alias-brand-primary)}.lc-kind-mode{background:color-mix(in srgb, var(--dsw-alias-label-secondary) 15%, transparent);color:var(--dsw-alias-label-secondary)}.lc-event-label{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.lc-event-at{color:var(--dsw-alias-label-secondary);white-space:nowrap;flex:none;font-size:11px}.lc-event-tokens{color:var(--dsw-alias-state-success-primary);white-space:nowrap;font-weight:600}.lc-event-tokens.lc-up{color:var(--dsw-alias-state-warn-primary)}.lc-event-time{color:var(--dsw-alias-label-secondary);font-size:12px}";
|
|
9267
9617
|
const tagId$6 = "dsh-context/events.css";
|
|
9268
9618
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$6) + "]") === null) {
|
|
9269
9619
|
const tag = document.createElement("style");
|
|
@@ -9274,7 +9624,7 @@ window.__ModuleLoader__.load({
|
|
|
9274
9624
|
}
|
|
9275
9625
|
//#endregion
|
|
9276
9626
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/fileCard.css.mjs
|
|
9277
|
-
const css$5 = ".lc-fa-ctl,.lc-br-toolctl{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.lc-fa-ctl .lc-gran{margin-left:0}.lc-fa-n{opacity:.75;margin-left:4px;font-weight:700}.lc-fa-search,.lc-br-tool-search{min-width:80px;font:inherit;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;outline:none;flex:1;padding:3px 8px;font-size:12px}.lc-fa-
|
|
9627
|
+
const css$5 = ".lc-fa-ctl,.lc-br-toolctl{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:8px;display:flex}.lc-fa-ctl .lc-gran{margin-left:0}.lc-fa-n{opacity:.75;margin-left:4px;font-weight:700}.lc-fa-search,.lc-br-tool-search{min-width:80px;font:inherit;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;outline:none;flex:1;padding:3px 8px;font-size:12px}.lc-fa-meta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;font-size:12px;display:flex}.lc-fa-meta .lc-fa-sort{flex:none}.lc-fa-meta-delta{position:relative}.lc-fa-meta-tip{white-space:normal;max-width:260px;line-height:1.5;top:calc(100% + 6px);left:0}.lc-fa-item{transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), border-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border:1px solid #0000;border-radius:8px}.lc-fa-item-on{background:var(--dsw-alias-bg-layer-2);border-color:var(--dsw-alias-border-l2)}.lc-fa-row{width:100%;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;text-align:left;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:7px;align-items:center;gap:7px;padding:6px 8px;font-size:12px;display:flex}.lc-fa-form{opacity:.85;flex:none;justify-content:center;align-items:center;width:20px;height:14px;font-size:11px;display:flex}.lc-fa-lang{border-radius:4px;justify-content:center;align-items:center;min-width:16px;height:13px;padding:0 2px;font-size:8px;font-weight:700;line-height:1;display:inline-flex}.lc-fa-row .lc-br-chev{margin-right:-2px}.lc-fa-path{word-break:break-all;min-width:0}.lc-fa-file{cursor:pointer}.lc-fa-path em{color:var(--dsw-alias-label-secondary);font-style:normal}.lc-fa-badge{font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;flex:none;align-items:center;gap:4px;padding:1px 7px;font-size:11px;font-weight:600;display:inline-flex}.lc-fa-badge i{background:currentColor;border-radius:50%;width:5px;height:5px;display:inline-block}.lc-fa-b-read{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, transparent)}.lc-fa-b-write{color:var(--dsw-alias-state-success-primary);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 14%, transparent)}.lc-fa-b-search{color:var(--dsw-alias-state-warn-primary);background:color-mix(in srgb, var(--dsw-alias-state-warn-primary) 14%, transparent)}.lc-fa-chip-read,.lc-fa-chip-read:hover{color:var(--dsw-alias-brand-primary)}.lc-fa-chip-write,.lc-fa-chip-write:hover{color:var(--dsw-alias-state-success-primary)}.lc-fa-chip-search,.lc-fa-chip-search:hover{color:var(--dsw-alias-state-warn-primary)}.lc-fa-chip-read.lc-gran-on,.lc-fa-chip-read.lc-gran-on:hover{background:color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, transparent);color:var(--dsw-alias-brand-primary)}.lc-fa-chip-write.lc-gran-on,.lc-fa-chip-write.lc-gran-on:hover{background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 14%, transparent);color:var(--dsw-alias-state-success-primary)}.lc-fa-chip-search.lc-gran-on,.lc-fa-chip-search.lc-gran-on:hover{background:color-mix(in srgb, var(--dsw-alias-state-warn-primary) 14%, transparent);color:var(--dsw-alias-state-warn-primary)}.lc-fa-delta{font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;gap:5px;font-size:11px;font-weight:600;display:inline-flex}.lc-fa-up{color:var(--dsw-alias-state-success-primary)}.lc-fa-down{color:var(--dsw-alias-state-error-primary)}.lc-fa-time{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;flex:none;font-size:11px}.lc-fa-ops{border-left:2px solid var(--dsw-alias-border-l1);flex-direction:column;gap:1px;margin:0 8px 8px 15px;padding:2px 0 2px 10px;display:flex}.lc-fa-op{min-width:0;color:var(--dsw-alias-label-primary);font:inherit;text-align:left;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:5px;align-items:center;gap:8px;padding:3px 6px;font-size:11px;display:flex}.lc-fa-op-link{cursor:pointer}.lc-fa-op-time{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;flex:none;margin-left:auto}.lc-fa-op-tool{text-overflow:ellipsis;white-space:nowrap;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l1);max-width:220px;color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:0 6px;font-size:11px;overflow:hidden}.lc-fa-op-detail{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-secondary);flex:1;overflow:hidden}.lc-fa-read{color:var(--dsw-alias-brand-primary);font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;font-size:11px;font-weight:600}";
|
|
9278
9628
|
const tagId$5 = "dsh-context/fileCard.css";
|
|
9279
9629
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$5) + "]") === null) {
|
|
9280
9630
|
const tag = document.createElement("style");
|
|
@@ -9285,7 +9635,7 @@ window.__ModuleLoader__.load({
|
|
|
9285
9635
|
}
|
|
9286
9636
|
//#endregion
|
|
9287
9637
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/modal.css.mjs
|
|
9288
|
-
const css$4 = ".lc-modal-backdrop{z-index:200;background:var(--dsw-alias-bg-mask-1,#00000073);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lc-modal-card{box-sizing:border-box;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);width:min(720px,100vw - 48px);max-height:min(82vh,760px);box-shadow:var(--dsw-shadow-lv3,0 12px 32px #0006);color:var(--dsw-alias-label-primary);border-radius:12px;padding:16px 18px 18px;font-size:13px;overflow-y:auto}.lc-modal-head{align-items:baseline;gap:8px;margin-bottom:12px;display:flex}.lc-modal-title{font-size:14px;font-weight:600}.lc-modal-close{color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:6px;margin-left:auto;padding:2px 6px;font-family:inherit;font-size:18px;line-height:1}.lc-
|
|
9638
|
+
const css$4 = ".lc-modal-backdrop{z-index:200;background:var(--dsw-alias-bg-mask-1,#00000073);justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.lc-modal-card{box-sizing:border-box;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);width:min(720px,100vw - 48px);max-height:min(82vh,760px);box-shadow:var(--dsw-shadow-lv3,0 12px 32px #0006);color:var(--dsw-alias-label-primary);border-radius:12px;padding:16px 18px 18px;font-size:13px;overflow-y:auto}.lc-modal-head{align-items:baseline;gap:8px;margin-bottom:12px;display:flex}.lc-modal-title{font-size:14px;font-weight:600}.lc-modal-close{color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:6px;margin-left:auto;padding:2px 6px;font-family:inherit;font-size:18px;line-height:1}.lc-gate-card{width:min(440px,100vw - 48px)}.lc-gate-body{color:var(--dsw-alias-label-secondary);line-height:1.7}.lc-gate-versions{gap:24px;margin-top:14px;display:flex}.lc-gate-version{flex-direction:column;gap:2px;display:flex}.lc-gate-version-label{color:var(--dsw-alias-label-secondary);font-size:11px}.lc-gate-version-value{font-weight:600;font-family:var(--dsw-font-family-mono,monospace);color:var(--dsw-alias-label-primary)}.lc-gate-or-newer{color:var(--dsw-alias-label-secondary);margin-left:6px;font-family:inherit;font-size:11px;font-weight:400}.lc-gate-actions{justify-content:flex-end;margin-top:16px;display:flex}.lc-gate-ok{cursor:pointer;background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground);transition:filter var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border:0;border-radius:6px;padding:6px 16px;font-family:inherit;font-size:12px}";
|
|
9289
9639
|
const tagId$4 = "dsh-context/modal.css";
|
|
9290
9640
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$4) + "]") === null) {
|
|
9291
9641
|
const tag = document.createElement("style");
|
|
@@ -9296,7 +9646,7 @@ window.__ModuleLoader__.load({
|
|
|
9296
9646
|
}
|
|
9297
9647
|
//#endregion
|
|
9298
9648
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/browser.css.mjs
|
|
9299
|
-
const css$3 = ".lc-br-dna-ctl{flex:none;margin-left:0}.lc-br-bar-dna .lc-stacked-seg{background-image:linear-gradient(to right, transparent calc(100% - min(.5px, 12.5%)), var(--dsw-alias-bg-layer-1) 0)}.lc-br-hint{color:var(--dsw-alias-label-secondary);white-space:nowrap;margin-left:auto;font-size:11px;font-weight:400}.lc-br-pick{font:inherit;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;max-width:240px;padding:3px 6px;font-size:12px}.lc-br-meta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:6px 16px;margin-bottom:8px;display:flex}.lc-br-meta b{color:var(--dsw-alias-label-primary)}.lc-br-meta .lc-est{margin-left:auto}.lc-br-note{color:var(--dsw-alias-label-secondary);margin-top:8px;font-size:12px}.lc-br-retry{color:var(--dsw-alias-brand-primary);font:inherit;cursor:pointer;text-underline-offset:2px;transition:filter var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;padding:0;font-size:12px;text-decoration:underline}.lc-br-
|
|
9649
|
+
const css$3 = ".lc-br-dna-ctl{flex:none;margin-left:0}.lc-br-bar-dna .lc-stacked-seg{background-image:linear-gradient(to right, transparent calc(100% - min(.5px, 12.5%)), var(--dsw-alias-bg-layer-1) 0)}.lc-br-hint{color:var(--dsw-alias-label-secondary);white-space:nowrap;margin-left:auto;font-size:11px;font-weight:400}.lc-br-pick{font:inherit;color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;max-width:240px;padding:3px 6px;font-size:12px}.lc-br-meta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:6px 16px;margin-bottom:8px;display:flex}.lc-br-meta b{color:var(--dsw-alias-label-primary)}.lc-br-meta .lc-est{margin-left:auto}.lc-br-note{color:var(--dsw-alias-label-secondary);margin-top:8px;font-size:12px}.lc-br-retry{color:var(--dsw-alias-brand-primary);font:inherit;cursor:pointer;text-underline-offset:2px;transition:filter var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;padding:0;font-size:12px;text-decoration:underline}.lc-br-cats{flex-direction:column;gap:4px;margin-top:10px;display:flex}.lc-br-cat{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:8px;overflow:hidden}.lc-br-cat-empty{opacity:.55}.lc-br-cat-row{width:100%;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;text-align:left;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;align-items:center;gap:8px;padding:7px 10px;display:flex}.lc-br-cat-on{background:var(--dsw-alias-interactive-bg-hover)}.lc-br-cat-on i{box-shadow:0 0 0 1px var(--dsw-alias-brand-primary)}.lc-br-cat-row i{width:8px;height:8px;transition:box-shadow var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:2px;flex:none;display:inline-block}.lc-br-cat-label{font-weight:600}.lc-br-cat-count{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-size:12px}.lc-br-count-grp{flex:1;align-items:center;gap:4px;min-width:0;display:inline-flex}.lc-br-chev{width:12px;height:14px;color:var(--dsw-alias-label-tertiary);flex:none;justify-content:center;align-items:center;display:flex}.lc-br-chev:before{content:\"\";width:5px;height:5px;transition:transform var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-bottom:1px solid;border-right:1px solid;transform:rotate(-45deg)}.lc-br-chev-on:before{transform:rotate(45deg)}.lc-br-tokens{color:var(--dsw-alias-label-secondary);flex:none;font-size:12px}.lc-br-delta,.lc-br-tdelta{white-space:nowrap;border-radius:4px;flex:none;padding:0 5px;font-size:11px;font-weight:600}.lc-br-delta-up,.lc-br-tdelta-up{color:var(--dsw-alias-state-success-primary);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 15%, transparent)}.lc-br-delta-down,.lc-br-tdelta-down{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 15%, transparent)}.lc-br-tokens-grp{flex:none;align-items:center;gap:4px;min-width:0;display:inline-flex}.lc-br-pct{text-align:right;width:36px;color:var(--dsw-alias-label-secondary);flex:none;font-size:12px}.lc-br-body{border-top:1px solid var(--dsw-alias-border-l1);flex-direction:column;gap:2px;padding:4px 6px;display:flex}.lc-br-elem{border-radius:6px}.lc-br-elem-on{background:var(--dsw-alias-interactive-bg-active)}.lc-br-elem-row{width:100%;color:var(--dsw-alias-label-primary);font:inherit;cursor:pointer;text-align:left;transition:background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:6px;align-items:center;gap:8px;padding:5px 6px;font-size:12px;display:flex}.lc-br-err-dot{background:var(--dsw-alias-state-error-primary);width:6px;height:6px;box-shadow:0 0 0 2px color-mix(in srgb, var(--dsw-alias-state-error-primary) 10%, transparent);border-radius:50%;flex:none}.lc-br-tag{min-width:0;color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l1);text-overflow:ellipsis;white-space:nowrap;border-radius:4px;max-width:220px;padding:0 6px;font-size:11px;overflow:hidden}.lc-br-tool-plugin{color:var(--dsw-alias-brand-primary);background:color-mix(in srgb, var(--dsw-alias-brand-primary) 14%, transparent);border-color:#0000;border-radius:6px;font-size:12px}.lc-br-preview{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.lc-br-time,.lc-br-hits{color:var(--dsw-alias-label-secondary);flex:none;font-size:11px}.lc-br-content{flex-direction:column;gap:6px;padding:2px 6px 8px 26px;display:flex}.lc-br-dim{color:var(--dsw-alias-label-secondary)}";
|
|
9300
9650
|
const tagId$3 = "dsh-context/browser.css";
|
|
9301
9651
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$3) + "]") === null) {
|
|
9302
9652
|
const tag = document.createElement("style");
|
|
@@ -9307,7 +9657,7 @@ window.__ModuleLoader__.load({
|
|
|
9307
9657
|
}
|
|
9308
9658
|
//#endregion
|
|
9309
9659
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/detailSections.css.mjs
|
|
9310
|
-
const css$2 = ".lc-ts-card{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;min-width:0;overflow:hidden}.lc-ts-card-head{color:var(--dsw-alias-label-secondary);border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:8px;padding:6px 10px;font-size:11px;font-weight:600;display:flex}.lc-ts-card-head-wrap{flex-wrap:wrap}.lc-ts-card-head b{color:var(--dsw-alias-label-primary)}.lc-ts-call-name{font-size:13px;font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.lc-ts-card-count{margin-left:auto}.lc-ts-card-right{align-items:center;gap:8px;margin-left:auto;display:inline-flex}.lc-ts-card-meta{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:11px;font-weight:400}.lc-ts-call-state{white-space:nowrap;font-size:11px;font-weight:600;line-height:1;font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);border-radius:999px;flex:none;align-items:center;gap:4px;padding:2px 7px;display:inline-flex}.lc-ts-call-state i{background:currentColor;border-radius:50%;flex:none;width:6px;height:6px}.lc-ts-call-ok{color:var(--dsw-alias-state-success-primary);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent)}.lc-ts-call-err{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent)}.lc-ts-desc-body{color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;scrollbar-width:thin;max-height:320px;margin:0;padding:8px 10px;font-size:12px;line-height:1.55;overflow-y:auto}.lc-ts-lines{counter-reset:lc-line}.lc-ts-line{padding-left:26px;display:block;position:relative}.lc-ts-line:before{content:counter(lc-line);counter-increment:lc-line;text-align:right;width:20px;color:var(--dsw-alias-label-tertiary);user-select:none;padding-right:6px;font-size:11px;position:absolute;left:0}.lc-ts-line:empty:after{content:\"\"}.lc-ts-param-row{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:minmax(0,140px) minmax(0,90px) 56px minmax(0,1fr);align-items:baseline;gap:2px 10px;padding:6px 10px;font-size:12px;display:grid}.lc-ts-param-row:first-of-type{border-top:0}.lc-ts-param-name{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.lc-ts-param-type{color:var(--dsw-alias-label-secondary);font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.lc-ts-param-req{color:var(--dsw-alias-state-warn-primary);font-size:11px;font-weight:600}.lc-ts-param-req-off{color:var(--dsw-alias-label-secondary);font-size:11px}.lc-ts-param-desc{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;grid-column:1/-1;line-height:1.5}.lc-ts-params-empty{color:var(--dsw-alias-label-secondary);padding:8px 10px;font-size:12px}.lc-ts-arg-row{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:minmax(0,96px) 1fr;align-items:start;column-gap:12px;padding:6px 10px;font-size:12px;display:grid}.lc-ts-arg-row:first-of-type{border-top:0}.lc-ts-arg-row .lc-ts-param-name{text-overflow:unset;white-space:normal;overflow-wrap:anywhere;overflow:visible}.lc-ts-arg-val{color:var(--dsw-alias-label-primary);font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);white-space:pre-wrap;word-break:break-word;scrollbar-width:thin;max-height:200px;font-size:12px;line-height:1.55;overflow-y:auto}.lc-ts-json{flex-direction:column;gap:4px;display:flex}.lc-ts-json-toggle{color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;transition:color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;align-self:flex-start;padding:0;font-size:11px}.lc-
|
|
9660
|
+
const css$2 = ".lc-ts-card{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;min-width:0;overflow:hidden}.lc-ts-card-head{color:var(--dsw-alias-label-secondary);border-bottom:1px solid var(--dsw-alias-border-l1);align-items:center;gap:8px;padding:6px 10px;font-size:11px;font-weight:600;display:flex}.lc-ts-card-head-wrap{flex-wrap:wrap}.lc-ts-card-head b{color:var(--dsw-alias-label-primary)}.lc-ts-call-name{font-size:13px;font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.lc-ts-card-count{margin-left:auto}.lc-ts-card-right{align-items:center;gap:8px;margin-left:auto;display:inline-flex}.lc-ts-card-meta{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:11px;font-weight:400}.lc-ts-call-state{white-space:nowrap;font-size:11px;font-weight:600;line-height:1;font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);border-radius:999px;flex:none;align-items:center;gap:4px;padding:2px 7px;display:inline-flex}.lc-ts-call-state i{background:currentColor;border-radius:50%;flex:none;width:6px;height:6px}.lc-ts-call-ok{color:var(--dsw-alias-state-success-primary);background:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent)}.lc-ts-call-err{color:var(--dsw-alias-state-error-primary);background:color-mix(in srgb, var(--dsw-alias-state-error-primary) 12%, transparent)}.lc-ts-desc-body{color:var(--dsw-alias-label-primary);white-space:pre-wrap;word-break:break-word;scrollbar-width:thin;max-height:320px;margin:0;padding:8px 10px;font-size:12px;line-height:1.55;overflow-y:auto}.lc-ts-lines{counter-reset:lc-line}.lc-ts-line{padding-left:26px;display:block;position:relative}.lc-ts-line:before{content:counter(lc-line);counter-increment:lc-line;text-align:right;width:20px;color:var(--dsw-alias-label-tertiary);user-select:none;padding-right:6px;font-size:11px;position:absolute;left:0}.lc-ts-line:empty:after{content:\"\"}.lc-ts-param-row{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:minmax(0,140px) minmax(0,90px) 56px minmax(0,1fr);align-items:baseline;gap:2px 10px;padding:6px 10px;font-size:12px;display:grid}.lc-ts-param-row:first-of-type{border-top:0}.lc-ts-param-name{color:var(--dsw-alias-label-primary);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.lc-ts-param-type{color:var(--dsw-alias-label-secondary);font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);text-overflow:ellipsis;white-space:nowrap;font-size:11px;overflow:hidden}.lc-ts-param-req{color:var(--dsw-alias-state-warn-primary);font-size:11px;font-weight:600}.lc-ts-param-req-off{color:var(--dsw-alias-label-secondary);font-size:11px}.lc-ts-param-desc{color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;grid-column:1/-1;line-height:1.5}.lc-ts-params-empty{color:var(--dsw-alias-label-secondary);padding:8px 10px;font-size:12px}.lc-ts-arg-row{border-top:1px solid var(--dsw-alias-border-l1);grid-template-columns:minmax(0,96px) 1fr;align-items:start;column-gap:12px;padding:6px 10px;font-size:12px;display:grid}.lc-ts-arg-row:first-of-type{border-top:0}.lc-ts-arg-row .lc-ts-param-name{text-overflow:unset;white-space:normal;overflow-wrap:anywhere;overflow:visible}.lc-ts-arg-val{color:var(--dsw-alias-label-primary);font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);white-space:pre-wrap;word-break:break-word;scrollbar-width:thin;max-height:200px;font-size:12px;line-height:1.55;overflow-y:auto}.lc-ts-json{flex-direction:column;gap:4px;display:flex}.lc-ts-json-toggle{color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;transition:color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;align-self:flex-start;padding:0;font-size:11px}.lc-rich-seg{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);border-radius:6px;gap:2px;margin-left:auto;padding:1px;display:flex}.lc-rich-seg-btn{color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:5px;padding:3px 8px;font-family:inherit;font-size:11px;line-height:1}.lc-rich-seg-btn:hover{color:var(--dsw-alias-label-primary)}.lc-rich-seg-on,.lc-rich-seg-on:hover{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground)}.lc-rich-copy{color:var(--dsw-alias-label-secondary);cursor:pointer;transition:color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border:0;border-radius:5px;align-items:center;padding:2px;display:inline-flex}.lc-rich-copy:hover{color:var(--dsw-alias-label-primary)}.lc-rich-copy-on,.lc-rich-copy-on:hover{color:var(--dsw-alias-state-success-primary)}.lc-ts-desc-md{color:var(--dsw-alias-label-primary);word-break:break-word;overflow-wrap:anywhere;scrollbar-width:thin;min-width:0;max-height:320px;padding:4px 10px;font-size:12px;line-height:1.55;overflow:hidden auto}.lc-ts-desc-md>div{font-size:13px;line-height:1.55}.lc-ts-desc-md div :is(h1,h2,h3,h4,h5,h6){margin:10px 0 4px;font-size:13px;font-weight:600}.lc-ts-desc-md div p{white-space:pre-line;margin:6px 0}.lc-ts-desc-md div p br{display:none}.lc-ts-desc-md div pre{white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;margin:6px 0}.lc-ts-desc-md div :not(pre)>code{box-decoration-break:clone;padding:1px 5px;line-height:1.3;font-size:1em!important}.lc-ts-desc-md div table code{font-size:inherit}";
|
|
9311
9661
|
const tagId$2 = "dsh-context/detailSections.css";
|
|
9312
9662
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$2) + "]") === null) {
|
|
9313
9663
|
const tag = document.createElement("style");
|
|
@@ -9318,7 +9668,7 @@ window.__ModuleLoader__.load({
|
|
|
9318
9668
|
}
|
|
9319
9669
|
//#endregion
|
|
9320
9670
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/attachments.css.mjs
|
|
9321
|
-
const css$1 = ".lc-att-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:8px 10px;display:grid}.lc-att-item{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:100%;min-width:0;font:inherit;text-align:left;cursor:pointer;transition:border-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border-radius:8px;align-items:center;gap:8px;padding:6px;display:flex}.lc-att-
|
|
9671
|
+
const css$1 = ".lc-att-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:8px 10px;display:grid}.lc-att-item{box-sizing:border-box;border:1px solid var(--dsw-alias-border-l2);width:100%;min-width:0;font:inherit;text-align:left;cursor:pointer;transition:border-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out), background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border-radius:8px;align-items:center;gap:8px;padding:6px;display:flex}.lc-att-thumb{border:1px solid var(--dsw-alias-border-l1);background:var(--dsw-alias-bg-layer-1);border-radius:6px;flex:none;justify-content:center;align-items:center;width:64px;height:64px;padding:0;display:flex;overflow:hidden}.lc-att-thumb img{object-fit:cover;width:100%;height:100%;display:block}.lc-att-ph,.lc-att-err{color:var(--dsw-alias-label-secondary);text-align:center;padding:2px;font-size:10px}.lc-att-meta{flex-direction:column;gap:2px;min-width:0;display:flex}.lc-att-name{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere;word-break:break-word;font-size:12px;line-height:1.3}.lc-att-row{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:11px}.lc-att-row-label{min-width:3.2em;font-weight:400;display:inline-block}.lc-att-lightbox{z-index:1000;place-items:center;padding:40px;display:grid;position:fixed;inset:0}.lc-att-lightbox-mask{background:var(--dsw-alias-bg-mask-1,#00000073);backdrop-filter:var(--dsw-mask-blur,blur(2px));position:absolute;inset:0}.lc-att-lightbox-img{object-fit:contain;background:var(--dsw-specific-input-major,var(--dsw-alias-bg-layer-1));max-width:min(100%,1600px);max-height:calc(100vh - 80px);box-shadow:var(--dsw-shadow-lv3,0 12px 32px #0006);border-radius:12px;position:relative}.lc-att-lightbox-close{z-index:1;border:1px solid var(--dsw-alias-border-l2-darkmode-thin,var(--dsw-alias-border-l1));background:var(--dsw-specific-input-major,var(--dsw-alias-bg-layer-1));width:36px;height:36px;color:var(--dsw-alias-label-primary);cursor:pointer;border-radius:999px;place-items:center;padding:0;display:grid;position:fixed;top:20px;right:20px}";
|
|
9322
9672
|
const tagId$1 = "dsh-context/attachments.css";
|
|
9323
9673
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId$1) + "]") === null) {
|
|
9324
9674
|
const tag = document.createElement("style");
|
|
@@ -9329,7 +9679,7 @@ window.__ModuleLoader__.load({
|
|
|
9329
9679
|
}
|
|
9330
9680
|
//#endregion
|
|
9331
9681
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/agentGraph.css.mjs
|
|
9332
|
-
const css = ".lc-agents-chips{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.lc-agents-chip{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;border-radius:999px;padding:2px 8px;font-size:11px}.lc-agents-chip-on{color:var(--dsw-alias-state-success-primary);border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 40%, transparent)}.lc-agents-stage{overscroll-behavior-x:contain;margin:0 -4px;padding:0 4px;overflow-x:auto}.lc-agents-svg{max-width:none;margin:0 auto;display:block}.lc-agents-link
|
|
9682
|
+
const css = ".lc-agents-chips{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.lc-agents-chip{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;border-radius:999px;padding:2px 8px;font-size:11px}.lc-agents-chip-on{color:var(--dsw-alias-state-success-primary);border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 40%, transparent)}.lc-agents-stage{overscroll-behavior-x:contain;margin:0 -4px;padding:0 4px;overflow-x:auto}.lc-agents-svg{max-width:none;margin:0 auto;display:block}.lc-agents-link-live{stroke-opacity:.85}.lc-agents-flow{stroke-linecap:round;stroke-dasharray:2 7}.lc-agent-node{outline:none}.lc-agent-clickable{cursor:pointer}.lc-agent-halo{transition:fill var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out)}.lc-agent-self .lc-agent-halo{fill:var(--dsw-alias-bg-layer-2)}.lc-agent-running .lc-agent-halo{fill:color-mix(in srgb, var(--dsw-alias-state-success-primary) 12%, transparent)}.lc-agent-done .lc-agent-halo{fill:color-mix(in srgb, var(--dsw-alias-state-success-primary) 7%, transparent)}.lc-agent-seg{transition:stroke-dasharray .3s,stroke-dashoffset .3s}.lc-agent-free{stroke:color-mix(in srgb, var(--dsw-alias-label-secondary) 18%, transparent)}.lc-agent-pct{font-variant-numeric:tabular-nums;pointer-events:none;font-size:11px;font-weight:600}.lc-agent-caption{text-align:center;pointer-events:none;width:100%;line-height:1.25}.lc-agent-label{color:var(--dsw-alias-label-primary);overflow-wrap:break-word;-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:11px;display:-webkit-box;overflow:hidden}.lc-agent-tokens{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;font-size:10px}.lc-agents-solo{padding:4px 0 10px}.lc-agents-inspector{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);border-radius:8px;flex-wrap:wrap;align-items:baseline;gap:4px 8px;min-width:0;margin-top:10px;padding:7px 10px;font-size:12px;display:flex}.lc-agents-inspector-name{color:var(--dsw-alias-label-primary);overflow-wrap:anywhere}.lc-agents-badge{background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l1);color:var(--dsw-alias-label-secondary);border-radius:999px;flex:none;padding:1px 6px;font-size:10px}.lc-agent-self-badge{vertical-align:1px;margin-left:5px}.lc-agents-badge-on{color:var(--dsw-alias-state-success-primary);border-color:color-mix(in srgb, var(--dsw-alias-state-success-primary) 40%, transparent)}.lc-agents-inspector-stats{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.lc-agents-inspector-open{color:var(--dsw-alias-brand-primary,var(--color-blue-500));flex:none;margin-left:auto}.lc-agents-legend{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:4px 14px;margin-top:8px;font-size:11px;display:flex}.lc-agents-legend-item{align-items:center;gap:5px;display:inline-flex}.lc-agents-legend-item i{border-radius:2px;width:8px;height:8px}.lc-agents-legend-free{background:color-mix(in srgb, var(--dsw-alias-label-secondary) 18%, transparent)}.lc-agents-legend-edge{border-top:2px dashed var(--dsw-alias-label-secondary);border-radius:0!important;width:14px!important;height:0!important}";
|
|
9333
9683
|
const tagId = "dsh-context/agentGraph.css";
|
|
9334
9684
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
9335
9685
|
const tag = document.createElement("style");
|
|
@@ -9398,7 +9748,7 @@ window.__ModuleLoader__.load({
|
|
|
9398
9748
|
}, (props) => (0, react.createElement)(ContextJump, props));
|
|
9399
9749
|
});
|
|
9400
9750
|
registerContextCommand(ctx, kit);
|
|
9401
|
-
const ContextModal = makeContextModal(ctx, kit);
|
|
9751
|
+
const ContextModal = makeContextModal(ctx, kit, settings);
|
|
9402
9752
|
ctx.slots.inject("conversation.input.overlay", () => {
|
|
9403
9753
|
return ctx.slots.register({
|
|
9404
9754
|
name: "conversation.input.overlay",
|