@wrongstack/webui 1.0.16 → 1.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{AgentRosterView-DMxOg0xX.js → AgentRosterView-D4TuVXe8.js} +4 -4
- package/dist/assets/AnalyticsDashboard-DmQd0E0V.js +1 -0
- package/dist/assets/{AudienceMemoryPanel-CyfpggCK.js → AudienceMemoryPanel-DHJM4rf1.js} +1 -1
- package/dist/assets/ChangesView-CZ-nCe26.js +1 -0
- package/dist/assets/{ChimeraReviewsView-DencEMIY.js → ChimeraReviewsView-CNeRLesP.js} +1 -1
- package/dist/assets/{ChronicleDashboard-CvDPqZKE.js → ChronicleDashboard-CYELq7EO.js} +1 -1
- package/dist/assets/{CodeEditor-s0lHP0DZ.js → CodeEditor-CLscjkIR.js} +2 -2
- package/dist/assets/CodeMap-CdVy9Q7V.js +1 -0
- package/dist/assets/{CronJobsPanel-LoDmuRHl.js → CronJobsPanel-TcZy_W2t.js} +1 -1
- package/dist/assets/{DeadCodeScanPanel-ByhAW_bl.js → DeadCodeScanPanel-BOD2JEyf.js} +1 -1
- package/dist/assets/{DebugDashboard-BP1Mia-L.js → DebugDashboard-DFPNPzQ_.js} +1 -1
- package/dist/assets/{DesignGalleryView-taDxRN63.js → DesignGalleryView-BXABwAji.js} +1 -1
- package/dist/assets/{GoalView-CcLxMYXe.js → GoalView-Cepqrg9l.js} +1 -1
- package/dist/assets/KanbanView-FSePkLch.js +3 -0
- package/dist/assets/MailboxDetailView-QyNmt1Gv.js +1 -0
- package/dist/assets/{MemoryDrawer-CuFQypU-.js → MemoryDrawer-BZsyD1dh.js} +1 -1
- package/dist/assets/MemoryManager-IHmhWn4P.js +1 -0
- package/dist/assets/ProcessMonitor-Bz0jZvHJ.js +1 -0
- package/dist/assets/{PromptJournalView-CdC4ldrv.js → PromptJournalView-Ct8cLcGU.js} +1 -1
- package/dist/assets/{ProviderTestView-Dy7EQEI9.js → ProviderTestView-Dy3k2bVu.js} +1 -1
- package/dist/assets/{QueuePanel-DE9ySxkR.js → QueuePanel-oVkTB68Q.js} +1 -1
- package/dist/assets/{RefreshDebugView-Dbq_bHwj.js → RefreshDebugView-_XPrBDq3.js} +1 -1
- package/dist/assets/RepositoryHistoryView-Wlnvi5r1.js +2 -0
- package/dist/assets/RequirementIntakeView-Cj5arGFF.js +1 -0
- package/dist/assets/{SageTabs-Dwbux3im.js → SageTabs-qrBn3VQr.js} +2 -2
- package/dist/assets/{SddFlowGraph-BZkvlaQ1.js → SddFlowGraph-DS8R2zEj.js} +1 -1
- package/dist/assets/SddHub-C8pHQYSM.js +2 -0
- package/dist/assets/{SessionInspectView-Bak1hK82.js → SessionInspectView-CuRk2DS0.js} +1 -1
- package/dist/assets/{SessionList-xXaygO5X.js → SessionList-BgRb1Mp4.js} +1 -1
- package/dist/assets/{SessionsDashboard-CaSXukNy.js → SessionsDashboard-CSkm28Bx.js} +1 -1
- package/dist/assets/{SetupScreen-BSEF1air.js → SetupScreen-CNcJ_9O9.js} +1 -1
- package/dist/assets/{SkillDetailView-OdtAJM43.js → SkillDetailView-Bc9owpaX.js} +1 -1
- package/dist/assets/{TechStackView-BUIbnU2F.js → TechStackView-BHiGCRBT.js} +1 -1
- package/dist/assets/{TerminalPanel-CfoKklMj.js → TerminalPanel-7VeXK8LB.js} +1 -1
- package/dist/assets/{activity-DBsMiPsa.js → activity-1wlPY6yi.js} +4 -4
- package/dist/assets/{activity-BazcMhZZ.js → activity-BVbAv0x7.js} +4 -4
- package/dist/assets/{activity-Cmq0z33p.js → activity-BmJTU8kX.js} +4 -4
- package/dist/assets/{activity-B-GYDVn2.js → activity-By_aWEsY.js} +4 -4
- package/dist/assets/{activity-BWPWyp3o.js → activity-Cps_29WN.js} +4 -4
- package/dist/assets/{activity-VTOCX_jm.js → activity-Du_fOnvF.js} +4 -4
- package/dist/assets/{activity-Bk7N_ZW5.js → activity-p_2o4eC6.js} +4 -4
- package/dist/assets/button-BbeB5Qm8.js +1 -0
- package/dist/assets/{chat-store-DNRce6sE.js → chat-store-C-PKlsCR.js} +1 -1
- package/dist/assets/common-BXosnbIt.js +1 -0
- package/dist/assets/common-CzfPgMjC.js +1 -0
- package/dist/assets/common-DDDPz7Dv.js +1 -0
- package/dist/assets/common-DYx9oSoC.js +1 -0
- package/dist/assets/common-DZ-05t4z.js +1 -0
- package/dist/assets/common-MjX8fcng.js +1 -0
- package/dist/assets/common-ipsuLC3n.js +1 -0
- package/dist/assets/config-store-xSv1mChc.js +21 -0
- package/dist/assets/dialog-b-Ai37sa.js +1 -0
- package/dist/assets/empty-state-pfuS5znr.js +1 -0
- package/dist/assets/{i18n-CbyUyl6G.js → i18n--QdD6NCn.js} +3 -3
- package/dist/assets/index-DiX5j910.css +1 -0
- package/dist/assets/{index-3TGBKeBP.js → index-FWwLmwjx.js} +80 -80
- package/dist/assets/input-BA6D2L3K.js +1 -0
- package/dist/assets/mailbox-store-ZQO_Rv6E.js +1 -0
- package/dist/assets/{roster-ws-z8DKquaN.js → roster-ws-CxKDc-ET.js} +1 -1
- package/dist/assets/stores-2kakt8j9.js +7 -0
- package/dist/assets/{vector-memory-panel-DZFEwwGM.js → vector-memory-panel-YWv6xcza.js} +1 -1
- package/dist/assets/view-navigation-DTs4cSQ6.js +1 -0
- package/dist/components/CodeMap.d.ts +1 -1
- package/dist/components/CodeMapCanvasSurface.d.ts +2 -1
- package/dist/components/ConfirmModal.d.ts +10 -0
- package/dist/components/FileExplorer/FileExplorerModals.d.ts +4 -5
- package/dist/components/KanbanColumnView.d.ts +13 -0
- package/dist/components/MainViewSlot.d.ts +1 -1
- package/dist/components/MemoryManager/useMemoryManagerState.d.ts +2 -2
- package/dist/components/PanelSuspense.d.ts +0 -4
- package/dist/components/RepositoryHistoryView.d.ts +1 -1
- package/dist/components/RequirementIntakeView.d.ts +22 -1
- package/dist/components/SddHub.d.ts +3 -3
- package/dist/components/ui/dialog.d.ts +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +1 -1
- package/dist/components/ui/empty-state.d.ts +1 -1
- package/dist/components/ui/tabs.d.ts +1 -1
- package/dist/index.html +12 -12
- package/dist/index.js +2154 -1576
- package/dist/lib/kanban-cleaner.d.ts +1 -1
- package/dist/lib/view-navigation.d.ts +2 -2
- package/dist/lib/ws-client-domain-methods.d.ts +1 -1
- package/dist/lib/ws-client-echo.d.ts +1 -1
- package/dist/stores/index.d.ts +1 -1
- package/dist/stores/sdd-wizard-store.d.ts +7 -0
- package/package.json +9 -9
- package/dist/assets/AnalyticsDashboard-DGQk1vSi.js +0 -1
- package/dist/assets/ChangesView-C8x8tmpi.js +0 -1
- package/dist/assets/CodeMap-6mmDO9gJ.js +0 -1
- package/dist/assets/KanbanView-C-K6OBw8.js +0 -3
- package/dist/assets/MailboxDetailView-N00dLbpr.js +0 -1
- package/dist/assets/MemoryManager-Bmz62aEV.js +0 -1
- package/dist/assets/ProcessMonitor-CkAtUjrR.js +0 -1
- package/dist/assets/RepositoryHistoryView-D0ynYRgu.js +0 -2
- package/dist/assets/RequirementIntakeView-CPRtncuJ.js +0 -1
- package/dist/assets/SddHub-CoRKeq7Q.js +0 -2
- package/dist/assets/button-9ewV4TF3.js +0 -1
- package/dist/assets/common-5rSj2oHt.js +0 -1
- package/dist/assets/common-B5Uslzr2.js +0 -1
- package/dist/assets/common-BnhmJl6b.js +0 -1
- package/dist/assets/common-CmkkiJUR.js +0 -1
- package/dist/assets/common-CpZ-DoXd.js +0 -1
- package/dist/assets/common-Ct-Iodid.js +0 -1
- package/dist/assets/common-D9w3BalB.js +0 -1
- package/dist/assets/config-store-BAUadwHd.js +0 -22
- package/dist/assets/dialog-C7EIBM_2.js +0 -1
- package/dist/assets/empty-state-5YP1rmE6.js +0 -1
- package/dist/assets/index-NBVZNAcU.css +0 -1
- package/dist/assets/input-ag1CrUiS.js +0 -1
- package/dist/assets/mailbox-store-C49LeBj8.js +0 -1
- package/dist/assets/stores-RkHrTaRO.js +0 -7
- package/dist/assets/view-navigation-DHtNFXIl.js +0 -1
|
@@ -18,7 +18,7 @@ export type KanbanAuditSeverity = 'error' | 'warning';
|
|
|
18
18
|
* two implementations' code sets instead of trusting that both type unions
|
|
19
19
|
* were edited together.
|
|
20
20
|
*/
|
|
21
|
-
export declare const ALL_AUDIT_CODES: readonly ['abandoned-running-task', 'board-oversized', 'missing-assignee', 'missing-description', 'missing-due-date', 'missing-labels', 'missing-subtasks', 'missing-success-criteria', 'skipped-lifecycle-state', 'stale-review', 'stale-running-task'];
|
|
21
|
+
export declare const ALL_AUDIT_CODES: readonly ['abandoned-running-task', 'board-oversized', 'missing-assignee', 'missing-description', 'missing-due-date', 'missing-labels', 'missing-subtasks', 'missing-success-criteria', 'parked-card', 'skipped-lifecycle-state', 'stale-review', 'stale-running-task'];
|
|
22
22
|
export type KanbanAuditIssueCode = (typeof ALL_AUDIT_CODES)[number];
|
|
23
23
|
export interface KanbanAuditIssue {
|
|
24
24
|
id: string;
|
|
@@ -8,12 +8,12 @@ export type PanelMainView = 'chat' | 'files' | 'skill' | 'changes' | 'mailbox' |
|
|
|
8
8
|
* A standalone main view with its own activity-bar icon (or a slot in the "…"
|
|
9
9
|
* utilities menu). Selecting one collapses the side panel.
|
|
10
10
|
*/
|
|
11
|
-
export type MainView = 'goal' | 'kanban' | 'sddhub' | 'settings' | 'provider-test' | 'memory' | 'roster' | 'codemap' | 'techstack' | 'chronicle' | '
|
|
11
|
+
export type MainView = 'goal' | 'kanban' | 'sddhub' | 'settings' | 'provider-test' | 'memory' | 'roster' | 'codemap' | 'techstack' | 'chronicle' | 'prompts' | 'chimera' | 'history';
|
|
12
12
|
/**
|
|
13
13
|
* A view with no bar affordance at all — reached from the command palette, a
|
|
14
14
|
* deep link, or another view's action. Diagnostics and drill-downs live here.
|
|
15
15
|
*/
|
|
16
|
-
export type UnlistedView = 'sessions' | 'session-inspect' | 'setup' | 'context' | 'debug' | 'refresh-debug' | 'analytics' | 'deadcode';
|
|
16
|
+
export type UnlistedView = 'sessions' | 'session-inspect' | 'setup' | 'context' | 'debug' | 'refresh-debug' | 'analytics' | 'deadcode' | 'intake';
|
|
17
17
|
/**
|
|
18
18
|
* Every view the app can display. Derived from `VIEWS` in the UI store rather
|
|
19
19
|
* than re-declared, so the router and the navigation helpers cannot disagree.
|
|
@@ -137,7 +137,7 @@ declare const domainMethods: {
|
|
|
137
137
|
getPrefs(this: WsClientDomainHost, sessionId?: string): void;
|
|
138
138
|
};
|
|
139
139
|
export declare function installWsClientDomainMethods(ctor: {
|
|
140
|
-
prototype:
|
|
140
|
+
prototype: object;
|
|
141
141
|
}): void;
|
|
142
142
|
export type WsClientDomainMethods = typeof domainMethods;
|
|
143
143
|
export {};
|
|
@@ -29,7 +29,7 @@ export declare class WsClientEchoSuppression {
|
|
|
29
29
|
* matches the audit's instruction that suppression must be correlated
|
|
30
30
|
* end-to-end, never type-keyed.
|
|
31
31
|
*/
|
|
32
|
-
consumeSuppressedChatEcho(
|
|
32
|
+
consumeSuppressedChatEcho(_responseType: string, msg?: WSServerMessage): boolean;
|
|
33
33
|
/**
|
|
34
34
|
* Lazy periodic sweep for `suppressedChatEchoes`. TTL trimming otherwise
|
|
35
35
|
* runs only on consume — a requestId that was minted but never consumed
|
package/dist/stores/index.d.ts
CHANGED
|
@@ -41,7 +41,7 @@ export { type BackgroundStyle, DEFAULT_WAIT_THRESHOLD_MS, useOfficeMapStore, WAI
|
|
|
41
41
|
export { formatQuotaResetIn, type QuotaCredits, type QuotaSnapshot, type QuotaWindow, quotaWindowLabel, selectWorstQuotaWindow, useProviderQuotaStore, } from './provider-quota-store.js';
|
|
42
42
|
export { type ProviderAuditEntry, type ProviderHealthEntry, type ProviderHealthState, useProviderStatusStore, } from './provider-status-store.js';
|
|
43
43
|
export { type SddBoardFeedEntry, type SddBoardSnapshotUI, type SddBoardStatus, type SddBoardSummary, type SddLifecycleResultUI, useSddBoardStore, } from './sdd-board-store.js';
|
|
44
|
-
export { type SddWizardPhase, type SddWizardSnapshot, useSddWizardStore, } from './sdd-wizard-store.js';
|
|
44
|
+
export { type SddTab, type SddWizardPhase, type SddWizardSnapshot, useSddWizardStore, } from './sdd-wizard-store.js';
|
|
45
45
|
/** The lane pointer — the single answer to "which tab is in front". */
|
|
46
46
|
export { activeSessionLaneId, useActiveSessionId } from './session-lanes.js';
|
|
47
47
|
export { memorySessionSnapshots, useSessionStore } from './session-store.js';
|
|
@@ -52,6 +52,7 @@ export interface SddWizardSnapshot {
|
|
|
52
52
|
prompt: string;
|
|
53
53
|
busy: boolean;
|
|
54
54
|
}
|
|
55
|
+
export type SddTab = 'requirements' | 'project' | 'board' | 'specs';
|
|
55
56
|
interface SddWizardState {
|
|
56
57
|
/** Latest interview snapshot, or null before a session starts. */
|
|
57
58
|
snapshot: SddWizardSnapshot | null;
|
|
@@ -61,10 +62,16 @@ interface SddWizardState {
|
|
|
61
62
|
error: string | null;
|
|
62
63
|
/** runId once a run has been kicked off from the wizard. */
|
|
63
64
|
startedRunId: string | null;
|
|
65
|
+
/** Active tab inside SddHub container. */
|
|
66
|
+
activeHubTab: SddTab;
|
|
67
|
+
/** Prefilled goal prompt for the wizard (e.g. when kicked off from an intake record). */
|
|
68
|
+
prefilledGoal: string;
|
|
64
69
|
setSnapshot: (s: SddWizardSnapshot) => void;
|
|
65
70
|
setAgentText: (t: string) => void;
|
|
66
71
|
setError: (e: string | null) => void;
|
|
67
72
|
setStartedRunId: (id: string | null) => void;
|
|
73
|
+
setActiveHubTab: (tab: SddTab) => void;
|
|
74
|
+
setPrefilledGoal: (goal: string) => void;
|
|
68
75
|
reset: () => void;
|
|
69
76
|
}
|
|
70
77
|
export declare const useSddWizardStore: import("zustand").UseBoundStore<import("zustand").StoreApi<SddWizardState>>;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wrongstack/webui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.19",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"description": "Browser-based WebUI for WrongStack — React + Vite frontend. The WebSocket backend lives in the separate @wrongstack/webui-server package (extracted in PR #018b to remove the CLI -> @wrongstack/webui/server cross-package edge).",
|
|
6
6
|
"keywords": [
|
|
@@ -87,12 +87,12 @@
|
|
|
87
87
|
"@radix-ui/react-tabs": "^1.1.21",
|
|
88
88
|
"@tanstack/react-virtual": "^3.14.12",
|
|
89
89
|
"@uiw/react-textarea-code-editor": "^3.1.1",
|
|
90
|
-
"@wrongstack/core": "1.0.
|
|
91
|
-
"@wrongstack/kanban": "1.0.
|
|
92
|
-
"@wrongstack/plugins": "1.0.
|
|
93
|
-
"@wrongstack/providers": "1.0.
|
|
94
|
-
"@wrongstack/tools": "1.0.
|
|
95
|
-
"@wrongstack/webui-protocol": "1.0.
|
|
90
|
+
"@wrongstack/core": "1.0.19",
|
|
91
|
+
"@wrongstack/kanban": "1.0.19",
|
|
92
|
+
"@wrongstack/plugins": "1.0.19",
|
|
93
|
+
"@wrongstack/providers": "1.0.19",
|
|
94
|
+
"@wrongstack/tools": "1.0.19",
|
|
95
|
+
"@wrongstack/webui-protocol": "1.0.19",
|
|
96
96
|
"@xterm/addon-fit": "^0.11.0",
|
|
97
97
|
"@xterm/xterm": "^6.0.0",
|
|
98
98
|
"@xyflow/react": "^12.11.6",
|
|
@@ -128,8 +128,8 @@
|
|
|
128
128
|
"@types/ws": "^8.18.1",
|
|
129
129
|
"@vitejs/plugin-react": "^6.1.1",
|
|
130
130
|
"@vitest/coverage-v8": "^5.0.0",
|
|
131
|
-
"@wrongstack/sdd": "1.0.
|
|
132
|
-
"@wrongstack/webui-server": "1.0.
|
|
131
|
+
"@wrongstack/sdd": "1.0.19",
|
|
132
|
+
"@wrongstack/webui-server": "1.0.19",
|
|
133
133
|
"jsdom": "^30.0.1",
|
|
134
134
|
"tailwindcss": "^4.3.3",
|
|
135
135
|
"typescript": "^7.0.2",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{K as t,t as n}from"./config-store-BAUadwHd.js";import{i as r,t as i}from"./react-core-wiHys0m2.js";import{Bt as a,Ji as o,La as s,Mr as c,Qi as l,Xt as u,Yt as d,ho as f,tn as p,xo as m,yr as h}from"./vendor-V3ydTHqN.js";import"./i18n-CbyUyl6G.js";import"./stores-RkHrTaRO.js";import{E as g,T as _,y as v}from"./index-3TGBKeBP.js";var y=e(r(),1),b=i();function x(e){let t=Math.floor(e/1e3);if(t<60)return`${t}s`;let n=Math.floor(t/60);if(n<60)return`${n}m ${t%60}s`;let r=Math.floor(n/60);return r<24?`${r}h ${n%60}m`:`${Math.floor(r/24)}d`}function S(e){return e>=1e6?`${(e/1e6).toFixed(1)}M`:e>=1e3?`${(e/1e3).toFixed(1)}K`:String(e)}function C(e){return e<.01?`$${e.toFixed(4)}`:`$${e.toFixed(2)}`}function w(e){return new Date(e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`,second:`2-digit`})}function T(e){return e.includes(`error`)||e.includes(`fail`)?`text-destructive`:e.includes(`warn`)?`text-warning`:e.includes(`success`)||e.includes(`complete`)?`text-success`:`text-muted-foreground`}function E({icon:e,label:t,value:n,sub:r,color:i=`text-muted-foreground`}){return(0,b.jsxs)(`div`,{className:`flex items-start gap-3 rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,b.jsx)(`div`,{className:`mt-0.5 ${i}`,children:e}),(0,b.jsxs)(`div`,{className:`min-w-0`,children:[(0,b.jsx)(`div`,{className:`text-2xl font-semibold tabular-nums text-foreground`,children:n}),(0,b.jsx)(`div`,{className:`mt-0.5 text-xs text-muted-foreground`,children:t}),r?(0,b.jsx)(`div`,{className:`mt-1 text-xs text-muted-foreground/70`,children:r}):null]})]})}function D(){let{t:e}=m(),[r,i]=(0,y.useState)(null),[D,O]=(0,y.useState)([]),[k,A]=(0,y.useState)([]),[j,M]=(0,y.useState)(null),[N,P]=(0,y.useState)(!0),[F,I]=(0,y.useState)(!1),L=(0,y.useRef)(null),R=(0,y.useCallback)(async()=>{try{let e=await fetch(`/api/analytics/summary`);if(e.ok){let t=await e.json();i(t)}}catch{}},[]),z=(0,y.useCallback)(async()=>{try{let e=await fetch(`/api/analytics?limit=50`);if(e.ok){let t=await e.json();O(t.events)}}catch{}},[]),B=(0,y.useCallback)(async()=>{try{let e=await fetch(`/api/sessions`);if(e.ok){let t=await e.json();A(t)}}catch{}},[]),V=(0,y.useCallback)(async()=>{if(F)return;I(!0);let e=null,r=null;try{let i=t(n.getState().wsUrl);L.current=i,r=i.on(`stats.get`,t=>{let n=t.payload;M(n),I(!1),r?.(),e!==null&&clearTimeout(e)}),i.getStats({echoToChat:!1}),e=setTimeout(()=>{r?.(),I(!1)},8e3)}catch{r?.(),e!==null&&clearTimeout(e),I(!1)}},[F]);(0,y.useEffect)(()=>{let e=()=>{Promise.all([R(),z(),B(),V()]).finally(()=>P(!1))};e();let t=setInterval(e,1e4);return()=>clearInterval(t)},[R,z,B,V]);let{totalAgents:H,activeAgents:U,totalToolCalls:W,totalIterations:G}=(0,y.useMemo)(()=>{let e=0,t=0,n=0,r=0;for(let i of k)for(let a of i.agents)e++,a.status===`running`&&t++,n+=a.toolCalls,r+=a.iterations;return{totalAgents:e,activeAgents:t,totalToolCalls:n,totalIterations:r}},[k]),K=(0,y.useMemo)(()=>r?Object.entries(r.categoryBreakdown).sort((e,t)=>t[1]-e[1]).slice(0,8):[],[r]),q=(0,y.useMemo)(()=>r?Object.entries(r.eventBreakdown).sort((e,t)=>t[1]-e[1]).slice(0,10):[],[r]),J=(0,y.useMemo)(()=>{if(!r)return 0;let e=0;for(let[t,n]of Object.entries(r.eventBreakdown))t.toLowerCase().includes(`error`)&&(e+=n);return e},[r]),Y=(0,y.useMemo)(()=>{if(!r)return 0;let e=0;for(let[t,n]of Object.entries(r.eventBreakdown))t.toLowerCase().includes(`warn`)&&(e+=n);return e},[r]),X=(0,y.useMemo)(()=>[...D].reverse(),[D]),Z=g(X,20);return N?(0,b.jsx)(`div`,{className:`flex h-full min-h-0 items-center justify-center bg-[hsl(var(--surface-2)/0.45)] p-4`,children:(0,b.jsxs)(`div`,{className:`ws-surface flex items-center gap-2 rounded-xl px-4 py-3 text-sm text-muted-foreground`,children:[(0,b.jsx)(c,{className:`h-4 w-4 animate-spin text-primary`}),e(`activity:analytics.loading`)]})}):(0,b.jsx)(`div`,{ref:v(`analytics`),className:`h-full min-h-0 min-w-0 overflow-y-auto overscroll-contain bg-[hsl(var(--surface-2)/0.45)] p-4 sm:p-6`,children:(0,b.jsxs)(`div`,{className:`mx-auto flex w-full max-w-7xl flex-col gap-5`,children:[(0,b.jsx)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:(0,b.jsxs)(`div`,{className:`flex flex-col gap-2 sm:flex-row sm:items-center sm:justify-between`,children:[(0,b.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,b.jsx)(s,{className:`h-4 w-4 text-primary`}),(0,b.jsx)(`h1`,{className:`truncate text-base font-semibold`,children:e(`activity:analytics.heading`)})]}),(0,b.jsx)(`span`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.autoRefresh`)})]})}),(0,b.jsxs)(`div`,{className:`min-w-0 space-y-5`,children:[(0,b.jsxs)(`div`,{className:`grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-3`,children:[(0,b.jsx)(E,{icon:(0,b.jsx)(f,{className:`h-4 w-4`}),label:e(`activity:analytics.liveSessions`),value:k.length,color:`text-primary`}),(0,b.jsx)(E,{icon:(0,b.jsx)(a,{className:`h-4 w-4`}),label:e(`activity:analytics.agents`),value:`${U}/${H}`,sub:U>0?e(`activity:analytics.agentsActive`,{count:U}):void 0,color:`text-success`}),(0,b.jsx)(E,{icon:(0,b.jsx)(h,{className:`h-4 w-4`}),label:e(`activity:analytics.totalEvents`),value:r?.totalEvents??0,sub:e(`activity:analytics.categoriesSub`,{count:r?.uniqueCategories??0}),color:`text-warning`}),(0,b.jsx)(E,{icon:(0,b.jsx)(p,{className:`h-4 w-4`}),label:e(`activity:analytics.toolCalls`),value:W,sub:e(`activity:analytics.iterationsSub`,{count:G}),color:`text-success`}),(0,b.jsx)(E,{icon:(0,b.jsx)(o,{className:`h-4 w-4`}),label:e(`activity:analytics.sessionCost`),value:j?C(j.cost):`—`,sub:j?e(`activity:analytics.tokensSub`,{input:S(j.usage.input),output:S(j.usage.output)}):void 0,color:`text-primary`}),(0,b.jsx)(E,{icon:(0,b.jsx)(l,{className:`h-4 w-4`}),label:e(`activity:analytics.sessionDuration`),value:j?x(j.elapsedMs):`—`,sub:j?e(`activity:analytics.messagesSub`,{count:j.messages}):void 0,color:`text-muted-foreground`})]}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4`,children:[(0,b.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,b.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,b.jsx)(u,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.eventsByCategory`)]}),K.length===0?(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noEvents`)}):(0,b.jsx)(`div`,{className:`space-y-1.5`,children:K.map(([e,t])=>{let n=K[0]?.[1]??1,r=Math.round(t/n*100);return(0,b.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,7rem)_minmax(0,1fr)_2.5rem] items-center gap-2 text-xs`,children:[(0,b.jsx)(`span`,{className:`min-w-0 truncate text-foreground`,children:e}),(0,b.jsx)(`div`,{className:`h-4 overflow-hidden rounded-full bg-muted`,children:(0,b.jsx)(`div`,{className:`h-full rounded-full bg-primary/70 transition-all`,style:{width:`${Math.max(r,4)}%`}})}),(0,b.jsx)(`span`,{className:`text-right tabular-nums text-muted-foreground`,children:t})]},e)})})]}),(0,b.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,b.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,b.jsx)(s,{className:`h-3.5 w-3.5 text-warning`}),e(`activity:analytics.topEvents`)]}),q.length===0?(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noEvents`)}):(0,b.jsx)(`div`,{className:`space-y-1.5`,children:q.map(([e,t])=>{let n=q[0]?.[1]??1,r=Math.round(t/n*100);return(0,b.jsxs)(`div`,{className:`grid grid-cols-[minmax(0,9rem)_minmax(0,1fr)_2.5rem] items-center gap-2 text-xs`,children:[(0,b.jsx)(`span`,{className:`min-w-0 truncate ${T(e)}`,children:e}),(0,b.jsx)(`div`,{className:`h-4 overflow-hidden rounded-full bg-muted`,children:(0,b.jsx)(`div`,{className:`h-full rounded-full bg-warning/70 transition-all`,style:{width:`${Math.max(r,4)}%`}})}),(0,b.jsx)(`span`,{className:`text-right tabular-nums text-muted-foreground`,children:t})]},e)})})]})]}),(0,b.jsxs)(`div`,{className:`grid grid-cols-1 lg:grid-cols-2 gap-4`,children:[(0,b.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,b.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,b.jsx)(o,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.activeSessionUsage`)]}),j?(0,b.jsxs)(`div`,{className:`grid grid-cols-2 gap-3 text-xs`,children:[(0,b.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.provider`)}),(0,b.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-foreground`,children:j.provider})]}),(0,b.jsxs)(`div`,{className:`min-w-0 rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.model`)}),(0,b.jsx)(`p`,{className:`mt-0.5 truncate font-mono text-foreground`,children:j.model})]}),(0,b.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.inputTokens`)}),(0,b.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:S(j.usage.input)})]}),(0,b.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.outputTokens`)}),(0,b.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:S(j.usage.output)})]}),(0,b.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.cacheRatio`)}),(0,b.jsxs)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:[(j.cache.hitRatio*100).toFixed(1),`%`]})]}),(0,b.jsxs)(`div`,{className:`rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.filesRead`)}),(0,b.jsx)(`p`,{className:`mt-0.5 tabular-nums text-foreground`,children:j.readFiles})]}),(j.cache.providers?.length??0)>0?(0,b.jsxs)(`div`,{className:`col-span-2 rounded-lg border border-border/70 bg-background/50 px-3 py-2`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:`Provider cache breakdown`}),(0,b.jsx)(`div`,{className:`mt-1.5 space-y-1`,children:j.cache.providers?.map(e=>(0,b.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-x-3 font-mono`,children:[(0,b.jsx)(`span`,{className:`text-foreground`,children:e.provider}),(0,b.jsxs)(`span`,{className:`tabular-nums text-success`,children:[(e.hitRatio*100).toFixed(1),`% hit`]}),(0,b.jsxs)(`span`,{className:`tabular-nums text-muted-foreground`,children:[S(e.cacheRead),` read ·`,` `,S(e.cacheWrite),` write`]})]},e.provider))})]}):null]}):(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noSession`)})]}),(0,b.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,b.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,b.jsx)(d,{className:`h-3.5 w-3.5 text-warning`}),e(`activity:analytics.healthErrors`)]}),(0,b.jsx)(`div`,{className:`space-y-2 text-xs`,children:r?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(`div`,{className:`flex justify-between`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.errorEvents`)}),(0,b.jsx)(`span`,{className:`tabular-nums text-destructive`,children:J})]}),(0,b.jsxs)(`div`,{className:`flex justify-between`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.warningEvents`)}),(0,b.jsx)(`span`,{className:`tabular-nums text-warning`,children:Y})]}),(0,b.jsxs)(`div`,{className:`flex justify-between`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.cacheHitRate`)}),(0,b.jsx)(`span`,{className:`tabular-nums text-success`,children:j?`${(j.cache.hitRatio*100).toFixed(1)}%`:`—`})]}),(0,b.jsxs)(`div`,{className:`flex justify-between`,children:[(0,b.jsx)(`span`,{className:`text-muted-foreground`,children:e(`activity:analytics.totalCategories`)}),(0,b.jsx)(`span`,{className:`tabular-nums text-foreground`,children:r.uniqueCategories})]})]}):(0,b.jsx)(`p`,{className:`text-muted-foreground`,children:e(`activity:analytics.waitingData`)})})]})]}),(0,b.jsxs)(`div`,{className:`rounded-xl border border-border/70 bg-card/75 p-4 shadow-sm`,children:[(0,b.jsxs)(`h3`,{className:`mb-3 flex items-center gap-2 text-xs font-semibold uppercase text-muted-foreground`,children:[(0,b.jsx)(f,{className:`h-3.5 w-3.5 text-primary`}),e(`activity:analytics.recentEvents`)]}),D.length===0?(0,b.jsx)(`p`,{className:`text-xs text-muted-foreground`,children:e(`activity:analytics.noRecentEvents`)}):(0,b.jsx)(`div`,{className:`max-h-64 space-y-1 overflow-y-auto`,children:Z.pageItems.map((e,t)=>(0,b.jsxs)(`div`,{className:`grid grid-cols-[4rem_minmax(0,7rem)_minmax(0,6rem)_minmax(0,1fr)] items-start gap-2 rounded px-2 py-1 text-xs hover:bg-muted/60`,children:[(0,b.jsx)(`span`,{className:`tabular-nums text-muted-foreground/70`,children:w(e.timestamp)}),(0,b.jsx)(`span`,{className:`min-w-0 truncate ${T(e.event)}`,children:e.event}),(0,b.jsx)(`span`,{className:`min-w-0 truncate text-muted-foreground`,children:e.category}),(0,b.jsx)(`span`,{className:`min-w-0 truncate text-foreground/80`,children:e.label??e.sessionId??``})]},`${e.timestamp}-${t}`))}),(0,b.jsx)(_,{page:Z.page,pageSize:Z.pageSize,totalItems:Z.totalItems,onPageChange:Z.setPage,compact:!0,itemLabel:`events`,className:`mt-3 rounded-lg border`})]})]})]})})}export{D as AnalyticsDashboard};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{K as t,nt as n,t as r}from"./config-store-BAUadwHd.js";import{i,t as a}from"./react-core-wiHys0m2.js";import{Mn as o,Mr as s,Ni as c,Nn as l,Pa as u,Vn as d,aa as f,hr as p,qn as m,qt as h,xo as g}from"./vendor-V3ydTHqN.js";import"./i18n-CbyUyl6G.js";import{t as _}from"./utils-CKsqCaP8.js";import"./stores-RkHrTaRO.js";import{C as v}from"./fonts-DRGbd-AM.js";import{F as y,L as b,m as x}from"./index-3TGBKeBP.js";import{i as S,r as C,s as w,t as T}from"./monaco-CbI7qrVD.js";import{t as E}from"./empty-state-5YP1rmE6.js";import{t as D}from"./monaco-theme-Dr3-rSid.js";var O=e(i(),1),k=a();S.config({monaco:T});var A={ts:`typescript`,tsx:`typescript`,js:`javascript`,jsx:`javascript`,mjs:`javascript`,json:`json`,css:`css`,scss:`scss`,html:`html`,md:`markdown`,py:`python`,go:`go`,rs:`rust`,java:`java`,c:`c`,cpp:`cpp`,cs:`csharp`,rb:`ruby`,php:`php`,sh:`shell`,bash:`shell`,yml:`yaml`,yaml:`yaml`,toml:`toml`,sql:`sql`};function j(e){return A[e.split(`.`).pop()?.toLowerCase()??``]??`plaintext`}function M({path:e,oldText:n,newText:i}){let{t:a}=g(),c=(0,O.useRef)(null),[l,d]=(0,O.useState)(!1),[f,p]=(0,O.useState)(!1),[m,h]=(0,O.useState)(null),{editor:_}=x();(0,O.useEffect)(()=>v(()=>w.remeasureFonts()),[]),(0,O.useEffect)(()=>{d(!1),p(!1),h(null)},[]);let y=(0,O.useCallback)(e=>{c.current=e,w.setTheme(D()),e.getModifiedEditor().onDidChangeModelContent(()=>d(!0))},[]),b=(0,O.useCallback)(()=>{let n=c.current?.getModifiedEditor().getValue();if(n==null)return;p(!0);let i=t(r.getState().wsUrl),a=i.on(`files.written`,t=>{t.type===`files.written`&&t.payload.filePath===e&&(a(),clearTimeout(o),p(!1),t.payload.success&&(d(!1),h(Date.now())))}),o=setTimeout(()=>{a(),p(!1)},5e3);i.send({type:`files.write`,payload:i.withSession({filePath:e,content:n})})},[e]),S=j(e);return(0,k.jsxs)(`div`,{className:`flex h-full min-h-0 min-w-0 flex-1 flex-col overflow-hidden`,children:[(0,k.jsxs)(`div`,{className:`flex min-w-0 items-center justify-between gap-2 px-2 py-1.5 border-b border-border/40`,children:[(0,k.jsx)(`span`,{className:`text-xs font-mono text-muted-foreground truncate`,children:e}),(0,k.jsxs)(`button`,{type:`button`,onClick:b,disabled:!l||f,className:`inline-flex items-center gap-1.5 h-7 px-2.5 rounded-md border border-border text-xs font-medium disabled:opacity-40 enabled:hover:bg-muted transition-colors`,title:a(`activity:monacoDiff.applyTitle`),children:[f?(0,k.jsx)(s,{className:`h-3.5 w-3.5 animate-spin`}):m&&!l?(0,k.jsx)(u,{className:`h-3.5 w-3.5 text-success`}):(0,k.jsx)(o,{className:`h-3.5 w-3.5`}),a(f?`activity:monacoDiff.applying`:m&&!l?`activity:monacoDiff.applied`:`activity:monacoDiff.apply`)]})]}),(0,k.jsx)(`div`,{className:`min-h-0 min-w-0 flex-1 overflow-hidden`,children:(0,k.jsx)(C,{original:n,modified:i,language:S,theme:D(),onMount:y,options:{renderSideBySide:!0,readOnly:!1,originalEditable:!1,minimap:{enabled:!1},fontSize:_.fontSize,fontFamily:_.fontFamily,lineHeight:_.lineHeight,fontLigatures:_.fontLigatures,scrollBeyondLastLine:!1,automaticLayout:!0}})})]})}var N=1e4;function P({className:e}){let{t:i}=g(),{stageGit:a,unstageGit:o,discardGit:u}=b(),v=n(e=>e.selectedPath),x=n(e=>e.files),S=n(e=>e.diff),C=n(e=>e.loadingDiff),w=x.find(e=>e.path===v),[T,D]=(0,O.useState)(`unified`),[A,j]=(0,O.useState)(!1),P=!!v&&(C||!S);(0,O.useEffect)(()=>{if(j(!1),!P)return;let e=setTimeout(()=>j(!0),N);return()=>clearTimeout(e)},[P,v]);let F=()=>{v&&(j(!1),n.getState().setDiffLoading(!0),t(r.getState().wsUrl).getGitDiff?.(v))};if(!v)return(0,k.jsx)(E,{icon:(0,k.jsx)(c,{className:`h-6 w-6`}),title:i(`activity:changesView.sourceChanges`),description:i(`activity:changes.selectPrompt`),className:e});let I=S&&!S.error&&!S.binary&&!S.tooLarge;return(0,k.jsx)(`div`,{className:_(`flex min-h-0 min-w-0 flex-1 flex-col overflow-hidden bg-[hsl(var(--surface-2)/0.45)] p-3`,e),children:(0,k.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden rounded-xl border border-border/70 bg-card/75 shadow-sm`,children:[(0,k.jsxs)(`div`,{className:`flex shrink-0 flex-wrap items-center justify-between gap-2 border-b border-border/70 px-3 py-2`,children:[(0,k.jsxs)(`div`,{className:`min-w-0 flex items-center gap-2`,children:[(0,k.jsxs)(`div`,{children:[(0,k.jsx)(`div`,{className:`text-[10px] font-semibold uppercase text-muted-foreground`,children:i(`activity:changesView.sourceControl`)}),(0,k.jsx)(`div`,{className:`truncate font-mono text-xs text-foreground`,title:v,children:v})]}),w?.staged&&(0,k.jsx)(`span`,{className:`rounded bg-primary/10 px-1.5 py-0.5 text-[10px] font-medium text-primary uppercase`,children:`Staged`})]}),(0,k.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,k.jsx)(`div`,{className:`flex items-center gap-1 border-r border-border/70 pr-2`,children:w?.staged?(0,k.jsxs)(`button`,{type:`button`,onClick:()=>o?.(v),title:`Unstage this file`,className:`inline-flex h-8 items-center gap-1 rounded-md border border-border px-2 text-xs text-muted-foreground hover:bg-muted hover:text-foreground transition-colors`,children:[(0,k.jsx)(p,{className:`h-3.5 w-3.5`}),` Unstage`]}):(0,k.jsxs)(k.Fragment,{children:[(0,k.jsxs)(`button`,{type:`button`,onClick:()=>a?.(v),title:`Stage this file`,className:`inline-flex h-8 items-center gap-1 rounded-md border border-border px-2 text-xs text-muted-foreground hover:bg-muted hover:text-foreground transition-colors`,children:[(0,k.jsx)(m,{className:`h-3.5 w-3.5`}),` Stage`]}),(0,k.jsxs)(`button`,{type:`button`,onClick:()=>{window.confirm(`Discard changes in ${v}? This cannot be undone.`)&&u?.(v)},title:`Discard changes in this file`,className:`inline-flex h-8 items-center gap-1 rounded-md border border-border px-2 text-xs text-muted-foreground hover:bg-destructive/10 hover:text-destructive transition-colors`,children:[(0,k.jsx)(h,{className:`h-3.5 w-3.5`}),` Discard`]})]})}),I&&(0,k.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,k.jsxs)(`button`,{type:`button`,onClick:()=>D(`unified`),title:i(`activity:changes.unifiedTitle`),className:_(`inline-flex h-8 items-center gap-1 rounded-md border px-2 text-xs transition-colors`,T===`unified`?`border-primary/40 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:bg-muted`),children:[(0,k.jsx)(l,{className:`h-3.5 w-3.5`}),` `,i(`activity:changes.unified`)]}),(0,k.jsxs)(`button`,{type:`button`,onClick:()=>D(`edit`),title:i(`activity:changes.editTitle`),className:_(`inline-flex h-8 items-center gap-1 rounded-md border px-2 text-xs transition-colors`,T===`edit`?`border-primary/40 bg-primary/10 text-primary`:`border-border text-muted-foreground hover:bg-muted`),children:[(0,k.jsx)(f,{className:`h-3.5 w-3.5`}),` `,i(`activity:changes.edit`)]})]})]})]}),(0,k.jsx)(`div`,{className:`flex min-h-0 flex-1 flex-col overflow-hidden`,children:C||!S?A?(0,k.jsxs)(`div`,{className:`flex min-h-0 flex-1 flex-col items-center justify-center gap-3 p-4 text-center`,children:[(0,k.jsx)(`p`,{className:`text-sm text-muted-foreground`,children:i(`activity:changes.diffTimeout`)}),(0,k.jsxs)(`button`,{type:`button`,onClick:F,className:`inline-flex h-8 items-center gap-1.5 rounded-md border border-border px-3 text-xs text-muted-foreground transition-colors hover:bg-muted hover:text-foreground`,children:[(0,k.jsx)(d,{className:`h-3.5 w-3.5`}),` `,i(`common:action.retry`)]})]}):(0,k.jsxs)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center gap-2 text-sm text-muted-foreground`,children:[(0,k.jsx)(s,{className:`h-4 w-4 animate-spin`}),` `,i(`activity:changes.loadingDiff`)]}):S.error?(0,k.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center text-sm text-destructive`,children:S.error}):S.binary?(0,k.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center text-sm text-muted-foreground`,children:i(`activity:changes.binary`)}):S.tooLarge?(0,k.jsx)(`div`,{className:`flex min-h-0 flex-1 items-center justify-center text-sm text-muted-foreground`,children:i(`activity:changes.tooLarge`)}):T===`edit`?(0,k.jsx)(M,{path:S.path,oldText:S.oldText??``,newText:S.newText??``},S.path):(0,k.jsx)(y,{oldText:S.oldText,newText:S.newText,caption:S.path,fill:!0})})]})})}export{P as ChangesView};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as e}from"./rolldown-runtime-hePW80VL.js";import{i as t,t as n}from"./react-core-wiHys0m2.js";import{$n as r,$r as i,Dn as a,Fi as o,Ga as s,Hi as c,Hn as l,Jn as u,Mr as d,Mt as f,Na as p,Wa as m,Wr as h,bi as g,ci as _,cr as ee,gi as v,go as te,ho as y,ja as b,n as ne,nn as x,so as re,sr as S,ur as C,xo as w,yn as ie}from"./vendor-V3ydTHqN.js";import"./i18n-CbyUyl6G.js";import{a as T,c as ae,d as E,f as oe,h as D,m as se,n as O,o as ce,p as le,r as ue,t as de,u as fe}from"./xyflow-BqDBClm9.js";import{t as k}from"./utils-CKsqCaP8.js";import{i as pe,r as me,t as he}from"./codemap-activity-store-Ha7XbGgq.js";import{S as ge}from"./fonts-DRGbd-AM.js";import{R as _e}from"./index-3TGBKeBP.js";var A=e(t(),1),j=n();function ve({historyFile:e,fileHistory:t,onClose:n}){let{t:r}=w();return(0,j.jsxs)(`div`,{className:`absolute right-0 top-0 z-50 flex h-full w-[390px] max-w-[90%] flex-col border-l bg-card shadow-2xl`,children:[(0,j.jsxs)(`div`,{className:`flex h-12 items-center justify-between border-b px-4`,children:[(0,j.jsxs)(`div`,{className:`flex min-w-0 items-center gap-2`,children:[(0,j.jsx)(y,{className:`h-4 w-4 shrink-0 text-warning`}),(0,j.jsx)(`span`,{className:`truncate font-mono text-[11px] font-semibold`,title:e,children:e})]}),(0,j.jsx)(`button`,{type:`button`,onClick:n,className:`flex h-7 w-7 items-center justify-center border text-muted-foreground hover:bg-muted`,"aria-label":r(`activity:codeMap.closeActivity`),children:(0,j.jsx)(f,{className:`h-3.5 w-3.5`})})]}),(0,j.jsx)(`div`,{className:`min-h-0 flex-1 overflow-y-auto p-3`,children:t.length===0?(0,j.jsx)(`p`,{className:`py-12 text-center text-[10px] text-muted-foreground`,children:r(`activity:codeMap.noActivityRecordedForThisFile`)}):t.map((e,t)=>(0,j.jsxs)(`div`,{className:`mb-1 flex items-start gap-2 border p-2 text-[10px]`,children:[(0,j.jsx)(`span`,{className:k(`border px-1.5 py-0.5 font-mono text-[8px] font-bold uppercase`,e.type===`delete`?`border-destructive/40 text-destructive`:e.type===`read`?`border-info/40 text-info`:`border-warning/40 text-warning`),children:e.type}),(0,j.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,j.jsx)(`div`,{className:`font-mono text-[9px] text-muted-foreground`,children:new Date(e.timestamp).toLocaleTimeString()}),e.toolName&&(0,j.jsxs)(`div`,{className:`mt-1`,children:[`via `,e.toolName]}),e.agent&&(0,j.jsx)(`div`,{className:`text-muted-foreground`,children:e.agent}),e.summary&&(0,j.jsx)(`div`,{className:`mt-1 text-muted-foreground`,children:e.summary}),e.change&&(0,j.jsxs)(`div`,{className:`mt-1 flex items-center gap-1 font-mono text-[8px]`,children:[(0,j.jsxs)(`span`,{className:`border border-success/40 bg-success/10 px-1 text-success`,children:[`+`,e.change.added]}),(0,j.jsxs)(`span`,{className:`border border-destructive/40 bg-destructive/10 px-1 text-destructive`,children:[`−`,e.change.removed]}),e.change.before&&(0,j.jsx)(`span`,{className:`ml-1 truncate text-destructive/80`,title:e.change.before,children:e.change.before}),e.change.after&&(0,j.jsxs)(`span`,{className:`truncate text-success/80`,title:e.change.after,children:[`→ `,e.change.after]})]}),(0,j.jsxs)(`div`,{className:`mt-1 flex gap-2 font-mono text-[8px] uppercase text-muted-foreground`,children:[(0,j.jsx)(`span`,{children:e.status??`observed`}),(0,j.jsx)(`span`,{children:e.source??`legacy`}),e.durationMs!==void 0&&(0,j.jsxs)(`span`,{children:[e.durationMs,`ms`]}),e.watcherConfirmed&&(0,j.jsx)(`span`,{className:`text-success`,children:r(`activity:codeMap.fsVerified`)})]})]})]},`${e.timestamp}-${t}`))}),(0,j.jsxs)(`div`,{className:`border-t px-4 py-2 font-mono text-[9px] text-muted-foreground`,children:[t.length,` events · newest first`]})]})}var ye=4096,M=new Map;function N(e){let t=M.get(e);if(t!==void 0)return t;let n=e.replace(/\\/g,`/`).replace(/^\.\//,``).toLocaleLowerCase();for(;M.size>=ye;){let e=M.keys().next().value;if(e===void 0)break;M.delete(e)}return M.set(e,n),n}function P(e){return e.level===`packages`?`packages`:e.level===`files`?`files:${e.package}`:`symbols:${e.file}`}function be(e){return e.level===`packages`?`/api/codemap/packages`:e.level===`files`?`/api/codemap/files?package=${encodeURIComponent(e.package)}`:`/api/codemap/symbols?file=${encodeURIComponent(e.file)}`}function xe(e,t,n){let r=new Map(e.nodes.map(e=>[e.id,e])),i=[];for(let a of e.edges){let e=n===`incoming`?a.target===t?a.source:void 0:a.source===t?a.target:void 0;if(!e)continue;let o=r.get(e);o&&i.push({node:o,edge:a})}return i.sort((e,t)=>t.edge.weight-e.edge.weight||e.node.label.localeCompare(t.node.label))}function Se(e,t){let n=new Set([t]);for(let r of e.edges)r.source===t&&n.add(r.target),r.target===t&&n.add(r.source);return n}function F(e,t){let n=new Map(e.nodes.map(e=>[e.id,0]));for(let r of e.edges)t.has(r.source)&&t.has(r.target)&&(n.set(r.source,(n.get(r.source)??0)+r.weight),r.target!==r.source&&n.set(r.target,(n.get(r.target)??0)+r.weight));return n}function Ce(e){let t=new Set(e.nodes.map(e=>e.id)),n=F(e,t),r=new Map(e.nodes.map(e=>[e.id,0])),i=new Map;for(let n of e.edges){if(!t.has(n.source)||!t.has(n.target)||n.source===n.target)continue;r.set(n.target,(r.get(n.target)??0)+1);let e=i.get(n.source)??[];e.push(n.target),i.set(n.source,e)}let a=new Map,o=e.nodes.filter(e=>(r.get(e.id)??0)===0).sort((e,t)=>(n.get(t.id)??0)-(n.get(e.id)??0)).map(e=>e.id);o.length===0&&e.nodes[0]&&o.push(e.nodes[0].id);for(let e of o)a.set(e,0);let s=new Set,c=0;for(;c<o.length;){let e=o[c++];if(!s.has(e)){s.add(e);for(let t of i.get(e)??[])a.set(t,Math.max(a.get(t)??0,Math.min((a.get(e)??0)+1,7))),r.set(t,(r.get(t)??1)-1),(r.get(t)??0)<=0&&o.push(t)}}let l=e.nodes.filter(e=>!a.has(e.id)).sort((e,t)=>(n.get(t.id)??0)-(n.get(e.id)??0));l.forEach((e,t)=>{a.set(e.id,t%Math.min(4,Math.max(1,l.length)))});let u=new Map;for(let t of e.nodes){let e=a.get(t.id)??0,n=u.get(e)??[];n.push(t),u.set(e,n)}for(let e of u.values())e.sort((e,t)=>Number(e.external)-Number(t.external)||(n.get(t.id)??0)-(n.get(e.id)??0)||e.label.localeCompare(t.label));let d=Math.max(1,...[...u.values()].map(e=>e.length))*160,f=[];for(let[e,t]of[...u.entries()].sort(([e],[t])=>e-t)){let n=(d-t.length*160)/2;t.forEach((t,r)=>{f.push({node:t,position:{x:e*386,y:n+r*160}})})}return f}function I(e,t){if(e.nodes.length===0)return[];let n=F(e,new Set(e.nodes.map(e=>e.id))),r=e.nodes.find(e=>e.id===t)??[...e.nodes].sort((e,t)=>(n.get(t.id)??0)-(n.get(e.id)??0))[0],i=Se(e,r.id);i.delete(r.id);let a=e.nodes.filter(e=>i.has(e.id)),o=e.nodes.filter(e=>e.id!==r.id&&!i.has(e.id)),s=[{node:r,position:{x:0,y:0}}],c=(e,t,n)=>{e.forEach((r,i)=>{let a=n+Math.PI*2*i/Math.max(1,e.length);s.push({node:r,position:{x:Math.cos(a)*t,y:Math.sin(a)*t}})})};c(a,Math.max(330,a.length*34),-Math.PI/2);for(let e=0;e<o.length;e+=18)c(o.slice(e,e+18),620+Math.floor(e/18)*280,-Math.PI/2+.12);return s}function we(e,t,n){return t===`orbit`?I(e,n):t===`subsystems`?Oe(e):Ce(e)}function Te(e){return e.subsystem??e.package??`(ungrouped)`}var Ee=6,De=96;function Oe(e){if(e.nodes.length===0)return[];let t=F(e,new Set(e.nodes.map(e=>e.id))),n=e=>e.rank??(t.get(e.id)??0)/1e3,r=new Map;for(let t of e.nodes){let e=Te(t),n=r.get(e);n===void 0?r.set(e,[t]):n.push(t)}let i=[...r.entries()].map(([e,t])=>({name:e,nodes:[...t].sort((e,t)=>n(t)-n(e)||e.label.localeCompare(t.label)),weight:t.reduce((e,t)=>e+n(t),0)})).sort((e,t)=>e.name===`(ungrouped)`?1:t.name===`(ungrouped)`?-1:t.weight-e.weight||e.name.localeCompare(t.name)),a=[],o=0;for(let e of i){e.nodes.forEach((e,t)=>{a.push({node:e,position:{x:t%Ee*311,y:o+Math.floor(t/Ee)*160}})});let t=Math.ceil(e.nodes.length/Ee);o+=t*160+De}return a}function ke(e,t,n){if(e.length<=n)return e;let r=t?e.filter(e=>e.source===t||e.target===t):[],i=e.filter(e=>!t||e.source!==t&&e.target!==t).sort((e,t)=>t.weight-e.weight||e.source.localeCompare(t.source)||e.target.localeCompare(t.target)),a=Math.max(0,n-r.length);return[...r,...i.slice(0,a)]}function Ae(e,t,n){if(n===`all`)return e;let r=e.nodes;if(e.nodes.length>96){let n=new Map(e.nodes.map(e=>[e.id,e])),i=new Map;for(let t of e.edges)i.set(t.source,(i.get(t.source)??0)+t.weight),i.set(t.target,(i.get(t.target)??0)+t.weight);let a=e.nodes.some(e=>e.rank!==void 0),o=e=>a?e.rank??0:i.get(e.id)??0,s=[...e.nodes].sort((e,t)=>o(t)-o(e)||e.label.localeCompare(t.label)),c=new Set,l=e=>{n.has(e)&&c.size<96&&c.add(e)};if(t&&n.has(t)){l(t);let n=e.edges.filter(e=>e.source===t||e.target===t).sort((e,t)=>t.weight-e.weight);for(let e of n)l(e.source),l(e.target);let r=new Set(c),i=e.edges.filter(e=>r.has(e.source)||r.has(e.target)).sort((e,t)=>t.weight-e.weight);for(let e of i)l(e.source),l(e.target)}else{let e=s.filter(e=>!e.external).slice(0,72),t=s.filter(e=>e.external).slice(0,24);for(let n of[...e,...t])l(n.id)}for(let e of s)l(e.id);r=e.nodes.filter(e=>c.has(e.id))}let i=new Set(r.map(e=>e.id)),a=e.edges.filter(e=>i.has(e.source)&&i.has(e.target));return{nodes:r,edges:ke(a,t,180)}}var L=[`/src/main/java/`,`/src/main/kotlin/`,`/src/`,`/lib/`,`/internal/`,`/cmd/`,`/pkg/`,`/app/`];function R(e){let t=(e.file??e.label).replace(/\\/g,`/`),n=e.package??``,r=n.startsWith(`@wrongstack/`)?`/packages/${n.slice(12)}/`:n.startsWith(`app:`)?`/apps/${n.slice(4)}/`:void 0;if(!r)return;let i=t.indexOf(r);return i>=0?t.slice(i+r.length):void 0}function z(e){let t=(e.file??e.label).replace(/\\/g,`/`),n=R(e);if(n!==void 0)return n;let r=-1,i=0;for(let e of L){let n=t.lastIndexOf(e);n>r&&(r=n,i=n+e.length)}return r>=0?t.slice(i):t.split(`/`).slice(-3).join(`/`)}function je(e){if(e.length===0)return``;let t=e.map(e=>e.split(`/`)),n=t[0]??[],r=0;for(;r<n.length-1;){let e=n[r];if(!t.every(t=>t.length-1>r&&t[r]===e))break;r++}return r===0?``:`${n.slice(0,r).join(`/`)}/`}var Me=new WeakMap;function Ne(e){let t=Me.get(e);if(t)return t;let n={name:``,path:``,directories:[],files:[]},r=e.filter(e=>e.kind===`file`&&!e.external),i=r.map(R),a=i.every(e=>e!==void 0),o=a?``:je(r.map(e=>(e.file??e.label).replace(/\\/g,`/`)));for(let[e,t]of r.entries()){let r=(t.file??t.label).replace(/\\/g,`/`),s=i[e],c=(a?s??z(t):o&&r.startsWith(o)?r.slice(o.length):z(t)).split(`/`).filter(Boolean),l=c.pop()??t.label,u=n;for(let e of c){let t=u.path?`${u.path}/${e}`:e,n=u.directories.find(t=>t.name===e);n||(n={name:e,path:t,directories:[],files:[]},u.directories.push(n)),u=n}u.files.push({...t,label:l})}let s=e=>{e.directories.sort((e,t)=>e.name.localeCompare(t.name)),e.files.sort((e,t)=>e.label.localeCompare(t.label)),e.directories.forEach(s)};return s(n),Me.set(e,n),n}function Pe(e){let t=2166136261,n=e=>{for(let n=0;n<e.length;n++)t^=e.charCodeAt(n),t=Math.imul(t,16777619)};for(let t of e.nodes)n(t.id);for(let r of e.edges)n(r.source),n(r.target),n(r.refType),t^=r.weight|0,t=Math.imul(t,16777619);return`${e.nodes.length}:${e.edges.length}:${t>>>0}`}function Fe(e,t,n,r){for(e.has(t)&&e.delete(t),e.set(t,n);e.size>r;){let t=e.keys().next().value;if(t===void 0)break;e.delete(t)}}function Ie(e,t){if(!e||!t)return!1;let n=N(e),r=N(t);return n===r||n.endsWith(`/${r}`)||r.endsWith(`/${n}`)}function Le(e){let t=N(e),n=t.match(/\/packages\/([^/]+)\//);if(n?.[1])return`@wrongstack/${n[1]}`;let r=t.match(/\/apps\/([^/]+)\//);return r?.[1]?`app:${r[1]}`:`(root)`}function Re(e,t){return t.kind===`package`?Le(e.filePath)===(t.package??t.label):Ie(e.filePath,t.file)?t.kind!==`symbol`||e.symbol?.id===t.id:!1}function B(e){let t=new Map;for(let n of e){let e=N(n.filePath),r=t.get(e);r?r.push(n):t.set(e,[n])}return t}function ze(e,t){let n=new Map;if(t.length===0||e.length===0)return n;let r=B(t),i=new Map;for(let a of e){let e;if(a.kind===`package`){let n=a.package??a.label,r=i.get(n);r||(r=t.filter(e=>Le(e.filePath)===n),i.set(n,r)),e=r}else if(a.file){let t=N(a.file),n=r.get(t);if(!n){n=[];for(let[e,i]of r)(e.endsWith(`/${t}`)||t.endsWith(`/${e}`))&&n.push(...i)}e=a.kind===`symbol`?n.filter(e=>e.symbol?.id===a.id):n}else e=[];e.length>0&&n.set(a.id,e)}return n}function Be(e){if(e.length===0)return``;let t=`${e.length}`;for(let n=0;n<e.length;n++){let r=e[n];t+=`|${r.id??``}:${r.toolUseId??``}:${r.filePath}:${r.type}:${r.status??``}:${r.symbol?.id??``}:${r.timestamp}`}return t}function Ve(e,t){let n=t.filter(t=>t.kind===`symbol`&&!t.external&&Ie(t.file,e.filePath));if(n.length===0)return;if(e.line)return[...n].sort((e,t)=>(t.line??0)-(e.line??0)).find(t=>(t.line??0)<=e.line)??n[0];let r=e.summary.toLocaleLowerCase();return n.find(e=>e.label.length>2&&(r.includes(e.label.toLocaleLowerCase())||!!(e.signature&&r.includes(e.signature.toLocaleLowerCase()))))}var V={package:{icon:S,accent:`border-l-primary`,iconStyle:`bg-primary/12 text-primary`},file:{icon:o,accent:`border-l-info`,iconStyle:`bg-info/12 text-info`},symbol:{icon:s,accent:`border-l-success`,iconStyle:`bg-success/12 text-success`}},He=.25;function Ue(e){return e===void 0?`border-l-[3px]`:e>=.6?`border-l-[7px]`:e>=He?`border-l-[5px]`:`border-l-[3px]`}var We={call:`hsl(var(--primary))`,import:`hsl(var(--info))`,type_ref:`hsl(var(--success))`,inherit:`hsl(var(--warning))`,implement:`hsl(var(--destructive))`},Ge={read:`ring-2 ring-info/60 shadow-info/20`,write:`ring-2 ring-warning/70 shadow-warning/30`,edit:`ring-2 ring-warning/80 shadow-warning/40`,delete:`ring-2 ring-destructive/70 shadow-destructive/30`,search:`ring-2 ring-primary/55 shadow-primary/20`,memory:`ring-2 ring-success/60 shadow-success/30`,index:`ring-2 ring-info/50 shadow-info/20`,execute:`ring-2 ring-primary/55 shadow-primary/25`},Ke=[`bg-primary text-primary-foreground`,`bg-info text-info-foreground`,`bg-success text-success-foreground`,`bg-warning text-warning-foreground`,`bg-destructive text-destructive-foreground`];function qe(e){let t=e.trim().split(/[\s:_-]+/).filter(Boolean);return(t.length>1?`${t[0]?.[0]??``}${t[1]?.[0]??``}`:e.slice(0,2)).toLocaleUpperCase()}function H(e){let t=0;for(let n of e)t=t*31+n.charCodeAt(0)|0;return Ke[Math.abs(t)%Ke.length]??Ke[0]}function Je(e){let t=0;for(let n of e)t=t*31+n.charCodeAt(0)|0;return`hsl(${Math.abs(t)%360} 82% 58%)`}var Ye=[`/packages/`,`/apps/`,`/crates/`,`/cmd/`,`/internal/`,`/pkg/`,`/src/`];function Xe(e){let t=e.replace(/\\/g,`/`),n=Ye.reduce((e,n)=>Math.max(e,t.lastIndexOf(n)),-1);return n>=0?t.slice(n+1):t.split(`/`).slice(-3).join(`/`)}function U(e){return[e.symbol?.name,e.line?`L${e.line}`:void 0].filter(Boolean).join(` · `)}function Ze({data:e}){let{t}=w(),{graphNode:n,selected:r,dimmed:i,incoming:a,outgoing:o,isActive:s,activityType:u,activeOperations:d}=e,f=V[n.kind],p=f.icon,m=n.kind!==`symbol`,h=n.kind===`symbol`?`${n.symbolKind??`symbol`}${n.line?` · L${n.line}`:``}`:n.kind===`file`?z(n):`${n.fileCount??0} files · ${n.symbolCount??0} symbols`;return(0,j.jsxs)(`div`,{className:k(`group relative w-[236px] border bg-card text-card-foreground shadow-[0_8px_24px_hsl(var(--shadow-color)/0.08)] transition-[opacity,box-shadow,border-color,background-color]`,f.accent,Ue(n.rank),r&&`border-primary bg-primary/5 shadow-[0_0_0_2px_hsl(var(--primary)/0.18),0_16px_36px_hsl(var(--shadow-color)/0.18)]`,n.external&&`border-dashed bg-muted/75`,i&&`opacity-25 grayscale`,s&&u&&Ge[u]),children:[d.length>0&&(0,j.jsxs)(`div`,{className:`absolute -top-5 left-2 z-20 flex max-w-[210px] items-center gap-1`,children:[d.slice(0,4).map(e=>{let t=e.agentName??e.agent??`External`,n=`${e.sessionId??`none`}:${e.agentId??t}`;return(0,j.jsxs)(`span`,{className:k(`flex h-6 items-center gap-1 border-2 border-background px-1.5 font-mono text-[8px] font-bold shadow-md`,H(n)),title:`${t} · ${e.type} ${U(e)}`,children:[(0,j.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse bg-current`}),qe(t),e.symbol&&(0,j.jsx)(`span`,{className:`max-w-[80px] truncate`,children:e.symbol.name})]},e.id??`${n}:${e.filePath}`)}),d.length>4&&(0,j.jsxs)(`span`,{className:`border bg-card px-1 font-mono text-[8px] shadow`,children:[`+`,d.length-4]})]}),(0,j.jsx)(T,{type:`target`,position:D.Left,className:`!h-2.5 !w-2.5 !border-2 !border-card !bg-muted-foreground`}),(0,j.jsxs)(`button`,{type:`button`,className:`block w-full text-left`,onClick:t=>{if(t.shiftKey&&n.file){e.onShowHistory(n.file);return}e.onSelect(n)},onDoubleClick:()=>m&&e.onOpen(n),"aria-label":`${n.kind} ${n.label}`,children:[(0,j.jsxs)(`div`,{className:`flex items-start gap-3 p-3 pr-10`,children:[(0,j.jsx)(`span`,{className:k(`flex h-8 w-8 shrink-0 items-center justify-center border`,f.iconStyle),children:(0,j.jsx)(p,{className:`h-4 w-4`})}),(0,j.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,j.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5 text-[9px] font-bold uppercase tracking-[0.18em] text-muted-foreground`,children:[(0,j.jsx)(`span`,{children:n.kind}),n.external&&(0,j.jsx)(`span`,{className:`border border-border px-1 py-0.5 text-[8px] text-warning`,children:`external`}),n.rank!==void 0&&n.rank>=.6&&(0,j.jsx)(`span`,{className:`border border-primary/40 bg-primary/10 px-1 py-0.5 text-[8px] text-primary`,children:t(`activity:codeMap.hub`)}),n.lang&&(0,j.jsx)(`span`,{className:`ml-auto font-mono normal-case tracking-normal`,children:n.lang})]}),(0,j.jsx)(`div`,{className:`truncate font-mono text-[13px] font-semibold`,title:n.label,children:n.label}),(0,j.jsx)(`div`,{className:`mt-1 truncate text-[10px] text-muted-foreground`,title:h,children:h}),n.concept&&(0,j.jsx)(`div`,{className:`mt-1 line-clamp-2 text-[9px] leading-snug text-muted-foreground/80`,title:n.concept,children:n.concept})]})]}),n.rank!==void 0&&(0,j.jsx)(`div`,{className:`h-[3px] w-full bg-muted`,title:t(`activity:codeMap.centrality`,{value:Math.round(n.rank*100)}),children:(0,j.jsx)(`div`,{className:`h-full bg-primary/70`,style:{width:`${Math.max(2,Math.round(n.rank*100))}%`}})}),(0,j.jsxs)(`div`,{className:`flex items-center gap-3 border-t bg-muted/30 px-3 py-1.5 font-mono text-[9px] text-muted-foreground`,children:[(0,j.jsxs)(`span`,{title:t(`activity:codeMapVisuals.incomingRelationships`),children:[`← `,a]}),(0,j.jsxs)(`span`,{title:t(`activity:codeMapVisuals.outgoingRelationships`),children:[`→ `,o]}),n.symbolCount!==void 0&&n.kind===`file`&&(0,j.jsxs)(`span`,{className:`ml-auto`,children:[n.symbolCount,` sym`]}),s&&(0,j.jsxs)(`span`,{className:`ml-auto flex items-center gap-1 font-bold text-warning`,children:[(0,j.jsx)(l,{className:`h-2.5 w-2.5 animate-pulse`}),` LIVE`]})]})]}),m&&(0,j.jsx)(`button`,{type:`button`,className:`absolute right-2 top-2 z-10 flex h-7 w-7 items-center justify-center border border-transparent text-muted-foreground opacity-0 transition hover:border-border hover:bg-muted hover:text-foreground group-hover:opacity-100 focus:opacity-100`,onClick:()=>e.onOpen(n),title:n.kind===`package`?`Open file map`:`Open symbol map`,"aria-label":`Open ${n.label} map`,children:(0,j.jsx)(c,{className:`h-3.5 w-3.5`})}),(0,j.jsx)(T,{type:`source`,position:D.Right,className:`!h-2.5 !w-2.5 !border-2 !border-card !bg-muted-foreground`})]})}function W(e,t){return e.length===t.length&&e.every((e,n)=>e===t[n])}function Qe(e,t){return e.graphNode===t.graphNode&&e.selected===t.selected&&e.dimmed===t.dimmed&&e.incoming===t.incoming&&e.outgoing===t.outgoing&&e.isActive===t.isActive&&e.activityType===t.activityType&&e.onSelect===t.onSelect&&e.onOpen===t.onOpen&&e.onShowHistory===t.onShowHistory&&W(e.activeOperations,t.activeOperations)}var G={codemap:(0,A.memo)(Ze,(e,t)=>Qe(e.data,t.data))},$e={nodes:[],edges:[]};function et(e){return/Authentication required|Unauthorized/i.test(e)}function tt({loading:e,error:t,graph:n,canvasNodeCount:r,flowNodes:i,flowEdges:a,onNodesChange:o,onEdgesChange:s,agentTrailCount:c}){let{t:l}=w();return(0,j.jsxs)(j.Fragment,{children:[e&&(0,j.jsxs)(`div`,{className:`absolute inset-0 z-20 flex flex-col items-center justify-center gap-3 bg-background/75 backdrop-blur-sm`,children:[(0,j.jsx)(d,{className:`h-7 w-7 animate-spin text-primary`}),(0,j.jsx)(`span`,{className:`font-mono text-[10px] uppercase tracking-widest text-muted-foreground`,children:l(`activity:codeMap.mappingRelationships`)})]}),t&&!e&&(0,j.jsxs)(`div`,{className:`absolute inset-0 z-20 flex flex-col items-center justify-center gap-3 p-8 text-center`,children:[(0,j.jsx)(C,{className:`h-10 w-10 text-destructive`}),(0,j.jsx)(`p`,{className:`font-mono text-sm text-destructive`,children:t}),!et(t)&&(0,j.jsxs)(`p`,{className:`max-w-md text-xs text-muted-foreground`,children:[`The map needs a codebase index. Run`,` `,(0,j.jsx)(`code`,{className:`border bg-muted px-1.5 py-0.5`,children:`codebase-index`}),` `,l(`activity:codeMap.onceThenReopenThisView`)]})]}),!e&&!t&&n.nodes.length===0&&(0,j.jsxs)(`div`,{className:`absolute inset-0 flex flex-col items-center justify-center gap-2 text-muted-foreground`,children:[(0,j.jsx)(C,{className:`h-8 w-8 opacity-40`}),(0,j.jsx)(`p`,{className:`text-xs`,children:l(`activity:codeMap.noIndexedNodesAtThisLevel`)})]}),!e&&!t&&n.nodes.length>1&&n.edges.length===0&&(0,j.jsxs)(`div`,{className:`pointer-events-none absolute left-1/2 top-14 z-10 -translate-x-1/2 border border-warning/40 bg-warning/10 px-3 py-2 text-center shadow backdrop-blur`,children:[(0,j.jsx)(`div`,{className:`font-mono text-[9px] font-bold uppercase tracking-wider text-warning`,children:l(`activity:codeMap.noResolvedRelationsInThisScope`)}),(0,j.jsx)(`div`,{className:`mt-0.5 text-[8px] text-muted-foreground`,children:l(`activity:codeMap.theUpgradedIndexWillRebuildAnd`)})]}),!t&&n.nodes.length>0&&(0,j.jsxs)(fe,{nodes:i,edges:a,onNodesChange:o,onEdgesChange:s,nodeTypes:G,nodesConnectable:!1,nodesDraggable:!1,edgesFocusable:!1,elementsSelectable:!1,onlyRenderVisibleElements:!0,minZoom:.08,maxZoom:2.2,proOptions:{hideAttribution:!0},children:[(0,j.jsx)(de,{variant:O.Dots,gap:r>60?32:22,size:1,color:`hsl(var(--muted-foreground))`,className:`!opacity-25`}),(0,j.jsx)(ue,{position:`bottom-left`,showInteractive:!1,className:`!border !border-border !bg-card !shadow-md [&>button]:!border-border [&>button]:!bg-card [&>button]:!fill-foreground`}),r<=48&&(0,j.jsx)(ce,{position:`bottom-right`,pannable:!0,zoomable:!0,className:`!h-[112px] !w-[180px] !border !border-border !bg-card !shadow-md`,maskColor:`hsl(var(--background) / 0.72)`,nodeColor:e=>{let t=e.data?.graphNode.kind;return t===`package`?`hsl(var(--primary))`:t===`file`?`hsl(var(--info))`:`hsl(var(--success))`}})]}),(0,j.jsxs)(`div`,{className:`pointer-events-none absolute bottom-3 left-1/2 z-10 flex -translate-x-1/2 items-center gap-3 border bg-card/90 px-3 py-1.5 font-mono text-[8px] text-muted-foreground shadow backdrop-blur`,children:[Object.entries(We).map(([e,t])=>(0,j.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,j.jsx)(`span`,{className:`h-0.5 w-3`,style:{backgroundColor:t}}),e.replace(`_`,` `)]},e)),(0,j.jsxs)(`span`,{className:`flex items-center gap-1 text-primary`,"data-testid":`agent-trail-count`,children:[(0,j.jsx)(`span`,{className:`w-4 border-t-2 border-dashed border-primary`}),`agent trail`,c>0?` ×${c}`:``]})]})]})}function nt({layout:e,canvasMode:t,edgeFilter:n,canvasNodeCount:r,graphNodeCount:i,onLayoutChange:a,onCanvasModeChange:o,onEdgeFilterChange:s}){let{t:c}=w();return(0,j.jsxs)(`div`,{className:`pointer-events-none absolute left-3 right-3 top-3 z-10 flex items-center gap-2`,children:[(0,j.jsxs)(`div`,{className:`pointer-events-auto flex border bg-card/95 shadow-md backdrop-blur`,children:[(0,j.jsxs)(`button`,{type:`button`,className:k(`flex h-8 items-center gap-1.5 border-r px-2.5 text-[9px] font-semibold uppercase tracking-wider`,e===`layers`?`bg-primary text-primary-foreground`:`text-muted-foreground hover:bg-muted`),onClick:()=>a(`layers`),children:[(0,j.jsx)(h,{className:`h-3 w-3`}),` `,c(`activity:codeMap.layers`)]}),(0,j.jsxs)(`button`,{type:`button`,className:k(`flex h-8 items-center gap-1.5 border-r px-2.5 text-[9px] font-semibold uppercase tracking-wider`,e===`orbit`?`bg-primary text-primary-foreground`:`text-muted-foreground hover:bg-muted`),onClick:()=>a(`orbit`),children:[(0,j.jsx)(ee,{className:`h-3 w-3`}),` `,c(`activity:codeMap.relations`)]}),(0,j.jsxs)(`button`,{type:`button`,className:k(`flex h-8 items-center gap-1.5 px-2.5 text-[9px] font-semibold uppercase tracking-wider`,e===`subsystems`?`bg-primary text-primary-foreground`:`text-muted-foreground hover:bg-muted`),onClick:()=>a(`subsystems`),title:c(`activity:codeMap.groupNodesByTheSubsystemTheyBelongTo`),children:[(0,j.jsx)(m,{className:`h-3 w-3`}),` `,c(`activity:codeMap.subsystems`)]})]}),(0,j.jsxs)(`div`,{className:`pointer-events-auto flex border bg-card/95 shadow-md backdrop-blur`,children:[(0,j.jsxs)(`button`,{type:`button`,className:k(`h-8 border-r px-2.5 font-mono text-[9px] font-bold`,t===`smart`?`bg-success text-success-foreground`:`text-muted-foreground hover:bg-muted`),onClick:()=>o(`smart`),title:c(`activity:codeMap.keepTheFullTreeShowTheStrongestRelationsAndSelectedNeighbourhood`),children:[`SMART `,r,`/`,i]}),(0,j.jsx)(`button`,{type:`button`,className:k(`h-8 px-2.5 font-mono text-[9px] font-bold`,t===`all`?`bg-foreground text-background`:`text-muted-foreground hover:bg-muted`),onClick:()=>o(`all`),title:c(`activity:codeMap.renderEveryNodeAndRelationInThisScope`),children:c(`activity:codeMap.all`)})]}),(0,j.jsx)(`div`,{className:`pointer-events-auto ml-auto flex max-w-[60%] overflow-x-auto border bg-card/95 shadow-md backdrop-blur`,children:[`all`,`import`,`call`,`type_ref`,`inherit`,`implement`].map(e=>(0,j.jsx)(`button`,{type:`button`,className:k(`h-8 whitespace-nowrap border-r px-2.5 font-mono text-[9px] last:border-r-0`,n===e?`bg-foreground text-background`:`text-muted-foreground hover:bg-muted`),onClick:()=>s(e),children:e===`all`?`ALL LINKS`:e.replace(`_`,` `).toUpperCase()},e))})]})}function rt(e,t){let n=new Map(e.map(e=>[e.id,e])),r=e.length!==t.length,i=t.map((t,i)=>{let a=n.get(t.id);return a?a.type===t.type&&a.position.x===t.position.x&&a.position.y===t.position.y&&Qe(a.data,t.data)?(e[i]!==a&&(r=!0),a):(r=!0,{...a,...t,measured:a.measured}):(r=!0,t)});return r?i:e}function K(e){return e.data?.renderKey}function it(e,t){let n=new Map(e.map(e=>[e.id,e])),r=e.length!==t.length,i=t.map((t,i)=>{let a=n.get(t.id);return a&&K(a)===K(t)?(e[i]!==a&&(r=!0),a):(r=!0,t)});return r?i:e}function at({scope:e,graph:t,agentPresences:n,edgeWeight:r,connectedNodeCount:a,navigate:o}){let{t:s}=w();return(0,j.jsxs)(`header`,{className:`flex h-[62px] shrink-0 items-center gap-4 border-b bg-card px-4`,children:[(0,j.jsxs)(`div`,{className:`flex min-w-[220px] items-center gap-3`,children:[(0,j.jsx)(`span`,{className:`flex h-9 w-9 items-center justify-center border border-primary bg-primary/10 text-primary`,children:(0,j.jsx)(C,{className:`h-4 w-4`})}),(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h1`,{className:`font-display text-sm font-semibold tracking-tight`,children:s(`activity:codeMap.codeAtlas`)}),(0,j.jsx)(`p`,{className:`text-[9px] uppercase tracking-[0.18em] text-muted-foreground`,children:s(`activity:codeMap.architectureIntelligence`)})]})]}),(0,j.jsxs)(`nav`,{className:`flex min-w-0 flex-1 items-center gap-1 font-mono text-[10px]`,"aria-label":s(`activity:codeMap.codeMapBreadcrumb`),children:[e.level!==`packages`&&(0,j.jsx)(`button`,{type:`button`,className:`mr-1 flex h-7 w-7 items-center justify-center border text-muted-foreground hover:bg-muted`,onClick:()=>{e.level===`symbols`?o({level:`files`,package:e.package??`(root)`}):o({level:`packages`})},"aria-label":s(`activity:codeMap.back`),children:(0,j.jsx)(re,{className:`h-3.5 w-3.5`})}),(0,j.jsxs)(`button`,{type:`button`,className:`flex items-center gap-1.5 px-1.5 py-1 text-muted-foreground hover:text-foreground`,onClick:()=>o({level:`packages`}),children:[(0,j.jsx)(i,{className:`h-3 w-3`}),` workspace`]}),e.level!==`packages`&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(b,{className:`h-3 w-3 text-muted-foreground`}),(0,j.jsx)(`button`,{type:`button`,className:`max-w-[220px] truncate px-1.5 py-1 hover:text-primary`,onClick:()=>o({level:`files`,package:e.package??`(root)`}),children:e.package??`(root)`})]}),e.level===`symbols`&&(0,j.jsxs)(j.Fragment,{children:[(0,j.jsx)(b,{className:`h-3 w-3 text-muted-foreground`}),(0,j.jsx)(`span`,{className:`truncate px-1.5 py-1 text-primary`,children:z({id:``,label:e.file,kind:`file`,file:e.file,package:e.package})})]})]}),(0,j.jsxs)(`div`,{className:`hidden items-center gap-5 xl:flex`,children:[(0,j.jsxs)(`div`,{className:k(`flex h-8 items-center gap-2 border px-2.5`,n.length>0?`border-success/50 bg-success/10 text-success`:`text-muted-foreground`),children:[(0,j.jsx)(l,{className:k(`h-3 w-3`,n.length>0&&`animate-pulse`)}),(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`div`,{className:`font-mono text-[10px] font-bold`,children:[n.length,` LIVE`]}),(0,j.jsx)(`div`,{className:`text-[7px] uppercase tracking-wider`,children:`agents`})]})]}),(0,j.jsxs)(`div`,{className:`text-right`,children:[(0,j.jsx)(`div`,{className:`font-mono text-sm font-semibold`,children:t.nodes.length}),(0,j.jsx)(`div`,{className:`text-[8px] uppercase tracking-wider text-muted-foreground`,children:`nodes`})]}),(0,j.jsxs)(`div`,{className:`text-right`,children:[(0,j.jsx)(`div`,{className:`font-mono text-sm font-semibold`,children:t.edges.length}),(0,j.jsx)(`div`,{className:`text-[8px] uppercase tracking-wider text-muted-foreground`,children:`links`})]}),(0,j.jsxs)(`div`,{className:`text-right`,children:[(0,j.jsx)(`div`,{className:`font-mono text-sm font-semibold`,children:r}),(0,j.jsx)(`div`,{className:`text-[8px] uppercase tracking-wider text-muted-foreground`,children:`references`})]}),(0,j.jsxs)(`div`,{className:`text-right`,children:[(0,j.jsx)(`div`,{className:`font-mono text-sm font-semibold`,children:a}),(0,j.jsx)(`div`,{className:`text-[8px] uppercase tracking-wider text-muted-foreground`,children:`connected`})]})]})]})}function ot({activity:e}){return(0,j.jsx)(`span`,{className:k(`shrink-0 border px-1.5 py-0.5 font-mono text-[8px] font-bold uppercase`,e.type===`delete`?`border-destructive/50 bg-destructive/10 text-destructive`:e.type===`read`?`border-info/50 bg-info/10 text-info`:e.type===`search`||e.type===`index`?`border-primary/50 bg-primary/10 text-primary`:`border-warning/50 bg-warning/10 text-warning`),children:e.filePath.startsWith(`(tool:`)?e.toolName:e.type})}function q({activity:e,onLocate:t,showAgent:n=!1}){let{t:r}=w(),i=e.agentName??e.agent??`External process`,a=`${e.sessionId??`none`}:${e.agentId??i}`;return(0,j.jsxs)(`button`,{type:`button`,className:`group flex w-full items-start gap-2 border-b px-3 py-2 text-left last:border-b-0 hover:bg-muted/70`,onClick:()=>!e.filePath.startsWith(`(`)&&t(e),title:`Locate ${e.filePath}`,children:[n&&(0,j.jsx)(`span`,{className:k(`mt-0.5 flex h-6 w-6 shrink-0 items-center justify-center font-mono text-[8px] font-black`,H(a)),children:qe(i)}),(0,j.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,j.jsx)(ot,{activity:e}),n&&(0,j.jsx)(`span`,{className:`truncate text-[9px] font-semibold`,children:i}),e.status===`active`&&(0,j.jsxs)(`span`,{className:`ml-auto flex items-center gap-1 font-mono text-[8px] font-bold text-success`,children:[(0,j.jsx)(`span`,{className:`h-1.5 w-1.5 animate-pulse bg-success`}),` `,r(`activity:codeMap.live`)]}),e.watcherConfirmed&&(0,j.jsx)(ie,{className:`ml-auto h-3 w-3 text-success`,"aria-label":r(`activity:codeMap.filesystemConfirmed`)}),e.attribution===`correlated`&&!e.watcherConfirmed&&(0,j.jsx)(`span`,{className:`ml-auto font-mono text-[7px] uppercase text-warning`,title:r(`activity:codeMap.correlatedFromTheOnlyActiveTool`),children:r(`activity:codeMap.correlated`)}),e.attribution===`external`&&(0,j.jsx)(`span`,{className:`ml-auto font-mono text-[7px] uppercase text-destructive`,children:`external`})]}),(0,j.jsx)(`div`,{className:`mt-1 truncate font-mono text-[9px] font-semibold`,title:e.filePath,children:Xe(e.filePath)}),(e.symbol||e.line)&&(0,j.jsxs)(`div`,{className:`mt-0.5 flex items-center gap-1 truncate font-mono text-[8px] text-success`,children:[(0,j.jsx)(x,{className:`h-2.5 w-2.5 shrink-0`}),e.symbol?.name??`line ${e.line}`,e.symbol?.kind&&(0,j.jsxs)(`span`,{className:`text-muted-foreground`,children:[`· `,e.symbol.kind]})]}),e.change&&(0,j.jsxs)(`div`,{className:`mt-1 flex items-center gap-1 font-mono text-[8px]`,children:[(0,j.jsxs)(`span`,{className:`border border-success/40 bg-success/10 px-1 text-success`,children:[`+`,e.change.added]}),(0,j.jsxs)(`span`,{className:`border border-destructive/40 bg-destructive/10 px-1 text-destructive`,children:[`−`,e.change.removed]}),e.durationMs!==void 0&&(0,j.jsxs)(`span`,{className:`ml-auto text-muted-foreground`,children:[e.durationMs,`ms`]})]}),e.summary&&e.summary!==e.toolName&&(0,j.jsx)(`div`,{className:`mt-1 line-clamp-2 text-[8px] leading-3 text-muted-foreground`,children:e.summary})]}),!e.filePath.startsWith(`(`)&&(0,j.jsx)(c,{className:`mt-1 h-3 w-3 shrink-0 text-muted-foreground opacity-0 group-hover:opacity-100`})]})}function st({presences:e,onLocate:t}){let{t:n}=w();return e.length===0?null:(0,j.jsxs)(`section`,{className:`pointer-events-auto absolute left-3 top-14 z-20 w-[304px] border bg-card/95 shadow-xl backdrop-blur`,children:[(0,j.jsxs)(`div`,{className:`flex h-9 items-center gap-2 border-b px-3`,children:[(0,j.jsx)(l,{className:`h-3.5 w-3.5 animate-pulse text-success`}),(0,j.jsx)(`h2`,{className:`text-[9px] font-black uppercase tracking-[0.18em]`,children:n(`activity:codeMap.liveAgentOperations`)}),(0,j.jsxs)(`span`,{className:`ml-auto bg-success px-1.5 py-0.5 font-mono text-[8px] font-bold text-success-foreground`,children:[e.length,` ONLINE`]})]}),(0,j.jsx)(`div`,{className:`max-h-[330px] overflow-y-auto`,children:e.map(e=>(0,j.jsxs)(`div`,{className:`border-b last:border-b-0`,children:[(0,j.jsxs)(`div`,{className:`flex items-center gap-2 bg-muted/35 px-3 py-1.5`,children:[(0,j.jsx)(`span`,{className:k(`flex h-6 w-6 items-center justify-center font-mono text-[8px] font-black`,H(e.key)),children:qe(e.agentName)}),(0,j.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,j.jsx)(`div`,{className:`truncate text-[9px] font-bold`,children:e.agentName}),(0,j.jsxs)(`div`,{className:`truncate font-mono text-[7px] text-muted-foreground`,children:[`session `,e.sessionId.slice(0,12),` · agent `,e.agentId.slice(0,12)]})]}),(0,j.jsxs)(`span`,{className:`font-mono text-[8px] text-success`,children:[e.operations.length,` op`]})]}),e.operations.map(e=>(0,j.jsx)(q,{activity:e,onLocate:t},e.id??`${e.toolUseId}:${e.filePath}`))]},e.key))})]})}function ct({paused:e,followLive:t,agentFilter:n,agents:i,onTogglePaused:a,onToggleFollow:o,onAgentFilter:s}){let{t:c}=w();return(0,j.jsxs)(`div`,{className:`pointer-events-auto absolute right-3 top-14 z-20 flex h-9 items-center border bg-card/95 shadow-lg backdrop-blur`,children:[(0,j.jsxs)(`button`,{type:`button`,className:k(`flex h-full items-center gap-1.5 border-r px-2.5 text-[8px] font-bold uppercase tracking-wider`,t?`bg-primary text-primary-foreground`:`text-muted-foreground hover:bg-muted`),onClick:o,title:c(`activity:codeMap.automaticallyEnterTheFileFunctionUsedByTheNewestVisibleAgent`),children:[(0,j.jsx)(x,{className:`h-3 w-3`}),` `,c(`activity:codeMap.follow`)]}),(0,j.jsxs)(`button`,{type:`button`,className:k(`flex h-full items-center gap-1.5 border-r px-2.5 text-[8px] font-bold uppercase tracking-wider`,e?`bg-warning text-warning-foreground`:`text-success hover:bg-success/10`),onClick:a,title:e?`Resume the live telemetry stream`:`Freeze the current telemetry frame`,children:[e?(0,j.jsx)(u,{className:`h-3 w-3`}):(0,j.jsx)(r,{className:`h-3 w-3`}),e?`Resume`:`Live`]}),(0,j.jsxs)(`label`,{className:`flex h-full items-center gap-1.5 px-2 text-[8px] uppercase text-muted-foreground`,children:[c(`activity:codeMap.agent`),(0,j.jsxs)(`select`,{"aria-label":c(`activity:codeMap.filterCodemapByAgentAndSession`),className:`h-6 max-w-[170px] border bg-background px-1.5 font-mono text-[8px] text-foreground outline-none focus:border-primary`,value:n,onChange:e=>s(e.target.value),children:[(0,j.jsx)(`option`,{value:`all`,children:c(`activity:codeMap.allAgents`)}),i.map(e=>(0,j.jsxs)(`option`,{value:e.key,children:[e.agentName,` · `,e.sessionId.slice(0,10)]},e.key))]})]})]})}function lt({activeOperations:e,recentActivities:t,activityTotalCount:n,onLocate:r}){let{t:i}=w();return(0,j.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[e.length>0&&(0,j.jsxs)(`section`,{className:`border-b`,children:[(0,j.jsxs)(`div`,{className:`flex h-9 items-center gap-2 border-b bg-success/5 px-3`,children:[(0,j.jsx)(l,{className:`h-3 w-3 animate-pulse text-success`}),(0,j.jsx)(`h3`,{className:`text-[9px] font-bold uppercase tracking-[0.16em]`,children:i(`activity:codeMap.activeNow`)}),(0,j.jsx)(`span`,{className:`ml-auto font-mono text-[9px] text-success`,children:e.length})]}),e.map(e=>(0,j.jsx)(q,{activity:e,onLocate:r,showAgent:!0},e.id??`${e.toolUseId}:${e.filePath}`))]}),(0,j.jsxs)(`section`,{children:[(0,j.jsxs)(`div`,{className:`flex h-9 items-center gap-2 border-b px-3`,children:[(0,j.jsx)(y,{className:`h-3 w-3 text-muted-foreground`}),(0,j.jsx)(`h3`,{className:`text-[9px] font-bold uppercase tracking-[0.16em]`,children:i(`activity:codeMap.eventStream`)}),(0,j.jsxs)(`span`,{className:`ml-auto font-mono text-[8px] text-muted-foreground`,children:[n,` total`]})]}),t.length>0?t.map((e,t)=>(0,j.jsx)(q,{activity:e,onLocate:r,showAgent:!0},e.id??`${e.timestamp}:${t}`)):(0,j.jsxs)(`div`,{className:`flex flex-col items-center justify-center px-7 py-16 text-center`,children:[(0,j.jsx)(`span`,{className:`mb-4 flex h-12 w-12 items-center justify-center border bg-muted text-muted-foreground`,children:(0,j.jsx)(_,{className:`h-5 w-5`})}),(0,j.jsx)(`h3`,{className:`text-xs font-semibold`,children:i(`activity:codeMap.selectANodeOrWaitFor`)}),(0,j.jsx)(`p`,{className:`mt-2 text-[10px] leading-relaxed text-muted-foreground`,children:i(`activity:codeMap.relationsAppearOnSelectionToolCalls`)})]})]})]})}function ut({node:e,incomingCount:t,outgoingCount:n,onOpenNode:r,onOpenActivity:i}){let{t:a}=w(),o=V[e.kind].icon;return(0,j.jsxs)(`div`,{className:`border-b bg-muted/25 p-3`,children:[(0,j.jsxs)(`div`,{className:`mb-2 flex items-center gap-2`,children:[(0,j.jsx)(`span`,{className:k(`flex h-8 w-8 items-center justify-center border`,V[e.kind].iconStyle),children:(0,j.jsx)(o,{className:`h-4 w-4`})}),(0,j.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,j.jsxs)(`div`,{className:`text-[8px] font-bold uppercase tracking-[0.18em] text-muted-foreground`,children:[e.external?`external `:``,e.kind]}),(0,j.jsx)(`div`,{className:`truncate font-mono text-xs font-semibold`,title:e.label,children:e.label})]})]}),(0,j.jsx)(`div`,{className:`break-all font-mono text-[9px] leading-relaxed text-muted-foreground`,children:e.file?z(e):e.package}),e.subsystem&&(0,j.jsx)(`div`,{className:`mt-2 inline-flex items-center gap-1 border border-border px-1.5 py-0.5 text-[8px] uppercase tracking-wider text-muted-foreground`,children:e.subsystem}),e.concept&&(0,j.jsx)(`p`,{className:`mt-2 text-[11px] leading-relaxed text-foreground`,children:e.concept}),e.crux&&(0,j.jsxs)(`div`,{className:`mt-1 font-mono text-[9px] text-muted-foreground`,children:[a(`activity:codeMap.crux`),` L`,e.crux.start,`–L`,e.crux.end]}),e.signature&&(0,j.jsx)(`pre`,{className:`mt-3 overflow-x-auto border bg-background p-2 font-mono text-[9px] leading-relaxed text-foreground`,children:e.signature}),(0,j.jsxs)(`div`,{className:`mt-3 grid grid-cols-3 border`,children:[(0,j.jsx)(J,{value:t,label:a(`activity:codeMap.incoming`),className:`border-r text-info`}),(0,j.jsx)(J,{value:n,label:a(`activity:codeMap.outgoing`),className:`border-r text-primary`}),(0,j.jsx)(J,{value:e.symbolCount??e.fileCount??e.line??`—`,label:e.kind===`package`?`files`:e.kind===`file`?`symbols`:`line`})]}),(0,j.jsx)(`div`,{className:`mt-2 grid grid-cols-1 border`,children:(0,j.jsx)(J,{value:e.rank===void 0?`—`:`${Math.round(e.rank*100)}%`,label:a(`activity:codeMap.centralityLabel`)})}),(0,j.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[e.kind!==`symbol`&&(0,j.jsxs)(`button`,{type:`button`,className:`flex h-7 flex-1 items-center justify-center gap-1.5 border bg-foreground text-[9px] font-semibold uppercase tracking-wider text-background hover:opacity-90`,onClick:()=>r(e),children:[(0,j.jsx)(c,{className:`h-3 w-3`}),` Open`,` `,e.kind===`package`?`files`:`symbols`]}),e.file&&(0,j.jsxs)(`button`,{type:`button`,className:`flex h-7 items-center justify-center gap-1.5 border px-2 text-[9px] uppercase text-muted-foreground hover:bg-muted`,onClick:()=>i(e.file),children:[(0,j.jsx)(y,{className:`h-3 w-3`}),` `,a(`activity:codeMap.activity`)]})]})]})}function J({value:e,label:t,className:n}){return(0,j.jsxs)(`div`,{className:k(`p-2 text-center`,n),children:[(0,j.jsx)(`div`,{className:`font-mono text-sm font-semibold`,children:e}),(0,j.jsx)(`div`,{className:`text-[8px] uppercase text-muted-foreground`,children:t})]})}function dt(e){let{t}=w(),{title:n,subtitle:r,items:i,graph:a,selectedId:o,expanded:s,onToggle:c,onSelect:l}=e;return(0,j.jsxs)(`section`,{className:`border-b py-3`,children:[(0,j.jsxs)(`div`,{className:`mb-2 flex items-end justify-between px-3`,children:[(0,j.jsxs)(`div`,{children:[(0,j.jsx)(`h3`,{className:`text-[10px] font-bold uppercase tracking-[0.16em]`,children:n}),(0,j.jsx)(`p`,{className:`mt-0.5 text-[9px] text-muted-foreground`,children:r})]}),(0,j.jsx)(`span`,{className:`border bg-muted px-1.5 py-0.5 font-mono text-[9px]`,children:i.length})]}),i.length===0?(0,j.jsx)(`p`,{className:`px-3 py-2 text-[10px] text-muted-foreground`,children:t(`activity:codeMap.noRelationshipsInThisView`)}):i.map(e=>{let t=`${n}:${e.node.id}`,r=s.has(t),i=[...xe(a,e.node.id,`incoming`),...xe(a,e.node.id,`outgoing`)].filter((e,t,n)=>e.node.id!==o&&n.findIndex(t=>t.node.id===e.node.id)===t).slice(0,8);return(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`div`,{className:`group flex min-h-9 items-center gap-1 px-2 hover:bg-muted/70`,children:[(0,j.jsx)(`button`,{type:`button`,className:`flex h-6 w-5 shrink-0 items-center justify-center text-muted-foreground`,onClick:()=>i.length>0&&c(t),"aria-label":`${r?`Collapse`:`Expand`} relation ${e.node.label}`,children:i.length>0?r?(0,j.jsx)(p,{className:`h-3 w-3`}):(0,j.jsx)(b,{className:`h-3 w-3`}):(0,j.jsx)(`span`,{className:`h-px w-2 bg-border`})}),(0,j.jsxs)(`button`,{type:`button`,className:`min-w-0 flex-1 py-1 text-left`,onClick:()=>l(e.node),children:[(0,j.jsx)(`span`,{className:`block truncate font-mono text-[10px] font-semibold`,title:e.node.label,children:e.node.label}),(0,j.jsx)(`span`,{className:`block truncate text-[9px] text-muted-foreground`,children:e.node.package??e.node.symbolKind??e.node.kind})]}),(0,j.jsx)(`span`,{className:`border px-1 py-0.5 font-mono text-[8px] text-muted-foreground`,children:e.edge.refType}),(0,j.jsxs)(`span`,{className:`w-5 text-right font-mono text-[9px] text-muted-foreground`,children:[`×`,e.edge.weight]})]}),r&&i.map(e=>(0,j.jsxs)(`button`,{type:`button`,className:`relative flex h-7 w-full items-center gap-2 border-l border-border pl-11 pr-3 text-left text-[9px] text-muted-foreground hover:bg-muted hover:text-foreground`,onClick:()=>l(e.node),children:[(0,j.jsx)(`span`,{className:`absolute left-7 top-1/2 h-px w-3 bg-border`}),(0,j.jsx)(_,{className:`h-3 w-3 shrink-0`}),(0,j.jsx)(`span`,{className:`truncate font-mono`,children:e.node.label}),(0,j.jsx)(`span`,{className:`ml-auto font-mono opacity-70`,children:e.edge.refType})]},`${t}:${e.node.id}`))]},t)})]})}function ft({selectedNode:e,incoming:t,outgoing:n,filteredGraph:r,expandedRelations:i,activeOperations:a,recentActivities:o,activityTotalCount:s,selectedActivities:c,onClearSelection:u,onOpenNode:d,onOpenActivity:p,onLocateActivity:m,onToggleRelation:h,onSelectNode:g}){let{t:_}=w();return(0,j.jsxs)(`aside`,{className:`flex w-[326px] shrink-0 flex-col border-l bg-card/80`,children:[(0,j.jsxs)(`div`,{className:`flex h-10 items-center justify-between border-b px-3`,children:[(0,j.jsx)(`h2`,{className:`text-[10px] font-bold uppercase tracking-[0.18em]`,children:_(`activity:codeMap.relationInspector`)}),e&&(0,j.jsx)(`button`,{type:`button`,className:`text-muted-foreground hover:text-foreground`,onClick:u,"aria-label":_(`activity:codeMap.clearSelection`),children:(0,j.jsx)(f,{className:`h-3.5 w-3.5`})})]}),e?(0,j.jsxs)(`div`,{className:`min-h-0 flex-1 overflow-y-auto`,children:[(0,j.jsx)(ut,{node:e,incomingCount:t.length,outgoingCount:n.length,onOpenNode:d,onOpenActivity:p}),c.length>0&&(0,j.jsxs)(`section`,{className:`border-b bg-success/5 py-2`,children:[(0,j.jsxs)(`div`,{className:`mb-1 flex items-center gap-2 px-3`,children:[(0,j.jsx)(l,{className:`h-3 w-3 animate-pulse text-success`}),(0,j.jsx)(`h3`,{className:`text-[9px] font-bold uppercase tracking-[0.16em]`,children:_(`activity:codeMap.agentsOnThisNode`)}),(0,j.jsx)(`span`,{className:`ml-auto font-mono text-[9px] text-success`,children:c.length})]}),c.map(e=>(0,j.jsx)(q,{activity:e,onLocate:m,showAgent:!0},e.id??`${e.toolUseId}:${e.filePath}`))]}),(0,j.jsx)(dt,{title:_(`activity:codeMap.incoming`),subtitle:_(`activity:codeMap.whoDependsOnThis`),items:t,graph:r,selectedId:e.id,expanded:i,onToggle:h,onSelect:g}),(0,j.jsx)(dt,{title:_(`activity:codeMap.outgoing`),subtitle:_(`activity:codeMap.whatThisDependsOn`),items:n,graph:r,selectedId:e.id,expanded:i,onToggle:h,onSelect:g})]}):(0,j.jsx)(lt,{activeOperations:a,recentActivities:o,activityTotalCount:s,onLocate:m})]})}function pt({node:e,onSelect:t,virtual:n}){let r=V[e.kind].icon;return(0,j.jsxs)(`button`,{type:`button`,"data-index":n?.index,ref:n?e=>n.measureElement(e):void 0,className:k(`min-h-8 items-center gap-2 px-3 py-1 text-left hover:bg-muted`,n?`absolute left-0 flex w-full`:`flex w-full`),style:n?{transform:`translateY(${n.start}px)`}:void 0,onClick:()=>t(e),children:[(0,j.jsx)(r,{className:k(`h-3.5 w-3.5 shrink-0`,e.kind===`package`?`text-primary`:e.kind===`file`?`text-info`:`text-success`)}),(0,j.jsxs)(`span`,{className:`min-w-0 flex-1`,children:[(0,j.jsx)(`span`,{className:`block truncate font-mono text-[10px]`,children:e.label}),(0,j.jsx)(`span`,{className:`block truncate text-[8px] text-muted-foreground`,children:e.file??e.package??e.symbolKind})]}),(0,j.jsx)(`span`,{className:`text-[8px] uppercase text-muted-foreground`,children:e.kind.slice(0,3)})]},e.id)}var mt=80,ht=40;function gt(e,t){if(!e||t.size===0)return!1;let n=N(e);if(t.has(n))return!0;for(let e of t)if(e.endsWith(`/${n}`)||n.endsWith(`/${e}`))return!0;return!1}var Y=(0,A.memo)(function e(t){let{t:n}=w(),{directory:r,packageName:i,depth:a,expandedDirectories:u,expandedFiles:f,loadingBranches:m,graphForFile:h,onToggleDirectory:_,onToggleFile:ee,onSelectFile:te,onOpenFile:y,onSelectSymbol:ne,selectedId:x,activeFileNorms:re,activeSymbolIds:S,revealAllKeys:C,onRevealAll:ie}=t,T=`files:${i}:${r.path||`.`}`,ae=C.has(T)?r.files:r.files.slice(0,mt),E=r.files.length-ae.length;return(0,j.jsxs)(j.Fragment,{children:[r.directories.map(n=>{let r=`${i}:${n.path}`,o=u.has(r);return(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`button`,{type:`button`,className:`flex h-7 w-full items-center gap-1.5 pr-2 text-left text-[11px] text-muted-foreground hover:bg-muted hover:text-foreground`,style:{paddingLeft:8+a*12},onClick:()=>_(r),children:[o?(0,j.jsx)(p,{className:`h-3 w-3`}):(0,j.jsx)(b,{className:`h-3 w-3`}),o?(0,j.jsx)(g,{className:`h-3.5 w-3.5 text-warning`}):(0,j.jsx)(v,{className:`h-3.5 w-3.5 text-warning`}),(0,j.jsx)(`span`,{className:`truncate`,children:n.name})]}),o&&(0,j.jsx)(e,{...t,directory:n,depth:a+1})]},r)}),ae.map(e=>{let t=f.has(e.file??e.id),r=P({level:`symbols`,file:e.file??e.label}),i=(e.file?h(e.file):void 0)?.nodes.filter(t=>t.kind===`symbol`&&t.file===e.file&&!t.external)??[],u=`symbols:${e.file??e.id}`,g=C.has(u)?i:i.slice(0,ht),_=i.length-g.length,v=gt(e.file,re);return(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`div`,{className:k(`group flex h-7 items-center pr-1 text-[11px] hover:bg-muted`,x===e.id&&`bg-primary/10 text-primary`),style:{paddingLeft:8+a*12},children:[(0,j.jsx)(`button`,{type:`button`,className:`flex h-6 w-4 shrink-0 items-center justify-center text-muted-foreground`,onClick:()=>ee(e),"aria-label":`${t?`Collapse`:`Expand`} ${e.label}`,children:m.has(r)?(0,j.jsx)(d,{className:`h-3 w-3 animate-spin`}):t?(0,j.jsx)(p,{className:`h-3 w-3`}):(0,j.jsx)(b,{className:`h-3 w-3`})}),(0,j.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-1.5 text-left`,onClick:()=>te(e),onDoubleClick:()=>y(e),children:[(0,j.jsx)(o,{className:`h-3.5 w-3.5 shrink-0 text-info`}),v&&(0,j.jsx)(`span`,{className:`h-1.5 w-1.5 shrink-0 animate-pulse bg-success`,title:n(`activity:codeMap.liveOperation`)}),(0,j.jsx)(`span`,{className:`truncate font-mono`,title:e.file,children:e.label}),(0,j.jsx)(`span`,{className:`ml-auto text-[9px] text-muted-foreground`,children:e.symbolCount??0})]}),(0,j.jsx)(`button`,{type:`button`,className:`ml-1 hidden h-5 w-5 items-center justify-center text-muted-foreground hover:text-foreground group-hover:flex`,onClick:()=>y(e),title:n(`activity:codeMap.openSymbolMap`),"aria-label":`Open ${e.label} map`,children:(0,j.jsx)(c,{className:`h-3 w-3`})})]}),t&&g.map(e=>(0,j.jsxs)(`button`,{type:`button`,className:k(`flex h-7 w-full items-center gap-1.5 pr-2 text-left text-[10px] hover:bg-muted`,x===e.id?`bg-primary/10 text-primary`:`text-muted-foreground`),style:{paddingLeft:38+a*12},onClick:()=>ne(e),children:[(0,j.jsx)(s,{className:`h-3 w-3 shrink-0 text-success`}),S.has(e.id)&&(0,j.jsx)(l,{className:`h-3 w-3 shrink-0 animate-pulse text-success`}),(0,j.jsx)(`span`,{className:`truncate font-mono`,children:e.label}),e.line&&(0,j.jsxs)(`span`,{className:`ml-auto font-mono text-[8px] opacity-60`,children:[`:`,e.line]})]},e.id)),t&&_>0&&(0,j.jsxs)(`button`,{type:`button`,className:`flex h-7 w-full items-center text-left font-mono text-[9px] text-primary hover:bg-muted`,style:{paddingLeft:38+a*12},onClick:()=>ie(u),children:[`Show `,_,` more symbols`]})]},e.id)}),E>0&&(0,j.jsxs)(`button`,{type:`button`,className:`flex h-7 w-full items-center text-left font-mono text-[9px] text-primary hover:bg-muted`,style:{paddingLeft:8+a*12},onClick:()=>ie(T),children:[`Show `,E,` more files`]})]})});function _t({rootGraph:e,search:t,searchInput:n,searchResults:r,virtualizeSearch:i,searchVirtualizer:o,treeScrollRef:s,selectedId:l,expandedPackages:u,expandedDirectories:m,expandedFiles:h,loadingBranches:g,activeFileNorms:_,activeSymbolIds:ee,revealAllKeys:v,packageGraph:te,graphForFile:y,navigate:ne,togglePackage:x,toggleDirectory:re,toggleFile:C,revealAllTree:ie,selectFileFromTree:T,selectSymbolFromTree:ae,selectSearchResult:E,handleOpenNode:oe,onSearchInputChange:D,onSearchChange:se}){let{t:O}=w();return(0,j.jsxs)(`aside`,{className:`flex w-[286px] shrink-0 flex-col border-r bg-card/70`,children:[(0,j.jsxs)(`div`,{className:`border-b p-3`,children:[(0,j.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,j.jsx)(`h2`,{className:`text-[10px] font-bold uppercase tracking-[0.18em]`,children:O(`activity:codeMapTree.codeTree`)}),(0,j.jsxs)(`span`,{className:`font-mono text-[9px] text-muted-foreground`,children:[e.nodes.length,` roots`]})]}),(0,j.jsxs)(`label`,{className:`flex h-8 items-center gap-2 border bg-background px-2 focus-within:border-primary`,children:[(0,j.jsx)(a,{className:`h-3.5 w-3.5 text-muted-foreground`}),(0,j.jsx)(`input`,{className:`min-w-0 flex-1 bg-transparent font-mono text-[10px] outline-none placeholder:text-muted-foreground`,value:n,onChange:e=>D(e.target.value),placeholder:O(`activity:codeMapTree.findPackageFileSymbol`)}),n&&(0,j.jsx)(`button`,{type:`button`,onClick:()=>{D(``),se(``)},"aria-label":O(`activity:codeMapTree.clearSearch`),children:(0,j.jsx)(f,{className:`h-3 w-3 text-muted-foreground`})})]})]}),(0,j.jsx)(`div`,{ref:s,className:`min-h-0 flex-1 overflow-y-auto py-2`,children:t.trim()?(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`div`,{className:`px-3 pb-2 text-[9px] text-muted-foreground`,children:[r.length,` loaded-map results`]}),r.length===0?(0,j.jsxs)(`p`,{className:`px-3 py-8 text-center text-[10px] text-muted-foreground`,children:[O(`activity:codeMapTree.noMatchInLoadedBranches`),(0,j.jsx)(`br`,{}),O(`activity:codeMapTree.expandAPackageToSearchIts`)]}):i?(0,j.jsx)(`div`,{style:{height:`${o.getTotalSize()}px`,width:`100%`,position:`relative`},children:o.getVirtualItems().map(e=>{let t=r[e.index];return t?(0,j.jsx)(pt,{node:t,onSelect:E,virtual:{index:e.index,start:e.start,measureElement:o.measureElement}},t.id):null})}):r.map(e=>(0,j.jsx)(pt,{node:e,onSelect:E},e.id))]}):e.nodes.map(e=>{let t=e.package??e.label,n=u.has(t),r=P({level:`files`,package:t}),i=te(t),a=i?Ne(i.nodes):void 0;return(0,j.jsxs)(`div`,{children:[(0,j.jsxs)(`div`,{className:k(`group flex h-8 items-center px-2 hover:bg-muted`,l===e.id&&`bg-primary/10 text-primary`),children:[(0,j.jsx)(`button`,{type:`button`,className:`flex h-6 w-5 items-center justify-center text-muted-foreground`,onClick:()=>x(e),"aria-label":`${n?`Collapse`:`Expand`} ${t}`,children:g.has(r)?(0,j.jsx)(d,{className:`h-3 w-3 animate-spin`}):n?(0,j.jsx)(p,{className:`h-3 w-3`}):(0,j.jsx)(b,{className:`h-3 w-3`})}),(0,j.jsxs)(`button`,{type:`button`,className:`flex min-w-0 flex-1 items-center gap-2 text-left`,onClick:()=>ne({level:`packages`},e.id),onDoubleClick:()=>ne({level:`files`,package:t}),children:[(0,j.jsx)(S,{className:`h-3.5 w-3.5 shrink-0 text-primary`}),(0,j.jsx)(`span`,{className:`truncate font-mono text-[10px] font-semibold`,children:e.label}),(0,j.jsx)(`span`,{className:`ml-auto text-[9px] text-muted-foreground`,children:e.fileCount??0})]}),(0,j.jsx)(`button`,{type:`button`,className:`ml-1 hidden h-5 w-5 items-center justify-center text-muted-foreground hover:text-foreground group-hover:flex`,onClick:()=>ne({level:`files`,package:t}),title:O(`activity:codeMapTree.openFileMap`),"aria-label":`Open ${t} map`,children:(0,j.jsx)(c,{className:`h-3 w-3`})})]}),n&&a&&(0,j.jsx)(Y,{directory:a,packageName:t,depth:1,expandedDirectories:m,expandedFiles:h,loadingBranches:g,graphForFile:y,onToggleDirectory:re,onToggleFile:C,onSelectFile:T,onOpenFile:oe,onSelectSymbol:ae,selectedId:l,activeFileNorms:_,activeSymbolIds:ee,revealAllKeys:v,onRevealAll:ie})]},e.id)})}),(0,j.jsxs)(`div`,{className:`border-t px-3 py-2 text-[9px] leading-relaxed text-muted-foreground`,children:[O(`activity:codeMapTree.clickToFocusDoubleClickTo`),(0,j.jsx)(`br`,{}),O(`activity:codeMapTree.branchesStayOpenWhileTheMap`)]})]})}function vt(){let[e,t]=(0,A.useState)({level:`packages`}),n=P(e),[r,i]=(0,A.useState)($e),[a,o]=(0,A.useState)(!0),[s,c]=(0,A.useState)(null),[l,u]=(0,A.useState)(null),[d,f]=(0,A.useState)(`layers`),[p,m]=(0,A.useState)(`smart`),[h,g]=(0,A.useState)(`all`),[_,ee]=(0,A.useState)(``),[v,y]=(0,A.useState)(``),[b,x]=(0,A.useState)(new Set),[re,S]=(0,A.useState)(new Set),[C,w]=(0,A.useState)(new Set),[ie,T]=(0,A.useState)(new Set),[ae,D]=(0,A.useState)(new Set),[O,ce]=(0,A.useState)(new Set),[ue,de]=(0,A.useState)(0),[fe,k]=(0,A.useState)(null),[ye,M]=(0,A.useState)(!1),[F,Ce]=(0,A.useState)(`all`),[I,Te]=(0,A.useState)(null),[Ee,De]=(0,A.useState)(null),[Oe,ke]=(0,A.useState)(0),L=(0,A.useRef)(new Map),R=(0,A.useRef)(null),z=(0,A.useRef)(null),je=(0,A.useRef)(``),Me=(0,A.useRef)(``),B=(0,A.useRef)(null),V=(0,A.useRef)(new Set),{history:He,pulses:Ue,activeOperationsMap:Ge,activityTotalCount:Ke,resolveActivitySymbol:H,getActivityForFile:Ye,sweepActivity:Xe}=pe(te(e=>({history:e.history,pulses:e.pulses,activeOperationsMap:e.activeOperations,activityTotalCount:e.totalCount,resolveActivitySymbol:e.resolveActivitySymbol,getActivityForFile:e.getActivityForFile,sweepActivity:e._sweep}))),U=(0,A.useMemo)(()=>[...Ge.values()].flat(),[Ge]),Ze=(0,A.useMemo)(()=>[...Ue.keys()].map(e=>He.get(e)?.[0]).filter(e=>!!e),[He,Ue]),W=(0,A.useMemo)(()=>{let e=[];for(let t of He.values())e.push(...t.slice(0,16));return e.sort((e,t)=>t.timestamp-e.timestamp).slice(0,16)},[He]),Qe=(0,A.useMemo)(()=>me([...U,...W]),[U,W]),G=(0,A.useMemo)(()=>{let e=I??U;return F===`all`?e:e.filter(e=>he(e)===F)},[U,F,I]),et=(0,A.useMemo)(()=>{let e=Ee??W;return F===`all`?e:e.filter(e=>he(e)===F)},[F,Ee,W]),K=(0,A.useDeferredValue)(G),ot=(0,A.useDeferredValue)(et),q=(0,A.useDeferredValue)(Ze),lt=(0,A.useMemo)(()=>me(G),[G]),[ut,J,dt]=oe([]),[pt,mt,ht]=E([]),{fitView:gt}=le(),Y=(0,A.useCallback)(async(e,t=!1)=>{let n=P(e),r=L.current.get(n);if(r&&!t)return Fe(L.current,n,r,48),r;let i=await fetch(be(e),{credentials:`same-origin`});if(!i.ok){if(i.status===401||i.status===403)throw Error(`Authentication required — open this dashboard from its token URL.`);let e=await i.json().catch(()=>({error:i.statusText}));throw Error(e.error??`HTTP ${i.status}`)}let a=await i.json();return Fe(L.current,n,a,48),de(e=>e+1),a},[]);(0,A.useEffect)(()=>{let e=window.setTimeout(()=>y(_),150);return()=>window.clearTimeout(e)},[_]);let vt=_e(e=>e.generation),yt=(0,A.useRef)(0),bt=(0,A.useRef)(null);(0,A.useEffect)(()=>{let t=!1,n=vt>yt.current;return n&&(yt.current=vt,L.current.clear(),de(e=>e+1),x(new Set),S(new Set),w(new Set),D(new Set)),o(!0),c(null),Y(e,n).then(e=>{if(!t){if(i(e),!n){let t=R.current;R.current=null,u(t&&e.nodes.some(e=>e.id===t)?t:null)}o(!1)}}).catch(e=>{t||(c(e instanceof Error?e.message:String(e)),i($e),o(!1))}),()=>{t=!0}},[n,Y,vt,e]);let X=(0,A.useCallback)((e,r)=>{if(R.current=r??null,P(e)===n){u(r??null),R.current=null;return}t(e)},[n]),xt=(0,A.useCallback)(async e=>{let t=P(e);if(!(L.current.has(t)||O.has(t))){ce(e=>new Set(e).add(t));try{await Y(e)}finally{ce(e=>{let n=new Set(e);return n.delete(t),n})}}},[Y,O]);(0,A.useEffect)(()=>{let e=!1,t=0;for(let n of U){if(t>=2)break;if(n.symbol||!n.toolUseId||n.filePath.startsWith(`(`))continue;let r=n.filePath;V.current.has(r)||(V.current.add(r),t+=1,Y({level:`symbols`,file:r}).then(t=>{if(e)return;let i=Ve(n,t.nodes);i&&H(n.toolUseId,r,{id:i.id,name:i.label,...i.symbolKind?{kind:i.symbolKind}:{},...i.line?{line:i.line}:{}})}).catch(()=>void 0).finally(()=>{V.current.delete(r)}))}return()=>{e=!0}},[U,Y,H]);let Z=(0,A.useMemo)(()=>({nodes:r.nodes,edges:h===`all`?r.edges:r.edges.filter(e=>e.refType===h)}),[r,h]),Q=r.nodes.find(e=>e.id===l),$=(0,A.useMemo)(()=>Ae(Z,l,p),[p,Z,l]),St=(0,A.useMemo)(()=>l?Se(Z,l):new Set,[Z,l]),{incomingCounts:Ct,outgoingCounts:wt}=(0,A.useMemo)(()=>{let e=new Map,t=new Map;for(let n of Z.edges)t.set(n.source,(t.get(n.source)??0)+1),e.set(n.target,(e.get(n.target)??0)+1);return{incomingCounts:e,outgoingCounts:t}},[Z]),Tt=d===`orbit`?l??void 0:void 0,Et=(0,A.useMemo)(()=>we($,d,Tt),[$,d,Tt]),Dt=(0,A.useMemo)(()=>[n,d,d===`orbit`?l??``:``,Pe($)].join(``),[$,n,d,l]),Ot=(0,A.useCallback)(e=>{u(e.id),T(new Set)},[]),kt=(0,A.useCallback)(e=>{e.kind===`package`&&X({level:`files`,package:e.package??e.label}),e.kind===`file`&&e.file&&X({level:`symbols`,file:e.file,package:e.package})},[X]),At=(0,A.useMemo)(()=>[Be(K),Be(q),Be(ot)].join(``),[K,q,ot]),jt=(0,A.useMemo)(()=>{let e=new Set;for(let t of G)e.add(N(t.filePath));return e},[G]),Mt=(0,A.useMemo)(()=>{let e=new Set;for(let t of G)t.symbol?.id&&e.add(t.symbol.id);return e},[G]);(0,A.useEffect)(()=>{let e=()=>{let e=Et.map(({node:e})=>e),t=ze(e,K),n=ze(e,q),r=new Set(t.keys()),i=Et.map(({node:e,position:r})=>{let i=t.get(e.id)??[],a=i[0]??n.get(e.id)?.[0];return{id:e.id,type:`codemap`,position:r,data:{graphNode:e,selected:e.id===l,dimmed:!!l&&!St.has(e.id),incoming:Ct.get(e.id)??0,outgoing:wt.get(e.id)??0,isActive:!!a,...a?{activityType:a.type}:{},activeOperations:i,onSelect:Ot,onOpen:kt,onShowHistory:k}}});J(e=>rt(e,i));let a=6,o=$.edges.map((e,t)=>{let n=!!l&&(e.source===l||e.target===l),i=r.has(e.source)||r.has(e.target),o=i&&(n||a>0);o&&--a;let s=We[e.refType]??`hsl(var(--muted-foreground))`,c=n||i?`smoothstep`:`default`;return{id:`edge:${e.source}:${e.target}:${t}`,source:e.source,target:e.target,type:c,animated:o,label:n?`${e.refType}${e.weight>1?` ×${e.weight}`:``}`:void 0,markerEnd:{type:se.ArrowClosed,color:s,width:14,height:14},style:{stroke:s,strokeWidth:i?Math.min(2.5+Math.log2(e.weight+1)*.65,5):n?Math.min(1.25+Math.log2(e.weight+1)*.65,4):1,opacity:i?1:l?n?.88:.08:.52},labelStyle:{fontSize:ge(9),fontFamily:`var(--font-mono)`,fill:`hsl(var(--muted-foreground))`},labelBgStyle:{fill:`hsl(var(--card))`,fillOpacity:.92},labelBgPadding:[4,2],zIndex:i?4:n?2:0,data:{renderKey:`${e.refType}:${e.weight}:${l?n?`focused`:`dimmed`:`idle`}:${i?`live`:`still`}:${o?`anim`:`still`}:${c}`}}}),s=new Map,c=new Set(K.map(he));for(let e of[...ot].sort((e,t)=>e.timestamp-t.timestamp)){let t=he(e),n=s.get(t);n?n.push(e):s.set(t,[e])}let u=[...s.entries()].map(([e,t])=>({agentKey:e,activities:t,live:c.has(e),latest:t[t.length-1]?.timestamp??0})).sort((e,t)=>Number(t.live)-Number(e.live)||t.latest-e.latest).slice(0,4),d=[];for(let{agentKey:e,activities:t,live:n}of u){let r=t.slice(-7).map(e=>({activity:e,node:$.nodes.find(t=>Re(e,t))})).filter(e=>!!e.node).filter((e,t,n)=>t===0||e.node.id!==n[t-1]?.node.id),i=Je(e);for(let t=1;t<r.length;t++){let o=r[t-1],s=r[t],c=n&&a>0;c&&--a,d.push({id:`trail:${e}:${o.activity.timestamp}:${s.activity.timestamp}`,source:o.node.id,target:s.node.id,type:`smoothstep`,animated:c,label:t===r.length-1?`${qe(s.activity.agentName??s.activity.agent??`agent`)} TRAIL`:void 0,markerEnd:{type:se.ArrowClosed,color:i,width:13,height:13},style:{stroke:i,strokeWidth:2.5,strokeDasharray:`7 5`,opacity:.9},labelStyle:{fontSize:ge(8),fontWeight:700,fill:i},labelBgStyle:{fill:`hsl(var(--card))`,fillOpacity:.94},labelBgPadding:[4,2],zIndex:6,data:{renderKey:`${i}:${t===r.length-1?`label`:`plain`}:${n?`live`:`still`}:${c?`anim`:`still`}`}})}}ke(d.length),mt(e=>it(e,[...o,...d]))},t=Dt,n=Me.current!==t;Me.current=t,B.current!==null&&(window.clearTimeout(B.current),B.current=null),n?e():B.current=window.setTimeout(()=>{B.current=null,e()},120);let r;return je.current!==Dt&&(r=window.setTimeout(()=>{je.current=Dt;let e=$.nodes.length>48?0:240;gt({padding:.2,duration:e,maxZoom:1.25})},20)),()=>{B.current!==null&&(window.clearTimeout(B.current),B.current=null),r!==void 0&&window.clearTimeout(r)}},[At,$,l,K,ot,q,Dt,St,gt,kt,Ot,Ct,wt,Et,mt,J]),(0,A.useEffect)(()=>{let e=window.setInterval(()=>{Xe()},2e3);return()=>window.clearInterval(e)},[Xe]);let Nt=L.current.get(`packages`)??(e.level===`packages`?r:$e),Pt=(0,A.useCallback)(e=>L.current.get(P({level:`files`,package:e})),[ue]),Ft=(0,A.useCallback)(e=>L.current.get(P({level:`symbols`,file:e})),[ue]),It=(0,A.useCallback)(e=>{let t=e.filePath,n=Le(e.filePath),r=`file:${e.filePath}`;for(let i of L.current.values()){let a=i.nodes.find(t=>t.kind===`file`&&!t.external&&Ie(t.file,e.filePath));if(a){t=a.file??t,n=a.package??n,r=a.id;break}}if(e.symbol){X({level:`symbols`,file:t,package:n},e.symbol.id);return}X({level:`files`,package:n},r)},[X]);(0,A.useEffect)(()=>{if(!ye||I)return;let e=[...G].filter(e=>!e.filePath.startsWith(`(`)).sort((e,t)=>t.timestamp-e.timestamp)[0];if(!e)return;let t=`${e.id??e.toolUseId}:${e.filePath}:${e.symbol?.id??`file`}`;z.current!==t&&(z.current=t,It(e))},[G,ye,It,I]);let Lt=(0,A.useCallback)(()=>{if(I){Te(null),De(null);return}Te([...U]),De([...W])},[U,I,W]),Rt=(0,A.useCallback)(e=>{let t=e.package??e.label,n=!b.has(t);x(e=>{let r=new Set(e);return n?r.add(t):r.delete(t),r}),n&&xt({level:`files`,package:t}).then(()=>{let e=L.current.get(P({level:`files`,package:t})),n=e?Ne(e.nodes):void 0;n?.directories.length===1&&n.directories[0]&&S(e=>new Set(e).add(`${t}:${n.directories[0].path}`))}).catch(()=>void 0)},[xt,b]),zt=(0,A.useCallback)(e=>{if(!e.file)return;let t=!C.has(e.file);w(n=>{let r=new Set(n);return t?r.add(e.file):r.delete(e.file),r}),t&&xt({level:`symbols`,file:e.file,package:e.package}).catch(()=>void 0)},[xt,C]),Bt=(0,A.useCallback)(e=>{S(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})},[]),Vt=(0,A.useCallback)(e=>{D(t=>new Set(t).add(e))},[]),Ht=(0,A.useCallback)(e=>{X({level:`files`,package:e.package??`(root)`},e.id)},[X]),Ut=(0,A.useCallback)(e=>{e.file&&X({level:`symbols`,file:e.file,package:e.package},e.id)},[X]),Wt=(0,A.useMemo)(()=>{let e=v.trim().toLocaleLowerCase();if(!e)return[];let t=new Map;for(let n of L.current.values())for(let r of n.nodes)`${r.label} ${r.file??``} ${r.signature??``} ${r.package??``}`.toLocaleLowerCase().includes(e)&&t.set(r.id,r);return[...t.values()].sort((e,t)=>e.kind.localeCompare(t.kind)||e.label.localeCompare(t.label)).slice(0,80)},[v,ue]),Gt=Wt.length>40,Kt=ne({count:Wt.length,getScrollElement:()=>bt.current,estimateSize:()=>40,overscan:8,enabled:Gt}),qt=(0,A.useCallback)(e=>{e.kind===`package`?X({level:`packages`},e.id):e.kind===`file`?X({level:`files`,package:e.package??`(root)`},e.id):e.file&&X({level:`symbols`,file:e.file,package:e.package},e.id)},[X]),{incoming:Jt,outgoing:Yt}=(0,A.useMemo)(()=>({incoming:Q?xe(Z,Q.id,`incoming`):[],outgoing:Q?xe(Z,Q.id,`outgoing`):[]}),[Z,Q]),{edgeWeight:Xt,connectedNodeCount:Zt}=(0,A.useMemo)(()=>{let e=0,t=new Set;for(let n of Z.edges)e+=n.weight,t.add(n.source),t.add(n.target);return{edgeWeight:e,connectedNodeCount:t.size}},[Z]),Qt=Q?G.filter(e=>Re(e,Q)):[],$t=fe?Ye(fe):[];return(0,j.jsxs)(`div`,{className:`flex h-full min-h-0 flex-col bg-background`,children:[(0,j.jsx)(at,{scope:e,graph:r,agentPresences:lt,edgeWeight:Xt,connectedNodeCount:Zt,navigate:X}),(0,j.jsxs)(`div`,{className:`flex min-h-0 flex-1`,children:[(0,j.jsx)(_t,{rootGraph:Nt,search:v,searchInput:_,searchResults:Wt,virtualizeSearch:Gt,searchVirtualizer:Kt,treeScrollRef:bt,selectedId:l,expandedPackages:b,expandedDirectories:re,expandedFiles:C,loadingBranches:O,activeFileNorms:jt,activeSymbolIds:Mt,revealAllKeys:ae,packageGraph:Pt,graphForFile:Ft,navigate:X,togglePackage:Rt,toggleDirectory:Bt,toggleFile:zt,revealAllTree:Vt,selectFileFromTree:Ht,selectSymbolFromTree:Ut,selectSearchResult:qt,handleOpenNode:kt,onSearchInputChange:ee,onSearchChange:y}),(0,j.jsxs)(`main`,{className:`relative min-w-0 flex-1 bg-[radial-gradient(circle_at_50%_0%,hsl(var(--primary)/0.055),transparent_38%)]`,children:[(0,j.jsx)(nt,{layout:d,canvasMode:p,edgeFilter:h,canvasNodeCount:$.nodes.length,graphNodeCount:r.nodes.length,onLayoutChange:f,onCanvasModeChange:m,onEdgeFilterChange:g}),(0,j.jsx)(st,{presences:lt,onLocate:It}),(0,j.jsx)(ct,{paused:I!==null,followLive:ye,agentFilter:F,agents:Qe,onTogglePaused:Lt,onToggleFollow:()=>{z.current=null,M(e=>!e)},onAgentFilter:e=>{z.current=null,Ce(e)}}),(0,j.jsx)(tt,{loading:a,error:s,graph:r,canvasNodeCount:$.nodes.length,flowNodes:ut,flowEdges:pt,onNodesChange:dt,onEdgesChange:ht,agentTrailCount:Oe})]}),(0,j.jsx)(ft,{selectedNode:Q,incoming:Jt,outgoing:Yt,filteredGraph:Z,expandedRelations:ie,activeOperations:G,recentActivities:et,activityTotalCount:Ke,selectedActivities:Qt,onClearSelection:()=>u(null),onOpenNode:kt,onOpenActivity:k,onLocateActivity:It,onToggleRelation:e=>T(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n}),onSelectNode:Ot})]}),fe&&(0,j.jsx)(ve,{historyFile:fe,fileHistory:$t,onClose:()=>k(null)})]})}function yt(){return(0,j.jsx)(ae,{children:(0,j.jsx)(vt,{})})}export{yt as CodeMap};
|