botmux 2.98.4-canary.2 → 2.99.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.en.md +2 -2
- package/README.md +2 -2
- package/dist/adapters/cli/genius.d.ts +4 -0
- package/dist/adapters/cli/genius.d.ts.map +1 -0
- package/dist/adapters/cli/genius.js +216 -0
- package/dist/adapters/cli/genius.js.map +1 -0
- package/dist/adapters/cli/registry.d.ts +2 -1
- package/dist/adapters/cli/registry.d.ts.map +1 -1
- package/dist/adapters/cli/registry.js +3 -1
- package/dist/adapters/cli/registry.js.map +1 -1
- package/dist/adapters/cli/types.d.ts +1 -1
- package/dist/adapters/cli/types.d.ts.map +1 -1
- package/dist/core/dashboard-rows.d.ts +1 -1
- package/dist/core/dashboard-rows.d.ts.map +1 -1
- package/dist/core/dashboard-rows.js +2 -1
- package/dist/core/dashboard-rows.js.map +1 -1
- package/dist/dashboard/session-card-model.d.ts +2 -2
- package/dist/dashboard/session-card-model.d.ts.map +1 -1
- package/dist/dashboard/session-card-model.js +5 -2
- package/dist/dashboard/session-card-model.js.map +1 -1
- package/dist/dashboard/web/app.d.ts.map +1 -1
- package/dist/dashboard/web/app.js +28 -63
- package/dist/dashboard/web/app.js.map +1 -1
- package/dist/dashboard/web/bot-defaults-page.d.ts +3 -0
- package/dist/dashboard/web/bot-defaults-page.d.ts.map +1 -0
- package/dist/dashboard/web/bot-defaults-page.js +23 -0
- package/dist/dashboard/web/bot-defaults-page.js.map +1 -0
- package/dist/dashboard/web/bot-defaults.d.ts +2 -1
- package/dist/dashboard/web/bot-defaults.d.ts.map +1 -1
- package/dist/dashboard/web/bot-defaults.js +30 -30
- package/dist/dashboard/web/bot-defaults.js.map +1 -1
- package/dist/dashboard/web/connectors-page.d.ts +14 -0
- package/dist/dashboard/web/connectors-page.d.ts.map +1 -0
- package/dist/dashboard/web/connectors-page.js +303 -0
- package/dist/dashboard/web/connectors-page.js.map +1 -0
- package/dist/dashboard/web/connectors.d.ts +1 -12
- package/dist/dashboard/web/connectors.d.ts.map +1 -1
- package/dist/dashboard/web/connectors.js +1 -325
- package/dist/dashboard/web/connectors.js.map +1 -1
- package/dist/dashboard/web/dashboard-routes.d.ts +14 -0
- package/dist/dashboard/web/dashboard-routes.d.ts.map +1 -0
- package/dist/dashboard/web/dashboard-routes.js +176 -0
- package/dist/dashboard/web/dashboard-routes.js.map +1 -0
- package/dist/dashboard/web/groups-page.d.ts +3 -0
- package/dist/dashboard/web/groups-page.d.ts.map +1 -0
- package/dist/dashboard/web/groups-page.js +26 -0
- package/dist/dashboard/web/groups-page.js.map +1 -0
- package/dist/dashboard/web/groups.d.ts +1 -1
- package/dist/dashboard/web/groups.d.ts.map +1 -1
- package/dist/dashboard/web/groups.js +113 -52
- package/dist/dashboard/web/groups.js.map +1 -1
- package/dist/dashboard/web/i18n.d.ts.map +1 -1
- package/dist/dashboard/web/i18n.js +18 -0
- package/dist/dashboard/web/i18n.js.map +1 -1
- package/dist/dashboard/web/insights-page.d.ts +3 -0
- package/dist/dashboard/web/insights-page.d.ts.map +1 -0
- package/dist/dashboard/web/insights-page.js +26 -0
- package/dist/dashboard/web/insights-page.js.map +1 -0
- package/dist/dashboard/web/insights.d.ts +18 -1
- package/dist/dashboard/web/insights.d.ts.map +1 -1
- package/dist/dashboard/web/insights.js +25 -61
- package/dist/dashboard/web/insights.js.map +1 -1
- package/dist/dashboard/web/office-page.d.ts +3 -0
- package/dist/dashboard/web/office-page.d.ts.map +1 -0
- package/dist/dashboard/web/office-page.js +149 -0
- package/dist/dashboard/web/office-page.js.map +1 -0
- package/dist/dashboard/web/office.d.ts +1 -1
- package/dist/dashboard/web/office.d.ts.map +1 -1
- package/dist/dashboard/web/office.js +1 -139
- package/dist/dashboard/web/office.js.map +1 -1
- package/dist/dashboard/web/overview-page.d.ts +3 -0
- package/dist/dashboard/web/overview-page.d.ts.map +1 -0
- package/dist/dashboard/web/overview-page.js +149 -0
- package/dist/dashboard/web/overview-page.js.map +1 -0
- package/dist/dashboard/web/overview.d.ts +2 -2
- package/dist/dashboard/web/overview.d.ts.map +1 -1
- package/dist/dashboard/web/overview.js +14 -3
- package/dist/dashboard/web/overview.js.map +1 -1
- package/dist/dashboard/web/react-hooks.d.ts +8 -0
- package/dist/dashboard/web/react-hooks.d.ts.map +1 -0
- package/dist/dashboard/web/react-hooks.js +43 -0
- package/dist/dashboard/web/react-hooks.js.map +1 -0
- package/dist/dashboard/web/react-mount.d.ts +4 -0
- package/dist/dashboard/web/react-mount.d.ts.map +1 -0
- package/dist/dashboard/web/react-mount.js +7 -0
- package/dist/dashboard/web/react-mount.js.map +1 -0
- package/dist/dashboard/web/roles-page.d.ts +4 -0
- package/dist/dashboard/web/roles-page.d.ts.map +1 -0
- package/dist/dashboard/web/roles-page.js +26 -0
- package/dist/dashboard/web/roles-page.js.map +1 -0
- package/dist/dashboard/web/roles.d.ts +1 -2
- package/dist/dashboard/web/roles.d.ts.map +1 -1
- package/dist/dashboard/web/roles.js +189 -135
- package/dist/dashboard/web/roles.js.map +1 -1
- package/dist/dashboard/web/route-lifecycle.d.ts +14 -0
- package/dist/dashboard/web/route-lifecycle.d.ts.map +1 -0
- package/dist/dashboard/web/route-lifecycle.js +29 -0
- package/dist/dashboard/web/route-lifecycle.js.map +1 -0
- package/dist/dashboard/web/schedules-page.d.ts +14 -0
- package/dist/dashboard/web/schedules-page.d.ts.map +1 -0
- package/dist/dashboard/web/schedules-page.js +84 -0
- package/dist/dashboard/web/schedules-page.js.map +1 -0
- package/dist/dashboard/web/schedules.d.ts +1 -1
- package/dist/dashboard/web/schedules.d.ts.map +1 -1
- package/dist/dashboard/web/schedules.js +1 -115
- package/dist/dashboard/web/schedules.js.map +1 -1
- package/dist/dashboard/web/sessions-page.d.ts +3 -0
- package/dist/dashboard/web/sessions-page.d.ts.map +1 -0
- package/dist/dashboard/web/sessions-page.js +28 -0
- package/dist/dashboard/web/sessions-page.js.map +1 -0
- package/dist/dashboard/web/sessions.d.ts +4 -1
- package/dist/dashboard/web/sessions.d.ts.map +1 -1
- package/dist/dashboard/web/sessions.js +43 -10
- package/dist/dashboard/web/sessions.js.map +1 -1
- package/dist/dashboard/web/settings-page.d.ts +3 -0
- package/dist/dashboard/web/settings-page.d.ts.map +1 -0
- package/dist/dashboard/web/settings-page.js +387 -0
- package/dist/dashboard/web/settings-page.js.map +1 -0
- package/dist/dashboard/web/settings.d.ts +1 -1
- package/dist/dashboard/web/settings.d.ts.map +1 -1
- package/dist/dashboard/web/settings.js +1 -534
- package/dist/dashboard/web/settings.js.map +1 -1
- package/dist/dashboard/web/skills-page.d.ts +33 -0
- package/dist/dashboard/web/skills-page.d.ts.map +1 -0
- package/dist/dashboard/web/skills-page.js +515 -0
- package/dist/dashboard/web/skills-page.js.map +1 -0
- package/dist/dashboard/web/skills.d.ts +1 -1
- package/dist/dashboard/web/skills.d.ts.map +1 -1
- package/dist/dashboard/web/skills.js +1 -711
- package/dist/dashboard/web/skills.js.map +1 -1
- package/dist/dashboard/web/store.d.ts +9 -0
- package/dist/dashboard/web/store.d.ts.map +1 -1
- package/dist/dashboard/web/store.js +19 -2
- package/dist/dashboard/web/store.js.map +1 -1
- package/dist/dashboard/web/team-federation-page.d.ts +4 -0
- package/dist/dashboard/web/team-federation-page.d.ts.map +1 -0
- package/dist/dashboard/web/team-federation-page.js +47 -0
- package/dist/dashboard/web/team-federation-page.js.map +1 -0
- package/dist/dashboard/web/team-federation.d.ts +2 -2
- package/dist/dashboard/web/team-federation.d.ts.map +1 -1
- package/dist/dashboard/web/team-federation.js +104 -97
- package/dist/dashboard/web/team-federation.js.map +1 -1
- package/dist/dashboard/web/v3-page.d.ts +3 -0
- package/dist/dashboard/web/v3-page.d.ts.map +1 -0
- package/dist/dashboard/web/v3-page.js +27 -0
- package/dist/dashboard/web/v3-page.js.map +1 -0
- package/dist/dashboard/web/v3.d.ts +2 -1
- package/dist/dashboard/web/v3.d.ts.map +1 -1
- package/dist/dashboard/web/v3.js +18 -43
- package/dist/dashboard/web/v3.js.map +1 -1
- package/dist/dashboard/web/whiteboards-page.d.ts +3 -0
- package/dist/dashboard/web/whiteboards-page.d.ts.map +1 -0
- package/dist/dashboard/web/whiteboards-page.js +203 -0
- package/dist/dashboard/web/whiteboards-page.js.map +1 -0
- package/dist/dashboard/web/whiteboards.d.ts +1 -1
- package/dist/dashboard/web/whiteboards.d.ts.map +1 -1
- package/dist/dashboard/web/whiteboards.js +1 -275
- package/dist/dashboard/web/whiteboards.js.map +1 -1
- package/dist/dashboard-web/app.js +36 -2550
- package/dist/dashboard-web/chunks/bot-defaults-page-3EV7K6LJ.js +358 -0
- package/dist/dashboard-web/chunks/chunk-5E3MJJL4.js +1 -0
- package/dist/dashboard-web/chunks/chunk-76J7PNZI.js +1 -0
- package/dist/dashboard-web/chunks/chunk-7SZRL6FY.js +1 -0
- package/dist/dashboard-web/chunks/chunk-JTSE5VP6.js +54 -0
- package/dist/dashboard-web/chunks/chunk-JXLHRRJD.js +31 -0
- package/dist/dashboard-web/chunks/chunk-NASYW5FD.js +1 -0
- package/dist/dashboard-web/chunks/connectors-XPZKEHF6.js +1 -0
- package/dist/dashboard-web/chunks/groups-page-C54PVKYP.js +207 -0
- package/dist/dashboard-web/chunks/insights-page-BBQYR7WY.js +309 -0
- package/dist/dashboard-web/chunks/office-page-6DXYOG55.js +1 -0
- package/dist/dashboard-web/chunks/overview-page-5PJCAMID.js +1 -0
- package/dist/dashboard-web/chunks/roles-page-APUDLPVM.js +98 -0
- package/dist/dashboard-web/chunks/schedules-WG2UKHSO.js +1 -0
- package/dist/dashboard-web/chunks/sessions-page-F3U5NFPD.js +238 -0
- package/dist/dashboard-web/chunks/settings-page-OSBZNCXL.js +2 -0
- package/dist/dashboard-web/chunks/skills-page-Y3VUAOYG.js +2 -0
- package/dist/dashboard-web/chunks/team-federation-page-CRH3WZPH.js +10 -0
- package/dist/dashboard-web/chunks/v3-page-FVPUL665.js +149 -0
- package/dist/dashboard-web/chunks/whiteboards-page-HLCTYSSV.js +1 -0
- package/dist/dashboard-web/chunks/workflows-UB7OPYGI.js +184 -0
- package/dist/dashboard-web/index.html +1 -1
- package/dist/dashboard-web/style.css +82 -1
- package/dist/dashboard.js +5 -6
- package/dist/dashboard.js.map +1 -1
- package/dist/i18n/en.d.ts.map +1 -1
- package/dist/i18n/en.js +1 -0
- package/dist/i18n/en.js.map +1 -1
- package/dist/i18n/zh.d.ts.map +1 -1
- package/dist/i18n/zh.js +1 -0
- package/dist/i18n/zh.js.map +1 -1
- package/dist/im/lark/card-builder.d.ts.map +1 -1
- package/dist/im/lark/card-builder.js +1 -0
- package/dist/im/lark/card-builder.js.map +1 -1
- package/dist/im/lark/event-dispatcher.d.ts.map +1 -1
- package/dist/im/lark/event-dispatcher.js +7 -0
- package/dist/im/lark/event-dispatcher.js.map +1 -1
- package/dist/im/lark/sessions-card.d.ts.map +1 -1
- package/dist/im/lark/sessions-card.js +4 -1
- package/dist/im/lark/sessions-card.js.map +1 -1
- package/dist/setup/bot-config-editor.d.ts.map +1 -1
- package/dist/setup/bot-config-editor.js +16 -14
- package/dist/setup/bot-config-editor.js.map +1 -1
- package/dist/worker.js +1 -1
- package/dist/worker.js.map +1 -1
- package/package.json +8 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"insights-page.js","sourceRoot":"","sources":["../../../src/dashboard/web/insights-page.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,2 +1,19 @@
|
|
|
1
|
-
|
|
1
|
+
import type { SafeInsightReport } from '../../services/insight/types.js';
|
|
2
|
+
type InsightRecord = {
|
|
3
|
+
session: Record<string, any>;
|
|
4
|
+
report: SafeInsightReport | null;
|
|
5
|
+
error?: string;
|
|
6
|
+
};
|
|
7
|
+
type InsightTab = 'overview' | 'sessions' | 'flow' | 'dist' | 'hot';
|
|
8
|
+
export declare function renderTabBar(active: InsightTab): string;
|
|
9
|
+
export declare const TIME_WINDOWS: Array<{
|
|
10
|
+
key: string;
|
|
11
|
+
label: string;
|
|
12
|
+
days: number;
|
|
13
|
+
}>;
|
|
14
|
+
export declare function renderDetailShell(rec: InsightRecord | undefined): string;
|
|
15
|
+
export declare function parseInsightsHash(): Record<string, string>;
|
|
16
|
+
export declare function initialInsightTab(): InsightTab;
|
|
17
|
+
export declare function wireInsightsPage(root: HTMLElement): () => void;
|
|
18
|
+
export {};
|
|
2
19
|
//# sourceMappingURL=insights.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/insights.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"insights.d.ts","sourceRoot":"","sources":["../../../src/dashboard/web/insights.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAQV,iBAAiB,EASlB,MAAM,iCAAiC,CAAC;AAMzC,KAAK,aAAa,GAAG;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC7B,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AA4UF,KAAK,UAAU,GAAG,UAAU,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,CAAC;AAQpE,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAIvD;AAYD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAK5E,CAAC;AA4kBF,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,SAAS,GAAG,MAAM,CAUxE;AAwhBD,wBAAgB,iBAAiB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO1D;AAWD,wBAAgB,iBAAiB,IAAI,UAAU,CAG9C;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,IAAI,CA+kB9D"}
|
|
@@ -333,7 +333,7 @@ const INSIGHT_TABS = [
|
|
|
333
333
|
{ key: 'dist', label: 'insights.tabDist' },
|
|
334
334
|
{ key: 'hot', label: 'insights.tabHot' },
|
|
335
335
|
];
|
|
336
|
-
function renderTabBar(active) {
|
|
336
|
+
export function renderTabBar(active) {
|
|
337
337
|
return `<div class="insight-tabs" role="tablist">${INSIGHT_TABS.map(tb => `<button type="button" class="itab${tb.key === active ? ' on' : ''}" data-itab="${tb.key}" role="tab" aria-selected="${tb.key === active}">${escapeHtml(t(tb.label))}</button>`).join('')}</div>`;
|
|
338
338
|
}
|
|
339
339
|
function projectOf(rec) {
|
|
@@ -351,7 +351,7 @@ function projectOptions(records) {
|
|
|
351
351
|
}
|
|
352
352
|
return [...m.entries()].map(([id, count]) => ({ id, count })).sort((a, b) => b.count - a.count || a.id.localeCompare(b.id));
|
|
353
353
|
}
|
|
354
|
-
const TIME_WINDOWS = [
|
|
354
|
+
export const TIME_WINDOWS = [
|
|
355
355
|
{ key: 'all', label: 'insights.timeAll', days: 0 },
|
|
356
356
|
{ key: '1d', label: 'insights.time1d', days: 1 },
|
|
357
357
|
{ key: '7d', label: 'insights.time7d', days: 7 },
|
|
@@ -963,7 +963,7 @@ function renderEvidence(report, focus, spanFilter, openSpans) {
|
|
|
963
963
|
: `<p class="mut">${escapeHtml(t('insights.evNoFlags'))}</p>`;
|
|
964
964
|
return `<div class="evidence">${work}${reason}<div class="spanfilter">${chips}</div><div class="spantable">${rows}</div></div>`;
|
|
965
965
|
}
|
|
966
|
-
function renderDetailShell(rec) {
|
|
966
|
+
export function renderDetailShell(rec) {
|
|
967
967
|
if (!rec)
|
|
968
968
|
return `<section class="insight-detail"><p class="mut">${escapeHtml(t('insights.selectSession'))}</p></section>`;
|
|
969
969
|
const s = rec.session;
|
|
@@ -1507,7 +1507,7 @@ async function fetchDetail(sessionId) {
|
|
|
1507
1507
|
// URL state (deep-link + refresh-stable): the insights view state lives in the hash
|
|
1508
1508
|
// query after #/insights (e.g. #/insights?tab=dist&project=botmux&sess=<id>). Written
|
|
1509
1509
|
// via history.replaceState (no router re-run), read back on (re)mount.
|
|
1510
|
-
function parseInsightsHash() {
|
|
1510
|
+
export function parseInsightsHash() {
|
|
1511
1511
|
const h = typeof location !== 'undefined' ? (location.hash || '') : '';
|
|
1512
1512
|
const qi = h.indexOf('?');
|
|
1513
1513
|
if (qi < 0)
|
|
@@ -1528,7 +1528,11 @@ function buildInsightsHash(p) {
|
|
|
1528
1528
|
const INSIGHT_FILTERS = ['all', 'review', 'failed', 'slow'];
|
|
1529
1529
|
const INSIGHT_TAB_KEYS = ['overview', 'sessions', 'flow', 'dist', 'hot'];
|
|
1530
1530
|
const SESS_SORT_KEYS = ['recent', 'review', 'spans', 'fails', 'slow', 'agent'];
|
|
1531
|
-
export function
|
|
1531
|
+
export function initialInsightTab() {
|
|
1532
|
+
const hp = parseInsightsHash();
|
|
1533
|
+
return INSIGHT_TAB_KEYS.includes(hp.tab) ? hp.tab : 'overview';
|
|
1534
|
+
}
|
|
1535
|
+
export function wireInsightsPage(root) {
|
|
1532
1536
|
const hp = parseInsightsHash();
|
|
1533
1537
|
let overviewData = null;
|
|
1534
1538
|
let records = [];
|
|
@@ -1564,58 +1568,6 @@ export function renderInsightsPage(root) {
|
|
|
1564
1568
|
let paletteOpen = false;
|
|
1565
1569
|
let paletteQ = '';
|
|
1566
1570
|
let paletteIdx = 0;
|
|
1567
|
-
root.innerHTML = `
|
|
1568
|
-
<section class="page insights-page">
|
|
1569
|
-
<div class="page-heading">
|
|
1570
|
-
<div>
|
|
1571
|
-
<p class="eyebrow">${escapeHtml(t('nav.insights'))}</p>
|
|
1572
|
-
<h1>${escapeHtml(t('insights.title'))}</h1>
|
|
1573
|
-
<p>${escapeHtml(t('insights.subtitle'))}</p>
|
|
1574
|
-
</div>
|
|
1575
|
-
<div class="insight-head-acts">
|
|
1576
|
-
<button type="button" id="insight-palette-open" class="ins-clear">${escapeHtml(t('insights.paletteOpen'))}</button>
|
|
1577
|
-
<button type="button" id="insight-refresh" class="primary">${escapeHtml(t('insights.refresh'))}</button>
|
|
1578
|
-
</div>
|
|
1579
|
-
</div>
|
|
1580
|
-
<form id="insight-filters" class="filters insights-filters">
|
|
1581
|
-
<input type="search" name="q" placeholder="${escapeHtml(t('insights.search'))}">
|
|
1582
|
-
<select id="insight-project" class="ins-select" aria-label="${escapeHtml(t('insights.projectAll'))}"></select>
|
|
1583
|
-
<select id="insight-time" class="ins-select" aria-label="${escapeHtml(t('insights.timeAll'))}">
|
|
1584
|
-
${TIME_WINDOWS.map(w => `<option value="${w.key}">${escapeHtml(t(w.label))}</option>`).join('')}
|
|
1585
|
-
</select>
|
|
1586
|
-
<div class="segmented" role="group" aria-label="${escapeHtml(t('insights.filter'))}">
|
|
1587
|
-
<button type="button" data-filter="all">${escapeHtml(t('insights.filterAll'))}</button>
|
|
1588
|
-
<button type="button" data-filter="review">${escapeHtml(t('insights.filterReview'))}</button>
|
|
1589
|
-
<button type="button" data-filter="failed">${escapeHtml(t('insights.filterFailed'))}</button>
|
|
1590
|
-
<button type="button" data-filter="slow">${escapeHtml(t('insights.filterSlow'))}</button>
|
|
1591
|
-
</div>
|
|
1592
|
-
<div id="insight-cli-filter" class="spanfilter cli-filter" role="group" aria-label="${escapeHtml(t('insights.filter'))}"></div>
|
|
1593
|
-
<label class="ins-toggle"><input type="checkbox" id="insight-noise"> ${escapeHtml(t('insights.showAll'))}</label>
|
|
1594
|
-
<button type="button" id="insight-clear" class="ins-clear">${escapeHtml(t('insights.clear'))}</button>
|
|
1595
|
-
</form>
|
|
1596
|
-
<div id="insight-tabbar">${renderTabBar(tab)}</div>
|
|
1597
|
-
<div id="insight-status" class="insight-page-status"></div>
|
|
1598
|
-
<div class="insight-panel" role="tabpanel" data-tabpanel="overview"><div id="insight-overview"></div></div>
|
|
1599
|
-
<div class="insight-panel" role="tabpanel" data-tabpanel="sessions" hidden>
|
|
1600
|
-
<div id="insight-list-view">
|
|
1601
|
-
<div class="insight-list-head">
|
|
1602
|
-
<span id="insight-list-subtitle"></span>
|
|
1603
|
-
<div class="sesssort" id="insight-sort"></div>
|
|
1604
|
-
</div>
|
|
1605
|
-
<div id="insight-list"></div>
|
|
1606
|
-
</div>
|
|
1607
|
-
<div id="insight-detail-view" hidden>
|
|
1608
|
-
<button type="button" id="insight-back" class="ins-back">← ${escapeHtml(t('insights.backToList'))}</button>
|
|
1609
|
-
<div id="insight-detail">${renderDetailShell(undefined)}</div>
|
|
1610
|
-
</div>
|
|
1611
|
-
</div>
|
|
1612
|
-
<div class="insight-panel" role="tabpanel" data-tabpanel="flow" hidden><div id="insight-flow"></div></div>
|
|
1613
|
-
<div class="insight-panel" role="tabpanel" data-tabpanel="dist" hidden><div id="insight-dist"></div></div>
|
|
1614
|
-
<div class="insight-panel" role="tabpanel" data-tabpanel="hot" hidden><div id="insight-hot"></div></div>
|
|
1615
|
-
<div id="insight-modal" class="insight-modal" hidden></div>
|
|
1616
|
-
<div id="insight-palette" class="insight-palette" hidden></div>
|
|
1617
|
-
<div id="insight-tip" class="ins-tip" role="tooltip" hidden></div>
|
|
1618
|
-
</section>`;
|
|
1619
1571
|
const status = root.querySelector('#insight-status');
|
|
1620
1572
|
const overviewEl = root.querySelector('#insight-overview');
|
|
1621
1573
|
const list = root.querySelector('#insight-list');
|
|
@@ -1865,6 +1817,8 @@ export function renderInsightsPage(root) {
|
|
|
1865
1817
|
const sid = selectedId;
|
|
1866
1818
|
try {
|
|
1867
1819
|
const r = await fetch(`/api/sessions/${encodeURIComponent(sid)}/insight?${params.toString()}`, { cache: 'no-store' });
|
|
1820
|
+
if (disposed || sid !== selectedId)
|
|
1821
|
+
return;
|
|
1868
1822
|
const d = await r.json().catch(() => ({}));
|
|
1869
1823
|
if (disposed || sid !== selectedId)
|
|
1870
1824
|
return;
|
|
@@ -1877,6 +1831,8 @@ export function renderInsightsPage(root) {
|
|
|
1877
1831
|
}
|
|
1878
1832
|
}
|
|
1879
1833
|
catch { /* leave what we have */ }
|
|
1834
|
+
if (disposed || sid !== selectedId)
|
|
1835
|
+
return;
|
|
1880
1836
|
convo.loading = false;
|
|
1881
1837
|
if (detailTab === 'convo')
|
|
1882
1838
|
paintDetailBody();
|
|
@@ -1914,13 +1870,15 @@ export function renderInsightsPage(root) {
|
|
|
1914
1870
|
paintModal();
|
|
1915
1871
|
try {
|
|
1916
1872
|
const r = await fetch(`/api/sessions/${encodeURIComponent(sid)}/insight/turn/${turnIndex}?offset=0&limit=40000`, { cache: 'no-store' });
|
|
1873
|
+
if (req !== modalReq || disposed || sid !== selectedId)
|
|
1874
|
+
return;
|
|
1917
1875
|
const d = await r.json().catch(() => ({}));
|
|
1918
|
-
if (req !== modalReq || disposed)
|
|
1876
|
+
if (req !== modalReq || disposed || sid !== selectedId)
|
|
1919
1877
|
return;
|
|
1920
1878
|
modalPrompt = d?.turn?.prompt ?? { text: '', truncated: false };
|
|
1921
1879
|
}
|
|
1922
1880
|
catch {
|
|
1923
|
-
if (req !== modalReq)
|
|
1881
|
+
if (req !== modalReq || disposed || sid !== selectedId)
|
|
1924
1882
|
return;
|
|
1925
1883
|
modalPrompt = { text: t('insights.unavailable'), truncated: false };
|
|
1926
1884
|
}
|
|
@@ -2110,13 +2068,13 @@ export function renderInsightsPage(root) {
|
|
|
2110
2068
|
return;
|
|
2111
2069
|
try {
|
|
2112
2070
|
const report = await fetchDetail(sessionId);
|
|
2113
|
-
if (!disposed && report) {
|
|
2071
|
+
if (!disposed && selectedId === sessionId && report) {
|
|
2114
2072
|
detailReport = report;
|
|
2115
2073
|
paintDetailBody();
|
|
2116
2074
|
}
|
|
2117
2075
|
}
|
|
2118
2076
|
catch (e) {
|
|
2119
|
-
if (!disposed)
|
|
2077
|
+
if (!disposed && selectedId === sessionId)
|
|
2120
2078
|
body.innerHTML = `<p class="mut">${escapeHtml(String(e))}</p>`;
|
|
2121
2079
|
}
|
|
2122
2080
|
}
|
|
@@ -2125,7 +2083,11 @@ export function renderInsightsPage(root) {
|
|
|
2125
2083
|
status.textContent = t('insights.loading');
|
|
2126
2084
|
try {
|
|
2127
2085
|
const r = await fetch('/api/insights/summary?limit=200', { cache: 'no-store' });
|
|
2086
|
+
if (disposed)
|
|
2087
|
+
return;
|
|
2128
2088
|
const d = await r.json().catch(() => ({}));
|
|
2089
|
+
if (disposed)
|
|
2090
|
+
return;
|
|
2129
2091
|
if (!r.ok || d?.ok === false || !d.overview) {
|
|
2130
2092
|
overviewData = null;
|
|
2131
2093
|
records = [];
|
|
@@ -2138,6 +2100,8 @@ export function renderInsightsPage(root) {
|
|
|
2138
2100
|
}
|
|
2139
2101
|
}
|
|
2140
2102
|
catch (e) {
|
|
2103
|
+
if (disposed)
|
|
2104
|
+
return;
|
|
2141
2105
|
overviewData = null;
|
|
2142
2106
|
records = [];
|
|
2143
2107
|
status.textContent = `${t('insights.unavailable')}: ${String(e)}`;
|