@tutti-os/agent-gui 0.0.74 → 0.0.76
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 +17 -0
- package/dist/agent-conversation/index.d.ts +4 -4
- 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-C0WUHQzu.d.ts → agentGuiNodeTypes-CmuJ7VDZ.d.ts} +15 -5
- package/dist/app/renderer/agentactivity.css +110 -27
- 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-GLMDAZSQ.js → chunk-3FYA2K4P.js} +76 -7
- package/dist/chunk-3FYA2K4P.js.map +1 -0
- package/dist/{chunk-RA3OUR64.js → chunk-4HP6V2YA.js} +16 -2
- package/dist/chunk-4HP6V2YA.js.map +1 -0
- package/dist/{chunk-W5AJTBA7.js → chunk-4TNM6ZEC.js} +3 -100
- package/dist/chunk-4TNM6ZEC.js.map +1 -0
- package/dist/{chunk-6EREXANR.js → chunk-52GTPN7X.js} +3 -14
- package/dist/chunk-52GTPN7X.js.map +1 -0
- package/dist/{chunk-ZSYDFQ4N.js → chunk-7GSBP5CN.js} +36 -15
- package/dist/chunk-7GSBP5CN.js.map +1 -0
- package/dist/{chunk-T5CEU7WH.js → chunk-BEM3KDOJ.js} +3 -3
- package/dist/chunk-BEM3KDOJ.js.map +1 -0
- package/dist/{chunk-VERGPY42.js → chunk-GZX2SGAG.js} +2 -2
- package/dist/{chunk-NO7WDGST.js → chunk-KELYWKTC.js} +28 -6
- package/dist/chunk-KELYWKTC.js.map +1 -0
- package/dist/{chunk-FPODKSSV.js → chunk-L2ZMLLYL.js} +12 -5
- package/dist/chunk-L2ZMLLYL.js.map +1 -0
- package/dist/{chunk-LWFV4PS5.js → chunk-M6FZ2YIR.js} +3 -3
- package/dist/chunk-M6FZ2YIR.js.map +1 -0
- package/dist/{chunk-D2Z2QZVE.js → chunk-MNESUMOS.js} +2 -2
- package/dist/{chunk-KVS7J7BJ.js → chunk-QDKD6RNC.js} +15 -6
- package/dist/{chunk-KVS7J7BJ.js.map → chunk-QDKD6RNC.js.map} +1 -1
- package/dist/{chunk-FHWE5SUF.js → chunk-RIRFNGPB.js} +7 -3
- package/dist/chunk-RIRFNGPB.js.map +1 -0
- package/dist/{chunk-SL2QSEIE.js → chunk-SYWMKIRW.js} +4 -4
- package/dist/{chunk-RF7GK4SM.js → chunk-U6AZ3XQS.js} +25 -6
- package/dist/chunk-U6AZ3XQS.js.map +1 -0
- package/dist/{chunk-Z72JKSAY.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-BTUOROCD.js → chunk-XW4CVBUH.js} +2 -2
- package/dist/chunk-XW4CVBUH.js.map +1 -0
- package/dist/{chunk-4XIHKCWC.js → chunk-YWQHNFYA.js} +2 -2
- package/dist/context-mention-palette/index.js +9 -9
- package/dist/i18n/index.d.ts +2 -96
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +49 -7
- package/dist/index.js +1167 -617
- package/dist/index.js.map +1 -1
- package/dist/plan-decision-ops.d.ts +2 -2
- package/dist/queued-prompt-runtime.d.ts +3 -5
- package/dist/queued-prompt-runtime.js +1 -1
- package/dist/workbench/contribution.js +5 -5
- package/dist/workbench/index.js +8 -8
- package/dist/workbench/launch.d.ts +1 -1
- package/dist/workbench/launch.js +2 -2
- package/dist/workbench/providerCatalog.js +1 -1
- package/dist/workbench/sessionTitle.js +3 -3
- package/dist/workbench/state.js +2 -2
- 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-6EREXANR.js.map +0 -1
- package/dist/chunk-BTUOROCD.js.map +0 -1
- package/dist/chunk-FHWE5SUF.js.map +0 -1
- package/dist/chunk-FPODKSSV.js.map +0 -1
- package/dist/chunk-GLMDAZSQ.js.map +0 -1
- package/dist/chunk-LWFV4PS5.js.map +0 -1
- package/dist/chunk-MYD37I32.js.map +0 -1
- package/dist/chunk-NO7WDGST.js.map +0 -1
- package/dist/chunk-RA3OUR64.js.map +0 -1
- package/dist/chunk-RF7GK4SM.js.map +0 -1
- package/dist/chunk-T5CEU7WH.js.map +0 -1
- package/dist/chunk-W5AJTBA7.js.map +0 -1
- package/dist/chunk-ZSYDFQ4N.js.map +0 -1
- /package/dist/{chunk-VERGPY42.js.map → chunk-GZX2SGAG.js.map} +0 -0
- /package/dist/{chunk-D2Z2QZVE.js.map → chunk-MNESUMOS.js.map} +0 -0
- /package/dist/{chunk-SL2QSEIE.js.map → chunk-SYWMKIRW.js.map} +0 -0
- /package/dist/{chunk-Z72JKSAY.js.map → chunk-U6EDUTUO.js.map} +0 -0
- /package/dist/{chunk-4XIHKCWC.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
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-
|
|
4
|
-
import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, W as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-
|
|
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,6 +648,7 @@ 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";
|
|
@@ -647,7 +657,7 @@ interface AgentGUINodeViewModel {
|
|
|
647
657
|
activeConversationBusy: boolean;
|
|
648
658
|
canSubmit: boolean;
|
|
649
659
|
composerSettings: AgentGUIComposerSettingsVM;
|
|
650
|
-
queuedPrompts: AgentGUIQueuedPromptVM[];
|
|
660
|
+
queuedPrompts: readonly AgentGUIQueuedPromptVM[];
|
|
651
661
|
drainingQueuedPromptId: string | null;
|
|
652
662
|
canQueueWhileBusy: boolean;
|
|
653
663
|
hasSentUserMessage: boolean;
|
|
@@ -1857,6 +1857,37 @@ aside.workspace-agents-status-panel
|
|
|
1857
1857
|
white-space: nowrap;
|
|
1858
1858
|
}
|
|
1859
1859
|
|
|
1860
|
+
/* Compact tool-call rows when nested inside a details block (e.g. task STEPS) */
|
|
1861
|
+
.workspace-agents-status-panel__detail-tool-body
|
|
1862
|
+
.workspace-agents-status-panel__detail-tool-row-title,
|
|
1863
|
+
.workspace-agents-status-panel__detail-tool-body
|
|
1864
|
+
.workspace-agents-status-panel__detail-tool-status,
|
|
1865
|
+
.workspace-agents-status-panel__detail-tool-body
|
|
1866
|
+
.workspace-agents-status-panel__detail-tool-diff-stats,
|
|
1867
|
+
.workspace-agents-status-panel__detail-tool-body
|
|
1868
|
+
.workspace-agents-status-panel__detail-tool-row-summary {
|
|
1869
|
+
font-size: 11px;
|
|
1870
|
+
}
|
|
1871
|
+
|
|
1872
|
+
.workspace-agents-status-panel__detail-tool-body
|
|
1873
|
+
.workspace-agents-status-panel__detail-tool-row-icon {
|
|
1874
|
+
width: 14px;
|
|
1875
|
+
height: 14px;
|
|
1876
|
+
}
|
|
1877
|
+
|
|
1878
|
+
.workspace-agents-status-panel__detail-tool-body
|
|
1879
|
+
.workspace-agents-status-panel__detail-tool-row-icon
|
|
1880
|
+
svg {
|
|
1881
|
+
width: 14px;
|
|
1882
|
+
height: 14px;
|
|
1883
|
+
}
|
|
1884
|
+
|
|
1885
|
+
/* Looser vertical rhythm for the nested step rows so they don't feel cramped */
|
|
1886
|
+
.workspace-agents-status-panel__detail-tool-body
|
|
1887
|
+
.workspace-agents-status-panel__detail-tool-stack {
|
|
1888
|
+
gap: 12px;
|
|
1889
|
+
}
|
|
1890
|
+
|
|
1860
1891
|
.workspace-agents-status-panel__detail-tool-row-head
|
|
1861
1892
|
.workspace-agents-status-panel__detail-tool-row-chevron {
|
|
1862
1893
|
flex: 0 0 auto;
|
|
@@ -1915,7 +1946,7 @@ aside.workspace-agents-status-panel
|
|
|
1915
1946
|
.workspace-agents-status-panel__detail-tool-body {
|
|
1916
1947
|
display: flex;
|
|
1917
1948
|
flex-direction: column;
|
|
1918
|
-
gap:
|
|
1949
|
+
gap: 16px;
|
|
1919
1950
|
box-sizing: border-box;
|
|
1920
1951
|
width: 100%;
|
|
1921
1952
|
min-width: 0;
|
|
@@ -6315,12 +6346,8 @@ button.agent-gui-node__conversation-section-toggle:hover
|
|
|
6315
6346
|
left: 50%;
|
|
6316
6347
|
width: 1px;
|
|
6317
6348
|
height: 8px;
|
|
6318
|
-
transform:
|
|
6319
|
-
background:
|
|
6320
|
-
in srgb,
|
|
6321
|
-
var(--line-2, var(--tutti-line-2)) 82%,
|
|
6322
|
-
transparent
|
|
6323
|
-
);
|
|
6349
|
+
transform: translate(-50%, -50%);
|
|
6350
|
+
background: var(--line-1, var(--nexight-line-1));
|
|
6324
6351
|
}
|
|
6325
6352
|
|
|
6326
6353
|
.agent-gui-message-locator__tick {
|
|
@@ -6491,7 +6518,7 @@ button.agent-gui-node__conversation-section-toggle:hover
|
|
|
6491
6518
|
box-sizing: border-box;
|
|
6492
6519
|
width: 100%;
|
|
6493
6520
|
min-width: 0;
|
|
6494
|
-
padding-bottom:
|
|
6521
|
+
padding-bottom: 16px;
|
|
6495
6522
|
will-change: transform;
|
|
6496
6523
|
}
|
|
6497
6524
|
|
|
@@ -6501,7 +6528,7 @@ button.agent-gui-node__conversation-section-toggle:hover
|
|
|
6501
6528
|
.agent-gui-transcript-virtual-item
|
|
6502
6529
|
> [data-testid="agent-transcript-turn-divider"]
|
|
6503
6530
|
+ .agent-gui-transcript-row {
|
|
6504
|
-
margin-top:
|
|
6531
|
+
margin-top: 16px;
|
|
6505
6532
|
}
|
|
6506
6533
|
|
|
6507
6534
|
.agent-gui-transcript-row[data-agent-transcript-row-enter="true"] {
|
|
@@ -8905,33 +8932,80 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
8905
8932
|
}
|
|
8906
8933
|
|
|
8907
8934
|
.agent-gui-node__empty-hero-launchpad-icon {
|
|
8908
|
-
width
|
|
8909
|
-
|
|
8910
|
-
|
|
8911
|
-
|
|
8912
|
-
|
|
8935
|
+
/* Size to the strip's actual content and stay centered. A fixed width narrower
|
|
8936
|
+
than the icons left-anchors the overflow, dragging the "centered" selected
|
|
8937
|
+
agent off to one side. */
|
|
8938
|
+
width: fit-content;
|
|
8939
|
+
max-width: 100%;
|
|
8940
|
+
height: 48px;
|
|
8941
|
+
border: 0;
|
|
8942
|
+
border-radius: 0;
|
|
8943
|
+
background: transparent;
|
|
8944
|
+
box-shadow: none;
|
|
8945
|
+
overflow: visible;
|
|
8913
8946
|
color: var(--tutti-purple);
|
|
8914
8947
|
animation: agent-gui-empty-hero-enter 260ms cubic-bezier(0.16, 1, 0.3, 1) 40ms
|
|
8915
8948
|
both;
|
|
8916
8949
|
}
|
|
8917
8950
|
|
|
8951
|
+
/* Hero launchpad: agents laid out as one centered horizontal group while
|
|
8952
|
+
neighbours fade away from the selected agent. Scoped to the hero so the left
|
|
8953
|
+
rail "All" tile (a single composed image) is unaffected. */
|
|
8918
8954
|
.agent-gui-node__empty-hero-launchpad-icon
|
|
8919
8955
|
.agent-gui-node__provider-rail-launchpad-icon {
|
|
8920
|
-
|
|
8956
|
+
display: flex;
|
|
8957
|
+
width: max-content;
|
|
8958
|
+
max-width: 100%;
|
|
8921
8959
|
height: 48px;
|
|
8922
|
-
|
|
8923
|
-
|
|
8924
|
-
|
|
8960
|
+
align-items: center;
|
|
8961
|
+
justify-content: center;
|
|
8962
|
+
gap: 10px;
|
|
8963
|
+
padding: 0;
|
|
8964
|
+
border-radius: 0;
|
|
8965
|
+
background: transparent;
|
|
8966
|
+
overflow: visible;
|
|
8925
8967
|
}
|
|
8926
8968
|
|
|
8927
8969
|
.agent-gui-node__empty-hero-launchpad-icon
|
|
8928
8970
|
.agent-gui-node__provider-rail-launchpad-item {
|
|
8929
|
-
|
|
8971
|
+
flex: 0 0 auto;
|
|
8972
|
+
width: 36px;
|
|
8973
|
+
height: 36px;
|
|
8974
|
+
border-radius: 9px;
|
|
8975
|
+
transition:
|
|
8976
|
+
opacity 220ms ease,
|
|
8977
|
+
transform 220ms cubic-bezier(0.16, 1, 0.3, 1),
|
|
8978
|
+
box-shadow 220ms ease;
|
|
8930
8979
|
}
|
|
8931
8980
|
|
|
8932
8981
|
.agent-gui-node__empty-hero-launchpad-icon
|
|
8933
|
-
.agent-gui-node__provider-rail-launchpad-item[data-provider-active="
|
|
8934
|
-
|
|
8982
|
+
.agent-gui-node__provider-rail-launchpad-item[data-provider-active="true"] {
|
|
8983
|
+
transform: scale(1.14);
|
|
8984
|
+
box-shadow: 0 0 0 1.5px var(--tutti-purple);
|
|
8985
|
+
}
|
|
8986
|
+
|
|
8987
|
+
/* Clickable agent switchers: reset native button chrome, keep the same box, and
|
|
8988
|
+
give a hover/focus affordance so the strip reads as interactive. */
|
|
8989
|
+
button.agent-gui-node__provider-rail-launchpad-item {
|
|
8990
|
+
padding: 0;
|
|
8991
|
+
border: 0;
|
|
8992
|
+
cursor: pointer;
|
|
8993
|
+
appearance: none;
|
|
8994
|
+
-webkit-appearance: none;
|
|
8995
|
+
}
|
|
8996
|
+
|
|
8997
|
+
.agent-gui-node__empty-hero-launchpad-icon
|
|
8998
|
+
button.agent-gui-node__provider-rail-launchpad-item:hover:not(
|
|
8999
|
+
[data-provider-active="true"]
|
|
9000
|
+
) {
|
|
9001
|
+
opacity: 1 !important;
|
|
9002
|
+
transform: scale(1.08);
|
|
9003
|
+
}
|
|
9004
|
+
|
|
9005
|
+
.agent-gui-node__empty-hero-launchpad-icon
|
|
9006
|
+
button.agent-gui-node__provider-rail-launchpad-item:focus-visible {
|
|
9007
|
+
outline: none;
|
|
9008
|
+
box-shadow: 0 0 0 1.5px var(--tutti-purple);
|
|
8935
9009
|
}
|
|
8936
9010
|
|
|
8937
9011
|
.agent-gui-node__provider-rail-tile[data-loading="true"]
|
|
@@ -8981,6 +9055,14 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
8981
9055
|
place-items: center;
|
|
8982
9056
|
}
|
|
8983
9057
|
|
|
9058
|
+
/* The horizontal launchpad strip is wider than the single-icon slot; let the
|
|
9059
|
+
slot grow to the strip's width so the selected agent stays centered. */
|
|
9060
|
+
.agent-gui-node__empty-hero-icon-slot:has(
|
|
9061
|
+
> .agent-gui-node__empty-hero-launchpad-icon
|
|
9062
|
+
) {
|
|
9063
|
+
width: auto;
|
|
9064
|
+
}
|
|
9065
|
+
|
|
8984
9066
|
.agent-gui-node__empty-hero-icon-effect {
|
|
8985
9067
|
display: block;
|
|
8986
9068
|
width: 48px;
|
|
@@ -9069,12 +9151,11 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
9069
9151
|
gap: 8px;
|
|
9070
9152
|
}
|
|
9071
9153
|
|
|
9072
|
-
|
|
9073
|
-
|
|
9074
|
-
|
|
9075
|
-
|
|
9076
|
-
|
|
9077
|
-
font-size: 24px;
|
|
9154
|
+
/* Gate gap is 8px; add 16px so the icon-to-title spacing is 24px. */
|
|
9155
|
+
.agent-gui-node__empty-provider-gate > .agent-gui-node__empty-hero-icon-effect,
|
|
9156
|
+
.agent-gui-node__empty-provider-gate
|
|
9157
|
+
> .agent-gui-node__empty-hero-launchpad-icon {
|
|
9158
|
+
margin-bottom: 16px;
|
|
9078
9159
|
}
|
|
9079
9160
|
|
|
9080
9161
|
.agent-gui-node__empty-provider-gate-description {
|
|
@@ -9098,6 +9179,8 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
|
|
|
9098
9179
|
}
|
|
9099
9180
|
|
|
9100
9181
|
.agent-gui-node__empty-provider-gate-action {
|
|
9182
|
+
/* Container gap is 8px; add 16px so the description-to-button spacing is 24px. */
|
|
9183
|
+
margin-top: 16px;
|
|
9101
9184
|
animation: agent-gui-empty-hero-enter 300ms cubic-bezier(0.16, 1, 0.3, 1)
|
|
9102
9185
|
190ms both;
|
|
9103
9186
|
}
|
|
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
|