@tutti-os/agent-gui 0.0.95 → 0.0.96

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 (110) hide show
  1. package/README.md +38 -6
  2. package/dist/{AgentGUI-CwBLYtv-.d.ts → AgentGUI-DWdvUV4x.d.ts} +64 -18
  3. package/dist/agent-conversation/index.d.ts +3 -2
  4. package/dist/agent-conversation/index.js +10 -9
  5. package/dist/agent-conversation/index.js.map +1 -1
  6. package/dist/agent-env/index.js +1 -1
  7. package/dist/agent-gui.d.ts +5 -5
  8. package/dist/agent-gui.js +26 -26
  9. package/dist/agent-message-center/index.d.ts +14 -3
  10. package/dist/agent-message-center/index.js +182 -47
  11. package/dist/agent-message-center/index.js.map +1 -1
  12. package/dist/{agentFileMentionContracts-Czvz6YMI.d.ts → agentFileMentionContracts-58IjMU-u.d.ts} +1 -0
  13. package/dist/{agentGuiNodeTypes-DppADPHW.d.ts → agentGuiNodeTypes-B9X4aWfv.d.ts} +30 -18
  14. package/dist/agents.d.ts +1 -1
  15. package/dist/agents.js +1 -1
  16. package/dist/app/renderer/agentactivity.css +150 -3
  17. package/dist/{chunk-C5FV4UGI.js → chunk-2HJEOO7W.js} +14 -6
  18. package/dist/chunk-2HJEOO7W.js.map +1 -0
  19. package/dist/{chunk-BFNJKTDV.js → chunk-3XXBDYAI.js} +11 -16
  20. package/dist/chunk-3XXBDYAI.js.map +1 -0
  21. package/dist/{chunk-YE25HN6T.js → chunk-3Y3F7CS5.js} +17 -25
  22. package/dist/chunk-3Y3F7CS5.js.map +1 -0
  23. package/dist/{chunk-CRO2MV2Y.js → chunk-4PQPJ5OY.js} +21 -116
  24. package/dist/chunk-4PQPJ5OY.js.map +1 -0
  25. package/dist/{chunk-R2EWECUP.js → chunk-7BXWPI4F.js} +17 -2
  26. package/dist/{chunk-R2EWECUP.js.map → chunk-7BXWPI4F.js.map} +1 -1
  27. package/dist/{chunk-LQVXBT65.js → chunk-AGT7MUTV.js} +9 -9
  28. package/dist/{chunk-LQVXBT65.js.map → chunk-AGT7MUTV.js.map} +1 -1
  29. package/dist/{chunk-O6W72SEP.js → chunk-C35SNDVZ.js} +4 -1
  30. package/dist/chunk-C35SNDVZ.js.map +1 -0
  31. package/dist/{chunk-BIHBXWK5.js → chunk-E4HQUTM3.js} +2 -2
  32. package/dist/{chunk-NX3CZJXW.js → chunk-H5F3QSCF.js} +2 -2
  33. package/dist/{chunk-WEDMAVX2.js → chunk-IYEXLOUE.js} +3 -6
  34. package/dist/chunk-IYEXLOUE.js.map +1 -0
  35. package/dist/{chunk-3R2D4E57.js → chunk-JKIZA7EJ.js} +933 -844
  36. package/dist/chunk-JKIZA7EJ.js.map +1 -0
  37. package/dist/{chunk-UQJPV6HP.js → chunk-L3GMMGRS.js} +8 -6
  38. package/dist/chunk-L3GMMGRS.js.map +1 -0
  39. package/dist/{chunk-KAL4XZMA.js → chunk-MASXZENX.js} +1 -1
  40. package/dist/chunk-MASXZENX.js.map +1 -0
  41. package/dist/{chunk-7PFDA2HQ.js → chunk-O3Q5SIJH.js} +3 -3
  42. package/dist/{chunk-NITOD7WF.js → chunk-QVBF5BN5.js} +2 -2
  43. package/dist/{chunk-7RDD3EWP.js → chunk-RE4AXS27.js} +24 -15
  44. package/dist/chunk-RE4AXS27.js.map +1 -0
  45. package/dist/{chunk-NJAZ7LQM.js → chunk-TVIGLNNI.js} +3 -3
  46. package/dist/{chunk-VF22EG3F.js → chunk-UHBCM6RO.js} +1 -1
  47. package/dist/chunk-UHBCM6RO.js.map +1 -0
  48. package/dist/{chunk-AOS2VWU6.js → chunk-W6WAGPMD.js} +33 -3
  49. package/dist/chunk-W6WAGPMD.js.map +1 -0
  50. package/dist/{chunk-RY6GIO3K.js → chunk-WKSFPJHZ.js} +5010 -3656
  51. package/dist/chunk-WKSFPJHZ.js.map +1 -0
  52. package/dist/{chunk-JX2SIXNL.js → chunk-WMNS4MAQ.js} +8 -7
  53. package/dist/{chunk-JX2SIXNL.js.map → chunk-WMNS4MAQ.js.map} +1 -1
  54. package/dist/{chunk-XMO45GKA.js → chunk-XPFHJMZP.js} +14 -4
  55. package/dist/chunk-XPFHJMZP.js.map +1 -0
  56. package/dist/chunk-YMXYBG7U.js +12 -0
  57. package/dist/chunk-YMXYBG7U.js.map +1 -0
  58. package/dist/context-mention-palette/index.d.ts +1 -1
  59. package/dist/context-mention-palette/index.js +14 -14
  60. package/dist/custom-mention.d.ts +2 -4
  61. package/dist/dock-icons.d.ts +2 -4
  62. package/dist/i18n/index.d.ts +30 -0
  63. package/dist/i18n/index.js +2 -2
  64. package/dist/index.d.ts +14 -12
  65. package/dist/index.js +34 -30
  66. package/dist/index.js.map +1 -1
  67. package/dist/mention-search.d.ts +1 -1
  68. package/dist/mention-search.js +11 -11
  69. package/dist/pastedTextKinds-D-XuInaS.d.ts +4 -0
  70. package/dist/startup-shell.d.ts +8 -0
  71. package/dist/startup-shell.js +184 -0
  72. package/dist/startup-shell.js.map +1 -0
  73. package/dist/{types-DX2bxgB8.d.ts → types-CnT8rNUI.d.ts} +16 -5
  74. package/dist/workbench/contribution.d.ts +3 -2
  75. package/dist/workbench/contribution.js +6 -6
  76. package/dist/workbench/index.d.ts +4 -4
  77. package/dist/workbench/index.js +14 -16
  78. package/dist/workbench/launch.d.ts +2 -2
  79. package/dist/workbench/launch.js +3 -3
  80. package/dist/workbench/providerCatalog.d.ts +2 -2
  81. package/dist/workbench/providerCatalog.js +1 -1
  82. package/dist/workbench/sessionTitle.d.ts +8 -12
  83. package/dist/workbench/sessionTitle.js +5 -7
  84. package/dist/workbench/state.js +2 -2
  85. package/dist/workbench/types.d.ts +2 -1
  86. package/dist/workbench/types.js +1 -1
  87. package/dist/workspace-agent-generated-files.js +6 -6
  88. package/package.json +19 -12
  89. package/dist/chunk-3R2D4E57.js.map +0 -1
  90. package/dist/chunk-7J4K6WKB.js +0 -66
  91. package/dist/chunk-7J4K6WKB.js.map +0 -1
  92. package/dist/chunk-7RDD3EWP.js.map +0 -1
  93. package/dist/chunk-AOS2VWU6.js.map +0 -1
  94. package/dist/chunk-BFNJKTDV.js.map +0 -1
  95. package/dist/chunk-C5FV4UGI.js.map +0 -1
  96. package/dist/chunk-CRO2MV2Y.js.map +0 -1
  97. package/dist/chunk-KAL4XZMA.js.map +0 -1
  98. package/dist/chunk-O6W72SEP.js.map +0 -1
  99. package/dist/chunk-RY6GIO3K.js.map +0 -1
  100. package/dist/chunk-UQJPV6HP.js.map +0 -1
  101. package/dist/chunk-VF22EG3F.js.map +0 -1
  102. package/dist/chunk-WEDMAVX2.js.map +0 -1
  103. package/dist/chunk-XMO45GKA.js.map +0 -1
  104. package/dist/chunk-YE25HN6T.js.map +0 -1
  105. package/dist/uiSettings-BQS9r2eo.d.ts +0 -6
  106. /package/dist/{chunk-BIHBXWK5.js.map → chunk-E4HQUTM3.js.map} +0 -0
  107. /package/dist/{chunk-NX3CZJXW.js.map → chunk-H5F3QSCF.js.map} +0 -0
  108. /package/dist/{chunk-7PFDA2HQ.js.map → chunk-O3Q5SIJH.js.map} +0 -0
  109. /package/dist/{chunk-NITOD7WF.js.map → chunk-QVBF5BN5.js.map} +0 -0
  110. /package/dist/{chunk-NJAZ7LQM.js.map → chunk-TVIGLNNI.js.map} +0 -0
