@tutti-os/agent-gui 0.0.99 → 0.0.101

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 (95) hide show
  1. package/dist/{AgentGUI-Bkk2TRS0.d.ts → AgentGUI-FECh2x1p.d.ts} +19 -37
  2. package/dist/agent-conversation/index.d.ts +4 -4
  3. package/dist/agent-conversation/index.js +8 -9
  4. package/dist/agent-conversation/index.js.map +1 -1
  5. package/dist/agent-gui.d.ts +5 -4
  6. package/dist/agent-gui.js +19 -19
  7. package/dist/agent-message-center/index.d.ts +4 -6
  8. package/dist/agent-message-center/index.js +13 -52
  9. package/dist/agent-message-center/index.js.map +1 -1
  10. package/dist/agent-title-text.js +1 -1
  11. package/dist/{agentConversationVM-C335TR6S.d.ts → agentConversationVM-BzHZhwFP.d.ts} +1 -1
  12. package/dist/{agentGuiNodeTypes-DAsluxjv.d.ts → agentGuiNodeTypes-BH3lz6gn.d.ts} +21 -5
  13. package/dist/app/renderer/agentactivity.css +142 -72
  14. package/dist/chunk-2RQM7PJN.js +16 -0
  15. package/dist/chunk-2RQM7PJN.js.map +1 -0
  16. package/dist/{chunk-FSKGEGGX.js → chunk-4E3QCW6L.js} +17 -3
  17. package/dist/chunk-4E3QCW6L.js.map +1 -0
  18. package/dist/{chunk-63BE6RGM.js → chunk-4YCCATI4.js} +14 -374
  19. package/dist/chunk-4YCCATI4.js.map +1 -0
  20. package/dist/{chunk-IYEXLOUE.js → chunk-4YVKAPKW.js} +5 -8
  21. package/dist/chunk-4YVKAPKW.js.map +1 -0
  22. package/dist/{chunk-MRRICFWA.js → chunk-D7HMQLBO.js} +159 -55
  23. package/dist/chunk-D7HMQLBO.js.map +1 -0
  24. package/dist/{chunk-OTRZBTFQ.js → chunk-DWUVRWXD.js} +2 -2
  25. package/dist/{chunk-RHTZAODZ.js → chunk-E5AD46HP.js} +2 -2
  26. package/dist/{chunk-3NOJFKDV.js → chunk-EUW6VPIK.js} +414 -49
  27. package/dist/chunk-EUW6VPIK.js.map +1 -0
  28. package/dist/{chunk-Y35GDLP2.js → chunk-F5UR6EJG.js} +2 -17
  29. package/dist/chunk-F5UR6EJG.js.map +1 -0
  30. package/dist/{chunk-J7ZYAUPC.js → chunk-FAE7CXZO.js} +8 -6
  31. package/dist/chunk-FAE7CXZO.js.map +1 -0
  32. package/dist/{chunk-CPUEPDF7.js → chunk-GCW57WYQ.js} +646 -595
  33. package/dist/chunk-GCW57WYQ.js.map +1 -0
  34. package/dist/{chunk-4ROALW3K.js → chunk-KAV2WHTG.js} +82 -61
  35. package/dist/chunk-KAV2WHTG.js.map +1 -0
  36. package/dist/chunk-MIJXEELH.js +96 -0
  37. package/dist/chunk-MIJXEELH.js.map +1 -0
  38. package/dist/{chunk-T6PEJFRP.js → chunk-MJOQP2ED.js} +392 -452
  39. package/dist/chunk-MJOQP2ED.js.map +1 -0
  40. package/dist/{chunk-QWGJ5TEG.js → chunk-QY22OBJS.js} +28 -30
  41. package/dist/chunk-QY22OBJS.js.map +1 -0
  42. package/dist/{chunk-SPZJCTBV.js → chunk-TDVYZEUI.js} +348 -322
  43. package/dist/chunk-TDVYZEUI.js.map +1 -0
  44. package/dist/{chunk-MASXZENX.js → chunk-UESYITH6.js} +21 -2
  45. package/dist/chunk-UESYITH6.js.map +1 -0
  46. package/dist/{chunk-PLCHNOXL.js → chunk-VQOPBBBI.js} +1288 -1141
  47. package/dist/chunk-VQOPBBBI.js.map +1 -0
  48. package/dist/{chunk-7M77BK6K.js → chunk-ZPKPIHMZ.js} +196 -156
  49. package/dist/chunk-ZPKPIHMZ.js.map +1 -0
  50. package/dist/context-mention-palette/index.d.ts +5 -1
  51. package/dist/context-mention-palette/index.js +10 -11
  52. package/dist/contribution-CTVBPN0R.d.ts +119 -0
  53. package/dist/i18n/index.d.ts +16 -2
  54. package/dist/i18n/index.js +2 -2
  55. package/dist/index.d.ts +8 -7
  56. package/dist/index.js +21 -20
  57. package/dist/index.js.map +1 -1
  58. package/dist/mention-search.d.ts +18 -6
  59. package/dist/mention-search.js +8 -9
  60. package/dist/workbench/contribution.d.ts +6 -107
  61. package/dist/workbench/contribution.js +7 -3
  62. package/dist/workbench/index.d.ts +6 -4
  63. package/dist/workbench/index.js +27 -21
  64. package/dist/workbench/launch.d.ts +13 -5
  65. package/dist/workbench/launch.js +1 -1
  66. package/dist/workbench/sessionTitle.d.ts +5 -7
  67. package/dist/workbench/sessionTitle.js +3 -4
  68. package/dist/workbench/state.js +3 -1
  69. package/dist/workspace-agent-generated-files.d.ts +8 -13
  70. package/dist/workspace-agent-generated-files.js +6 -21
  71. package/dist/{workspaceAgentActivityListTypes-C7gPWYiA.d.ts → workspaceAgentActivityListTypes-DZfS_HgG.d.ts} +3 -26
  72. package/package.json +14 -14
  73. package/dist/chunk-3NOJFKDV.js.map +0 -1
  74. package/dist/chunk-4ROALW3K.js.map +0 -1
  75. package/dist/chunk-63BE6RGM.js.map +0 -1
  76. package/dist/chunk-7M77BK6K.js.map +0 -1
  77. package/dist/chunk-CPUEPDF7.js.map +0 -1
  78. package/dist/chunk-FSKGEGGX.js.map +0 -1
  79. package/dist/chunk-GAD6Y3BF.js +0 -88
  80. package/dist/chunk-GAD6Y3BF.js.map +0 -1
  81. package/dist/chunk-GCBDIQDX.js +0 -22
  82. package/dist/chunk-GCBDIQDX.js.map +0 -1
  83. package/dist/chunk-IYEXLOUE.js.map +0 -1
  84. package/dist/chunk-J7ZYAUPC.js.map +0 -1
  85. package/dist/chunk-MASXZENX.js.map +0 -1
  86. package/dist/chunk-MRRICFWA.js.map +0 -1
  87. package/dist/chunk-PLCHNOXL.js.map +0 -1
  88. package/dist/chunk-QWGJ5TEG.js.map +0 -1
  89. package/dist/chunk-SPZJCTBV.js.map +0 -1
  90. package/dist/chunk-T6PEJFRP.js.map +0 -1
  91. package/dist/chunk-Y35GDLP2.js.map +0 -1
  92. package/dist/chunk-Y5M6Q6WX.js +0 -25
  93. package/dist/chunk-Y5M6Q6WX.js.map +0 -1
  94. /package/dist/{chunk-OTRZBTFQ.js.map → chunk-DWUVRWXD.js.map} +0 -0
  95. /package/dist/{chunk-RHTZAODZ.js.map → chunk-E5AD46HP.js.map} +0 -0
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  normalizeAgentTitleText
3
- } from "./chunk-GCBDIQDX.js";
3
+ } from "./chunk-MIJXEELH.js";
4
4
  export {
5
5
  normalizeAgentTitleText
6
6
  };
