dsh-context 0.53.0 → 0.53.1
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/lib/client.js +133 -51
- package/lib/index.js +2 -1
- package/package.json +1 -1
package/lib/client.js
CHANGED
|
@@ -75,6 +75,9 @@ window.__ModuleLoader__.load({
|
|
|
75
75
|
"placement.tab": "标签页",
|
|
76
76
|
"placement.sidebar": "侧边栏",
|
|
77
77
|
"placement.all": "全部",
|
|
78
|
+
"settings.insightsEntry": "上下文洞察入口",
|
|
79
|
+
"insightsEntry.show": "显示",
|
|
80
|
+
"insightsEntry.hide": "隐藏",
|
|
78
81
|
"settings.gran": "趋势图 · 默认粒度",
|
|
79
82
|
"settings.mode": "趋势图 · 默认展示方式",
|
|
80
83
|
"settings.toolSort": "工具定义 · 默认排序",
|
|
@@ -323,17 +326,28 @@ window.__ModuleLoader__.load({
|
|
|
323
326
|
"ov.kpi.sessions": "活跃会话",
|
|
324
327
|
"ov.kpi.ofTotal": "共 {n} 个",
|
|
325
328
|
"ov.kpi.tokens": "累计消耗",
|
|
326
|
-
"ov.kpi.
|
|
327
|
-
"ov.kpi.cacheSub": "缓存读取 / 计费输入",
|
|
329
|
+
"ov.kpi.sessionsSub": "含 {n} 个会话",
|
|
328
330
|
"ov.kpi.toolSub": "工具执行 {dur}",
|
|
329
331
|
"ov.kpi.wallSub": "模型调用 {n}",
|
|
330
332
|
"ov.heat.title": "活跃度",
|
|
331
|
-
"ov.heat.sub": "
|
|
333
|
+
"ov.heat.sub": "按日期筛选",
|
|
332
334
|
"ov.heat.empty": "暂无活跃数据 — 会话产生模型请求后,这里会显示每日用量",
|
|
333
335
|
"ov.heat.sessions": "{n} 个活跃会话",
|
|
334
336
|
"ov.heat.wd.1": "一",
|
|
335
337
|
"ov.heat.wd.3": "三",
|
|
336
338
|
"ov.heat.wd.5": "五",
|
|
339
|
+
"ov.heat.mon.01": "1月",
|
|
340
|
+
"ov.heat.mon.02": "2月",
|
|
341
|
+
"ov.heat.mon.03": "3月",
|
|
342
|
+
"ov.heat.mon.04": "4月",
|
|
343
|
+
"ov.heat.mon.05": "5月",
|
|
344
|
+
"ov.heat.mon.06": "6月",
|
|
345
|
+
"ov.heat.mon.07": "7月",
|
|
346
|
+
"ov.heat.mon.08": "8月",
|
|
347
|
+
"ov.heat.mon.09": "9月",
|
|
348
|
+
"ov.heat.mon.10": "10月",
|
|
349
|
+
"ov.heat.mon.11": "11月",
|
|
350
|
+
"ov.heat.mon.12": "12月",
|
|
337
351
|
"ov.list.title": "会话",
|
|
338
352
|
"ov.list.search": "搜索标题或目录…",
|
|
339
353
|
"ov.list.sortLabel": "排序",
|
|
@@ -427,6 +441,9 @@ window.__ModuleLoader__.load({
|
|
|
427
441
|
"placement.tab": "Tab",
|
|
428
442
|
"placement.sidebar": "Sidebar",
|
|
429
443
|
"placement.all": "All",
|
|
444
|
+
"settings.insightsEntry": "Context Insights entry",
|
|
445
|
+
"insightsEntry.show": "Show",
|
|
446
|
+
"insightsEntry.hide": "Hide",
|
|
430
447
|
"settings.gran": "Trend Chart · Default granularity",
|
|
431
448
|
"settings.mode": "Trend Chart · Default display",
|
|
432
449
|
"settings.toolSort": "Tool Schemas · Default sort",
|
|
@@ -675,17 +692,28 @@ window.__ModuleLoader__.load({
|
|
|
675
692
|
"ov.kpi.sessions": "Active Sessions",
|
|
676
693
|
"ov.kpi.ofTotal": "of {n} total",
|
|
677
694
|
"ov.kpi.tokens": "Tokens Used",
|
|
678
|
-
"ov.kpi.
|
|
679
|
-
"ov.kpi.cacheSub": "cache reads of billed input",
|
|
695
|
+
"ov.kpi.sessionsSub": "across {n} sessions",
|
|
680
696
|
"ov.kpi.toolSub": "tool runs {dur}",
|
|
681
697
|
"ov.kpi.wallSub": "{n} model calls",
|
|
682
698
|
"ov.heat.title": "Activity",
|
|
683
|
-
"ov.heat.sub": "
|
|
699
|
+
"ov.heat.sub": "Filter by date",
|
|
684
700
|
"ov.heat.empty": "No activity yet — daily usage appears once sessions make model requests",
|
|
685
701
|
"ov.heat.sessions": "{n} active sessions",
|
|
686
702
|
"ov.heat.wd.1": "M",
|
|
687
703
|
"ov.heat.wd.3": "W",
|
|
688
704
|
"ov.heat.wd.5": "F",
|
|
705
|
+
"ov.heat.mon.01": "Jan",
|
|
706
|
+
"ov.heat.mon.02": "Feb",
|
|
707
|
+
"ov.heat.mon.03": "Mar",
|
|
708
|
+
"ov.heat.mon.04": "Apr",
|
|
709
|
+
"ov.heat.mon.05": "May",
|
|
710
|
+
"ov.heat.mon.06": "Jun",
|
|
711
|
+
"ov.heat.mon.07": "Jul",
|
|
712
|
+
"ov.heat.mon.08": "Aug",
|
|
713
|
+
"ov.heat.mon.09": "Sep",
|
|
714
|
+
"ov.heat.mon.10": "Oct",
|
|
715
|
+
"ov.heat.mon.11": "Nov",
|
|
716
|
+
"ov.heat.mon.12": "Dec",
|
|
689
717
|
"ov.list.title": "Sessions",
|
|
690
718
|
"ov.list.search": "Search title or path…",
|
|
691
719
|
"ov.list.sortLabel": "Sort",
|
|
@@ -5942,10 +5970,30 @@ window.__ModuleLoader__.load({
|
|
|
5942
5970
|
const overviewStore = createStore();
|
|
5943
5971
|
//#endregion
|
|
5944
5972
|
//#region src/client/components/overviewButton.tsx
|
|
5945
|
-
|
|
5973
|
+
/**
|
|
5974
|
+
* The Context Dashboard's sidebar entry: a footer action stacked directly
|
|
5975
|
+
* above Settings (the harness's own foot layout: footer actions, then the
|
|
5976
|
+
* settings row), mirroring the Settings trigger's geometry in both column
|
|
5977
|
+
* widths. The button carries the plugin emblem and, on the wide
|
|
5978
|
+
* column, its label; a badge counts the sessions currently running (the one
|
|
5979
|
+
* glanceable live fact a footer can carry). Clicking opens the overview
|
|
5980
|
+
* overlay through the shared module store (overviewStore.ts).
|
|
5981
|
+
*
|
|
5982
|
+
* The per-user `insightsEntry` preference takes the entry down (renders
|
|
5983
|
+
* null) without unregistering the seat. The subscription fails open: an
|
|
5984
|
+
* absent settings store, an unserved namespace, or a value the plugin
|
|
5985
|
+
* cannot understand all leave the entry visible.
|
|
5986
|
+
*/
|
|
5987
|
+
/** Stable subscription faces for the settings-less degrade (no re-subscribes). */
|
|
5988
|
+
const subscribeNever = () => () => {};
|
|
5989
|
+
const entryShown = () => "show";
|
|
5990
|
+
function makeOverviewButton(kit, settings) {
|
|
5946
5991
|
const { t } = kit;
|
|
5992
|
+
const subscribeEntry = settings === void 0 ? subscribeNever : (listener) => settings.store.subscribe(listener);
|
|
5993
|
+
const getEntry = settings === void 0 ? entryShown : () => settings.insightsEntry();
|
|
5947
5994
|
return function OverviewButton(props) {
|
|
5948
5995
|
const running = runningCountOf(sessionsSnapshotOf(props));
|
|
5996
|
+
if ((0, react.useSyncExternalStore)(subscribeEntry, getEntry) === "hide") return null;
|
|
5949
5997
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("button", {
|
|
5950
5998
|
type: "button",
|
|
5951
5999
|
className: props.wide === true ? "lc-ov-entry" : "lc-ov-entry lc-ov-entry-rail",
|
|
@@ -6210,7 +6258,8 @@ window.__ModuleLoader__.load({
|
|
|
6210
6258
|
//#region src/client/components/heatmap.tsx
|
|
6211
6259
|
/**
|
|
6212
6260
|
* The Context Dashboard's activity heatmap: a GitHub-style contribution grid
|
|
6213
|
-
* (weeks as columns, Monday-first weekdays as rows
|
|
6261
|
+
* (weeks as columns, Monday-first weekdays as rows, a month label over the
|
|
6262
|
+
* column where each month begins) over the merged daily
|
|
6214
6263
|
* ledger (overview.ts). Cell depth is the day's billed-token share of the
|
|
6215
6264
|
* window's maximum, in four steps; a day with data is a button whose click
|
|
6216
6265
|
* pins the session list to that day (click again to release). Cells tip
|
|
@@ -6309,36 +6358,43 @@ window.__ModuleLoader__.load({
|
|
|
6309
6358
|
}, row))
|
|
6310
6359
|
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
6311
6360
|
className: "lc-heat-cols",
|
|
6312
|
-
children: columns.map((column, wi) =>
|
|
6313
|
-
|
|
6314
|
-
|
|
6315
|
-
|
|
6316
|
-
|
|
6317
|
-
|
|
6318
|
-
|
|
6319
|
-
|
|
6320
|
-
|
|
6321
|
-
|
|
6322
|
-
|
|
6323
|
-
|
|
6324
|
-
|
|
6325
|
-
|
|
6326
|
-
|
|
6327
|
-
|
|
6328
|
-
|
|
6329
|
-
|
|
6330
|
-
|
|
6331
|
-
|
|
6332
|
-
|
|
6333
|
-
|
|
6334
|
-
|
|
6335
|
-
|
|
6336
|
-
|
|
6337
|
-
|
|
6338
|
-
|
|
6339
|
-
|
|
6340
|
-
|
|
6341
|
-
|
|
6361
|
+
children: columns.map((column, wi) => {
|
|
6362
|
+
const opens = column[0].key.slice(0, 7) !== column[6].key.slice(0, 7) || column[0].key.slice(8, 10) === "01";
|
|
6363
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
6364
|
+
className: "lc-heat-col",
|
|
6365
|
+
children: [opens && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6366
|
+
className: "lc-heat-mon",
|
|
6367
|
+
"aria-hidden": "true",
|
|
6368
|
+
children: t("ov.heat.mon." + column[6].key.slice(5, 7))
|
|
6369
|
+
}), column.map((cell) => {
|
|
6370
|
+
if (cell.future) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6371
|
+
className: "lc-heat-cell lc-heat-future",
|
|
6372
|
+
"aria-hidden": "true"
|
|
6373
|
+
}, cell.key);
|
|
6374
|
+
const level = cell.entry === void 0 ? 0 : levelOf(cell.entry.tokens, max);
|
|
6375
|
+
if (cell.entry === void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
6376
|
+
label: cell.key,
|
|
6377
|
+
side: "top",
|
|
6378
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { className: "lc-heat-cell lc-heat-0" })
|
|
6379
|
+
}, cell.key);
|
|
6380
|
+
const picked = props.selected === cell.key;
|
|
6381
|
+
const label = `${cell.key}\n${t("ov.heat.sessions", { n: cell.entry.sessions })}`;
|
|
6382
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(_deepseek_ai_dsh_client_ui_primitives.Tooltip, {
|
|
6383
|
+
label,
|
|
6384
|
+
side: "top",
|
|
6385
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("button", {
|
|
6386
|
+
type: "button",
|
|
6387
|
+
className: `lc-heat-cell lc-heat-${String(level)}${picked ? " lc-heat-on" : ""}`,
|
|
6388
|
+
"aria-label": label,
|
|
6389
|
+
"aria-pressed": picked,
|
|
6390
|
+
onClick: () => {
|
|
6391
|
+
if (props.onSelect !== void 0) props.onSelect(picked ? null : cell.key);
|
|
6392
|
+
}
|
|
6393
|
+
})
|
|
6394
|
+
}, cell.key);
|
|
6395
|
+
})]
|
|
6396
|
+
}, wi);
|
|
6397
|
+
})
|
|
6342
6398
|
})]
|
|
6343
6399
|
});
|
|
6344
6400
|
};
|
|
@@ -6768,7 +6824,7 @@ window.__ModuleLoader__.load({
|
|
|
6768
6824
|
}),
|
|
6769
6825
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6770
6826
|
className: "lc-stat-sub",
|
|
6771
|
-
children: t("ov.kpi.
|
|
6827
|
+
children: t("ov.kpi.sessionsSub", { n: kpi.sessions })
|
|
6772
6828
|
})
|
|
6773
6829
|
]
|
|
6774
6830
|
}),
|
|
@@ -6785,7 +6841,7 @@ window.__ModuleLoader__.load({
|
|
|
6785
6841
|
}),
|
|
6786
6842
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
6787
6843
|
className: "lc-stat-sub",
|
|
6788
|
-
children: t("ov.kpi.
|
|
6844
|
+
children: t("ov.kpi.sessionsSub", { n: kpi.sessions })
|
|
6789
6845
|
})
|
|
6790
6846
|
]
|
|
6791
6847
|
}),
|
|
@@ -7146,6 +7202,21 @@ window.__ModuleLoader__.load({
|
|
|
7146
7202
|
props.set?.("defaultPlacement", id);
|
|
7147
7203
|
}
|
|
7148
7204
|
}),
|
|
7205
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PrefRow, {
|
|
7206
|
+
label: t("settings.insightsEntry"),
|
|
7207
|
+
value: state.insightsEntry,
|
|
7208
|
+
disabled,
|
|
7209
|
+
options: [{
|
|
7210
|
+
id: "show",
|
|
7211
|
+
label: t("insightsEntry.show")
|
|
7212
|
+
}, {
|
|
7213
|
+
id: "hide",
|
|
7214
|
+
label: t("insightsEntry.hide")
|
|
7215
|
+
}],
|
|
7216
|
+
onPick: (id) => {
|
|
7217
|
+
props.set?.("insightsEntry", id);
|
|
7218
|
+
}
|
|
7219
|
+
}),
|
|
7149
7220
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(PrefRow, {
|
|
7150
7221
|
label: t("settings.gran"),
|
|
7151
7222
|
value: state.granularity,
|
|
@@ -7235,7 +7306,8 @@ window.__ModuleLoader__.load({
|
|
|
7235
7306
|
...v.defaultGranularity === "step" || v.defaultGranularity === "turn" ? { granularity: v.defaultGranularity } : {},
|
|
7236
7307
|
...v.defaultTrendMode === "total" || v.defaultTrendMode === "delta" ? { mode: v.defaultTrendMode } : {},
|
|
7237
7308
|
...v.defaultToolSort === "size" || v.defaultToolSort === "count" || v.defaultToolSort === "name" ? { toolSort: v.defaultToolSort } : {},
|
|
7238
|
-
...v.defaultFileSort === "count" || v.defaultFileSort === "latest" || v.defaultFileSort === "path" ? { fileSort: v.defaultFileSort } : {}
|
|
7309
|
+
...v.defaultFileSort === "count" || v.defaultFileSort === "latest" || v.defaultFileSort === "path" ? { fileSort: v.defaultFileSort } : {},
|
|
7310
|
+
...v.insightsEntry === "show" || v.insightsEntry === "hide" ? { insightsEntry: v.insightsEntry } : {}
|
|
7239
7311
|
};
|
|
7240
7312
|
}
|
|
7241
7313
|
function createContextSettings() {
|
|
@@ -7246,29 +7318,34 @@ window.__ModuleLoader__.load({
|
|
|
7246
7318
|
mode: "total",
|
|
7247
7319
|
toolSort: "count",
|
|
7248
7320
|
fileSort: "count",
|
|
7321
|
+
insightsEntry: "show",
|
|
7249
7322
|
writable: false
|
|
7250
7323
|
};
|
|
7251
7324
|
let scope;
|
|
7252
7325
|
const listeners = /* @__PURE__ */ new Set();
|
|
7253
7326
|
const publish = (next) => {
|
|
7254
|
-
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;
|
|
7327
|
+
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.insightsEntry === state.insightsEntry && next.writable === state.writable) return;
|
|
7255
7328
|
state = next;
|
|
7256
7329
|
for (const listener of listeners) listener();
|
|
7257
7330
|
};
|
|
7258
7331
|
const sync = (bound) => {
|
|
7259
7332
|
const snap = bound.getSnapshot();
|
|
7260
7333
|
const prefs = prefsOf(snap.value);
|
|
7261
|
-
const
|
|
7334
|
+
const raw = snap.value !== null && typeof snap.value === "object" ? snap.value : void 0;
|
|
7262
7335
|
publish({
|
|
7263
7336
|
status: snap.status === "ready" || snap.status === "unavailable" ? snap.status : "loading",
|
|
7264
|
-
placement: prefs.placement ?? (
|
|
7337
|
+
placement: prefs.placement ?? (raw?.defaultPlacement === void 0 ? state.placement : "all"),
|
|
7265
7338
|
granularity: prefs.granularity ?? state.granularity,
|
|
7266
7339
|
mode: prefs.mode ?? state.mode,
|
|
7267
7340
|
toolSort: prefs.toolSort ?? state.toolSort,
|
|
7268
7341
|
fileSort: prefs.fileSort ?? state.fileSort,
|
|
7342
|
+
insightsEntry: prefs.insightsEntry ?? (raw?.insightsEntry === void 0 ? state.insightsEntry : "show"),
|
|
7269
7343
|
writable: snap.writable
|
|
7270
7344
|
});
|
|
7271
|
-
return
|
|
7345
|
+
return {
|
|
7346
|
+
placement: prefs.placement,
|
|
7347
|
+
insightsEntry: prefs.insightsEntry
|
|
7348
|
+
};
|
|
7272
7349
|
};
|
|
7273
7350
|
return {
|
|
7274
7351
|
store: {
|
|
@@ -7285,6 +7362,7 @@ window.__ModuleLoader__.load({
|
|
|
7285
7362
|
defaultTrendMode: () => state.mode,
|
|
7286
7363
|
defaultToolSort: () => state.toolSort,
|
|
7287
7364
|
defaultFileSort: () => state.fileSort,
|
|
7365
|
+
insightsEntry: () => state.insightsEntry,
|
|
7288
7366
|
attach(bound) {
|
|
7289
7367
|
scope = bound;
|
|
7290
7368
|
sync(bound);
|
|
@@ -7301,10 +7379,14 @@ window.__ModuleLoader__.load({
|
|
|
7301
7379
|
if (bound === void 0) return;
|
|
7302
7380
|
bound.set(field, value).catch(() => {
|
|
7303
7381
|
const truth = sync(bound);
|
|
7304
|
-
if (field === "defaultPlacement" && truth === void 0) publish({
|
|
7382
|
+
if (field === "defaultPlacement" && truth.placement === void 0) publish({
|
|
7305
7383
|
...state,
|
|
7306
7384
|
placement: "all"
|
|
7307
7385
|
});
|
|
7386
|
+
if (field === "insightsEntry" && truth.insightsEntry === void 0) publish({
|
|
7387
|
+
...state,
|
|
7388
|
+
insightsEntry: "show"
|
|
7389
|
+
});
|
|
7308
7390
|
});
|
|
7309
7391
|
}
|
|
7310
7392
|
};
|
|
@@ -9410,7 +9492,7 @@ window.__ModuleLoader__.load({
|
|
|
9410
9492
|
return function PluginInfo() {
|
|
9411
9493
|
const [latest, setLatest] = (0, react.useState)(null);
|
|
9412
9494
|
(0, react.useEffect)(() => {
|
|
9413
|
-
if ("0.53.
|
|
9495
|
+
if ("0.53.1".includes("-dev")) return;
|
|
9414
9496
|
let on = true;
|
|
9415
9497
|
fetchLatestVersion().then((v) => {
|
|
9416
9498
|
if (on && v) setLatest(v);
|
|
@@ -9419,8 +9501,8 @@ window.__ModuleLoader__.load({
|
|
|
9419
9501
|
on = false;
|
|
9420
9502
|
};
|
|
9421
9503
|
}, []);
|
|
9422
|
-
const update = latest !== null && isNewerVersion(latest, "0.53.
|
|
9423
|
-
const nameText = "dsh-context (v0.53.
|
|
9504
|
+
const update = latest !== null && isNewerVersion(latest, "0.53.1") ? latest : null;
|
|
9505
|
+
const nameText = "dsh-context (v0.53.1)";
|
|
9424
9506
|
const nameValue = [nameText];
|
|
9425
9507
|
if (update) nameValue.push(/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
9426
9508
|
className: "lc-pi-update",
|
|
@@ -11266,7 +11348,7 @@ window.__ModuleLoader__.load({
|
|
|
11266
11348
|
}
|
|
11267
11349
|
//#endregion
|
|
11268
11350
|
//#region \0dsh-global-css:/home/runner/work/dsh-context/dsh-context/src/client/styles/overview.css.mjs
|
|
11269
|
-
const css = ".lc-ov-entry{box-sizing:border-box;width:calc(100% + 4px);height:42px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:8px;margin:0 -2px;padding:0 10px 0 8px;font-family:inherit;font-size:14px;line-height:22px;display:flex;position:relative;overflow:hidden}.lc-ov-entry:hover{background:var(--dsw-alias-interactive-bg-hover)}.lc-ov-entry-rail{border-radius:50%;flex:none;justify-content:center;gap:0;width:36px;height:36px;margin:0;padding:0}.lc-ov-entry-icon{flex:none}.lc-ov-entry-label{text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;overflow:hidden}.lc-ov-badge{box-sizing:border-box;background:var(--color-green-500);color:#fff;pointer-events:none;border-radius:999px;justify-content:center;align-items:center;min-width:15px;height:15px;padding:0 4px;font-size:9px;font-weight:700;line-height:1;display:flex;position:absolute;top:1px;right:4px}.lc-ov-backdrop{z-index:200;background:var(--dsw-alias-bg-mask-1,#00000073);justify-content:center;align-items:center;display:flex;position:fixed;inset:0;container:lc-ov/inline-size}.lc-ov-card{box-sizing:border-box;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);width:min(1120px,100vw - 32px);max-height:min(86vh,900px);box-shadow:var(--dsw-shadow-lv3,0 12px 32px #0006);color:var(--dsw-alias-label-primary);border-radius:12px;flex-direction:column;padding:16px 18px 18px;font-size:13px;display:flex;overflow:hidden}.lc-ov-head{flex-wrap:wrap;flex:none;align-items:center;gap:10px;margin-bottom:14px;display:flex}.lc-ov-head-icon{flex:none}.lc-ov-title{white-space:nowrap;font-size:15px;font-weight:600}.lc-ov-head .lc-modal-close{flex:none;margin-left:0}.lc-ov-body{flex:auto;grid-template-columns:minmax(0,3fr) minmax(0,7fr);gap:10px;min-height:0;display:grid}.lc-ov-left{flex-direction:column;gap:10px;min-height:0;display:flex;overflow-y:auto}.lc-ov-right{min-height:0;overflow-y:auto}@container lc-ov (width<=932px){.lc-ov-card{overflow-y:auto}.lc-ov-body{display:block}.lc-ov-left{margin-bottom:12px}.lc-ov-left,.lc-ov-right{min-height:auto;overflow:visible}.lc-ov-heat-card{flex:none}}.lc-ov-left>.lc-card{box-sizing:border-box;min-width:0;margin-bottom:0}.lc-ov-kpis{flex:none;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.lc-ov-kpi{align-items:center;padding:10px 8px}.lc-ov-kpi .lc-stat-value{font-size:20px}.lc-ov-heat-card{flex-direction:column;flex:1 0 auto;display:flex}.lc-heat{flex:1;justify-content:center;align-items:center;gap:4px;display:flex}.lc-heat-wds{flex-direction:column;gap:3px;display:flex}.lc-heat-wd{width:10px;height:20px;color:var(--dsw-alias-label-secondary);text-align:center;flex:none;justify-content:center;align-items:center;font-size:9px;display:flex}.lc-heat-cols{gap:3px;display:flex}.lc-heat-col{flex-direction:column;gap:3px;display:flex}.lc-heat-cell{box-sizing:border-box;background:var(--dsw-alias-bg-layer-2);cursor:default;border:0;border-radius:20%;width:20px;height:20px;padding:0}button.lc-heat-cell{cursor:pointer}button.lc-heat-cell:hover{box-shadow:0 0 0 1.5px color-mix(in srgb, var(--color-blue-500) 70%, transparent)}.lc-heat-future{background:0 0}.lc-heat-0{background:color-mix(in srgb, var(--dsw-alias-label-secondary) 16%, transparent)}.lc-heat-1{background:color-mix(in srgb, var(--color-blue-500) 28%, transparent)}.lc-heat-2{background:color-mix(in srgb, var(--color-blue-500) 50%, transparent)}.lc-heat-3{background:color-mix(in srgb, var(--color-blue-500) 72%, transparent)}.lc-heat-4{background:color-mix(in srgb, var(--color-blue-500) 92%, transparent)}.lc-heat-on{box-shadow:0 0 0 1.5px var(--color-blue-500)}.lc-ov-list-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.lc-ov-list-title{white-space:nowrap;font-weight:600}.lc-ov-list-count{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;background:var(--dsw-alias-bg-layer-2);border-radius:8px;padding:1px 7px;font-size:11px}.lc-ov-day-chip{border:1px solid color-mix(in srgb, var(--color-blue-500) 45%, transparent);color:var(--color-blue-500);background:color-mix(in srgb, var(--color-blue-500) 10%, transparent);cursor:pointer;white-space:nowrap;border-radius:999px;padding:1px 10px;font-family:inherit;font-size:11px;line-height:1.4}.lc-ov-search{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);min-width:110px;font:inherit;color:var(--dsw-alias-label-primary);transition:border-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:6px;outline:none;flex:150px;padding:4px 10px;font-size:12px}.lc-ov-search:focus{border-color:var(--dsw-alias-label-secondary)}.lc-ov-search::placeholder{color:var(--dsw-alias-label-secondary)}.lc-ov-groups{flex-wrap:wrap;gap:6px;margin:-2px 0 10px;display:flex}.lc-ov-chip{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;max-width:220px;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), background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border-radius:999px;align-items:baseline;gap:5px;padding:2px 10px;font-size:11px;line-height:1.5;display:inline-flex;overflow:hidden}.lc-ov-chip:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-secondary)}.lc-ov-chip-on,.lc-ov-chip-on:hover{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground);border-color:#0000}.lc-ov-chip-n{font-variant-numeric:tabular-nums;opacity:.65;font-size:10px}.lc-ov-chip-on .lc-ov-chip-n{opacity:.85}.lc-ov-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;display:grid}.lc-ov-session{text-align:left;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;font:inherit;color:inherit;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:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.lc-ov-session:hover{border-color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2)}.lc-ov-session-current{border-color:color-mix(in srgb, var(--color-blue-500) 65%, transparent)}.lc-ov-session-head{align-items:flex-start;gap:6px;min-width:0;display:flex}.lc-ov-running{background:var(--color-green-500);border-radius:50%;flex:none;width:7px;height:7px}.lc-ov-session-title{-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;flex:auto;min-width:0;font-weight:600;display:-webkit-box;overflow:hidden}.lc-ov-current{color:var(--color-blue-500);border:1px solid color-mix(in srgb, var(--color-blue-500) 45%, transparent);border-radius:4px;flex:none;padding:0 4px;font-size:10px;line-height:1.5}.lc-ov-session-times{flex-direction:column;flex:none;align-items:flex-end;gap:1px;display:flex}.lc-ov-session-time{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-size:11px}.lc-ov-session-created{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:10px;line-height:1.4}.lc-ov-session-crumb{min-width:0;color:var(--dsw-alias-label-secondary);white-space:nowrap;align-items:center;gap:5px;font-size:11px;display:flex;overflow:hidden}.lc-ov-crumb-group{text-overflow:ellipsis;flex:none;max-width:55%;overflow:hidden}.lc-ov-crumb-sep{opacity:.55;flex:none}.lc-ov-crumb-project{text-overflow:ellipsis;min-width:0;font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-label-secondary) 16%, transparent);border-radius:999px;flex:0 auto;padding:0 8px;font-size:10px;line-height:1.6;overflow:hidden}.lc-ov-session-body{align-items:center;gap:14px;min-width:0;display:flex}.lc-ov-mini-stats{flex-direction:column;flex:auto;gap:3px;min-width:0;display:flex}.lc-ov-mini-stat{justify-content:space-between;align-items:baseline;gap:10px;font-size:11px;display:flex}.lc-ov-mini-label{color:var(--dsw-alias-label-secondary);white-space:nowrap;flex:none}.lc-ov-mini-value{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.lc-ov-session-empty{color:var(--dsw-alias-label-secondary);padding:6px 0;font-size:11px;line-height:1.5}.lc-ov-session-preview{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l2) 60%, transparent);align-items:baseline;gap:6px;min-width:0;margin-top:auto;padding-top:6px;display:flex}.lc-ov-session-preview-label{color:var(--dsw-alias-label-secondary);flex:none;font-size:10px}.lc-ov-session-preview-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);flex:0 auto;font-size:11px;line-height:1.5;overflow:hidden}.lc-ov-pager{justify-content:center;align-items:center;gap:10px;margin-top:12px;display:flex}.lc-ov-pager-btn{border:1px solid var(--dsw-alias-border-l2);width:26px;height:22px;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);background:0 0;border-radius:6px;flex:none;justify-content:center;align-items:center;line-height:1;display:flex}.lc-ov-pager-btn:hover:enabled{border-color:var(--dsw-alias-label-secondary)}.lc-ov-pager-btn:disabled{opacity:.4;cursor:default}.lc-ov-pager-n{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}";
|
|
11351
|
+
const css = ".lc-ov-entry{box-sizing:border-box;width:calc(100% + 4px);height:42px;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:0;border-radius:12px;align-items:center;gap:8px;margin:0 -2px;padding:0 10px 0 8px;font-family:inherit;font-size:14px;line-height:22px;display:flex;position:relative;overflow:hidden}.lc-ov-entry:hover{background:var(--dsw-alias-interactive-bg-hover)}.lc-ov-entry-rail{border-radius:50%;flex:none;justify-content:center;gap:0;width:36px;height:36px;margin:0;padding:0}.lc-ov-entry-icon{flex:none}.lc-ov-entry-label{text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:auto;min-width:0;overflow:hidden}.lc-ov-badge{box-sizing:border-box;background:var(--color-green-500);color:#fff;pointer-events:none;border-radius:999px;justify-content:center;align-items:center;min-width:15px;height:15px;padding:0 4px;font-size:9px;font-weight:700;line-height:1;display:flex;position:absolute;top:1px;right:4px}.lc-ov-backdrop{z-index:200;background:var(--dsw-alias-bg-mask-1,#00000073);justify-content:center;align-items:center;display:flex;position:fixed;inset:0;container:lc-ov/inline-size}.lc-ov-card{box-sizing:border-box;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);width:min(1120px,100vw - 32px);max-height:min(86vh,900px);box-shadow:var(--dsw-shadow-lv3,0 12px 32px #0006);color:var(--dsw-alias-label-primary);border-radius:12px;flex-direction:column;padding:16px 18px 18px;font-size:13px;display:flex;overflow:hidden}.lc-ov-head{flex-wrap:wrap;flex:none;align-items:center;gap:10px;margin-bottom:14px;display:flex}.lc-ov-head-icon{flex:none}.lc-ov-title{white-space:nowrap;font-size:15px;font-weight:600}.lc-ov-head .lc-modal-close{flex:none;margin-left:0}.lc-ov-body{flex:auto;grid-template-columns:minmax(0,3fr) minmax(0,7fr);gap:10px;min-height:0;display:grid}.lc-ov-left{scrollbar-gutter:stable;flex-direction:column;gap:10px;min-height:0;padding-right:8px;display:flex;overflow-y:auto}.lc-ov-right{scrollbar-gutter:stable;min-height:0;padding-right:8px;overflow-y:auto}@container lc-ov (width<=932px){.lc-ov-card{overflow-y:auto}.lc-ov-body{display:block}.lc-ov-left{margin-bottom:12px}.lc-ov-left,.lc-ov-right{min-height:auto;padding-right:0;overflow:visible}.lc-ov-heat-card{flex:none}}.lc-ov-left>.lc-card{box-sizing:border-box;min-width:0;margin-bottom:0}.lc-ov-kpis{flex:none;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;display:grid}.lc-ov-kpi{align-items:center;padding:10px 8px}.lc-ov-kpi .lc-stat-value{font-size:20px}.lc-ov-heat-card{flex-direction:column;flex:1 0 auto;display:flex}.lc-heat{flex:1;justify-content:center;align-items:center;gap:4px;display:flex}.lc-heat-wds,.lc-heat-col{padding-top:13px}.lc-heat-wds{flex-direction:column;gap:3px;display:flex}.lc-heat-wd{width:10px;height:20px;color:var(--dsw-alias-label-secondary);text-align:center;flex:none;justify-content:center;align-items:center;font-size:9px;display:flex}.lc-heat-cols{gap:3px;display:flex}.lc-heat-col{flex-direction:column;gap:3px;display:flex;position:relative}.lc-heat-mon{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-size:9px;line-height:13px;position:absolute;top:0;left:0}.lc-heat-cell{box-sizing:border-box;background:var(--dsw-alias-bg-layer-2);cursor:default;border:0;border-radius:20%;width:20px;height:20px;padding:0}button.lc-heat-cell{cursor:pointer}button.lc-heat-cell:hover{box-shadow:0 0 0 1.5px color-mix(in srgb, var(--color-blue-500) 70%, transparent)}.lc-heat-future{background:0 0}.lc-heat-0{background:color-mix(in srgb, var(--dsw-alias-label-secondary) 16%, transparent)}.lc-heat-1{background:color-mix(in srgb, var(--color-blue-500) 28%, transparent)}.lc-heat-2{background:color-mix(in srgb, var(--color-blue-500) 50%, transparent)}.lc-heat-3{background:color-mix(in srgb, var(--color-blue-500) 72%, transparent)}.lc-heat-4{background:color-mix(in srgb, var(--color-blue-500) 92%, transparent)}.lc-heat-on{box-shadow:0 0 0 1.5px var(--color-blue-500)}.lc-ov-list-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px;display:flex}.lc-ov-list-title{white-space:nowrap;font-weight:600}.lc-ov-list-count{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;background:var(--dsw-alias-bg-layer-2);border-radius:8px;padding:1px 7px;font-size:11px}.lc-ov-day-chip{border:1px solid color-mix(in srgb, var(--color-blue-500) 45%, transparent);color:var(--color-blue-500);background:color-mix(in srgb, var(--color-blue-500) 10%, transparent);cursor:pointer;white-space:nowrap;border-radius:999px;padding:1px 10px;font-family:inherit;font-size:11px;line-height:1.4}.lc-ov-search{border:1px solid var(--dsw-alias-border-l2);background:var(--dsw-alias-bg-layer-2);min-width:110px;font:inherit;color:var(--dsw-alias-label-primary);transition:border-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);border-radius:6px;outline:none;flex:150px;padding:4px 10px;font-size:12px}.lc-ov-search:focus{border-color:var(--dsw-alias-label-secondary)}.lc-ov-search::placeholder{color:var(--dsw-alias-label-secondary)}.lc-ov-groups{flex-wrap:wrap;gap:6px;margin:-2px 0 10px;display:flex}.lc-ov-chip{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);font:inherit;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;max-width:220px;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), background-color var(--ds-transition-duration,.2s) var(--ds-ease-in-out,ease-in-out);background:0 0;border-radius:999px;align-items:baseline;gap:5px;padding:2px 10px;font-size:11px;line-height:1.5;display:inline-flex;overflow:hidden}.lc-ov-chip:hover{color:var(--dsw-alias-label-primary);border-color:var(--dsw-alias-label-secondary)}.lc-ov-chip-on,.lc-ov-chip-on:hover{background:var(--dsw-alias-button-primary-fill);color:var(--dsw-alias-label-primary-foreground);border-color:#0000}.lc-ov-chip-n{font-variant-numeric:tabular-nums;opacity:.65;font-size:10px}.lc-ov-chip-on .lc-ov-chip-n{opacity:.85}.lc-ov-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:10px;display:grid}.lc-ov-session{text-align:left;background:var(--dsw-alias-bg-layer-1);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;font:inherit;color:inherit;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:10px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}.lc-ov-session:hover{border-color:var(--dsw-alias-label-secondary);background:var(--dsw-alias-bg-layer-2)}.lc-ov-session-current{border-color:color-mix(in srgb, var(--color-blue-500) 65%, transparent)}.lc-ov-session-head{align-items:flex-start;gap:6px;min-width:0;display:flex}.lc-ov-running{background:var(--color-green-500);border-radius:50%;flex:none;width:7px;height:7px}.lc-ov-session-title{-webkit-line-clamp:2;overflow-wrap:anywhere;-webkit-box-orient:vertical;flex:auto;min-width:0;font-weight:600;display:-webkit-box;overflow:hidden}.lc-ov-current{color:var(--color-blue-500);border:1px solid color-mix(in srgb, var(--color-blue-500) 45%, transparent);border-radius:4px;flex:none;padding:0 4px;font-size:10px;line-height:1.5}.lc-ov-session-times{flex-direction:column;flex:none;align-items:flex-end;gap:1px;display:flex}.lc-ov-session-time{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-size:11px}.lc-ov-session-created{color:var(--dsw-alias-label-secondary);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:10px;line-height:1.4}.lc-ov-session-crumb{min-width:0;color:var(--dsw-alias-label-secondary);white-space:nowrap;align-items:center;gap:5px;font-size:11px;display:flex;overflow:hidden}.lc-ov-crumb-group{text-overflow:ellipsis;flex:none;max-width:55%;overflow:hidden}.lc-ov-crumb-sep{opacity:.55;flex:none}.lc-ov-crumb-project{text-overflow:ellipsis;min-width:0;font-family:var(--ds-font-family-code,ui-monospace, SFMono-Regular, Menlo, monospace);color:var(--dsw-alias-label-primary);background:color-mix(in srgb, var(--dsw-alias-label-secondary) 16%, transparent);border-radius:999px;flex:0 auto;padding:0 8px;font-size:10px;line-height:1.6;overflow:hidden}.lc-ov-session-body{align-items:center;gap:14px;min-width:0;display:flex}.lc-ov-mini-stats{flex-direction:column;flex:auto;gap:3px;min-width:0;display:flex}.lc-ov-mini-stat{justify-content:space-between;align-items:baseline;gap:10px;font-size:11px;display:flex}.lc-ov-mini-label{color:var(--dsw-alias-label-secondary);white-space:nowrap;flex:none}.lc-ov-mini-value{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:600}.lc-ov-session-empty{color:var(--dsw-alias-label-secondary);padding:6px 0;font-size:11px;line-height:1.5}.lc-ov-session-preview{border-top:1px solid color-mix(in srgb, var(--dsw-alias-border-l2) 60%, transparent);align-items:baseline;gap:6px;min-width:0;margin-top:auto;padding-top:6px;display:flex}.lc-ov-session-preview-label{color:var(--dsw-alias-label-secondary);flex:none;font-size:10px}.lc-ov-session-preview-text{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--dsw-alias-label-primary);flex:0 auto;font-size:11px;line-height:1.5;overflow:hidden}.lc-ov-pager{justify-content:center;align-items:center;gap:10px;margin-top:12px;display:flex}.lc-ov-pager-btn{border:1px solid var(--dsw-alias-border-l2);width:26px;height:22px;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);background:0 0;border-radius:6px;flex:none;justify-content:center;align-items:center;line-height:1;display:flex}.lc-ov-pager-btn:hover:enabled{border-color:var(--dsw-alias-label-secondary)}.lc-ov-pager-btn:disabled{opacity:.4;cursor:default}.lc-ov-pager-n{color:var(--dsw-alias-label-secondary);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px}";
|
|
11270
11352
|
const tagId = "dsh-context/overview.css";
|
|
11271
11353
|
if (typeof document !== "undefined" && document.querySelector("style[data-plugin-css=" + JSON.stringify(tagId) + "]") === null) {
|
|
11272
11354
|
const tag = document.createElement("style");
|
|
@@ -11345,7 +11427,7 @@ window.__ModuleLoader__.load({
|
|
|
11345
11427
|
inject: (sessionId = "") => ({ hooks: { contextModal: modalStoreOf(sessionId) } })
|
|
11346
11428
|
}, (props) => (0, react.createElement)(ContextModal, props));
|
|
11347
11429
|
});
|
|
11348
|
-
const OverviewButton = makeOverviewButton(kit);
|
|
11430
|
+
const OverviewButton = makeOverviewButton(kit, settings);
|
|
11349
11431
|
ctx.slots.inject("sidebar.footer.action", () => {
|
|
11350
11432
|
return ctx.slots.register({
|
|
11351
11433
|
name: "sidebar.footer.action",
|
package/lib/index.js
CHANGED
|
@@ -2943,7 +2943,8 @@ const SettingsSchema = z$1.object({
|
|
|
2943
2943
|
"count",
|
|
2944
2944
|
"latest",
|
|
2945
2945
|
"path"
|
|
2946
|
-
]).default("count").loose()
|
|
2946
|
+
]).default("count").loose(),
|
|
2947
|
+
insightsEntry: z$1.union(["show", "hide"]).default("show").loose()
|
|
2947
2948
|
});
|
|
2948
2949
|
/** Serve the namespace while a settings provider is composed; inert otherwise. */
|
|
2949
2950
|
function installSettings(ctx) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-context",
|
|
3
|
-
"version": "0.53.
|
|
3
|
+
"version": "0.53.1",
|
|
4
4
|
"description": "A DeepSeek Harness plugin for context insight and management, with context dashboard and context command, for understanding how the context is made of, and how it evolves.",
|
|
5
5
|
"author": "bowenliang123",
|
|
6
6
|
"repository": {
|