@@ -26,6 +26,7 @@ interface AgentMentionSessionItem {
26
26
  initiatorName: string;
27
27
  initiatorAvatarUrl?: string;
28
28
  agentName: string;
29
+ agentIconUrl?: string;
29
30
  status?: string;
30
31
  inputPreview?: string;
31
32
  summaryPreview?: string;
@@ -1,8 +1,9 @@
1
1
  import { AgentActivitySession, AgentActivitySlashCommandPolicy, AgentActivityUsage, CanonicalAgentSession } from '@tutti-os/agent-activity-core';
2
- import { s as AgentHostAgentSessionCommand, t as AgentHostAgentSessionComposerSettings, v as AgentHostAgentSessionReasoningEffort, w as AgentHostAgentSessionSpeed, u as AgentHostAgentSessionPermissionConfig, m as AgentGUIProvider, y as AgentPromptContentBlock, l as AgentGUINodeData, h as AgentGUIAgentTarget, o as AgentGUIProviderRailMode, p as AgentGUIProviderReadinessGate } from './types-DX2bxgB8.js';
2
+ import { t as AgentHostAgentSessionCommand, u as AgentHostAgentSessionComposerSettings, w as AgentHostAgentSessionReasoningEffort, x as AgentHostAgentSessionSpeed, v as AgentHostAgentSessionPermissionConfig, n as AgentGUIProvider, z as AgentPromptContentBlock, m as AgentGUINodeData, h as AgentGUIAgentTarget, p as AgentGUIProviderRailMode, q as AgentGUIProviderReadinessGate } from './types-CnT8rNUI.js';
3
3
  import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, d as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-C335TR6S.js';
4
4
  import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult } from './workspaceAgentActivityListTypes-C7gPWYiA.js';