@@ -1,5 +1,5 @@
1
1
  import { WorkspaceIssueMentionMode } from '@tutti-os/workspace-issue-manager/core';
2
- import { W as WorkspaceAgentActivityCard, T as ToolCallStatusKind } from './workspaceAgentActivityListTypes-C7gPWYiA.js';
2
+ import { W as WorkspaceAgentActivityCard, T as ToolCallStatusKind } from './workspaceAgentActivityListTypes-DZfS_HgG.js';
3
3
  import { AgentActivitySession } from '@tutti-os/agent-activity-core';
4
4
 
5
5
  type WorkspaceLinkActionSource = "agent-markdown" | "agent-file-change" | string;
@@ -1,7 +1,6 @@
1
1
  import { AgentActivitySession, AgentActivitySlashCommandPolicy, AgentActivityUsage, CanonicalAgentSession } from '@tutti-os/agent-activity-core';
2
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
- import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, d as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-C335TR6S.js';
4
- import { A as AgentHostBatchUserInfoInput, a as AgentHostBatchUserInfoResult } from './workspaceAgentActivityListTypes-C7gPWYiA.js';
3
+ import { A as AgentApprovalItemVM, a as AgentAskUserQuestionVM, b as AgentConversationPromptVM, c as AgentConversationVM, d as WorkspaceAgentSessionDetailViewModel } from './agentConversationVM-BzHZhwFP.js';
5
4
  import { WorkspaceUserProjectService } from '@tutti-os/workspace-user-project/contracts';
6
5
  import { A as AGENT_PASTED_TEXT_BLOCK_KIND } from './pastedTextKinds-D-XuInaS.js';
7
6
 
@@ -109,6 +108,20 @@ interface WriteWorkspaceAgentReadStateInput extends ReadWorkspaceAgentReadStateI
109
108
  unreadIds: string[];
110
109
  }
111
110
 
111
+ interface AgentHostUserInfo {
112
+ userId: string;
113
+ email?: string;
114
+ avatar?: string;
115
+ avatarObjectKey?: string;
116
+ name?: string;
117
+ }
118
+ interface AgentHostBatchUserInfoInput {
119
+ userIds: string[];
120
+ }
121
+ interface AgentHostBatchUserInfoResult {
122
+ users: AgentHostUserInfo[];
123
+ }
124
+
112
125
  interface ReadWorkspaceFileResult {
113
126
  bytes: Uint8Array;
114
127
  }
@@ -339,7 +352,7 @@ type AgentSessionReasoningEffort = AgentHostAgentSessionReasoningEffort;
339
352
  type AgentSessionSpeed = AgentHostAgentSessionSpeed;
340
353
 
341
354
  type AgentGUIResolvedProvider = AgentGUIProvider | "unknown";
