@xenosystem/agent-interface-ui 0.1.4 → 0.1.6
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/adapters/agentHostPlatformBridge.d.ts.map +1 -1
- package/dist/adapters/agentHostPlatformBridge.js +78 -4
- package/dist/adapters/agentHostPlatformBridge.js.map +1 -1
- package/dist/components/agent/AgentInterface.d.ts +2 -1
- package/dist/components/agent/AgentInterface.d.ts.map +1 -1
- package/dist/components/agent/AgentInterface.js +110 -14
- package/dist/components/agent/AgentInterface.js.map +1 -1
- package/dist/components/agent/AgentView.d.ts +1 -0
- package/dist/components/agent/AgentView.d.ts.map +1 -1
- package/dist/components/agent/AgentView.js +57 -47
- package/dist/components/agent/AgentView.js.map +1 -1
- package/dist/components/agent/AgentWorkbenchPanel.d.ts +3 -0
- package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -1
- package/dist/components/agent/AgentWorkbenchPanel.js +2 -1
- package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -1
- package/dist/components/agent/FleetPanel.d.ts.map +1 -1
- package/dist/components/agent/FleetPanel.js +7 -1
- package/dist/components/agent/FleetPanel.js.map +1 -1
- package/dist/components/agent/RunReviewPanel.d.ts.map +1 -1
- package/dist/components/agent/RunReviewPanel.js +2 -2
- package/dist/components/agent/RunReviewPanel.js.map +1 -1
- package/dist/components/agent/SessionsPanel.d.ts.map +1 -1
- package/dist/components/agent/SessionsPanel.js +85 -5
- package/dist/components/agent/SessionsPanel.js.map +1 -1
- package/dist/components/agent/compactionSummary.d.ts +0 -23
- package/dist/components/agent/compactionSummary.d.ts.map +1 -1
- package/dist/components/agent/compactionSummary.js +145 -3
- package/dist/components/agent/compactionSummary.js.map +1 -1
- package/dist/components/agent/injectionSummary.d.ts +37 -0
- package/dist/components/agent/injectionSummary.d.ts.map +1 -0
- package/dist/components/agent/injectionSummary.js +49 -0
- package/dist/components/agent/injectionSummary.js.map +1 -0
- package/dist/components/agent/runtimeEventSummary.d.ts +61 -0
- package/dist/components/agent/runtimeEventSummary.d.ts.map +1 -0
- package/dist/components/agent/runtimeEventSummary.js +112 -0
- package/dist/components/agent/runtimeEventSummary.js.map +1 -0
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts.map +1 -1
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js +27 -1
- package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js.map +1 -1
- package/dist/components/agent/timelineContextPressure.d.ts +62 -0
- package/dist/components/agent/timelineContextPressure.d.ts.map +1 -0
- package/dist/components/agent/timelineContextPressure.js +104 -0
- package/dist/components/agent/timelineContextPressure.js.map +1 -0
- package/dist/components/agent/tokenLabel.d.ts +14 -0
- package/dist/components/agent/tokenLabel.d.ts.map +1 -0
- package/dist/components/agent/tokenLabel.js +18 -0
- package/dist/components/agent/tokenLabel.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/platformApiTypes.d.ts +36 -1
- package/dist/platformApiTypes.d.ts.map +1 -1
- package/package.json +6 -6
|
@@ -16,7 +16,8 @@ import { EntitySettingsLayout } from './settings/EntitySettingsLayout';
|
|
|
16
16
|
import { AgentOnboarding } from './AgentOnboarding';
|
|
17
17
|
import { isWideWorkbenchTab } from './AgentWorkbenchPanel';
|
|
18
18
|
import { PermissionDialog } from './PermissionDialog';
|
|
19
|
-
import {
|
|
19
|
+
import { runtimeEventSummary } from './runtimeEventSummary.js';
|
|
20
|
+
import { latestContextPressure } from './timelineContextPressure.js';
|
|
20
21
|
import { usePermissionStore } from '../../stores/permissionStore';
|
|
21
22
|
import { useAgentChatStore, loadLocalAgentConversations, projectConversationRuntimeEvents, } from '../../stores/agentChatStore';
|
|
22
23
|
import { useAgentIdeStore } from '../../stores/agentIdeStore';
|
|
@@ -796,12 +797,10 @@ function toEngineeringRuntimeEvents(response) {
|
|
|
796
797
|
if (!timeline)
|
|
797
798
|
return [];
|
|
798
799
|
return timeline.orderedEvents.map((entry) => {
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|| readOptionalString(entry.payload, 'checkpointId')
|
|
804
|
-
|| readOptionalString(entry.payload, 'toolName');
|
|
800
|
+
// ONE chain, shared with the cross-package gate. It used to live here inline while `test-kit`
|
|
801
|
+
// rebuilt it by hand — so the gate that exists to prove "every SPAWN signal renders" was
|
|
802
|
+
// asserting its own copy, and did not know about pressure at all.
|
|
803
|
+
const summary = runtimeEventSummary(entry);
|
|
805
804
|
return {
|
|
806
805
|
id: entry.id,
|
|
807
806
|
sequence: entry.sequence,
|
|
@@ -3114,7 +3113,7 @@ function waitForSubagentConversationResult(conversationId, timeoutMs) {
|
|
|
3114
3113
|
});
|
|
3115
3114
|
});
|
|
3116
3115
|
}
|
|
3117
|
-
export default function AgentInterface({ surface = 'embedded', windowControls, } = {}) {
|
|
3116
|
+
export default function AgentInterface({ surface = 'embedded', initialSdkSessionId, windowControls, } = {}) {
|
|
3118
3117
|
const [settingsPanel, setSettingsPanel] = useState(null);
|
|
3119
3118
|
const [sidebarCollapsed, setSidebarCollapsed] = useState(false);
|
|
3120
3119
|
const [folderPanelOpen, setFolderPanelOpen] = useState(false);
|
|
@@ -3166,6 +3165,11 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
3166
3165
|
const [engineeringCheckpointCompare, setEngineeringCheckpointCompare] = useState(null);
|
|
3167
3166
|
const [engineeringSessions, setEngineeringSessions] = useState([]);
|
|
3168
3167
|
const [engineeringRuntimeEvents, setEngineeringRuntimeEvents] = useState([]);
|
|
3168
|
+
/**
|
|
3169
|
+
* XENO SPAWN §15 step 3's pressure reading. It lives in `timeline.requests`, which the event
|
|
3170
|
+
* mapper discards — so without this the projection carried it and no surface ever showed it.
|
|
3171
|
+
*/
|
|
3172
|
+
const [engineeringContextPressure, setEngineeringContextPressure] = useState(null);
|
|
3169
3173
|
const [cliControlPlaneLoading, setCliControlPlaneLoading] = useState(false);
|
|
3170
3174
|
const [cliControlPlaneError, setCliControlPlaneError] = useState(null);
|
|
3171
3175
|
const [cliControlPlaneStatus, setCliControlPlaneStatus] = useState('idle');
|
|
@@ -3213,6 +3217,7 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
3213
3217
|
const [sessionTabsHydrated, setSessionTabsHydrated] = useState(false);
|
|
3214
3218
|
const sessionTabsRestoreAttemptedRef = useRef(false);
|
|
3215
3219
|
const editorStatusTimerRef = useRef(null);
|
|
3220
|
+
const initialSdkSessionHandledRef = useRef(false);
|
|
3216
3221
|
const terminalDraftSyncTimerRef = useRef(null);
|
|
3217
3222
|
const lastPersistedEditorStateRef = useRef('');
|
|
3218
3223
|
const codeAutoIndexKeyRef = useRef('');
|
|
@@ -3224,6 +3229,7 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
3224
3229
|
const addAgentApprovalRule = useWorkspaceStore(s => s.addAgentApprovalRule);
|
|
3225
3230
|
const conversations = useAgentChatStore(s => s.conversations);
|
|
3226
3231
|
const createConversation = useAgentChatStore(s => s.createConversation);
|
|
3232
|
+
const appendMessage = useAgentChatStore(s => s.appendMessage);
|
|
3227
3233
|
const updateConversation = useAgentChatStore(s => s.updateConversation);
|
|
3228
3234
|
const activeRuntimeRequestId = useAgentChatStore(s => s.activeRequestId);
|
|
3229
3235
|
const activeRuntimeConversationId = useAgentChatStore(s => s.activeConversationId);
|
|
@@ -3231,6 +3237,69 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
3231
3237
|
const setCenterPaneMode = useAgentIdeStore(s => s.setMode);
|
|
3232
3238
|
const setAgentIdeHasOpenFiles = useAgentIdeStore(s => s.setHasOpenFiles);
|
|
3233
3239
|
const authDisplayName = useAuthStore(s => s.user?.display_name);
|
|
3240
|
+
useEffect(() => {
|
|
3241
|
+
const sessionId = initialSdkSessionId?.trim();
|
|
3242
|
+
if (!sessionId || initialSdkSessionHandledRef.current)
|
|
3243
|
+
return;
|
|
3244
|
+
initialSdkSessionHandledRef.current = true;
|
|
3245
|
+
let cancelled = false;
|
|
3246
|
+
const openSdkSession = async () => {
|
|
3247
|
+
const state = useAgentChatStore.getState();
|
|
3248
|
+
const existing = Object.values(state.conversations).find((conversation) => (conversation.sessionUi?.sdkSessionId === sessionId));
|
|
3249
|
+
const conversationId = existing?.id || createConversation(MAIN_ASSISTANT_ID);
|
|
3250
|
+
setViewMode('inbox');
|
|
3251
|
+
setSelectedInboxConversationId(conversationId);
|
|
3252
|
+
const attach = getAgentPlatformBridge()?.agent?.attachSdkSession;
|
|
3253
|
+
if (!attach) {
|
|
3254
|
+
appendMessage(conversationId, {
|
|
3255
|
+
role: 'assistant',
|
|
3256
|
+
content: `Unable to resume SDK session ${sessionId}: the Agent host session bridge is unavailable.`,
|
|
3257
|
+
error: 'Agent host session bridge unavailable',
|
|
3258
|
+
hideToolbar: true,
|
|
3259
|
+
});
|
|
3260
|
+
return;
|
|
3261
|
+
}
|
|
3262
|
+
try {
|
|
3263
|
+
const result = await attach({ conversationId, sessionId });
|
|
3264
|
+
if (cancelled)
|
|
3265
|
+
return;
|
|
3266
|
+
if (!result.success) {
|
|
3267
|
+
const message = result.error || 'unknown host error';
|
|
3268
|
+
console.error(`[agent-interface] Unable to attach SDK session ${sessionId}: ${message}`);
|
|
3269
|
+
appendMessage(conversationId, {
|
|
3270
|
+
role: 'assistant',
|
|
3271
|
+
content: `Unable to resume SDK session ${sessionId}: ${message}`,
|
|
3272
|
+
error: message,
|
|
3273
|
+
hideToolbar: true,
|
|
3274
|
+
});
|
|
3275
|
+
return;
|
|
3276
|
+
}
|
|
3277
|
+
const current = useAgentChatStore.getState().getConversation(conversationId);
|
|
3278
|
+
updateConversation(conversationId, {
|
|
3279
|
+
sessionUi: {
|
|
3280
|
+
...(current?.sessionUi || {}),
|
|
3281
|
+
sdkSessionId: sessionId,
|
|
3282
|
+
sdkSessionDir: result.sessionDir,
|
|
3283
|
+
sdkSessionHistoryPath: result.sessionHistoryPath,
|
|
3284
|
+
},
|
|
3285
|
+
});
|
|
3286
|
+
}
|
|
3287
|
+
catch (error) {
|
|
3288
|
+
if (cancelled)
|
|
3289
|
+
return;
|
|
3290
|
+
const message = error instanceof Error ? error.message : 'unknown host error';
|
|
3291
|
+
console.error(`[agent-interface] Unable to attach SDK session ${sessionId}: ${message}`);
|
|
3292
|
+
appendMessage(conversationId, {
|
|
3293
|
+
role: 'assistant',
|
|
3294
|
+
content: `Unable to resume SDK session ${sessionId}: ${message}`,
|
|
3295
|
+
error: message,
|
|
3296
|
+
hideToolbar: true,
|
|
3297
|
+
});
|
|
3298
|
+
}
|
|
3299
|
+
};
|
|
3300
|
+
void openSdkSession();
|
|
3301
|
+
return () => { cancelled = true; };
|
|
3302
|
+
}, [appendMessage, createConversation, initialSdkSessionId, updateConversation]);
|
|
3234
3303
|
// Dynamic context for system prompt enrichment (fetched from main process)
|
|
3235
3304
|
const [runtimeContext, setRuntimeContext] = useState(null);
|
|
3236
3305
|
// Fetch runtime context on mount and every 60 seconds
|
|
@@ -3316,6 +3385,19 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
3316
3385
|
}, [activeConversation]);
|
|
3317
3386
|
const activeSessionUi = activeConversation?.sessionUi || {};
|
|
3318
3387
|
const workbenchPanelOpen = !!activeSessionUi.panelOpen;
|
|
3388
|
+
useEffect(() => {
|
|
3389
|
+
if (!activeConversationId)
|
|
3390
|
+
return;
|
|
3391
|
+
const conversation = useAgentChatStore.getState().getConversation(activeConversationId);
|
|
3392
|
+
if (!conversation?.sessionUi?.panelOpen)
|
|
3393
|
+
return;
|
|
3394
|
+
updateConversation(activeConversationId, {
|
|
3395
|
+
sessionUi: {
|
|
3396
|
+
...conversation.sessionUi,
|
|
3397
|
+
panelOpen: false,
|
|
3398
|
+
},
|
|
3399
|
+
});
|
|
3400
|
+
}, [activeConversationId, updateConversation]);
|
|
3319
3401
|
const workbenchPanelTab = activeSessionUi.panelTab || 'trace';
|
|
3320
3402
|
const selectedTraceMessageId = activeSessionUi.selectedTraceMessageId || null;
|
|
3321
3403
|
const terminalHistory = activeSessionUi.terminalHistory || [];
|
|
@@ -5119,6 +5201,14 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
5119
5201
|
activateSessionConversation(conversationId);
|
|
5120
5202
|
};
|
|
5121
5203
|
const handleOpenSettings = (panel) => {
|
|
5204
|
+
if (activeConversationId) {
|
|
5205
|
+
updateConversation(activeConversationId, {
|
|
5206
|
+
sessionUi: {
|
|
5207
|
+
...(useAgentChatStore.getState().getConversation(activeConversationId)?.sessionUi || {}),
|
|
5208
|
+
panelOpen: false,
|
|
5209
|
+
},
|
|
5210
|
+
});
|
|
5211
|
+
}
|
|
5122
5212
|
setSettingsPanel(panel);
|
|
5123
5213
|
setCenterPaneMode('agent');
|
|
5124
5214
|
};
|
|
@@ -5648,6 +5738,7 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
5648
5738
|
setEngineeringCheckpointCompare(null);
|
|
5649
5739
|
setEngineeringSessions([]);
|
|
5650
5740
|
setEngineeringRuntimeEvents([]);
|
|
5741
|
+
setEngineeringContextPressure(null);
|
|
5651
5742
|
}, [activeConversationId, codeWorkbenchRootDirectory]);
|
|
5652
5743
|
const handleEngineeringRefresh = useCallback(async () => {
|
|
5653
5744
|
if (!codeWorkbenchRootDirectory) {
|
|
@@ -5713,9 +5804,13 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
5713
5804
|
}
|
|
5714
5805
|
if (runtimeTimelineResult?.success) {
|
|
5715
5806
|
setEngineeringRuntimeEvents(toEngineeringRuntimeEvents(runtimeTimelineResult));
|
|
5807
|
+
// Read from `timeline.requests` rather than the flattened events — the mapper above drops
|
|
5808
|
+
// it, which is why this signal reached the projection and stopped there.
|
|
5809
|
+
setEngineeringContextPressure(latestContextPressure(runtimeTimelineResult.timeline));
|
|
5716
5810
|
}
|
|
5717
5811
|
else if (!activeConversationId) {
|
|
5718
5812
|
setEngineeringRuntimeEvents([]);
|
|
5813
|
+
setEngineeringContextPressure(null);
|
|
5719
5814
|
}
|
|
5720
5815
|
if (diagnosticsResult?.success) {
|
|
5721
5816
|
setEngineeringDiagnosticsSummary(diagnosticsResult.summary || null);
|
|
@@ -6865,9 +6960,11 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
6865
6960
|
checkpointCompare: engineeringCheckpointCompare,
|
|
6866
6961
|
sessions: engineeringSessions,
|
|
6867
6962
|
runtimeEvents: engineeringRuntimeEvents,
|
|
6963
|
+
contextPressure: engineeringContextPressure,
|
|
6868
6964
|
}), [
|
|
6869
6965
|
codeWorkbenchRootDirectory,
|
|
6870
6966
|
engineeringBackgroundRuns,
|
|
6967
|
+
engineeringContextPressure,
|
|
6871
6968
|
engineeringCheckpointCompare,
|
|
6872
6969
|
engineeringCheckpoints,
|
|
6873
6970
|
engineeringChecks,
|
|
@@ -7161,11 +7258,10 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
7161
7258
|
}, [openWorkspaceAcpAgents, selectedAgent, selectedAgentHierarchy]);
|
|
7162
7259
|
const handleSelectSidebarSettings = useCallback(() => {
|
|
7163
7260
|
if (activeConversationId) {
|
|
7164
|
-
|
|
7165
|
-
return;
|
|
7261
|
+
patchActiveConversationSessionUi({ panelOpen: false });
|
|
7166
7262
|
}
|
|
7167
7263
|
handleOpenActiveConversationSettings();
|
|
7168
|
-
}, [activeConversationId, handleOpenActiveConversationSettings,
|
|
7264
|
+
}, [activeConversationId, handleOpenActiveConversationSettings, patchActiveConversationSessionUi]);
|
|
7169
7265
|
const handleOpenActiveConversationAcpAgents = useCallback(() => {
|
|
7170
7266
|
void openWorkspaceAcpAgents(selectedAgentHierarchy?.workspace, 'Chat ACP agents');
|
|
7171
7267
|
}, [openWorkspaceAcpAgents, selectedAgentHierarchy?.workspace]);
|
|
@@ -7482,7 +7578,7 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
7482
7578
|
}, teamId: settingsPanel.teamId, teamName: teamForSettings?.name || settingsPanel.teamName, onClose: handleCloseSettings, onDelete: handleDeleteFromSettings }));
|
|
7483
7579
|
}
|
|
7484
7580
|
if (viewMode === 'inbox') {
|
|
7485
|
-
return (_jsx(React.Suspense, { fallback: _jsx("div", { className: "flex h-full items-center justify-center text-[12px] text-white/35", children: "Loading chat..." }), children: _jsx(AgentView, { agentId: MAIN_ASSISTANT_ID, conversationId: selectedInboxConversationId, isMainAssistant: true, agentName: MAIN_ASSISTANT_NAME, model: MAIN_ASSISTANT_MODEL, templateName: "Main Assistant", workspaceName: "All Workspaces", teamName: "Global", systemPrompt: enrichedMainSystemPromptWithCodeContext, capabilities: { terminal: true, fileRead: true, fileWrite: true, appLaunch: true }, permissionProfile: "standard", allowedDirectories: [], approvalRules: [], allowedApps: [], teamAgents: [], onCreateWorkspace: handleMainCreateWorkspace, onCreateTeam: handleMainCreateTeam, onCreateTeamAgent: handleMainCreateTeamAgent, onGetInboxWorkspaceOptions: handleGetInboxWorkspaceOptions, onBindInboxConversationToWorkspace: handleBindInboxConversationToWorkspace, onOpenReassignedConversation: handleOpenReassignedConversation, onOpenEditorPath: handleOpenEditorPath, onOpenEditorDiff: handleOpenEditorDiff, onPeekEditorPath: handlePeekEditorPath, onPeekEditorDiff: handlePeekEditorDiff, renderWorkbenchPanel: false, onConversationCreated: activateSessionConversation }) }));
|
|
7581
|
+
return (_jsx(React.Suspense, { fallback: _jsx("div", { className: "flex h-full items-center justify-center text-[12px] text-white/35", children: "Loading chat..." }), children: _jsx(AgentView, { agentId: MAIN_ASSISTANT_ID, conversationId: selectedInboxConversationId, isMainAssistant: true, agentName: MAIN_ASSISTANT_NAME, model: MAIN_ASSISTANT_MODEL, templateName: "Main Assistant", workspaceName: "All Workspaces", teamName: "Global", systemPrompt: enrichedMainSystemPromptWithCodeContext, capabilities: { terminal: true, fileRead: true, fileWrite: true, appLaunch: true }, permissionProfile: "standard", allowedDirectories: [], approvalRules: [], allowedApps: [], teamAgents: [], onCreateWorkspace: handleMainCreateWorkspace, onCreateTeam: handleMainCreateTeam, onCreateTeamAgent: handleMainCreateTeamAgent, onGetInboxWorkspaceOptions: handleGetInboxWorkspaceOptions, onBindInboxConversationToWorkspace: handleBindInboxConversationToWorkspace, onOpenReassignedConversation: handleOpenReassignedConversation, onOpenEditorPath: handleOpenEditorPath, onOpenEditorDiff: handleOpenEditorDiff, onPeekEditorPath: handlePeekEditorPath, onPeekEditorDiff: handlePeekEditorDiff, renderWorkbenchPanel: false, onOpenConversationSettings: handleSelectSidebarSettings, onConversationCreated: activateSessionConversation }) }));
|
|
7486
7582
|
}
|
|
7487
7583
|
// If an agent is selected, show the chat view.
|
|
7488
7584
|
// Conversation is created lazily on first message send.
|
|
@@ -7545,7 +7641,7 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
7545
7641
|
selectedBy: 'user'
|
|
7546
7642
|
}
|
|
7547
7643
|
});
|
|
7548
|
-
}, renderWorkbenchPanel: false, onConversationCreated: activateSessionConversation }) }));
|
|
7644
|
+
}, renderWorkbenchPanel: false, onOpenConversationSettings: handleSelectSidebarSettings, onConversationCreated: activateSessionConversation }) }));
|
|
7549
7645
|
}
|
|
7550
7646
|
// Plugins view
|
|
7551
7647
|
if (viewMode === 'plugins') {
|
|
@@ -7572,7 +7668,7 @@ export default function AgentInterface({ surface = 'embedded', windowControls, }
|
|
|
7572
7668
|
: 'bg-transparent hover:bg-white/[0.055] text-white/35 hover:text-white/60'}`, children: "Panel" }) })] }), _jsx("div", { className: "flex-1 min-h-0 flex flex-col overflow-hidden", children: _jsx(React.Suspense, { fallback: _jsx(WorkbenchLoadingSkeleton, { title: "Loading editor", subtitle: "Preparing editor workbench." }), children: activeEditorDiff ? (_jsx(MonacoDiffWorkbenchEditor, { diff: activeEditorDiff, rootDirectory: activeConversation?.rootDirectory || null, layoutKey: editorLayoutKey, statusMessage: editorStatusMessage, onOpenFile: handleOpenEditorPath })) : (_jsx(MonacoWorkbenchEditor, { file: activeEditorFile, pendingFilePath: pendingEditorPath, rootDirectory: activeConversation?.rootDirectory || null, openFilePaths: openEditorFiles.map((file) => file.path), layoutKey: editorLayoutKey, statusMessage: editorStatusMessage, onChangeFile: handleEditorContentChange, onSaveFile: handleSaveEditorFile, onRevertFile: handleRevertEditorFile })) }) })] })] }))
|
|
7573
7669
|
: centerPaneMode === 'editor'
|
|
7574
7670
|
? (_jsx(React.Suspense, { fallback: _jsx(WorkbenchLoadingSkeleton, { title: "Loading editor", subtitle: "Preparing editor workbench." }), children: activeEditorDiff ? (_jsx(MonacoDiffWorkbenchEditor, { diff: activeEditorDiff, rootDirectory: activeConversation?.rootDirectory || null, layoutKey: editorLayoutKey, statusMessage: editorStatusMessage, onOpenFile: handleOpenEditorPath })) : (_jsx(MonacoWorkbenchEditor, { file: activeEditorFile, pendingFilePath: pendingEditorPath, rootDirectory: activeConversation?.rootDirectory || null, openFilePaths: openEditorFiles.map((file) => file.path), layoutKey: editorLayoutKey, statusMessage: editorStatusMessage, onChangeFile: handleEditorContentChange, onSaveFile: handleSaveEditorFile, onRevertFile: handleRevertEditorFile })) }))
|
|
7575
|
-
: renderContent() }), activeConversationId && workbenchPanelOpen && (_jsx("div", { className: "px-6 pb-5", children: _jsx("div", { className: `w-full mx-auto ${isWideWorkbenchTab(workbenchPanelTab) ? 'max-w-[1120px]' : 'max-w-[820px]'}`, children: _jsx(React.Suspense, { fallback: _jsx(WorkbenchLoadingSkeleton, { title: "Loading workbench", subtitle: "Preparing trace and support panels." }), children: _jsx(AgentWorkbenchPanel, { tab: workbenchPanelTab,
|
|
7671
|
+
: renderContent() }), activeConversationId && workbenchPanelOpen && !settingsPanel && (_jsx("div", { className: "px-6 pb-5", children: _jsx("div", { className: `w-full mx-auto ${isWideWorkbenchTab(workbenchPanelTab) ? 'max-w-[1120px]' : 'max-w-[820px]'}`, children: _jsx(React.Suspense, { fallback: _jsx(WorkbenchLoadingSkeleton, { title: "Loading workbench", subtitle: "Preparing trace and support panels." }), children: _jsx(AgentWorkbenchPanel, { tab: workbenchPanelTab,
|
|
7576
7672
|
/* The host's default `resolveRunId` is
|
|
7577
7673
|
`subagentRunId ?? conversationId`, so the conversation id
|
|
7578
7674
|
IS the run id here. Passing anything else would ask the
|