@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.
Files changed (54) hide show
  1. package/dist/adapters/agentHostPlatformBridge.d.ts.map +1 -1
  2. package/dist/adapters/agentHostPlatformBridge.js +78 -4
  3. package/dist/adapters/agentHostPlatformBridge.js.map +1 -1
  4. package/dist/components/agent/AgentInterface.d.ts +2 -1
  5. package/dist/components/agent/AgentInterface.d.ts.map +1 -1
  6. package/dist/components/agent/AgentInterface.js +110 -14
  7. package/dist/components/agent/AgentInterface.js.map +1 -1
  8. package/dist/components/agent/AgentView.d.ts +1 -0
  9. package/dist/components/agent/AgentView.d.ts.map +1 -1
  10. package/dist/components/agent/AgentView.js +57 -47
  11. package/dist/components/agent/AgentView.js.map +1 -1
  12. package/dist/components/agent/AgentWorkbenchPanel.d.ts +3 -0
  13. package/dist/components/agent/AgentWorkbenchPanel.d.ts.map +1 -1
  14. package/dist/components/agent/AgentWorkbenchPanel.js +2 -1
  15. package/dist/components/agent/AgentWorkbenchPanel.js.map +1 -1
  16. package/dist/components/agent/FleetPanel.d.ts.map +1 -1
  17. package/dist/components/agent/FleetPanel.js +7 -1
  18. package/dist/components/agent/FleetPanel.js.map +1 -1
  19. package/dist/components/agent/RunReviewPanel.d.ts.map +1 -1
  20. package/dist/components/agent/RunReviewPanel.js +2 -2
  21. package/dist/components/agent/RunReviewPanel.js.map +1 -1
  22. package/dist/components/agent/SessionsPanel.d.ts.map +1 -1
  23. package/dist/components/agent/SessionsPanel.js +85 -5
  24. package/dist/components/agent/SessionsPanel.js.map +1 -1
  25. package/dist/components/agent/compactionSummary.d.ts +0 -23
  26. package/dist/components/agent/compactionSummary.d.ts.map +1 -1
  27. package/dist/components/agent/compactionSummary.js +145 -3
  28. package/dist/components/agent/compactionSummary.js.map +1 -1
  29. package/dist/components/agent/injectionSummary.d.ts +37 -0
  30. package/dist/components/agent/injectionSummary.d.ts.map +1 -0
  31. package/dist/components/agent/injectionSummary.js +49 -0
  32. package/dist/components/agent/injectionSummary.js.map +1 -0
  33. package/dist/components/agent/runtimeEventSummary.d.ts +61 -0
  34. package/dist/components/agent/runtimeEventSummary.d.ts.map +1 -0
  35. package/dist/components/agent/runtimeEventSummary.js +112 -0
  36. package/dist/components/agent/runtimeEventSummary.js.map +1 -0
  37. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.d.ts.map +1 -1
  38. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js +27 -1
  39. package/dist/components/agent/settings/sections/AgentPermissionRulesPanel.js.map +1 -1
  40. package/dist/components/agent/timelineContextPressure.d.ts +62 -0
  41. package/dist/components/agent/timelineContextPressure.d.ts.map +1 -0
  42. package/dist/components/agent/timelineContextPressure.js +104 -0
  43. package/dist/components/agent/timelineContextPressure.js.map +1 -0
  44. package/dist/components/agent/tokenLabel.d.ts +14 -0
  45. package/dist/components/agent/tokenLabel.d.ts.map +1 -0
  46. package/dist/components/agent/tokenLabel.js +18 -0
  47. package/dist/components/agent/tokenLabel.js.map +1 -0
  48. package/dist/index.d.ts +17 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +17 -0
  51. package/dist/index.js.map +1 -1
  52. package/dist/platformApiTypes.d.ts +36 -1
  53. package/dist/platformApiTypes.d.ts.map +1 -1
  54. package/package.json +6 -6