342
- type AgentGUIConversationTitleFallback = "generic-agent" | null;
355
+ type AgentGUIConversationTitleFallback = "untitled-conversation" | null;
343
356
 
344
357
  interface AgentGUIConversationProjectSummary {
345
358
  id: string;
@@ -396,9 +409,11 @@ type AgentGUIInteractivePrompt = AgentGUIApprovalRequest | {
396
409
  kind: "plan-implementation";
397
410
  }>;
398
411
 
412
+ type AgentCapabilityUse = "browserUse" | "computerUse";
413
+
399
414
  interface AgentSlashCommandCapability {
400
415
  aliases?: readonly string[];
401
- capability: "browserUse" | "computerUse";
416
+ capability: AgentCapabilityUse;
402
417
  kind: "capability";
403
418
  name: string;
404
419
  }
@@ -496,6 +511,7 @@ type AgentComposerDraftContent = [
496
511
  ];
497
512
  /** One atomic, unsent composer message. */
498
513
  type AgentComposerDraft = AgentComposerDraftContent;
514
+ type AgentComposerDraftFile = Omit<AgentComposerRegularFileBlock, "type" | "kind">;
499
515
  interface AgentGUIComposerSettingsVM {
500
516
  sessionSettings: AgentSessionComposerSettings | null;
501
517
  draftSettings: {
@@ -631,4 +647,4 @@ interface AgentGUINodeViewModel {
631
647
  operations: AgentGUIOperationsViewModel;
632
648
  }
633
649
 
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 };
650
+ export type { AgentComposerDraft as A, PersistWriteResult as P, ReadWorkspaceAgentReadStateInput as R, WorkspaceAgentReadStateSnapshot as W, AgentComposerDraftFile as a, AgentGUIComposerSettingsVM as b, AgentGUINodeViewModel as c, AgentGUIProviderSkillOption as d, AgentGUIQueueStatus as e, AgentGUIQueuedPromptVM as f, AgentHostApi as g, AgentHostApplyWorkspaceGitPatchInput as h, AgentHostInputApi as i, AgentHostRuntimeApi as j, AgentHostSelectFilesInput as k, AgentMessageMarkdownWorkspaceAppIcon as l, AgentProbeProvider as m, AgentProbeSnapshot as n, AgentProviderProbeListInput as o, AgentProviderProbeListResult as p, AgentSessionCommand as q, AgentSlashCommandCapability as r, AgentUsageQuota as s, AgentUsageSnapshot as t, WriteWorkspaceAgentReadStateInput as u };
@@ -103,7 +103,7 @@
103
103
  .tsh-zoom-dialog[data-rmiz-modal] {
104
104
  position: fixed;
105
105
  inset: 0;
106
- z-index: 100300;
106
+ z-index: var(--z-dialog);
107
107
  display: flex;
108
108
  align-items: center;
109
109
  justify-content: center;
@@ -3523,8 +3523,15 @@ aside.workspace-agents-status-panel
3523
3523
  .agent-gui-conversation__interactive-feedback-composer {
3524
3524
  position: relative;
3525
3525
  display: block;
3526
+ box-sizing: border-box;
3526
3527
  width: 100%;
3527
3528
  min-width: 0;
3529
+ min-height: 80px;
3530
+ overflow: hidden;
3531
+ border: 1px solid var(--line-2);
3532
+ border-radius: 7px;
3533
+ background: var(--background-fronted);
3534
+ padding-bottom: 44px;
3528
3535
  }
3529
3536
 
3530
3537
  .agent-gui-conversation__interactive-prompt-textarea {
@@ -3544,17 +3551,18 @@ aside.workspace-agents-status-panel
3544
3551
 
3545
3552
  .agent-gui-conversation__interactive-feedback-composer
3546
3553
  .agent-gui-conversation__interactive-prompt-textarea {
3554
+ display: block;
3547
3555
  box-sizing: border-box;
3548
3556
  min-width: 0;
3549
- min-height: 42px;
3557
+ min-height: 36px;
3550
3558
  max-height: 132px;
3551
- border: 1px solid var(--line-2);
3552
- border-radius: 7px;
3553
- background: var(--background-fronted);
3559
+ border: 0;
3560
+ border-radius: 0;
3561
+ background: transparent;
3554
3562
  color: var(--text-primary);
3555
3563
  font-size: 13px;
3556
3564
  line-height: 1.45;
3557
- padding: 9px 48px 42px 10px;
3565
+ padding: 9px 10px;
3558
3566
  resize: vertical;
3559
3567
  }
3560
3568
 
@@ -3565,14 +3573,14 @@ aside.workspace-agents-status-panel
3565
3573
 
3566
3574
  .agent-gui-conversation__interactive-feedback-send-button {
3567
3575
  position: absolute;
3568
- right: 8px;
3569
- bottom: 8px;
3576
+ right: 12px;
3577
+ bottom: 12px;
3570
3578
  display: grid;
3571
3579
  place-items: center;
3572
- width: 30px;
3573
- min-width: 30px;
3574
- height: 30px;
3575
- min-height: 30px;
3580
+ width: 28px;
3581
+ min-width: 28px;
3582
+ height: 28px;
3583
+ min-height: 28px;
3576
3584
  border: 0;
3577
3585
  border-radius: 999px;
3578
3586
  background: var(--text-primary);
@@ -4233,7 +4241,7 @@ aside.workspace-agents-status-panel
4233
4241
  .tsh-agent-object-token__main {
4234
4242
  padding: 0 6px;
4235
4243
  border-radius: 6px;
4236
- background: var(--tutti-purple-bg);
4244
+ background: transparent;
4237
4245
  }
4238
4246
 
4239
4247
  [data-agent-mention-kind="skill"].tsh-agent-object-token--entity.ProseMirror-selectednode
@@ -4274,6 +4282,7 @@ aside.workspace-agents-status-panel
4274
4282
  .agent-gui-node__composer-textarea .agent-rich-text-mention-node {
4275
4283
  display: inline-flex;
4276
4284
  align-items: center;
4285
+ top: 1px;
4277
4286
  height: 24px;
4278
4287
  min-height: 24px;
4279
4288
  line-height: 24px;
@@ -4297,7 +4306,7 @@ aside.workspace-agents-status-panel
4297
4306
  padding-left: 4px;
4298
4307
  border-radius: 4px;
4299
4308
  line-height: 24px;
4300
- transform: none;
4309
+ transform: translateY(1px);
4301
4310
  transition: background-color 140ms ease-in-out;
4302
4311
  vertical-align: middle;
4303
4312
  }
@@ -4308,6 +4317,32 @@ aside.workspace-agents-status-panel
4308
4317
  height: 24px;
4309
4318
  }
4310
4319
 
4320
+ .agent-gui-node__composer-textarea
4321
+ [data-agent-mention-kind="skill"].tsh-agent-object-token--entity,
4322
+ .agent-gui-node__composer-textarea
4323
+ [data-agent-mention-kind="capability"].tsh-agent-object-token--entity {
4324
+ top: 1px;
4325
+ height: 24px;
4326
+ min-height: 24px;
4327
+ box-sizing: border-box;
4328
+ line-height: 24px;
4329
+ vertical-align: middle;
4330
+ }
4331
+
4332
+ .agent-gui-node__composer-textarea
4333
+ [data-agent-mention-kind="skill"].tsh-agent-object-token--entity
4334
+ .tsh-agent-object-token__main,
4335
+ .agent-gui-node__composer-textarea
4336
+ [data-agent-mention-kind="capability"].tsh-agent-object-token--entity
4337
+ .tsh-agent-object-token__main {
4338
+ height: 24px;
4339
+ box-sizing: border-box;
4340
+ border-radius: 4px;
4341
+ font-size: 13px;
4342
+ line-height: 24px;
4343
+ transform: translateY(-2px);
4344
+ }
4345
+
4311
4346
  .agent-gui-node__composer-textarea
4312
4347
  [data-agent-file-mention="true"].tsh-agent-object-token:hover {
4313
4348
  background: color-mix(in srgb, currentColor 16%, transparent);
@@ -4785,6 +4820,20 @@ aside.workspace-agents-status-panel
4785
4820
  padding-right: 0;
4786
4821
  }
4787
4822
 
4823
+ /* Keep the standalone tool header on the same right edge as its body panel.
4824
+ The body panel is right-anchored independently of the Agent header's rail
4825
+ grid; leaving this accessory in the grid makes its left edge drift when the
4826
+ panel expands to the available width. */
4827
+ .agent-gui-workbench-header[data-agent-gui-standalone-window-header="true"]
4828
+ .agent-gui-workbench-header__secondary-accessory:has(
4829
+ [data-standalone-agent-tool-sidebar-header="true"]
4830
+ ) {
4831
+ position: absolute;
4832
+ top: 0;
4833
+ right: 0;
4834
+ margin-left: 0;
4835
+ }
4836
+
4788
4837
  /*
4789
4838
  * In the collapsed empty state there is no session title to anchor the control
4790
4839
  * cluster, so the detached-window button's margin-left:auto would strand the
@@ -7161,41 +7210,6 @@ button.agent-gui-node__conversation-section-toggle:hover
7161
7210
  outline: none;
7162
7211
  }
7163
7212
 
7164
- .agent-gui-node__provider-setup-notice {
7165
- position: absolute;
7166
- top: 56px;
7167
- left: 50%;
7168
- transform: translateX(-50%);
7169
- z-index: 2;
7170
- box-sizing: border-box;
7171
- width: max-content;
7172
- max-width: min(calc(100% - (var(--agent-gui-detail-padding-x) * 2)), 420px);
7173
- margin: 0;
7174
- /* The pill sizes to its content (width: max-content), so the action button's
7175
- margin-left:auto has no free space to absorb and the message text would butt
7176
- directly against "Set up". Space the message and action explicitly. */
7177
- column-gap: 6px;
7178
- pointer-events: none;
7179
- }
7180
-
7181
- .agent-gui-node__detail-header + .agent-gui-node__provider-setup-notice {
7182
- top: calc(64px + 16px);
7183
- }
7184
-
7185
- .agent-gui-node__provider-setup-notice-action {
7186
- flex: 0 0 auto;
7187
- margin-left: auto;
7188
- border: 0;
7189
- padding: 0;
7190
- background: transparent;
7191
- color: currentColor;
7192
- font: inherit;
7193
- text-decoration: underline;
7194
- cursor: pointer;
7195
- pointer-events: auto;
7196
- -webkit-app-region: no-drag;
7197
- }
7198
-
7199
7213
  .agent-gui-node__layout [data-slot="status-dot"],
7200
7214
  [data-testid="workspace-agent-message-center"] [data-slot="status-dot"] {
7201
7215
  --agent-gui-status-dot-color: var(
@@ -7562,7 +7576,7 @@ button.agent-gui-node__conversation-section-toggle:hover
7562
7576
  min-height: 54px;
7563
7577
  max-height: 118px;
7564
7578
  min-width: 0;
7565
- padding: 12px 0;
7579
+ padding: 0 0 12px;
7566
7580
  }
7567
7581
 
7568
7582
  .agent-gui-node__composer[data-layout="dock"]
@@ -7934,6 +7948,8 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
7934
7948
 
7935
7949
  .agent-gui-node__composer-queued-prompt-list {
7936
7950
  display: grid;
7951
+ width: 100%;
7952
+ min-width: 0;
7937
7953
  gap: 0;
7938
7954
  max-height: 36px;
7939
7955
  overflow: hidden;
@@ -7944,6 +7960,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
7944
7960
 
7945
7961
  .agent-gui-node__composer-queued-prompt-panel {
7946
7962
  display: grid;
7963
+ min-width: 0;
7947
7964
  gap: 4px;
7948
7965
  position: relative;
7949
7966
  z-index: 1;
@@ -7969,13 +7986,14 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
7969
7986
 
7970
7987
  .agent-gui-node__composer-queued-prompt-header {
7971
7988
  display: flex;
7972
- align-items: flex-start;
7989
+ align-items: center;
7973
7990
  justify-content: flex-start;
7974
7991
  gap: 4px;
7975
7992
  min-height: 20px;
7976
7993
  }
7977
7994
 
7978
7995
  .agent-gui-node__composer-queued-prompt-expand-cue {
7996
+ display: block;
7979
7997
  flex: 0 0 auto;
7980
7998
  color: var(--agent-gui-accent-strong);
7981
7999
  opacity: 0;
@@ -8006,6 +8024,9 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8006
8024
 
8007
8025
  .agent-gui-node__composer-queued-prompt-row {
8008
8026
  display: grid;
8027
+ box-sizing: border-box;
8028
+ width: 100%;
8029
+ min-width: 0;
8009
8030
  grid-template-columns: minmax(0, 1fr) auto;
8010
8031
  gap: 8px;
8011
8032
  align-items: center;
@@ -8018,13 +8039,16 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8018
8039
 
8019
8040
  .agent-gui-node__composer-queued-prompt-main {
8020
8041
  display: block;
8042
+ width: 100%;
8021
8043
  min-width: 0;
8022
8044
  }
8023
8045
 
8024
8046
  .agent-gui-node__composer-queued-prompt-body {
8025
8047
  display: flex;
8048
+ width: 100%;
8026
8049
  align-items: center;
8027
8050
  min-width: 0;
8051
+ overflow: hidden;
8028
8052
  gap: 6px;
8029
8053
  }
8030
8054
 
@@ -8071,32 +8095,52 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8071
8095
  }
8072
8096
 
8073
8097
  .agent-gui-node__composer-queued-prompt-text {
8098
+ position: relative;
8099
+ width: 0;
8100
+ max-width: 100%;
8101
+ flex: 1 1 0;
8074
8102
  min-width: 0;
8075
8103
  margin: 0;
8076
8104
  color: var(--agent-gui-text-secondary, var(--text-secondary));
8077
8105
  font-size: 13px;
8078
8106
  line-height: 28px;
8079
8107
  overflow: hidden;
8080
- text-overflow: ellipsis;
8108
+ text-overflow: clip;
8081
8109
  word-break: break-word;
8082
8110
  white-space: nowrap;
8083
8111
  }
8084
8112
 
8113
+ .agent-gui-node__composer-queued-prompt-text[data-overflowing="true"]::after {
8114
+ content: "…";
8115
+ position: absolute;
8116
+ top: 0;
8117
+ right: 0;
8118
+ width: 28px;
8119
+ height: 28px;
8120
+ background: linear-gradient(90deg, transparent, var(--background-panel) 52%);
8121
+ color: var(--agent-gui-text-secondary, var(--text-secondary));
8122
+ line-height: 28px;
8123
+ text-align: right;
8124
+ pointer-events: none;
8125
+ }
8126
+
8085
8127
  .agent-gui-node__composer-queued-prompt-markdown {
8086
8128
  display: block;
8129
+ width: 100%;
8087
8130
  min-width: 0;
8088
8131
  max-width: 100%;
8089
8132
  color: inherit;
8090
8133
  font-size: inherit;
8091
8134
  line-height: inherit;
8092
8135
  overflow: hidden;
8093
- text-overflow: ellipsis;
8136
+ text-overflow: clip;
8094
8137
  white-space: nowrap;
8095
8138
  }
8096
8139
 
8097
8140
  .agent-gui-node__composer-queued-prompt-markdown
8098
8141
  [data-workspace-agent-markdown-shell="true"] {
8099
8142
  display: block;
8143
+ width: 100%;
8100
8144
  min-width: 0;
8101
8145
  max-width: 100%;
8102
8146
  overflow: hidden;
@@ -8107,7 +8151,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8107
8151
  [data-workspace-agent-markdown="true"] {
8108
8152
  display: block;
8109
8153
  overflow: hidden;
8110
- text-overflow: ellipsis;
8154
+ text-overflow: clip;
8111
8155
  white-space: nowrap;
8112
8156
  }
8113
8157
 
@@ -8118,7 +8162,8 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8118
8162
 
8119
8163
  .agent-gui-node__composer-queued-prompt-markdown
8120
8164
  [data-agent-file-mention="true"] {
8121
- max-width: 100%;
8165
+ width: max-content;
8166
+ max-width: min(100%, var(--agent-mention-max-width, 16rem));
8122
8167
  color: inherit;
8123
8168
  vertical-align: baseline;
8124
8169
  }
@@ -8127,20 +8172,20 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8127
8172
  [data-agent-file-mention="true"].tsh-agent-object-token--entity {
8128
8173
  color: inherit;
8129
8174
  top: 3px;
8175
+ max-width: min(100%, var(--agent-mention-max-width, 16rem));
8130
8176
  min-height: 24px;
8131
8177
  padding: 2px 4px;
8132
8178
  border: 1px solid transparent;
8133
8179
  border-radius: 4px;
8134
8180
  line-height: 20px;
8135
- transition:
8136
- background-color 140ms ease-in-out,
8137
- border-color 140ms ease-in-out;
8181
+ transition: none;
8138
8182
  }
8139
8183
 
8140
8184
  .agent-gui-node__composer-queued-prompt-markdown
8141
- [data-agent-file-mention="true"].tsh-agent-object-token--entity:hover {
8185
+ [data-agent-file-mention="true"].tsh-agent-object-token:hover {
8142
8186
  border-color: transparent;
8143
- background: color-mix(in srgb, var(--text-primary) 10%, transparent);
8187
+ background: transparent;
8188
+ text-decoration: none;
8144
8189
  }
8145
8190
 
8146
8191
  .agent-gui-node__composer-queued-prompt-markdown
@@ -8178,7 +8223,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8178
8223
  .agent-gui-node__composer-queued-prompt-panel[data-expanded="true"]
8179
8224
  .agent-gui-node__composer-queued-prompt-text {
8180
8225
  overflow: hidden;
8181
- text-overflow: ellipsis;
8226
+ text-overflow: clip;
8182
8227
  white-space: nowrap;
8183
8228
  }
8184
8229
 
@@ -8191,12 +8236,14 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8191
8236
  .agent-gui-node__composer-queued-prompt-markdown
8192
8237
  [data-workspace-agent-markdown="true"] {
8193
8238
  overflow: hidden;
8194
- text-overflow: ellipsis;
8239
+ text-overflow: clip;
8195
8240
  white-space: nowrap;
8196
8241
  }
8197
8242
 
8198
8243
  .agent-gui-node__composer-queued-prompt-actions {
8199
8244
  display: inline-flex;
8245
+ justify-self: end;
8246
+ flex: 0 0 auto;
8200
8247
  align-items: center;
8201
8248
  gap: 4px;
8202
8249
  }
@@ -8205,7 +8252,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8205
8252
  color: var(--text-secondary);
8206
8253
  }
8207
8254
 
8208
- .agent-gui-node__composer textarea,
8255
+ .agent-gui-node__composer-prompt-input-area textarea,
8209
8256
  .agent-gui-node__composer-textarea {
8210
8257
  --agent-gui-composer-text-line-height: 24px;
8211
8258
  --agent-gui-composer-text-max-visible-lines: 3.5;
@@ -8232,7 +8279,9 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8232
8279
  -ms-overflow-style: auto;
8233
8280
  }
8234
8281
 
8235
- .agent-gui-node__composer[data-layout="dock"] textarea,
8282
+ .agent-gui-node__composer[data-layout="dock"]
8283
+ .agent-gui-node__composer-prompt-input-area
8284
+ textarea,
8236
8285
  .agent-gui-node__composer[data-layout="dock"]
8237
8286
  .agent-gui-node__composer-textarea {
8238
8287
  display: block;
@@ -8242,6 +8291,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8242
8291
  overflow-x: hidden;
8243
8292
  overflow-y: auto;
8244
8293
  overflow-wrap: anywhere;
8294
+ padding-top: 12px;
8245
8295
  scrollbar-gutter: stable;
8246
8296
  /* Keep the scrollbar persistently visible (not hover/focus-only) once the
8247
8297
  draft overflows the visible viewport: a long pasted/dictated block of
@@ -8258,9 +8308,12 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8258
8308
  .agent-gui-node__composer-prompt-input-area[data-has-draft-images="true"]
8259
8309
  .agent-gui-node__composer-textarea {
8260
8310
  max-height: var(--agent-gui-composer-text-viewport-height);
8311
+ padding-top: 0;
8261
8312
  }
8262
8313
 
8263
- .agent-gui-node__composer[data-layout="dock"] textarea::-webkit-scrollbar,
8314
+ .agent-gui-node__composer[data-layout="dock"]
8315
+ .agent-gui-node__composer-prompt-input-area
8316
+ textarea::-webkit-scrollbar,
8264
8317
  .agent-gui-node__composer[data-layout="dock"]
8265
8318
  .agent-gui-node__composer-textarea::-webkit-scrollbar {
8266
8319
  display: block;
@@ -8268,21 +8321,21 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8268
8321
  height: 4px;
8269
8322
  }
8270
8323
 
8271
- .agent-gui-node__composer textarea::-webkit-scrollbar,
8324
+ .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar,
8272
8325
  .agent-gui-node__composer-textarea::-webkit-scrollbar {
8273
8326
  display: block;
8274
8327
  width: 4px;
8275
8328
  height: 4px;
8276
8329
  }
8277
8330
 
8278
- .agent-gui-node__composer textarea::-webkit-scrollbar-track,
8279
- .agent-gui-node__composer textarea::-webkit-scrollbar-corner,
8331
+ .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar-track,
8332
+ .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar-corner,
8280
8333
  .agent-gui-node__composer-textarea::-webkit-scrollbar-track,
8281
8334
  .agent-gui-node__composer-textarea::-webkit-scrollbar-corner {
8282
8335
  background: transparent;
8283
8336
  }
8284
8337
 
8285
- .agent-gui-node__composer textarea::-webkit-scrollbar-thumb,
8338
+ .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar-thumb,
8286
8339
  .agent-gui-node__composer-textarea::-webkit-scrollbar-thumb {
8287
8340
  border-radius: 999px;
8288
8341
  background: var(--transparency-hover);
@@ -8310,7 +8363,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8310
8363
  margin: 0;
8311
8364
  font-size: 13px;
8312
8365
  line-height: 24px;
8313
- min-height: 1.4em;
8366
+ min-height: 0;
8314
8367
  }
8315
8368
 
8316
8369
  .agent-gui-node__composer[data-layout="dock"]
@@ -8319,7 +8372,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8319
8372
  display: block;
8320
8373
  width: auto;
8321
8374
  min-width: 0;
8322
- min-height: 24px;
8375
+ min-height: 0;
8323
8376
  overflow: visible;
8324
8377
  overflow-wrap: anywhere;
8325
8378
  text-overflow: clip;
@@ -8341,6 +8394,19 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8341
8394
  line-height: 0;
8342
8395
  }
8343
8396
 
8397
+ .agent-gui-node__composer-textarea
8398
+ p:not(.agent-rich-text-placeholder-node):not(:empty) {
8399
+ position: relative;
8400
+ top: 0;
8401
+ line-height: 20px;
8402
+ }
8403
+
8404
+ .agent-gui-node__composer-textarea
8405
+ p:not(.agent-rich-text-placeholder-node):not(:empty)
8406
+ .agent-rich-text-mention-node {
8407
+ transform: translateY(-2px);
8408
+ }
8409
+
8344
8410
  .agent-gui-node__composer-textarea
8345
8411
  .agent-rich-text-placeholder-node:first-child::before {
8346
8412
  content: attr(data-agent-rich-text-placeholder);
@@ -8365,7 +8431,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8365
8431
  white-space: nowrap;
8366
8432
  }
8367
8433
 
8368
- .agent-gui-node__composer textarea::placeholder,
8434
+ .agent-gui-node__composer-prompt-input-area textarea::placeholder,
8369
8435
  .agent-gui-node__composer-textarea::placeholder {
8370
8436
  color: var(--agent-gui-text-tertiary);
8371
8437
  line-height: 24px;
@@ -9351,6 +9417,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9351
9417
 
9352
9418
  display: grid;
9353
9419
  width: min(820px, 100%);
9420
+ min-width: 0;
9354
9421
  block-size: var(--agent-gui-empty-hero-anchor-block-size);
9355
9422
  align-content: start;
9356
9423
  gap: var(--agent-gui-empty-hero-gap);
@@ -9371,6 +9438,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9371
9438
  ),
9372
9439
  .agent-gui-node__empty-hero-icon-slot[data-carousel-placeholder="true"] {
9373
9440
  width: min(400px, 100%);
9441
+ min-width: 320px;
9374
9442
  height: 112px;
9375
9443
  }
9376
9444
 
@@ -9392,6 +9460,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9392
9460
  top: var(--agent-gui-hero-carousel-slot-top, calc(50% - 210px));
9393
9461
  left: 50%;
9394
9462
  width: round(nearest, min(400px, calc(100% - 64px)), 1px);
9463
+ min-width: 320px;
9395
9464
  transform: translateX(-50%) scale(var(--agent-gui-hero-carousel-scale));
9396
9465
  transform-origin: center center;
9397
9466
  }
@@ -9407,6 +9476,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9407
9476
 
9408
9477
  .agent-gui-node__empty-hero-carousel-placeholder {
9409
9478
  width: min(400px, 100%);
9479
+ min-width: 320px;
9410
9480
  height: 112px;
9411
9481
  flex: 0 0 auto;
9412
9482
  }
@@ -0,0 +1,16 @@
1
+ // shared/engine/useEngineSelector.ts
2
+ import { useSyncExternalStoreWithSelector } from "use-sync-external-store/with-selector.js";
3
+ function useEngineSelector(engine, selector, isEqual) {
4
+ return useSyncExternalStoreWithSelector(
5
+ engine.subscribe,
6
+ engine.getSnapshot,
7
+ engine.getSnapshot,
8
+ selector,
9
+ isEqual
10
+ );
11
+ }
12
+
13
+ export {
14
+ useEngineSelector
15
+ };
16
+ //# sourceMappingURL=chunk-2RQM7PJN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../shared/engine/useEngineSelector.ts"],"sourcesContent":["import { useSyncExternalStoreWithSelector } from \"use-sync-external-store/with-selector.js\";\n\n// Single React binding for workspace session engine subscriptions\n// (docs/architecture/agent-gui-refactor-plan.md, sections 3.5 and 4.1).\n//\n// This is the only file in the package allowed to touch useSyncExternalStore\n// (enforced by tools/scripts/check-agent-gui-degradation.mjs). Components\n// subscribe through useEngineSelector so selector memoization and equality\n// comparison are implemented exactly once, via React's official with-selector\n// shim; hand-rolled subscriptions returning fresh references are the classic\n// infinite re-render trap this file exists to contain.\n\n/**\n * Structural surface the binding needs from an engine instance. Matches\n * AgentSessionEngine from @tutti-os/agent-activity-core, but stays structural\n * so focused tests and future engine slices can bind without the full engine.\n *\n * Contract: `subscribe` and `getSnapshot` must be stable, this-free function\n * references for the lifetime of the instance (the engine factory returns\n * closures, satisfying this by construction). A fresh `subscribe` identity per\n * render would force useSyncExternalStore to resubscribe on every render.\n */\nexport interface EngineStateStore<TState> {\n getSnapshot(): TState;\n subscribe(listener: (state: TState) => void): () => void;\n}\n\nexport function useEngineSelector<TState, TSelected>(\n engine: EngineStateStore<TState>,\n selector: (state: TState) => TSelected,\n isEqual?: (a: TSelected, b: TSelected) => boolean\n): TSelected {\n return useSyncExternalStoreWithSelector(\n engine.subscribe,\n engine.getSnapshot,\n engine.getSnapshot,\n selector,\n isEqual\n );\n}\n"],"mappings":";AAAA,SAAS,wCAAwC;AA2B1C,SAAS,kBACd,QACA,UACA,SACW;AACX,SAAO;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,OAAO;AAAA,IACP;AAAA,IACA;AAAA,EACF;AACF;","names":[]}
@@ -646,6 +646,13 @@ var enAgentGui = {
646
646
  mentionFilterFile: "Files",
647
647
  mentionFilterApp: "Apps",
648
648
  mentionFilterAgent: "Agents",
649
+ provenanceFilterAllAgents: "All agents",
650
+ provenanceFilterAllMembers: "All members",
651
+ provenanceFilterAllSources: "All sources",
652
+ provenanceFilterAgents: "Agents",
653
+ provenanceFilterFilteredSources: "Filtered sources",
654
+ provenanceFilterMembers: "Members",
655
+ provenanceFilterReset: "Reset",
649
656
  mentionFilterSession: "Sessions",
650
657
  mentionFilterCollab: "Collaboration",
651
658
  mentionFilterIssue: "Tasks",
@@ -1295,7 +1302,7 @@ var en = {
1295
1302
  workspaceAgentMessageCenterOpenChat: "Open session",
1296
1303
  workspaceAgentsNoSessions: "No sessions",
1297
1304
  workspaceAgentsNoActivities: "No current activity",
1298
- workspaceAgentsUntitledTask: "Current task",
1305
+ workspaceAgentsUntitledConversation: "Untitled conversation",
1299
1306
  workspaceAgentsGenericAgentName: "Agent",
1300
1307
  workspaceAgentsSessionCount_one: "{{count}} session",
1301
1308
  workspaceAgentsSessionCount_other: "{{count}} sessions",
@@ -3174,6 +3181,13 @@ var zhCNAgentGui = {
3174
3181
  mentionFilterFile: "\u6587\u4EF6",
3175
3182
  mentionFilterApp: "\u5E94\u7528",
3176
3183
  mentionFilterAgent: "\u667A\u80FD\u4F53",
3184
+ provenanceFilterAllAgents: "\u5168\u90E8\u667A\u80FD\u4F53",
3185
+ provenanceFilterAllMembers: "\u5168\u90E8\u6210\u5458",
3186
+ provenanceFilterAllSources: "\u5168\u90E8\u6765\u6E90",
3187
+ provenanceFilterAgents: "\u667A\u80FD\u4F53",
3188
+ provenanceFilterFilteredSources: "\u5DF2\u7B5B\u9009\u6765\u6E90",
3189
+ provenanceFilterMembers: "\u6210\u5458",
3190
+ provenanceFilterReset: "\u91CD\u7F6E",
3177
3191
  mentionFilterSession: "\u4F1A\u8BDD",
3178
3192
  mentionFilterCollab: "\u534F\u4F5C",
3179
3193
  mentionFilterIssue: "\u4EFB\u52A1",
@@ -3823,7 +3837,7 @@ var zhCN = {
3823
3837
  workspaceAgentMessageCenterOpenChat: "\u6253\u5F00\u4F1A\u8BDD",
3824
3838
  workspaceAgentsNoSessions: "\u6682\u65E0\u4F1A\u8BDD",
3825
3839
  workspaceAgentsNoActivities: "\u6682\u65E0\u8FDB\u884C\u4E2D\u7684\u64CD\u4F5C",
3826
- workspaceAgentsUntitledTask: "\u5F53\u524D\u4EFB\u52A1",
3840
+ workspaceAgentsUntitledConversation: "\u672A\u547D\u540D\u5BF9\u8BDD",
3827
3841
  workspaceAgentsGenericAgentName: "\u667A\u80FD\u4F53",
3828
3842
  workspaceAgentsSessionCount_one: "{{count}} \u4E2A\u4F1A\u8BDD",
3829
3843
  workspaceAgentsSessionCount_other: "{{count}} \u4E2A\u4F1A\u8BDD",
@@ -5118,4 +5132,4 @@ export {
5118
5132
  translateInUiLanguage,
5119
5133
  getActiveUiLanguage
5120
5134
  };
5121
- //# sourceMappingURL=chunk-FSKGEGGX.js.map
5135
+ //# sourceMappingURL=chunk-4E3QCW6L.js.map