@tutti-os/agent-gui 0.0.73 → 0.0.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +23 -2
- package/dist/agent-conversation/index.d.ts +5 -5
- package/dist/agent-conversation/index.js +8 -8
- package/dist/agent-message-center/index.d.ts +2 -2
- package/dist/agent-message-center/index.js +170 -12
- package/dist/agent-message-center/index.js.map +1 -1
- package/dist/{agentConversationVM-DPAgUJlR.d.ts → agentConversationVM-BgoqFyE9.d.ts} +1 -1
- package/dist/{agentGuiNodeTypes-aJ3AX7u2.d.ts → agentGuiNodeTypes-CmuJ7VDZ.d.ts} +17 -6
- package/dist/app/renderer/agentactivity.css +58 -33
- package/dist/app/renderer/assets/icons/agents/cursor-colorful.png +0 -0
- package/dist/app/renderer/assets/icons/agents/opencode-rounded.png +0 -0
- package/dist/app/renderer/assets/icons/agents/provider-rail-opencode-colorful.png +0 -0
- package/dist/{chunk-IVIXKAEH.js → chunk-3FYA2K4P.js} +76 -7
- package/dist/chunk-3FYA2K4P.js.map +1 -0
- package/dist/{chunk-4US2YHBY.js → chunk-4HP6V2YA.js} +16 -4
- package/dist/chunk-4HP6V2YA.js.map +1 -0
- package/dist/{chunk-G6BVEY7I.js → chunk-4TNM6ZEC.js} +3 -114
- package/dist/chunk-4TNM6ZEC.js.map +1 -0
- package/dist/{chunk-3PKRGSMH.js → chunk-52GTPN7X.js} +4 -23
- package/dist/chunk-52GTPN7X.js.map +1 -0
- package/dist/{chunk-OBJRIQPX.js → chunk-7GSBP5CN.js} +68 -34
- package/dist/chunk-7GSBP5CN.js.map +1 -0
- package/dist/{chunk-2I2WRI4F.js → chunk-BEM3KDOJ.js} +3 -4
- package/dist/chunk-BEM3KDOJ.js.map +1 -0
- package/dist/{chunk-ATEZXUHK.js → chunk-BT2DT2P7.js} +1 -1
- package/dist/chunk-BT2DT2P7.js.map +1 -0
- package/dist/{chunk-SVGIWXNK.js → chunk-GZX2SGAG.js} +2 -2
- package/dist/{chunk-KWQ4N4IZ.js → chunk-KELYWKTC.js} +28 -6
- package/dist/chunk-KELYWKTC.js.map +1 -0
- package/dist/{chunk-UAAXRSW2.js → chunk-L2ZMLLYL.js} +14 -7
- package/dist/chunk-L2ZMLLYL.js.map +1 -0
- package/dist/{chunk-5H6NINJY.js → chunk-M6FZ2YIR.js} +3 -8
- package/dist/chunk-M6FZ2YIR.js.map +1 -0
- package/dist/{chunk-XZF4QNT4.js → chunk-MNESUMOS.js} +2 -2
- package/dist/{chunk-466AWJTS.js → chunk-QDKD6RNC.js} +15 -6
- package/dist/{chunk-466AWJTS.js.map → chunk-QDKD6RNC.js.map} +1 -1
- package/dist/{chunk-GDFQXJMG.js → chunk-RIRFNGPB.js} +7 -7
- package/dist/chunk-RIRFNGPB.js.map +1 -0
- package/dist/{chunk-4I2VCAMW.js → chunk-SYWMKIRW.js} +4 -11
- package/dist/chunk-SYWMKIRW.js.map +1 -0
- package/dist/{chunk-SZF52NMJ.js → chunk-U6AZ3XQS.js} +38 -13
- package/dist/chunk-U6AZ3XQS.js.map +1 -0
- package/dist/{chunk-Q6AWM3RH.js → chunk-U6EDUTUO.js} +4 -4
- package/dist/{chunk-MYD37I32.js → chunk-VAKFNNKT.js} +1 -15
- package/dist/chunk-VAKFNNKT.js.map +1 -0
- package/dist/{chunk-BHNJN2TR.js → chunk-XW4CVBUH.js} +2 -5
- package/dist/chunk-XW4CVBUH.js.map +1 -0
- package/dist/{chunk-C7K3EFGI.js → chunk-YWQHNFYA.js} +2 -2
- package/dist/context-mention-palette/index.js +9 -9
- package/dist/i18n/index.d.ts +2 -110
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +86 -10
- package/dist/index.js +1284 -667
- package/dist/index.js.map +1 -1
- package/dist/plan-decision-ops.d.ts +2 -2
- package/dist/queued-prompt-runtime.d.ts +4 -6
- package/dist/queued-prompt-runtime.js +1 -1
- package/dist/{types-CrwMqBm1.d.ts → types-DUHHejs2.d.ts} +3 -3
- package/dist/workbench/contribution.d.ts +1 -1
- package/dist/workbench/contribution.js +6 -6
- package/dist/workbench/index.d.ts +1 -1
- package/dist/workbench/index.js +9 -9
- package/dist/workbench/launch.d.ts +2 -2
- package/dist/workbench/launch.js +3 -3
- package/dist/workbench/providerCatalog.d.ts +3 -3
- package/dist/workbench/providerCatalog.js +1 -1
- package/dist/workbench/sessionTitle.d.ts +1 -1
- package/dist/workbench/sessionTitle.js +3 -3
- package/dist/workbench/state.d.ts +1 -1
- package/dist/workbench/state.js +2 -2
- package/dist/workbench/types.d.ts +2 -2
- package/dist/workbench/types.js +1 -1
- package/dist/workspace-agent-generated-files.d.ts +1 -1
- package/dist/workspace-agent-generated-files.js +4 -4
- package/dist/{workspaceAgentActivityListViewModel-DJvAqZso.d.ts → workspaceAgentActivityListViewModel-TXH1VXrk.d.ts} +0 -10
- package/package.json +12 -12
- package/dist/chunk-2I2WRI4F.js.map +0 -1
- package/dist/chunk-3PKRGSMH.js.map +0 -1
- package/dist/chunk-4I2VCAMW.js.map +0 -1
- package/dist/chunk-4US2YHBY.js.map +0 -1
- package/dist/chunk-5H6NINJY.js.map +0 -1
- package/dist/chunk-ATEZXUHK.js.map +0 -1
- package/dist/chunk-BHNJN2TR.js.map +0 -1
- package/dist/chunk-G6BVEY7I.js.map +0 -1
- package/dist/chunk-GDFQXJMG.js.map +0 -1
- package/dist/chunk-IVIXKAEH.js.map +0 -1
- package/dist/chunk-KWQ4N4IZ.js.map +0 -1
- package/dist/chunk-MYD37I32.js.map +0 -1
- package/dist/chunk-OBJRIQPX.js.map +0 -1
- package/dist/chunk-SZF52NMJ.js.map +0 -1
- package/dist/chunk-UAAXRSW2.js.map +0 -1
- /package/dist/{chunk-SVGIWXNK.js.map → chunk-GZX2SGAG.js.map} +0 -0
- /package/dist/{chunk-XZF4QNT4.js.map → chunk-MNESUMOS.js.map} +0 -0
- /package/dist/{chunk-Q6AWM3RH.js.map → chunk-U6EDUTUO.js.map} +0 -0
- /package/dist/{chunk-C7K3EFGI.js.map → chunk-YWQHNFYA.js.map} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, T as ToolCallStatusKind, q as WorkspaceAgentActivityTimelineItem } from './workspaceAgentActivityListViewModel-
|
|
1
|
+
import { W as WorkspaceAgentActivityCard, n as WorkspaceAgentActivitySession, T as ToolCallStatusKind, q as WorkspaceAgentActivityTimelineItem } from './workspaceAgentActivityListViewModel-TXH1VXrk.js';
|
|
2
2
|
|
|
3
3
|
interface WorkspaceAgentSessionDetailMessage {
|
|
4
4
|
id: string;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AgentActivityUsage } from '@tutti-os/agent-activity-core';
|
|
2
|
-
import { k as AgentHostAgentSessionCommand, l as AgentHostAgentSessionComposerSettings, n as AgentHostAgentSessionReasoningEffort, o as AgentHostAgentSessionSpeed, m as AgentHostAgentSessionPermissionConfig, p as AgentHostAgentSessionState, a as AgentGUIProvider, s as AgentPromptContentBlock, A as AgentGUINodeData, g as AgentGUIProviderTarget, c as AgentGUIProviderRailMode, d as AgentGUIProviderReadinessGate } from './types-
|
|
3
|
-
import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult, b as AgentHostDeleteWorkspaceAgentSessionInput, k as AgentHostWorkspaceAgentSessionSummaryInput, j as AgentHostWorkspaceAgentSessionSummary, e as AgentHostWorkspaceAgentListInput, l as AgentHostWorkspaceAgentSnapshot, i as AgentHostWorkspaceAgentSessionMessagesInput, h as AgentHostWorkspaceAgentSessionMessages, p as WorkspaceAgentActivitySyncState } from './workspaceAgentActivityListViewModel-
|
|
4
|
-
import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-
|
|
2
|
+
import { k as AgentHostAgentSessionCommand, l as AgentHostAgentSessionComposerSettings, n as AgentHostAgentSessionReasoningEffort, o as AgentHostAgentSessionSpeed, m as AgentHostAgentSessionPermissionConfig, p as AgentHostAgentSessionState, a as AgentGUIProvider, s as AgentPromptContentBlock, A as AgentGUINodeData, g as AgentGUIProviderTarget, c as AgentGUIProviderRailMode, d as AgentGUIProviderReadinessGate } from './types-DUHHejs2.js';
|
|
3
|
+
import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult, b as AgentHostDeleteWorkspaceAgentSessionInput, k as AgentHostWorkspaceAgentSessionSummaryInput, j as AgentHostWorkspaceAgentSessionSummary, e as AgentHostWorkspaceAgentListInput, l as AgentHostWorkspaceAgentSnapshot, i as AgentHostWorkspaceAgentSessionMessagesInput, h as AgentHostWorkspaceAgentSessionMessages, p as WorkspaceAgentActivitySyncState } from './workspaceAgentActivityListViewModel-TXH1VXrk.js';
|
|
4
|
+
import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-BgoqFyE9.js';
|
|
5
5
|
import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
|
|
6
6
|
|
|
7
7
|
declare const APP_ERROR_CODES: readonly ["common.invalid_input", "common.approved_path_required", "common.unavailable", "common.unexpected", "session.not_found", "control_surface.unauthorized", "workspace.select_directory_failed", "workspace.select_files_failed", "workspace.ensure_directory_failed", "workspace.import_files_failed", "workspace.read_file_failed", "workspace.write_file_failed", "workspace.export_file_failed", "workspace.copy_path_failed", "workspace.host_unsupported", "workspace.runtime_artifact_unavailable", "runtime.guest_agent_lane_unavailable", "workspace.room_full", "workspace.room_delete_forbidden", "workspace.room_delete_not_found", "filesystem.create_directory_failed", "filesystem.read_file_bytes_failed", "filesystem.read_file_text_failed", "filesystem.write_file_text_failed", "filesystem.copy_entry_failed", "filesystem.move_entry_failed", "filesystem.rename_entry_failed", "filesystem.delete_entry_failed", "filesystem.read_directory_failed", "filesystem.stat_failed", "terminal.spawn_failed", "terminal.write_failed", "terminal.resize_failed", "terminal.close_failed", "terminal.attach_failed", "terminal.detach_failed", "terminal.snapshot_failed", "agent.list_models_failed", "agent.launch_failed", "agent.read_last_message_failed", "agent.provider_session_not_found", "agent.resume_session_not_local", "agent.resume_session_resolve_failed", "agent.settings_require_new_session", "task.suggest_title_failed", "persistence.unavailable", "persistence.quota_exceeded", "persistence.payload_too_large", "persistence.io_failed", "persistence.invalid_state", "persistence.invalid_node_id", "update.get_state_failed", "update.configure_failed", "update.check_failed", "update.download_failed", "update.install_failed", "PACKAGE_DOWNLOAD_INTERRUPTED", "PACKAGE_DOWNLOAD_HTTP_STATUS", "PACKAGE_DOWNLOAD_INVALID", "PACKAGE_DOWNLOAD_DISK_ERROR"];
|
|
@@ -276,6 +276,7 @@ interface AgentHostUserProject {
|
|
|
276
276
|
id: string;
|
|
277
277
|
path: string;
|
|
278
278
|
label: string;
|
|
279
|
+
sectionKey?: string;
|
|
279
280
|
createdAtUnixMs?: number;
|
|
280
281
|
updatedAtUnixMs?: number;
|
|
281
282
|
lastUsedAtUnixMs?: number;
|
|
@@ -410,11 +411,12 @@ interface AgentGUIConversationProjectSummary {
|
|
|
410
411
|
id: string;
|
|
411
412
|
path: string;
|
|
412
413
|
label: string;
|
|
414
|
+
sectionKey?: string;
|
|
413
415
|
createdAtUnixMs?: number;
|
|
414
416
|
updatedAtUnixMs?: number;
|
|
415
417
|
lastUsedAtUnixMs?: number;
|
|
416
418
|
}
|
|
417
|
-
type AgentGUIConversationUserProject = Pick<AgentHostUserProject, "id" | "path" | "label" | "createdAtUnixMs" | "updatedAtUnixMs" | "lastUsedAtUnixMs">;
|
|
419
|
+
type AgentGUIConversationUserProject = Pick<AgentHostUserProject, "id" | "path" | "label" | "sectionKey" | "createdAtUnixMs" | "updatedAtUnixMs" | "lastUsedAtUnixMs">;
|
|
418
420
|
|
|
419
421
|
interface AgentGUIConversationSummary {
|
|
420
422
|
id: string;
|
|
@@ -476,10 +478,13 @@ interface AgentGUIInlineNotice {
|
|
|
476
478
|
autoDismissMs: number | null;
|
|
477
479
|
}
|
|
478
480
|
interface AgentGUIProjectConversationDeleteTarget {
|
|
479
|
-
conversationCount: number;
|
|
481
|
+
conversationCount: number | null;
|
|
480
482
|
label: string;
|
|
481
483
|
path: string;
|
|
482
484
|
}
|
|
485
|
+
interface AgentGUIConversationSectionDeleteTarget {
|
|
486
|
+
conversationCount: number | null;
|
|
487
|
+
}
|
|
483
488
|
interface AgentGUIComposerSettingOption {
|
|
484
489
|
value: string;
|
|
485
490
|
label: string;
|
|
@@ -624,6 +629,10 @@ interface AgentGUINodeViewModel {
|
|
|
624
629
|
isInterrupting: boolean;
|
|
625
630
|
isCancelPending: boolean;
|
|
626
631
|
isRespondingApproval: boolean;
|
|
632
|
+
canCancel: boolean;
|
|
633
|
+
canSubmitInteractive: boolean;
|
|
634
|
+
canGoalControl: boolean;
|
|
635
|
+
canUploadAttachment: boolean;
|
|
627
636
|
promptImagesSupported: boolean;
|
|
628
637
|
compactSupported: boolean | null;
|
|
629
638
|
/**
|
|
@@ -639,14 +648,16 @@ interface AgentGUINodeViewModel {
|
|
|
639
648
|
isDeletingProjectConversations: boolean;
|
|
640
649
|
pendingDeleteConversation: AgentGUIConversationSummary | null;
|
|
641
650
|
pendingDeleteProjectConversations: AgentGUIProjectConversationDeleteTarget | null;
|
|
651
|
+
pendingDeleteConversations: AgentGUIConversationSectionDeleteTarget | null;
|
|
642
652
|
pendingApproval: AgentGUIApprovalRequest | null;
|
|
643
653
|
pendingInteractivePrompt: AgentGUIInteractivePrompt | null;
|
|
644
654
|
activeLiveState: "inactive" | "activating" | "active" | "failed";
|
|
645
655
|
activationError: string | null;
|
|
646
656
|
openclawGateway: OpenclawGatewayViewState | null;
|
|
657
|
+
activeConversationBusy: boolean;
|
|
647
658
|
canSubmit: boolean;
|
|
648
659
|
composerSettings: AgentGUIComposerSettingsVM;
|
|
649
|
-
queuedPrompts: AgentGUIQueuedPromptVM[];
|
|
660
|
+
queuedPrompts: readonly AgentGUIQueuedPromptVM[];
|
|
650
661
|
drainingQueuedPromptId: string | null;
|
|
651
662
|
canQueueWhileBusy: boolean;
|
|
652
663
|
hasSentUserMessage: boolean;
|
|
@@ -5885,23 +5885,17 @@ button.agent-gui-node__conversation-section-toggle:hover
|
|
|
5885
5885
|
align-items: center;
|
|
5886
5886
|
justify-content: flex-end;
|
|
5887
5887
|
min-width: 28px;
|
|
5888
|
-
transition: opacity 140ms ease;
|
|
5889
5888
|
}
|
|
5890
5889
|
|
|
5891
5890
|
.agent-gui-node__conversation-meta[data-kind="loading"],
|
|
5892
5891
|
.agent-gui-node__conversation-meta[data-kind="waiting"],
|
|
5893
|
-
.agent-gui-node__conversation-meta[data-kind="failed"]
|
|
5892
|
+
.agent-gui-node__conversation-meta[data-kind="failed"],
|
|
5893
|
+
.agent-gui-node__conversation-meta[data-kind="unread-complete"] {
|
|
5894
5894
|
width: 28px;
|
|
5895
5895
|
min-width: 28px;
|
|
5896
5896
|
justify-content: center;
|
|
5897
5897
|
}
|
|
5898
5898
|
|
|
5899
|
-
.agent-gui-node__conversation-meta[data-kind="unread-complete"] {
|
|
5900
|
-
width: 10px;
|
|
5901
|
-
min-width: 10px;
|
|
5902
|
-
justify-content: center;
|
|
5903
|
-
}
|
|
5904
|
-
|
|
5905
5899
|
.agent-gui-node__conversation-meta[data-kind="time"] {
|
|
5906
5900
|
margin-right: 6px;
|
|
5907
5901
|
min-width: max-content;
|
|
@@ -5922,7 +5916,6 @@ button.agent-gui-node__conversation-section-toggle:hover
|
|
|
5922
5916
|
max-width: calc(100% - 20px);
|
|
5923
5917
|
opacity: 0;
|
|
5924
5918
|
transform: translateY(-50%);
|
|
5925
|
-
transition: opacity 140ms ease;
|
|
5926
5919
|
}
|
|
5927
5920
|
|
|
5928
5921
|
.agent-gui-node__conversation-delete-button,
|
|
@@ -5943,6 +5936,10 @@ button.agent-gui-node__conversation-section-toggle:hover
|
|
|
5943
5936
|
.agent-gui-node__conversation-item:hover .agent-gui-node__conversation-actions,
|
|
5944
5937
|
.agent-gui-node__conversation-actions:focus-within {
|
|
5945
5938
|
opacity: 1;
|
|
5939
|
+
/* Only in the visible state: fading in on hover stays smooth while
|
|
5940
|
+
leaving the row swaps back to the meta icon instantly, with no
|
|
5941
|
+
lingering cross-fade overlapping the two. */
|
|
5942
|
+
transition: opacity 140ms ease;
|
|
5946
5943
|
}
|
|
5947
5944
|
|
|
5948
5945
|
.agent-gui-node__conversation-item[data-pinned="true"]
|
|
@@ -6318,12 +6315,8 @@ button.agent-gui-node__conversation-section-toggle:hover
|
|
|
6318
6315
|
left: 50%;
|
|
6319
6316
|
width: 1px;
|
|
6320
6317
|
height: 8px;
|
|
6321
|
-
transform:
|
|
6322
|
-
background:
|
|
6323
|
-
in srgb,
|
|
6324
|
-
var(--line-2, var(--tutti-line-2)) 82%,
|
|
6325
|
-
transparent
|
|
6326
|
-
);
|
|
6318
|
+
transform: translate(-50%, -50%);
|
|
6319
|
+
background: var(--line-1, var(--nexight-line-1));
|
|
6327
6320
|
}
|
|
6328
6321
|
|
|
6329
6322
|
.agent-gui-message-locator__tick {
|
|
@@ -8908,33 +8901,56 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
8908
8901
|
}
|
|
8909
8902
|
|
|
8910
8903
|
.agent-gui-node__empty-hero-launchpad-icon {
|
|
8911
|
-
width
|
|
8912
|
-
|
|
8913
|
-
|
|
8914
|
-
|
|
8915
|
-
|
|
8904
|
+
/* Size to the strip's actual content and stay centered. A fixed width narrower
|
|
8905
|
+
than the icons left-anchors the overflow, dragging the "centered" selected
|
|
8906
|
+
agent off to one side. */
|
|
8907
|
+
width: fit-content;
|
|
8908
|
+
max-width: 100%;
|
|
8909
|
+
height: 48px;
|
|
8910
|
+
border: 0;
|
|
8911
|
+
border-radius: 0;
|
|
8912
|
+
background: transparent;
|
|
8913
|
+
box-shadow: none;
|
|
8914
|
+
overflow: visible;
|
|
8916
8915
|
color: var(--tutti-purple);
|
|
8917
8916
|
animation: agent-gui-empty-hero-enter 260ms cubic-bezier(0.16, 1, 0.3, 1) 40ms
|
|
8918
8917
|
both;
|
|
8919
8918
|
}
|
|
8920
8919
|
|
|
8920
|
+
/* Hero launchpad: agents laid out as one centered horizontal group while
|
|
8921
|
+
neighbours fade away from the selected agent. Scoped to the hero so the left
|
|
8922
|
+
rail "All" tile (a single composed image) is unaffected. */
|
|
8921
8923
|
.agent-gui-node__empty-hero-launchpad-icon
|
|
8922
8924
|
.agent-gui-node__provider-rail-launchpad-icon {
|
|
8923
|
-
|
|
8925
|
+
display: flex;
|
|
8926
|
+
width: max-content;
|
|
8927
|
+
max-width: 100%;
|
|
8924
8928
|
height: 48px;
|
|
8925
|
-
|
|
8926
|
-
|
|
8927
|
-
|
|
8929
|
+
align-items: center;
|
|
8930
|
+
justify-content: center;
|
|
8931
|
+
gap: 10px;
|
|
8932
|
+
padding: 0;
|
|
8933
|
+
border-radius: 0;
|
|
8934
|
+
background: transparent;
|
|
8935
|
+
overflow: visible;
|
|
8928
8936
|
}
|
|
8929
8937
|
|
|
8930
8938
|
.agent-gui-node__empty-hero-launchpad-icon
|
|
8931
8939
|
.agent-gui-node__provider-rail-launchpad-item {
|
|
8932
|
-
|
|
8940
|
+
flex: 0 0 auto;
|
|
8941
|
+
width: 36px;
|
|
8942
|
+
height: 36px;
|
|
8943
|
+
border-radius: 9px;
|
|
8944
|
+
transition:
|
|
8945
|
+
opacity 220ms ease,
|
|
8946
|
+
transform 220ms cubic-bezier(0.16, 1, 0.3, 1),
|
|
8947
|
+
box-shadow 220ms ease;
|
|
8933
8948
|
}
|
|
8934
8949
|
|
|
8935
8950
|
.agent-gui-node__empty-hero-launchpad-icon
|
|
8936
|
-
.agent-gui-node__provider-rail-launchpad-item[data-provider-active="
|
|
8937
|
-
|
|
8951
|
+
.agent-gui-node__provider-rail-launchpad-item[data-provider-active="true"] {
|
|
8952
|
+
transform: scale(1.14);
|
|
8953
|
+
box-shadow: 0 0 0 1.5px var(--tutti-purple);
|
|
8938
8954
|
}
|
|
8939
8955
|
|
|
8940
8956
|
.agent-gui-node__provider-rail-tile[data-loading="true"]
|
|
@@ -8984,6 +9000,14 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
8984
9000
|
place-items: center;
|
|
8985
9001
|
}
|
|
8986
9002
|
|
|
9003
|
+
/* The horizontal launchpad strip is wider than the single-icon slot; let the
|
|
9004
|
+
slot grow to the strip's width so the selected agent stays centered. */
|
|
9005
|
+
.agent-gui-node__empty-hero-icon-slot:has(
|
|
9006
|
+
> .agent-gui-node__empty-hero-launchpad-icon
|
|
9007
|
+
) {
|
|
9008
|
+
width: auto;
|
|
9009
|
+
}
|
|
9010
|
+
|
|
8987
9011
|
.agent-gui-node__empty-hero-icon-effect {
|
|
8988
9012
|
display: block;
|
|
8989
9013
|
width: 48px;
|
|
@@ -9072,12 +9096,11 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
9072
9096
|
gap: 8px;
|
|
9073
9097
|
}
|
|
9074
9098
|
|
|
9075
|
-
|
|
9076
|
-
|
|
9077
|
-
|
|
9078
|
-
|
|
9079
|
-
|
|
9080
|
-
font-size: 24px;
|
|
9099
|
+
/* Gate gap is 8px; add 16px so the icon-to-title spacing is 24px. */
|
|
9100
|
+
.agent-gui-node__empty-provider-gate > .agent-gui-node__empty-hero-icon-effect,
|
|
9101
|
+
.agent-gui-node__empty-provider-gate
|
|
9102
|
+
> .agent-gui-node__empty-hero-launchpad-icon {
|
|
9103
|
+
margin-bottom: 16px;
|
|
9081
9104
|
}
|
|
9082
9105
|
|
|
9083
9106
|
.agent-gui-node__empty-provider-gate-description {
|
|
@@ -9101,6 +9124,8 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
9101
9124
|
}
|
|
9102
9125
|
|
|
9103
9126
|
.agent-gui-node__empty-provider-gate-action {
|
|
9127
|
+
/* Container gap is 8px; add 16px so the description-to-button spacing is 24px. */
|
|
9128
|
+
margin-top: 16px;
|
|
9104
9129
|
animation: agent-gui-empty-hero-enter 300ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
9105
9130
|
190ms both;
|
|
9106
9131
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -3,11 +3,11 @@ import {
|
|
|
3
3
|
getOptionalAgentHostApi,
|
|
4
4
|
managedAgentRoundedIconUrl,
|
|
5
5
|
useOptionalAgentHostApi
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RIRFNGPB.js";
|
|
7
7
|
import {
|
|
8
8
|
translate,
|
|
9
9
|
useTranslation
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-YWQHNFYA.js";
|
|
11
11
|
import {
|
|
12
12
|
resolveAgentWorkspaceFileVisualKind
|
|
13
13
|
} from "./chunk-PJP5BUU6.js";
|
|
@@ -1896,10 +1896,12 @@ function AgentMessageMarkdown({
|
|
|
1896
1896
|
);
|
|
1897
1897
|
const normalizedContent = useMemo(
|
|
1898
1898
|
() => linkBareLocalAbsolutePaths(
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1899
|
+
normalizeLocalPathMarkdownLinks(
|
|
1900
|
+
normalizeMentionMarkdownLinks(
|
|
1901
|
+
normalizePlainIssueMentionTitle ? normalizePlainIssueMentionTitleContent(
|
|
1902
|
+
normalizePlainSessionMentionTitle(stabilizedContent)
|
|
1903
|
+
) : normalizePlainSessionMentionTitle(stabilizedContent)
|
|
1904
|
+
)
|
|
1903
1905
|
)
|
|
1904
1906
|
),
|
|
1905
1907
|
[normalizePlainIssueMentionTitle, stabilizedContent]
|
|
@@ -2961,6 +2963,73 @@ function normalizePlainIssueMentionTitleContent(content) {
|
|
|
2961
2963
|
function normalizeMentionMarkdownLinks(content) {
|
|
2962
2964
|
return content.replace(/\]([\t ]*\r?\n[\t ]*)+\((mention:\/\/)/g, "]($2").replace(/\]\((mention:\/\/[A-Za-z0-9.-]+)\)\?([^\s)]+)/g, "]($1?$2)");
|
|
2963
2965
|
}
|
|
2966
|
+
function normalizeLocalPathMarkdownLinks(content) {
|
|
2967
|
+
let out = "";
|
|
2968
|
+
for (let index = 0; index < content.length; ) {
|
|
2969
|
+
const codeSpanEnd = codeSpanEndIndex(content, index);
|
|
2970
|
+
if (codeSpanEnd > index) {
|
|
2971
|
+
out += content.slice(index, codeSpanEnd);
|
|
2972
|
+
index = codeSpanEnd;
|
|
2973
|
+
continue;
|
|
2974
|
+
}
|
|
2975
|
+
const normalized = normalizeLocalPathMarkdownLinkAt(content, index);
|
|
2976
|
+
if (normalized) {
|
|
2977
|
+
out += normalized.markdown;
|
|
2978
|
+
index = normalized.end;
|
|
2979
|
+
continue;
|
|
2980
|
+
}
|
|
2981
|
+
out += content[index];
|
|
2982
|
+
index += 1;
|
|
2983
|
+
}
|
|
2984
|
+
return out;
|
|
2985
|
+
}
|
|
2986
|
+
function normalizeLocalPathMarkdownLinkAt(content, index) {
|
|
2987
|
+
if (content[index] !== "[") {
|
|
2988
|
+
return null;
|
|
2989
|
+
}
|
|
2990
|
+
const labelEnd = content.indexOf("]", index + 1);
|
|
2991
|
+
if (labelEnd < 0 || content[labelEnd + 1] !== "(") {
|
|
2992
|
+
return null;
|
|
2993
|
+
}
|
|
2994
|
+
const hrefStart = labelEnd + 2;
|
|
2995
|
+
if (content[hrefStart] === "<") {
|
|
2996
|
+
return null;
|
|
2997
|
+
}
|
|
2998
|
+
let hrefEnd = hrefStart;
|
|
2999
|
+
while (hrefEnd < content.length) {
|
|
3000
|
+
const current = content[hrefEnd];
|
|
3001
|
+
if (current === "\\" && hrefEnd + 1 < content.length) {
|
|
3002
|
+
hrefEnd += 2;
|
|
3003
|
+
continue;
|
|
3004
|
+
}
|
|
3005
|
+
if (current === "\n" || current === "\r") {
|
|
3006
|
+
return null;
|
|
3007
|
+
}
|
|
3008
|
+
if (current === ")") {
|
|
3009
|
+
break;
|
|
3010
|
+
}
|
|
3011
|
+
hrefEnd += 1;
|
|
3012
|
+
}
|
|
3013
|
+
if (content[hrefEnd] !== ")") {
|
|
3014
|
+
return null;
|
|
3015
|
+
}
|
|
3016
|
+
const href = content.slice(hrefStart, hrefEnd);
|
|
3017
|
+
const target = href.trim();
|
|
3018
|
+
if (target.length === 0 || !/\s/.test(target) || /[<>]/.test(target) || !isPotentialLocalMarkdownPathHref(target)) {
|
|
3019
|
+
return null;
|
|
3020
|
+
}
|
|
3021
|
+
return {
|
|
3022
|
+
markdown: `${content.slice(index, hrefStart)}<${target}>)`,
|
|
3023
|
+
end: hrefEnd + 1
|
|
3024
|
+
};
|
|
3025
|
+
}
|
|
3026
|
+
function isPotentialLocalMarkdownPathHref(href) {
|
|
3027
|
+
const target = href.trim();
|
|
3028
|
+
if (!target || target.includes("://")) {
|
|
3029
|
+
return false;
|
|
3030
|
+
}
|
|
3031
|
+
return target.startsWith("/") && !target.startsWith("//") || target.startsWith("~/") || target.startsWith("~\\") || /^[A-Za-z]:[\\/]/.test(target);
|
|
3032
|
+
}
|
|
2964
3033
|
function isMentionOnlyMarkdownContent(content) {
|
|
2965
3034
|
const trimmed = content.trim();
|
|
2966
3035
|
if (trimmed.length === 0) {
|
|
@@ -3707,4 +3776,4 @@ export {
|
|
|
3707
3776
|
CustomScrollArea,
|
|
3708
3777
|
MessageSquareMoreIcon
|
|
3709
3778
|
};
|
|
3710
|
-
//# sourceMappingURL=chunk-
|
|
3779
|
+
//# sourceMappingURL=chunk-3FYA2K4P.js.map
|