@@ -133,6 +133,7 @@ interface AgentViewProps {
133
133
  onPeekEditorPath?: (path: string) => void;
134
134
  onPeekEditorDiff?: (diff: ConversationEditorDiff) => void;
135
135
  onOpenRuntimeSettings?: () => void;
136
+ onOpenConversationSettings?: () => void;
136
137
  onSelectSdkRuntime?: () => void;
137
138
  onSelectAcpRuntime?: (acpAgentConfigId?: string, providerModel?: string) => void;
138
139
  onConversationCreated?: (conversationId: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"AgentView.d.ts","sourceRoot":"","sources":["../../../src/components/agent/AgentView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AgentView.d.ts","sourceRoot":"","sources":["../../../src/components/agent/AgentView.tsx"],"names":[],"mappings":"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"}
@@ -3948,6 +3948,41 @@ export function AgentView(props) {
3948
3948
  return { pending, inProgress, blocked, completed, total: conversationTasks.length };
3949
3949
  }, [conversationTasks]);
3950
3950
  const sessionPanelOpen = !!sessionUi?.panelOpen;
3951
+ const [sessionDrawerOpen, setSessionDrawerOpen] = useState(false);
3952
+ const [devSessionOpen, setDevSessionOpen] = useState(() => {
3953
+ try {
3954
+ return window.sessionStorage.getItem('xeno-agent-dev-session') === '1';
3955
+ }
3956
+ catch {
3957
+ return false;
3958
+ }
3959
+ });
3960
+ const toggleDevSession = useCallback(() => {
3961
+ setDevSessionOpen((open) => {
3962
+ const next = !open;
3963
+ try {
3964
+ window.sessionStorage.setItem('xeno-agent-dev-session', next ? '1' : '0');
3965
+ }
3966
+ catch {
3967
+ // sessionStorage can be unavailable in locked-down previews
3968
+ }
3969
+ return next;
3970
+ });
3971
+ }, []);
3972
+ useEffect(() => {
3973
+ const onKeyDown = (event) => {
3974
+ if (event.repeat || event.altKey)
3975
+ return;
3976
+ if (!(event.ctrlKey || event.metaKey) || !event.shiftKey)
3977
+ return;
3978
+ if (event.key.toLowerCase() !== 'd')
3979
+ return;
3980
+ event.preventDefault();
3981
+ toggleDevSession();
3982
+ };
3983
+ window.addEventListener('keydown', onKeyDown);
3984
+ return () => window.removeEventListener('keydown', onKeyDown);
3985
+ }, [toggleDevSession]);
3951
3986
  const sessionPanelTab = sessionUi?.panelTab || 'trace';
3952
3987
  const selectedTraceMessageId = sessionUi?.selectedTraceMessageId;
3953
3988
  const tasksCollapsed = !!sessionUi?.tasksCollapsed;
@@ -4009,30 +4044,26 @@ export function AgentView(props) {
4009
4044
  });
4010
4045
  }, [conversationId, actualModelId, messages.length, conversationGrantedDirectories, effectiveAllowedDirectories]);
4011
4046
  useEffect(() => {
4012
- if (!sessionPanelOpen)
4047
+ setSessionDrawerOpen(false);
4048
+ }, [conversationId]);
4049
+ useEffect(() => {
4050
+ if (!sessionDrawerOpen)
4013
4051
  return;
4014
4052
  const handleClick = (event) => {
4015
4053
  const target = event.target;
4016
4054
  if (sessionPanelRef.current?.contains(target))
4017
4055
  return;
4018
- if (!conversationId)
4019
- return;
4020
- updateConversation(conversationId, {
4021
- sessionUi: {
4022
- ...(conversation?.sessionUi || {}),
4023
- panelOpen: false
4024
- }
4025
- });
4056
+ setSessionDrawerOpen(false);
4026
4057
  };
4027
4058
  const timer = window.setTimeout(() => document.addEventListener('mousedown', handleClick), 0);
4028
4059
  return () => {
4029
4060
  window.clearTimeout(timer);
4030
4061
  document.removeEventListener('mousedown', handleClick);
4031
4062
  };
4032
- }, [conversation?.sessionUi, conversationId, sessionPanelOpen, updateConversation]);
4063
+ }, [sessionDrawerOpen]);
4033
4064
  useEffect(() => {
4034
4065
  const sessionId = sessionUi?.sdkSessionId;
4035
- if (!sessionPanelOpen || !sessionId || !getAgentPlatformBridge()?.agent?.listSdkCheckpoints) {
4066
+ if (!sessionDrawerOpen || !sessionId || !getAgentPlatformBridge()?.agent?.listSdkCheckpoints) {
4036
4067
  setSdkCheckpoints([]);
4037
4068
  return;
4038
4069
  }
@@ -4059,7 +4090,7 @@ export function AgentView(props) {
4059
4090
  return () => {
4060
4091
  cancelled = true;
4061
4092
  };
4062
- }, [sessionPanelOpen, sessionUi?.sdkSessionId]);
4093
+ }, [sessionDrawerOpen, sessionUi?.sdkSessionId]);
4063
4094
  const loadSdkSessions = useCallback(async () => {
4064
4095
  if (!getAgentPlatformBridge()?.agent?.listSdkSessions)
4065
4096
  return;
@@ -4087,10 +4118,10 @@ export function AgentView(props) {
4087
4118
  }
4088
4119
  }, [sdkSessionWorkingDirectory]);
4089
4120
  useEffect(() => {
4090
- if (!sessionPanelOpen)
4121
+ if (!sessionDrawerOpen)
4091
4122
  return;
4092
4123
  void loadSdkSessions();
4093
- }, [loadSdkSessions, sessionPanelOpen]);
4124
+ }, [loadSdkSessions, sessionDrawerOpen]);
4094
4125
  useEffect(() => {
4095
4126
  const node = footerDockRef.current;
4096
4127
  if (!node)
@@ -6402,11 +6433,11 @@ export function AgentView(props) {
6402
6433
  });
6403
6434
  try {
6404
6435
  await copyTextWithFallback(snapshot);
6405
- setToolStatus(mode === 'full' ? 'Full debug snapshot copied.' : 'Debug snapshot copied.');
6436
+ setToolStatus(mode === 'full' ? 'Full support report copied.' : 'Support report copied.');
6406
6437
  }
6407
6438
  catch (error) {
6408
6439
  console.error('[AgentView] Failed to copy debug snapshot', error);
6409
- setToolStatus('Failed to copy debug snapshot.');
6440
+ setToolStatus('Failed to copy support report.');
6410
6441
  }
6411
6442
  }, [
6412
6443
  actualModelId,
@@ -6893,35 +6924,7 @@ export function AgentView(props) {
6893
6924
  terminalDraftInput,
6894
6925
  updateConversation,
6895
6926
  ]);