5
5
  import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
6
+ import { A as AGENT_PASTED_TEXT_BLOCK_KIND } from './pastedTextKinds-D-XuInaS.js';
6
7
 
7
8
  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"];
8
9
  type AppErrorCode = (typeof APP_ERROR_CODES)[number];
@@ -375,6 +376,7 @@ interface AgentGUIConversationSummary {
375
376
  updatedAtUnixMs: number;
376
377
  hasUnreadCompletion?: boolean;
377
378
  unreadCompletionKey?: string | null;
379
+ projectionSource?: "pending_activation";
378
380
  isImported?: boolean;
379
381
  activeTurn?: AgentActivitySession["activeTurn"];
380
382
  }
@@ -448,7 +450,12 @@ interface AgentGUIProviderSkillOption {
448
450
  path?: string;
449
451
  kind?: "skill" | "connector";
450
452
  }
451
- interface AgentComposerDraftImage {
453
+ interface AgentComposerTextBlock {
454
+ type: "text";
455
+ text: string;
456
+ }
457
+ interface AgentComposerImageBlock {
458
+ type: "image";
452
459
  id: string;
453
460
  name: string;
454
461
  mimeType: "image/png" | "image/jpeg" | "image/webp";
@@ -460,7 +467,8 @@ interface AgentComposerDraftImage {
460
467
  uploading?: boolean;
461
468
  uploadError?: string;
462
469
  }
463
- interface AgentComposerDraftFile {
470
+ interface AgentComposerFileBlockBase {
471
+ type: "file";
464
472
  id: string;
465
473
  name: string;
466
474
  mimeType?: string;
@@ -471,22 +479,23 @@ interface AgentComposerDraftFile {
471
479
  uploading?: boolean;
472
480
  uploadError?: string;
473
481
  }
474
- interface AgentComposerDraftLargeText {
475
- id: string;
476
- name: string;
477
- text: string;
478
- sizeBytes?: number;
479
- path?: string;
480
- uploading?: boolean;
481
- uploadError?: string;
482
+ interface AgentComposerRegularFileBlock extends AgentComposerFileBlockBase {
483
+ kind: "file";
484
+ text?: never;
482
485
  }
483
-
484
- interface AgentComposerDraft {
485
- prompt: string;
486
- images: AgentComposerDraftImage[];
487
- files?: AgentComposerDraftFile[];
488
- largeTexts?: AgentComposerDraftLargeText[];
486
+ interface AgentComposerPastedTextBlock extends AgentComposerFileBlockBase {
487
+ kind: typeof AGENT_PASTED_TEXT_BLOCK_KIND;
488
+ /** Empty only when a queued pasted-text attachment is restored by path. */
489
+ text: string;
489
490
  }
491
+ type AgentComposerFileBlock = AgentComposerRegularFileBlock | AgentComposerPastedTextBlock;
492
+ type AgentComposerAttachmentBlock = AgentComposerImageBlock | AgentComposerFileBlock;
493
+ type AgentComposerDraftContent = [
494
+ AgentComposerTextBlock,
495
+ ...AgentComposerAttachmentBlock[]
496
+ ];
497
+ /** One atomic, unsent composer message. */
498
+ type AgentComposerDraft = AgentComposerDraftContent;
490
499
  interface AgentGUIComposerSettingsVM {
491
500
  sessionSettings: AgentSessionComposerSettings | null;
492
501
  draftSettings: {
@@ -537,6 +546,7 @@ interface AgentGUIQueuedPromptVM {
537
546
  displayPrompt?: string;
538
547
  createdAtUnixMs: number;
539
548
  }
549
+ type AgentGUIQueueStatus = "active" | "paused_by_user";
540
550
  interface AgentGUIShellViewModel {
541
551
  workspaceId: string;
542
552
  workspacePath?: string | null;
@@ -560,6 +570,7 @@ interface AgentGUIRailViewModel {
560
570
  listError: string | null;
561
571
  }
562
572
  interface AgentGUIDetailViewModel {
573
+ availability: "loading" | "ready" | "not_found" | "error";
563
574
  isLoadingMessages: boolean;
564
575
  isLoadingOlderMessages: boolean;
565
576
  hasOlderMessages: boolean;
@@ -587,6 +598,7 @@ interface AgentGUIComposerViewModel {
587
598
  canSubmit: boolean;
588
599
  composerSettings: AgentGUIComposerSettingsVM;
589
600
  queuedPrompts: AgentGUIQueuedPromptVM[];
601
+ queueStatus: AgentGUIQueueStatus;
590
602
  drainingQueuedPromptId: string | null;
591
603
  canQueueWhileBusy: boolean;
592
604
  }
@@ -619,4 +631,4 @@ interface AgentGUINodeViewModel {
619
631
  operations: AgentGUIOperationsViewModel;
620
632
  }
621
633
 
622
- export type { AgentComposerDraft as A, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUIComposerSettingsVM as a, AgentGUINodeViewModel as b, AgentGUIProviderSkillOption as c, AgentGUIQueuedPromptVM as d, AgentHostApi as e, AgentHostApplyWorkspaceGitPatchInput as f, AgentHostInputApi as g, AgentHostRuntimeApi as h, AgentHostSelectFilesInput as i, AgentMessageMarkdownWorkspaceAppIcon as j, AgentProbeProvider as k, AgentProbeSnapshot as l, AgentProviderProbeListInput as m, AgentProviderProbeListResult as n, AgentSessionCommand as o, AgentSlashCommandCapability as p, AgentUsageQuota as q, AgentUsageSnapshot as r, WriteWorkspaceAgentReadStateInput as s };
634
+ export type { AgentComposerDraft as A, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentGUIComposerSettingsVM as a, AgentGUINodeViewModel as b, AgentGUIProviderSkillOption as c, AgentGUIQueueStatus as d, AgentGUIQueuedPromptVM as e, AgentHostApi as f, AgentHostApplyWorkspaceGitPatchInput as g, AgentHostInputApi as h, AgentHostRuntimeApi as i, AgentHostSelectFilesInput as j, AgentMessageMarkdownWorkspaceAppIcon as k, AgentProbeProvider as l, AgentProbeSnapshot as m, AgentProviderProbeListInput as n, AgentProviderProbeListResult as o, AgentSessionCommand as p, AgentSlashCommandCapability as q, AgentUsageQuota as r, AgentUsageSnapshot as s, WriteWorkspaceAgentReadStateInput as t };
package/dist/agents.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { A as AgentGUIAgent, h as AgentGUIAgentTarget } from './types-DX2bxgB8.js';
1
+ import { A as AgentGUIAgent, h as AgentGUIAgentTarget } from './types-CnT8rNUI.js';
2
2
 
3
3
  declare function normalizeAgentGUIAgents(agents: readonly AgentGUIAgent[] | null | undefined): AgentGUIAgent[];
4
4
  declare function agentGUIAgentIsReady(agent: AgentGUIAgent): boolean;
package/dist/agents.js CHANGED
@@ -3,7 +3,7 @@ import {
3
3
  normalizeAgentGUIAgents,
4
4
  projectAgentGUIAgentsToInternalTargets,
5
5
  resolveAgentGUISelectedDirectoryAgent
6
- } from "./chunk-O6W72SEP.js";
6
+ } from "./chunk-C35SNDVZ.js";
7
7
  export {
8
8
  agentGUIAgentIsReady,
9
9
  normalizeAgentGUIAgents,
@@ -6546,7 +6546,7 @@ button.agent-gui-node__conversation-section-toggle:hover
6546
6546
  .agent-gui-message-locator__track-segment {
6547
6547
  position: absolute;
6548
6548
  top: var(--agent-message-locator-segment-position);
6549
- left: 50%;
6549
+ left: calc(var(--agent-message-locator-hit-size) / 2);
6550
6550
  width: 1px;
6551
6551
  height: 8px;
6552
6552
  transform: translate(-50%, -50%);
@@ -7421,8 +7421,21 @@ button.agent-gui-node__conversation-section-toggle:hover
7421
7421
  margin-inline: 4px;
7422
7422
  }
7423
7423
 
7424
+ .agent-gui-node__composer[data-layout="dock"] {
7425
+ /* Opaque backdrop for the footer strip: the timeline can slide beneath the
7426
+ dock, and a transparent footer would show message rows behind the
7427
+ toolbar controls. */
7428
+ background: var(--agent-gui-session-flow-background);
7429
+ }
7430
+
7424
7431
  .agent-gui-node__composer[data-layout="dock"]
7425
7432
  .agent-gui-node__composer-input-shell {
7433
+ /* Reserve only the collapsed input height (56px, keep in sync with
7434
+ DOCK_COMPOSER_INPUT_MIN_HEIGHT) in the layout flow. A growing draft
7435
+ (long paste, attachments) expands the text box upward over the
7436
+ conversation instead of enlarging the dock and pushing the message
7437
+ stream up. */
7438
+ grid-template-rows: 56px auto;
7426
7439
  gap: 6px;
7427
7440
  padding: 0;
7428
7441
  border: 0;
@@ -7439,6 +7452,7 @@ button.agent-gui-node__conversation-section-toggle:hover
7439
7452
  min-height: 56px;
7440
7453
  max-height: var(--agent-gui-composer-input-max-height, 110px);
7441
7454
  align-items: end;
7455
+ align-self: end;
7442
7456
  overflow: hidden;
7443
7457
  padding: 0 12px;
7444
7458
  border: 1px solid var(--line-2);
@@ -7900,7 +7914,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
7900
7914
 
7901
7915
  .agent-gui-node__composer-queued-prompt-header {
7902
7916
  display: flex;
7903
- align-items: center;
7917
+ align-items: flex-start;
7904
7918
  justify-content: flex-start;
7905
7919
  gap: 4px;
7906
7920
  min-height: 20px;
@@ -7979,12 +7993,19 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
7979
7993
  }
7980
7994
 
7981
7995
  .agent-gui-node__composer-queued-prompt-label {
7996
+ min-width: 0;
7982
7997
  font-size: 13px;
7983
7998
  font-weight: 600;
7984
7999
  color: var(--agent-gui-accent-strong);
7985
8000
  line-height: 20px;
7986
8001
  }
7987
8002
 
8003
+ .agent-gui-node__composer-queued-prompt-panel[data-queue-status="paused_by_user"]
8004
+ .agent-gui-node__composer-queued-prompt-label {
8005
+ overflow-wrap: anywhere;
8006
+ white-space: normal;
8007
+ }
8008
+
7988
8009
  .agent-gui-node__composer-queued-prompt-count {
7989
8010
  margin-left: 4px;
7990
8011
  color: var(--agent-gui-accent-strong);
@@ -8568,7 +8589,10 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8568
8589
  }
8569
8590
 
8570
8591
  .agent-gui-node__composer[data-layout="dock"] .agent-gui-node__composer-footer {
8571
- padding: 0 2px;
8592
+ position: relative;
8593
+ margin: 0 -12px -12px;
8594
+ padding: 0 14px 12px;
8595
+ background: var(--agent-gui-session-flow-background);
8572
8596
  }
8573
8597
 
8574
8598
  .agent-gui-node__composer-footer-left,
@@ -8759,6 +8783,12 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8759
8783
  line-height: 1.2;
8760
8784
  }
8761
8785
 
8786
+ .agent-gui-node__composer-menu-item[data-disabled] {
8787
+ cursor: not-allowed;
8788
+ color: var(--text-disabled);
8789
+ opacity: 0.5;
8790
+ }
8791
+
8762
8792
  .agent-gui-node__composer-menu-content[data-agent-composer-settings-layout="model-primary"]
8763
8793
  .agent-gui-node__composer-menu-item,
8764
8794
  .agent-gui-node__composer-menu-content[data-agent-composer-settings-layout="model-submenu"]
@@ -8884,9 +8914,18 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8884
8914
  }
8885
8915
 
8886
8916
  .agent-gui-node__provider-rail-sidebar-footer {
8917
+ padding-bottom: 0;
8918
+ }
8919
+
8920
+ .agent-gui-node__provider-rail-sidebar-footer:last-child {
8887
8921
  padding-bottom: 12px;
8888
8922
  }
8889
8923
 
8924
+ .agent-gui-node__provider-rail-sidebar-footer
8925
+ + .agent-gui-node__provider-rail-config-footer {
8926
+ margin-top: 8px;
8927
+ }
8928
+
8890
8929
  .agent-gui-node__provider-rail-config-button {
8891
8930
  display: grid;
8892
8931
  width: 32px;
@@ -9124,6 +9163,114 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9124
9163
  animation: agent-gui-provider-target-loading 1.2s ease-in-out infinite;
9125
9164
  }
9126
9165
 
9166
+ .agent-gui-provider-manager-tile[data-dragging="true"] {
9167
+ opacity: 0.45;
9168
+ }
9169
+
9170
+ .agent-gui-provider-manager-drop-zone {
9171
+ transition:
9172
+ background-color 140ms ease,
9173
+ box-shadow 140ms ease;
9174
+ }
9175
+
9176
+ .agent-gui-provider-manager-drop-zone[data-drop-active="true"] {
9177
+ background: color-mix(
9178
+ in srgb,
9179
+ var(--brand-primary, var(--tutti-purple)) 7%,
9180
+ transparent
9181
+ );
9182
+ box-shadow: inset 0 0 0 1px
9183
+ color-mix(
9184
+ in srgb,
9185
+ var(--brand-primary, var(--tutti-purple)) 42%,
9186
+ transparent
9187
+ );
9188
+ }
9189
+
9190
+ .agent-gui-provider-manager-drop-zone[data-drop-blocked="true"] {
9191
+ background: color-mix(in srgb, var(--state-danger) 6%, transparent);
9192
+ box-shadow: inset 0 0 0 1px
9193
+ color-mix(in srgb, var(--state-danger) 28%, transparent);
9194
+ }
9195
+
9196
+ .agent-gui-provider-manager-tile
9197
+ > :not(.agent-gui-provider-manager-drop-indicator) {
9198
+ transition: translate 140ms ease;
9199
+ }
9200
+
9201
+ .agent-gui-provider-manager-tile[data-drag-over="before"]
9202
+ > :not(.agent-gui-provider-manager-drop-indicator) {
9203
+ translate: 8px 0;
9204
+ }
9205
+
9206
+ .agent-gui-provider-manager-tile[data-drag-over="after"]
9207
+ > :not(.agent-gui-provider-manager-drop-indicator) {
9208
+ translate: -8px 0;
9209
+ }
9210
+
9211
+ .agent-gui-provider-manager-drop-indicator {
9212
+ position: absolute;
9213
+ top: 4px;
9214
+ bottom: 4px;
9215
+ width: 2px;
9216
+ border-radius: 999px;
9217
+ background: var(--brand-primary, var(--tutti-purple));
9218
+ pointer-events: none;
9219
+ }
9220
+
9221
+ .agent-gui-provider-manager-drop-indicator[data-position="before"] {
9222
+ left: -9px;
9223
+ }
9224
+
9225
+ .agent-gui-provider-manager-drop-indicator[data-position="after"] {
9226
+ right: -9px;
9227
+ }
9228
+
9229
+ .agent-gui-provider-manager-tile[data-long-press="true"] {
9230
+ animation: agent-gui-provider-manager-long-press 550ms linear;
9231
+ }
9232
+
9233
+ .agent-gui-provider-manager-tile[data-editing="true"] {
9234
+ transform-origin: 50% 42%;
9235
+ animation: agent-gui-provider-manager-wiggle 180ms ease-in-out infinite
9236
+ alternate;
9237
+ }
9238
+
9239
+ .agent-gui-provider-manager-tile[data-editing="true"]:nth-child(2n) {
9240
+ animation-delay: -90ms;
9241
+ animation-direction: alternate-reverse;
9242
+ }
9243
+
9244
+ .agent-gui-provider-manager-tile[data-editing="true"][data-drag-active="true"] {
9245
+ animation: none;
9246
+ }
9247
+
9248
+ @keyframes agent-gui-provider-manager-wiggle {
9249
+ 0% {
9250
+ transform: rotate(-1.2deg) translateY(0);
9251
+ }
9252
+
9253
+ 100% {
9254
+ transform: rotate(1.2deg) translateY(-0.5px);
9255
+ }
9256
+ }
9257
+
9258
+ @keyframes agent-gui-provider-manager-long-press {
9259
+ from {
9260
+ scale: 1;
9261
+ }
9262
+
9263
+ to {
9264
+ scale: 1;
9265
+ }
9266
+ }
9267
+
9268
+ @media (prefers-reduced-motion: reduce) {
9269
+ .agent-gui-provider-manager-tile[data-editing="true"] {
9270
+ animation: none;
9271
+ }
9272
+ }
9273
+
9127
9274
  @keyframes agent-gui-provider-target-loading {
9128
9275
  0% {
9129
9276
  background-position: 100% 0;
@@ -2,14 +2,14 @@ import {
2
2
  getOptionalAgentHostApi,
3
3
  managedAgentRoundedIconUrl,
4
4
  useOptionalAgentHostApi
5
- } from "./chunk-KAL4XZMA.js";
6
- import {
7
- translate,
8
- useTranslation
9
- } from "./chunk-BIHBXWK5.js";
5
+ } from "./chunk-MASXZENX.js";
10
6
  import {
11
7
  resolveAgentWorkspaceFileVisualKind
12
8
  } from "./chunk-PJP5BUU6.js";
9
+ import {
10
+ translate,
11
+ useTranslation
12
+ } from "./chunk-E4HQUTM3.js";
13
13
  import {
14
14
  getAgentCustomMentionKind
15
15
  } from "./chunk-5X7YDOC6.js";
@@ -694,6 +694,14 @@ function resolveWorkspaceMentionLinkAction({
694
694
  source
695
695
  };
696
696
  }
697
+ if (mention.providerId === "workspace-reference" && mention.scope?.source?.trim() === "app") {
698
+ return {
699
+ type: "open-workspace-app",
700
+ workspaceId,
701
+ appId: targetId,
702
+ source
703
+ };
704
+ }
697
705
  return null;
698
706
  }
699
707
  function parseWorkspaceIssueMentionMode(value) {
@@ -3822,4 +3830,4 @@ export {
3822
3830
  AgentMessageMarkdown,
3823
3831
  CustomScrollArea
3824
3832
  };
3825
- //# sourceMappingURL=chunk-C5FV4UGI.js.map
3833
+ //# sourceMappingURL=chunk-2HJEOO7W.js.map