6896
- return (_jsxs("div", { className: "xeno-app-shell flex-1 relative min-h-0", children: [_jsx("div", { ref: messagesScrollRef, className: "agent-scrollbar absolute inset-0 overflow-auto pr-1.5", style: { scrollbarGutter: 'stable' }, children: conversationHydrating ? (_jsx(ConversationLoadingSkeleton, {})) : (_jsxs("div", { className: "w-full max-w-[820px] mx-auto px-6 pt-6 min-h-full flex flex-col gap-1.5", style: { paddingBottom: messageViewportBottomPadding }, children: [conversation && (_jsx("div", { className: "sticky top-2 z-[20] -mx-1 px-1 pb-2", children: _jsxs("div", { className: "xeno-border-subtle rounded-[6px] border bg-[#111111] px-3 py-2 flex items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-3 min-w-0 flex-wrap", children: [_jsx("span", { className: `text-[10px] uppercase tracking-[0.14em] ${sessionStatusClassName}`, children: sessionStatusLabel }), _jsxs("span", { className: "text-[10px] text-white/24 tabular-nums", children: [pendingTurns.length, " queued"] }), _jsxs("span", { className: "text-[10px] text-white/24 tabular-nums", children: [checkpoints.length, " checkpoints"] }), _jsxs("span", { className: "text-[10px] text-white/18", children: ["Last active ", new Date(conversation.lastMessageAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })] })] }), _jsxs("div", { ref: sessionPanelRef, className: "relative flex items-center gap-1.5 flex-shrink-0", children: [_jsxs("button", { onClick: () => { void handleCopyDebugSnapshot('standard'); }, disabled: !conversationId || conversationHydrating, className: "h-7 px-2.5 rounded-[4px] bg-white/[0.05] hover:bg-white/[0.08] text-[10px] text-white/55 hover:text-white/78 transition-colors disabled:opacity-35 inline-flex items-center gap-1.5", title: "Copy readable debug snapshot", children: [_jsx(Copy, { className: "w-3 h-3" }), "Copy debug"] }), _jsx("button", { onClick: () => { void handleCopyDebugSnapshot('full'); }, disabled: !conversationId || conversationHydrating, className: "h-7 px-2.5 rounded-[4px] bg-white/[0.05] hover:bg-white/[0.08] text-[10px] text-white/45 hover:text-white/72 transition-colors disabled:opacity-35 inline-flex items-center gap-1.5", title: "Copy full redacted debug snapshot", children: "Full debug" }), _jsx("button", { onClick: handleCreateCheckpoint, disabled: isBusy || !conversationId, className: "h-7 px-2.5 rounded-[4px] bg-white/[0.05] hover:bg-white/[0.08] text-[10px] text-white/55 hover:text-white/78 transition-colors disabled:opacity-35", children: "Create checkpoint" }), _jsx("button", { onClick: () => patchSessionUi({ panelOpen: !sessionPanelOpen }), className: "h-7 px-2.5 rounded-[4px] bg-white/[0.05] hover:bg-white/[0.08] text-[10px] text-white/55 hover:text-white/78 transition-colors", children: "Session" }), sessionPanelOpen && (_jsxs("div", { className: "xeno-panel-shell xeno-border-subtle absolute right-0 top-[calc(100%+8px)] w-[360px] rounded-[6px] border shadow-[0_18px_50px_rgba(0,0,0,0.2)] overflow-hidden", children: [_jsxs("div", { className: "xeno-border-subtle px-3 py-2 border-b", children: [_jsx("p", { className: "text-[11px] xeno-text-secondary", children: "Session" }), _jsx("p", { className: "text-[10px] xeno-text-faint mt-0.5", children: "Checkpoints and queued turns for this conversation." })] }), _jsxs("div", { className: "xeno-border-subtle px-3 py-2 border-b", children: [_jsxs("div", { className: "flex items-center justify-between mb-2", children: [_jsx("p", { className: "text-[10px] uppercase tracking-[0.14em] text-white/26", children: "Queued" }), _jsx("span", { className: "text-[10px] text-white/18 tabular-nums", children: pendingTurns.length })] }), pendingTurns.length === 0 ? (_jsx("p", { className: "text-[11px] text-white/28", children: "No queued messages." })) : (_jsx("div", { className: "space-y-1.5 max-h-[180px] overflow-y-auto pr-1", children: pendingTurns.map((turn) => (_jsx("div", { className: "xeno-elevated-shell xeno-border-subtle rounded-[4px] border px-2.5 py-2", children: _jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "text-[11px] text-white/70 line-clamp-2", children: turn.content }), _jsx("p", { className: "text-[10px] text-white/22 mt-1", children: new Date(turn.queuedAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) })] }), _jsx("button", { onClick: () => handleRemoveQueuedConversationTurn(turn.id), className: "text-[10px] text-white/30 hover:text-white/65 transition-colors", title: "Remove queued message", children: "Remove" })] }) }, turn.id))) }))] }), _jsxs("div", { className: "xeno-border-subtle px-3 py-2 border-b", children: [_jsxs("div", { className: "flex items-center justify-between mb-2", children: [_jsx("p", { className: "text-[10px] uppercase tracking-[0.14em] text-white/26", children: "SDK Runtime" }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsxs("span", { className: "text-[10px] text-white/18 tabular-nums", children: [backgroundTasks.length, " bg"] }), _jsx("button", { type: "button", onClick: () => { void loadSdkSessions(); }, disabled: sdkSessionsLoading, className: "rounded-[3px] border border-white/[0.05] bg-white/[0.03] px-1.5 py-0.5 text-[10px] text-white/35 transition-colors hover:bg-white/[0.07] hover:text-white/65 disabled:opacity-35", title: "Refresh SDK sessions", children: "Refresh" }), _jsx("button", { type: "button", onClick: () => { void handleRepairRuntimeEventLog(); }, disabled: isBusy || !conversationId || !getAgentPlatformBridge()?.runtimeEvents?.repair, className: "rounded-[3px] border border-white/[0.05] bg-white/[0.03] px-1.5 py-0.5 text-[10px] text-white/28 transition-colors hover:bg-white/[0.07] hover:text-white/62 disabled:opacity-25", title: "Repair and reload this conversation's durable runtime event log", children: "Repair log" })] })] }), sessionUi?.sdkSessionId ? (_jsxs("div", { className: "space-y-1.5", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("p", { className: "truncate font-mono text-[10px] text-white/40", title: sessionUi.sdkSessionId, children: sessionUi.sdkSessionId }), _jsx("button", { type: "button", disabled: isBusy, onClick: () => { void handleDetachSdkSession(); }, className: "shrink-0 text-[10px] text-white/28 transition-colors hover:text-white/62 disabled:opacity-30", children: "Detach" })] }), sessionUi.sdkSessionDir && (_jsx("p", { className: "truncate text-[10px] text-white/20", title: sessionUi.sdkSessionDir, children: sessionUi.sdkSessionDir }))] })) : (_jsx("p", { className: "text-[11px] text-white/28", children: "No SDK session has been attached yet." })), sdkSessionStatus && (_jsx("p", { className: "mt-1.5 text-[10px] text-white/28", children: sdkSessionStatus })), latestRuntimePermissionProfile && (_jsxs("div", { className: "mt-2 rounded-[4px] border border-white/[0.04] bg-white/[0.025] px-2 py-1.5", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("span", { className: "text-[10px] uppercase tracking-[0.14em] text-white/22", children: "Permission profile" }), _jsx("span", { className: "text-[10px] text-white/18", children: typeof latestRuntimePermissionProfile.timestamp === 'string'
6897
- ? new Date(latestRuntimePermissionProfile.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })
6898
- : 'runtime' })] }), _jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "rounded-[3px] bg-white/[0.04] px-1.5 py-0.5 text-[10px] text-white/52", children: getRuntimeEventString(latestRuntimePermissionProfile, 'profile') || 'unknown' }), _jsxs("span", { className: "text-[10px] text-white/26", children: ["SDK ", getRuntimeEventString(latestRuntimePermissionProfile, 'sdkMode') || 'unknown'] }), typeof latestRuntimePermissionProfile.ruleCount === 'number' && (_jsxs("span", { className: "text-[10px] text-white/18 tabular-nums", children: [latestRuntimePermissionProfile.ruleCount, " rules"] })), typeof latestRuntimePermissionProfile.allowedDirectoriesCount === 'number' && (_jsxs("span", { className: "text-[10px] text-white/18 tabular-nums", children: [latestRuntimePermissionProfile.allowedDirectoriesCount, " dirs"] }))] })] })), sdkSessions.length > 0 && (_jsxs("div", { className: "mt-2 rounded-[4px] border border-white/[0.04] bg-black/10", children: [_jsxs("div", { className: "flex items-center justify-between gap-2 border-b border-white/[0.04] px-2 py-1.5", children: [_jsx("p", { className: "text-[10px] uppercase tracking-[0.14em] text-white/22", children: "Available sessions" }), _jsx("button", { type: "button", disabled: !sdkSessionWorkingDirectory || isBusy, onClick: () => { void handleCleanSdkSessions(); }, className: "text-[10px] text-white/24 transition-colors hover:text-white/55 disabled:opacity-25", children: "Clean old" })] }), _jsx("div", { className: "max-h-[170px] overflow-y-auto pr-1", children: sdkSessions.slice(0, 8).map((session) => {
6899
- const id = typeof session.id === 'string' ? session.id : '';
6900
- if (!id)
6901
- return null;
6902
- const status = typeof session.status === 'string' ? session.status : 'unknown';
6903
- const modelName = typeof session.model === 'string' ? session.model : '';
6904
- const messageCount = typeof session.messageCount === 'number' ? session.messageCount : null;
6905
- const lastActivity = typeof session.lastActivity === 'string' ? session.lastActivity : '';
6906
- const isAttached = id === sessionUi?.sdkSessionId;
6907
- return (_jsx("div", { className: "border-b border-white/[0.035] px-2 py-1.5 last:border-b-0", children: _jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: `truncate font-mono text-[10px] ${isAttached ? 'text-emerald-200/58' : 'text-white/42'}`, title: id, children: id }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-2", children: [_jsx("span", { className: "text-[10px] text-white/18", children: status }), modelName && _jsx("span", { className: "max-w-[120px] truncate text-[10px] text-white/18", children: modelName }), messageCount !== null && _jsxs("span", { className: "text-[10px] text-white/18 tabular-nums", children: [messageCount, " msgs"] }), lastActivity && _jsx("span", { className: "text-[10px] text-white/18", children: new Date(lastActivity).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) })] })] }), _jsxs("div", { className: "flex shrink-0 items-center gap-1.5", children: [!isAttached && (_jsx("button", { type: "button", disabled: isBusy, onClick: () => { void handleAttachSdkSession(id); }, className: "text-[10px] text-white/38 transition-colors hover:text-white/75 disabled:opacity-30", children: "Attach" })), _jsx("button", { type: "button", disabled: isBusy || isAttached, onClick: () => { void handleDeleteSdkSession(id); }, className: "text-[10px] text-white/20 transition-colors hover:text-rose-200/62 disabled:opacity-20", children: "Delete" })] })] }) }, id));
6908
- }) })] })), sdkCheckpoints.length > 0 && (_jsx("div", { className: "mt-2 space-y-1.5 max-h-[150px] overflow-y-auto pr-1", children: sdkCheckpoints.slice(0, 5).map((checkpoint) => {
6909
- const id = typeof checkpoint.id === 'string' ? checkpoint.id : '';
6910
- const description = typeof checkpoint.description === 'string' ? checkpoint.description : 'SDK checkpoint';
6911
- const createdAt = typeof checkpoint.createdAt === 'string' ? checkpoint.createdAt : '';
6912
- const messageCount = typeof checkpoint.messageCount === 'number' ? checkpoint.messageCount : null;
6913
- if (!id)
6914
- return null;
6915
- return (_jsx("div", { className: "rounded-[4px] border border-white/[0.04] bg-white/[0.025] px-2 py-1.5", children: _jsxs("div", { className: "flex items-start justify-between gap-2", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "truncate text-[10px] text-white/48", title: description, children: description }), _jsxs("div", { className: "mt-0.5 flex items-center gap-2", children: [createdAt && _jsx("span", { className: "text-[10px] text-white/18", children: new Date(createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) }), messageCount !== null && _jsxs("span", { className: "text-[10px] text-white/18 tabular-nums", children: [messageCount, " msgs"] })] })] }), _jsx("button", { type: "button", disabled: isBusy, onClick: () => { void handleRestoreSdkCheckpoint(id); }, className: "text-[10px] text-white/42 hover:text-white/75 transition-colors disabled:opacity-30", children: "Restore SDK" })] }) }, id));
6916
- }) })), runtimeCheckpointEvents.length > 0 && (_jsxs("div", { className: "mt-2 rounded-[4px] border border-white/[0.04] bg-black/10", children: [_jsxs("div", { className: "flex items-center justify-between gap-2 border-b border-white/[0.04] px-2 py-1.5", children: [_jsx("p", { className: "text-[10px] uppercase tracking-[0.14em] text-white/22", children: "Runtime checkpoint events" }), _jsx("span", { className: "text-[10px] text-white/18 tabular-nums", children: runtimeCheckpointEvents.length })] }), _jsx("div", { className: "max-h-[130px] overflow-y-auto pr-1", children: runtimeCheckpointEvents.slice(-5).reverse().map((event, index) => {
6917
- const checkpointId = getRuntimeEventString(event, 'checkpointId') || `checkpoint-${index}`;
6918
- const toolName = getRuntimeEventString(event, 'toolName') || 'tool';
6919
- return (_jsxs("div", { className: "border-b border-white/[0.035] px-2 py-1.5 last:border-b-0", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("p", { className: "truncate font-mono text-[10px] text-white/42", title: checkpointId, children: checkpointId }), _jsx("span", { className: "text-[10px] text-white/18", children: toolName })] }), _jsxs("div", { className: "mt-0.5 flex flex-wrap items-center gap-2", children: [typeof event.timestamp === 'string' && (_jsx("span", { className: "text-[10px] text-white/18", children: new Date(event.timestamp).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) })), typeof event.messageCount === 'number' && (_jsxs("span", { className: "text-[10px] text-white/18 tabular-nums", children: [event.messageCount, " msgs"] })), typeof event.path === 'string' && (_jsx("span", { className: "max-w-[170px] truncate text-[10px] text-white/18", title: event.path, children: event.path }))] })] }, `${checkpointId}-${event.id || index}`));
6920
- }) })] })), backgroundTasks.length > 0 && (_jsx("div", { className: "mt-2 space-y-1.5 max-h-[190px] overflow-y-auto pr-1", children: backgroundTasks.slice(0, 5).map((task) => (_jsxs("div", { className: "rounded-[4px] border border-white/[0.04] bg-white/[0.025] px-2 py-1.5", children: [_jsxs("div", { className: "flex items-center justify-between gap-2", children: [_jsx("p", { className: "truncate font-mono text-[10px] text-white/48", title: task.taskId, children: task.taskId }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("span", { className: `text-[10px] uppercase tracking-[0.12em] ${task.status === 'running' ? 'text-emerald-300/55' :
6921
- task.status === 'stopped' ? 'text-amber-300/55' :
6922
- task.status === 'failed' ? 'text-rose-300/55' :
6923
- task.status === 'completed' ? 'text-sky-200/50' :
6924
- 'text-white/25'}`, children: task.status }), _jsx("button", { type: "button", disabled: !!backgroundTaskBusy[task.taskId], onClick: () => { void handleReadBackgroundTask(task); }, className: "text-[10px] text-white/28 transition-colors hover:text-white/62 disabled:opacity-25", children: backgroundTaskBusy[task.taskId] === 'output' ? 'Reading' : 'Output' }), task.status === 'running' && (_jsx("button", { type: "button", disabled: !!backgroundTaskBusy[task.taskId], onClick: () => { void handleStopBackgroundTask(task); }, className: "text-[10px] text-white/22 transition-colors hover:text-amber-200/70 disabled:opacity-25", children: backgroundTaskBusy[task.taskId] === 'stop' ? 'Stopping' : 'Stop' }))] })] }), task.command && (_jsx("p", { className: "mt-1 truncate text-[10px] text-white/28", title: task.command, children: task.command })), _jsxs("div", { className: "mt-1 flex flex-wrap items-center gap-2", children: [typeof task.totalSize === 'number' && _jsxs("span", { className: "text-[10px] text-white/16 tabular-nums", children: [task.totalSize, " bytes"] }), typeof task.exitCode === 'number' && _jsxs("span", { className: "text-[10px] text-white/16 tabular-nums", children: ["exit ", task.exitCode] })] }), task.lastOutput && (_jsx("pre", { className: "mt-1 max-h-[92px] overflow-auto whitespace-pre-wrap rounded-[3px] bg-black/20 p-1.5 font-mono text-[10px] leading-3 text-white/26", children: task.lastOutput }))] }, task.taskId))) }))] }), _jsxs("div", { className: "px-3 py-2", children: [_jsxs("div", { className: "flex items-center justify-between mb-2", children: [_jsx("p", { className: "text-[10px] uppercase tracking-[0.14em] text-white/26", children: "Checkpoints" }), _jsx("span", { className: "text-[10px] text-white/18 tabular-nums", children: checkpoints.length })] }), checkpoints.length === 0 ? (_jsx("p", { className: "text-[11px] text-white/28", children: "No checkpoints yet." })) : (_jsx("div", { className: "space-y-1.5 max-h-[260px] overflow-y-auto pr-1", children: checkpoints.map((checkpoint) => (_jsx("div", { className: "xeno-elevated-shell xeno-border-subtle rounded-[4px] border px-2.5 py-2", children: _jsxs("div", { className: "flex items-start justify-between gap-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("p", { className: "text-[11px] text-white/72 truncate", children: checkpoint.name }), _jsxs("div", { className: "flex items-center gap-2 mt-1 flex-wrap", children: [_jsx("span", { className: "text-[10px] text-white/18", children: new Date(checkpoint.createdAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' }) }), _jsxs("span", { className: "text-[10px] text-white/18 tabular-nums", children: [checkpoint.messageCount, " msgs"] }), _jsxs("span", { className: "text-[10px] text-white/18 tabular-nums", children: [checkpoint.editorTabCount, " tabs"] }), _jsx("span", { className: "text-[10px] text-white/18", children: checkpoint.source === 'restore' ? 'restore point' : 'manual' })] })] }), _jsxs("div", { className: "flex items-center gap-1.5", children: [_jsx("button", { onClick: () => handleRestoreConversationCheckpoint(checkpoint.id), disabled: isBusy, className: "text-[10px] text-white/45 hover:text-white/78 transition-colors disabled:opacity-30", title: "Restore checkpoint", children: "Restore" }), _jsx("button", { onClick: () => handleDeleteCheckpoint(checkpoint.id), className: "text-[10px] text-white/25 hover:text-white/58 transition-colors", title: "Delete checkpoint", children: "Delete" })] })] }) }, checkpoint.id))) }))] })] }))] })] }) })), runtimeProjectedMessages.length === 0 && (_jsx("div", { className: "flex-1 flex items-center justify-center pt-[20vh]", children: _jsxs("p", { className: "text-[13px] text-white/20", children: ["Message ", agentName, " to get started"] }) })), runtimeProjectedMessages.map((msg, msgIdx) => {
6927
+ return (_jsxs("div", { className: "xeno-app-shell flex-1 relative min-h-0", children: [_jsx("div", { ref: messagesScrollRef, className: "agent-scrollbar absolute inset-0 overflow-auto pr-1.5", style: { scrollbarGutter: 'stable' }, children: conversationHydrating ? (_jsx(ConversationLoadingSkeleton, {})) : (_jsxs("div", { className: "w-full max-w-[820px] mx-auto px-6 pt-6 min-h-full flex flex-col gap-1.5", style: { paddingBottom: messageViewportBottomPadding }, children: [conversation && devSessionOpen && (_jsx("div", { className: "sticky top-2 z-[20] -mx-1 px-1 pb-2", children: _jsxs("div", { className: "xeno-border-subtle rounded-[6px] border bg-[#111111] px-3 py-2 flex items-center justify-between gap-3", children: [_jsxs("div", { className: "flex items-center gap-3 min-w-0 flex-wrap", children: [_jsx("span", { className: "text-[10px] uppercase tracking-[0.14em] text-white/28", children: "Dev session" }), _jsx("span", { className: `text-[10px] uppercase tracking-[0.14em] ${sessionStatusClassName}`, children: sessionStatusLabel }), _jsxs("span", { className: "text-[10px] text-white/24 tabular-nums", children: [pendingTurns.length, " queued"] }), _jsxs("span", { className: "text-[10px] text-white/24 tabular-nums", children: [checkpoints.length, " checkpoints"] }), _jsxs("span", { className: "text-[10px] text-white/18", children: ["Last active ", new Date(conversation.lastMessageAt).toLocaleTimeString([], { hour: '2-digit', minute: '2-digit' })] })] }), _jsxs("div", { className: "flex items-center gap-1.5 flex-shrink-0", children: [_jsxs("button", { type: "button", onClick: () => { void handleCopyDebugSnapshot('standard'); }, disabled: !conversationId || conversationHydrating, className: "h-7 px-2.5 rounded-[4px] bg-white/[0.05] hover:bg-white/[0.08] text-[10px] text-white/55 hover:text-white/78 transition-colors disabled:opacity-35 inline-flex items-center gap-1.5", title: "Copy a redacted support report", children: [_jsx(Copy, { className: "w-3 h-3" }), "Copy report"] }), _jsx("button", { type: "button", onClick: () => { void handleCopyDebugSnapshot('full'); }, disabled: !conversationId || conversationHydrating, className: "h-7 px-2.5 rounded-[4px] bg-white/[0.05] hover:bg-white/[0.08] text-[10px] text-white/45 hover:text-white/72 transition-colors disabled:opacity-35", title: "Copy the full redacted support report", children: "Full report" }), _jsx("button", { type: "button", onClick: toggleDevSession, className: "h-7 px-2.5 rounded-[4px] bg-white/[0.05] hover:bg-white/[0.08] text-[10px] text-white/35 hover:text-white/70 transition-colors", title: "Hide developer session (Ctrl+Shift+D)", children: "Hide" })] })] }) })), runtimeProjectedMessages.length === 0 && (_jsx("div", { className: "flex-1 flex items-center justify-center pt-[20vh]", children: _jsxs("p", { className: "text-[13px] text-white/20", children: ["Message ", agentName, " to get started"] }) })), runtimeProjectedMessages.map((msg, msgIdx) => {
6925
6928
  const previousMsg = runtimeProjectedMessages[msgIdx - 1];
6926
6929
  const parts = computeMsgParts(msg);
6927
6930
  const addConversationTurnGap = previousMsg !== undefined && msg.role !== previousMsg.role;
@@ -7202,9 +7205,16 @@ export function AgentView(props) {
7202
7205
  ? _jsxs("span", { className: "text-white/30", children: ["- ", activeCloudRunStatus.creditsSettled, "cr"] })
7203
7206
  : typeof activeCloudRunStatus.creditsHeld === 'number' && activeCloudRunStatus.creditsHeld > 0
7204
7207
  ? _jsxs("span", { className: "text-white/30", children: ["- ", activeCloudRunStatus.creditsHeld, "cr held"] })
7205
- : null] }))] }))] }), _jsxs("div", { className: "flex items-center gap-2", children: [props.onOpenRuntimeSettings && (_jsx("button", { onClick: props.onOpenRuntimeSettings, disabled: isBusy, className: "w-7 h-7 flex items-center justify-center rounded bg-white/[0.04] hover:bg-white/[0.08] text-white/35 hover:text-white/60 transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35 disabled:opacity-30 disabled:cursor-not-allowed", title: "Edit runtime provider", "aria-label": "Edit runtime provider", children: _jsx(Pencil, { className: "w-3 h-3" }) })), _jsx("button", { onClick: () => patchSessionUi({ panelOpen: !sessionPanelOpen }), className: `h-7 px-2.5 rounded-[4px] text-[10px] transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35 ${sessionPanelOpen
7208
+ : null] }))] }))] }), _jsxs("div", { className: "flex items-center gap-2", children: [props.onOpenRuntimeSettings && (_jsx("button", { onClick: props.onOpenRuntimeSettings, disabled: isBusy, className: "w-7 h-7 flex items-center justify-center rounded bg-white/[0.04] hover:bg-white/[0.08] text-white/35 hover:text-white/60 transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35 disabled:opacity-30 disabled:cursor-not-allowed", title: "Edit runtime provider", "aria-label": "Edit runtime provider", children: _jsx(Pencil, { className: "w-3 h-3" }) })), props.onOpenConversationSettings && (_jsx("button", { onClick: props.onOpenConversationSettings, className: "h-7 px-2.5 rounded-[4px] text-[10px] bg-white/[0.04] hover:bg-white/[0.08] text-white/35 hover:text-white/60 transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35", title: "Open chat and workspace settings", children: "Settings" })), _jsx("button", { onClick: (event) => {
7209
+ if (event.shiftKey) {
7210
+ event.preventDefault();
7211
+ toggleDevSession();
7212
+ return;
7213
+ }
7214
+ patchSessionUi({ panelOpen: !sessionPanelOpen });
7215
+ }, className: `h-7 px-2.5 rounded-[4px] text-[10px] transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35 ${sessionPanelOpen
7206
7216
  ? 'bg-white/[0.08] text-white/72'
7207
- : 'bg-white/[0.04] hover:bg-white/[0.08] text-white/35 hover:text-white/60'}`, title: "Toggle workbench panel", children: "Panel" }), _jsx(AIStatusIndicator, { model: actualModelId, className: "justify-end", refreshKey: runtimeStatusRefreshKey, runtimeAvailable: selectedModel.startsWith('local:') ? localRuntimeAvailable : null, onRuntimeClick: selectedModel.startsWith('local:') ? handleRuntimeIndicatorClick : undefined }), isStreaming && !activeCliThreadRun && (_jsx("button", { onClick: () => { abort(); clearAllSuggestions(); }, disabled: isCancelling, className: "w-7 h-7 flex items-center justify-center rounded bg-white/[0.08] hover:bg-white/[0.14] text-white/50 hover:text-white/90 transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35 disabled:cursor-wait disabled:opacity-55", title: "Stop current response", "aria-label": "Stop current response", children: isCancelling ? (_jsx(RefreshCw, { className: "w-3 h-3 animate-spin" })) : (_jsx(Square, { className: "w-3 h-3" })) })), activeCliThreadRun && (_jsx("button", { onClick: () => { void cancelCliAppServerMessage(); }, className: "w-7 h-7 flex items-center justify-center rounded bg-white/[0.08] hover:bg-white/[0.14] text-white/50 hover:text-white/90 transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35", title: activeCliThreadRun.kind === 'remote' ? 'Stop CLI remote run start' : 'Stop CLI app-server turn', "aria-label": activeCliThreadRun.kind === 'remote' ? 'Stop CLI remote run start' : 'Stop CLI app-server turn', children: _jsx(Square, { className: "w-3 h-3" }) })), _jsx("button", { onClick: () => { void handleSend(); }, disabled: (!input.trim() && pendingAttachments.length === 0) || inputLocked, className: "w-7 h-7 flex items-center justify-center rounded bg-white/[0.08] hover:bg-white/[0.14] text-white/50 hover:text-white/90 transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35 disabled:opacity-30 disabled:cursor-not-allowed", title: isStreaming && !inputLocked ? 'Queue message' : 'Send message', "aria-label": isStreaming && !inputLocked ? 'Queue message' : 'Send message', children: _jsx(ArrowUp, { className: "w-3.5 h-3.5" }) })] })] })] })] })] })] })] }));
7217
+ : 'bg-white/[0.04] hover:bg-white/[0.08] text-white/35 hover:text-white/60'}`, title: "Toggle workbench panel. Shift+click or Ctrl+Shift+D for the developer session.", children: "Panel" }), _jsx(AIStatusIndicator, { model: actualModelId, className: "justify-end", refreshKey: runtimeStatusRefreshKey, runtimeAvailable: selectedModel.startsWith('local:') ? localRuntimeAvailable : null, onRuntimeClick: selectedModel.startsWith('local:') ? handleRuntimeIndicatorClick : undefined }), isStreaming && !activeCliThreadRun && (_jsx("button", { onClick: () => { abort(); clearAllSuggestions(); }, disabled: isCancelling, className: "w-7 h-7 flex items-center justify-center rounded bg-white/[0.08] hover:bg-white/[0.14] text-white/50 hover:text-white/90 transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35 disabled:cursor-wait disabled:opacity-55", title: "Stop current response", "aria-label": "Stop current response", children: isCancelling ? (_jsx(RefreshCw, { className: "w-3 h-3 animate-spin" })) : (_jsx(Square, { className: "w-3 h-3" })) })), activeCliThreadRun && (_jsx("button", { onClick: () => { void cancelCliAppServerMessage(); }, className: "w-7 h-7 flex items-center justify-center rounded bg-white/[0.08] hover:bg-white/[0.14] text-white/50 hover:text-white/90 transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35", title: activeCliThreadRun.kind === 'remote' ? 'Stop CLI remote run start' : 'Stop CLI app-server turn', "aria-label": activeCliThreadRun.kind === 'remote' ? 'Stop CLI remote run start' : 'Stop CLI app-server turn', children: _jsx(Square, { className: "w-3 h-3" }) })), _jsx("button", { onClick: () => { void handleSend(); }, disabled: (!input.trim() && pendingAttachments.length === 0) || inputLocked, className: "w-7 h-7 flex items-center justify-center rounded bg-white/[0.08] hover:bg-white/[0.14] text-white/50 hover:text-white/90 transition-colors cursor-pointer focus-visible:outline focus-visible:outline-1 focus-visible:outline-white/35 disabled:opacity-30 disabled:cursor-not-allowed", title: isStreaming && !inputLocked ? 'Queue message' : 'Send message', "aria-label": isStreaming && !inputLocked ? 'Queue message' : 'Send message', children: _jsx(ArrowUp, { className: "w-3.5 h-3.5" }) })] })] })] })] })] })] })] }));
7208
7218
  }
7209
7219
  const ACP_MODEL_ID = /^[A-Za-z0-9._:/+-]{1,120}$/;
7210
7220
  function projectSharedAcpProviderModels(provider) {