@tutti-os/agent-gui 0.0.99 → 0.0.100

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-DgBjACOL.d.ts} +12 -3
  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-C-wBSM-Y.d.ts} +19 -4
  13. package/dist/app/renderer/agentactivity.css +141 -36
  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-PLCHNOXL.js → chunk-BQJOYTW2.js} +863 -679
  23. package/dist/chunk-BQJOYTW2.js.map +1 -0
  24. package/dist/{chunk-MRRICFWA.js → chunk-D7HMQLBO.js} +159 -55
  25. package/dist/chunk-D7HMQLBO.js.map +1 -0
  26. package/dist/{chunk-OTRZBTFQ.js → chunk-DWUVRWXD.js} +2 -2
  27. package/dist/{chunk-RHTZAODZ.js → chunk-E5AD46HP.js} +2 -2
  28. package/dist/{chunk-3NOJFKDV.js → chunk-EUW6VPIK.js} +414 -49
  29. package/dist/chunk-EUW6VPIK.js.map +1 -0
  30. package/dist/{chunk-Y35GDLP2.js → chunk-F5UR6EJG.js} +2 -17
  31. package/dist/chunk-F5UR6EJG.js.map +1 -0
  32. package/dist/{chunk-J7ZYAUPC.js → chunk-FAE7CXZO.js} +8 -6
  33. package/dist/chunk-FAE7CXZO.js.map +1 -0
  34. package/dist/{chunk-CPUEPDF7.js → chunk-GCW57WYQ.js} +646 -595
  35. package/dist/chunk-GCW57WYQ.js.map +1 -0
  36. package/dist/{chunk-7M77BK6K.js → chunk-JWHPVETQ.js} +154 -147
  37. package/dist/chunk-JWHPVETQ.js.map +1 -0
  38. package/dist/{chunk-4ROALW3K.js → chunk-KAV2WHTG.js} +82 -61
  39. package/dist/chunk-KAV2WHTG.js.map +1 -0
  40. package/dist/{chunk-T6PEJFRP.js → chunk-MES7BQWI.js} +378 -369
  41. package/dist/chunk-MES7BQWI.js.map +1 -0
  42. package/dist/chunk-MIJXEELH.js +96 -0
  43. package/dist/chunk-MIJXEELH.js.map +1 -0
  44. package/dist/{chunk-QWGJ5TEG.js → chunk-QY22OBJS.js} +28 -30
  45. package/dist/chunk-QY22OBJS.js.map +1 -0
  46. package/dist/{chunk-MASXZENX.js → chunk-UESYITH6.js} +21 -2
  47. package/dist/chunk-UESYITH6.js.map +1 -0
  48. package/dist/{chunk-SPZJCTBV.js → chunk-XFRY2WWB.js} +348 -322
  49. package/dist/chunk-XFRY2WWB.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 +12 -12
  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
  }
@@ -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);
@@ -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(1px);
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
@@ -7562,7 +7611,7 @@ button.agent-gui-node__conversation-section-toggle:hover
7562
7611
  min-height: 54px;
7563
7612
  max-height: 118px;
7564
7613
  min-width: 0;
7565
- padding: 12px 0;
7614
+ padding: 0 0 12px;
7566
7615
  }
7567
7616
 
7568
7617
  .agent-gui-node__composer[data-layout="dock"]
@@ -7934,6 +7983,8 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
7934
7983
 
7935
7984
  .agent-gui-node__composer-queued-prompt-list {
7936
7985
  display: grid;
7986
+ width: 100%;
7987
+ min-width: 0;
7937
7988
  gap: 0;
7938
7989
  max-height: 36px;
7939
7990
  overflow: hidden;
@@ -7944,6 +7995,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
7944
7995
 
7945
7996
  .agent-gui-node__composer-queued-prompt-panel {
7946
7997
  display: grid;
7998
+ min-width: 0;
7947
7999
  gap: 4px;
7948
8000
  position: relative;
7949
8001
  z-index: 1;
@@ -7969,13 +8021,14 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
7969
8021
 
7970
8022
  .agent-gui-node__composer-queued-prompt-header {
7971
8023
  display: flex;
7972
- align-items: flex-start;
8024
+ align-items: center;
7973
8025
  justify-content: flex-start;
7974
8026
  gap: 4px;
7975
8027
  min-height: 20px;
7976
8028
  }
7977
8029
 
7978
8030
  .agent-gui-node__composer-queued-prompt-expand-cue {
8031
+ display: block;
7979
8032
  flex: 0 0 auto;
7980
8033
  color: var(--agent-gui-accent-strong);
7981
8034
  opacity: 0;
@@ -8006,6 +8059,9 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8006
8059
 
8007
8060
  .agent-gui-node__composer-queued-prompt-row {
8008
8061
  display: grid;
8062
+ box-sizing: border-box;
8063
+ width: 100%;
8064
+ min-width: 0;
8009
8065
  grid-template-columns: minmax(0, 1fr) auto;
8010
8066
  gap: 8px;
8011
8067
  align-items: center;
@@ -8018,13 +8074,16 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8018
8074
 
8019
8075
  .agent-gui-node__composer-queued-prompt-main {
8020
8076
  display: block;
8077
+ width: 100%;
8021
8078
  min-width: 0;
8022
8079
  }
8023
8080
 
8024
8081
  .agent-gui-node__composer-queued-prompt-body {
8025
8082
  display: flex;
8083
+ width: 100%;
8026
8084
  align-items: center;
8027
8085
  min-width: 0;
8086
+ overflow: hidden;
8028
8087
  gap: 6px;
8029
8088
  }
8030
8089
 
@@ -8071,32 +8130,52 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8071
8130
  }
8072
8131
 
8073
8132
  .agent-gui-node__composer-queued-prompt-text {
8133
+ position: relative;
8134
+ width: 0;
8135
+ max-width: 100%;
8136
+ flex: 1 1 0;
8074
8137
  min-width: 0;
8075
8138
  margin: 0;
8076
8139
  color: var(--agent-gui-text-secondary, var(--text-secondary));
8077
8140
  font-size: 13px;
8078
8141
  line-height: 28px;
8079
8142
  overflow: hidden;
8080
- text-overflow: ellipsis;
8143
+ text-overflow: clip;
8081
8144
  word-break: break-word;
8082
8145
  white-space: nowrap;
8083
8146
  }
8084
8147
 
8148
+ .agent-gui-node__composer-queued-prompt-text[data-overflowing="true"]::after {
8149
+ content: "…";
8150
+ position: absolute;
8151
+ top: 0;
8152
+ right: 0;
8153
+ width: 28px;
8154
+ height: 28px;
8155
+ background: linear-gradient(90deg, transparent, var(--background-panel) 52%);
8156
+ color: var(--agent-gui-text-secondary, var(--text-secondary));
8157
+ line-height: 28px;
8158
+ text-align: right;
8159
+ pointer-events: none;
8160
+ }
8161
+
8085
8162
  .agent-gui-node__composer-queued-prompt-markdown {
8086
8163
  display: block;
8164
+ width: 100%;
8087
8165
  min-width: 0;
8088
8166
  max-width: 100%;
8089
8167
  color: inherit;
8090
8168
  font-size: inherit;
8091
8169
  line-height: inherit;
8092
8170
  overflow: hidden;
8093
- text-overflow: ellipsis;
8171
+ text-overflow: clip;
8094
8172
  white-space: nowrap;
8095
8173
  }
8096
8174
 
8097
8175
  .agent-gui-node__composer-queued-prompt-markdown
8098
8176
  [data-workspace-agent-markdown-shell="true"] {
8099
8177
  display: block;
8178
+ width: 100%;
8100
8179
  min-width: 0;
8101
8180
  max-width: 100%;
8102
8181
  overflow: hidden;
@@ -8107,7 +8186,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8107
8186
  [data-workspace-agent-markdown="true"] {
8108
8187
  display: block;
8109
8188
  overflow: hidden;
8110
- text-overflow: ellipsis;
8189
+ text-overflow: clip;
8111
8190
  white-space: nowrap;
8112
8191
  }
8113
8192
 
@@ -8118,7 +8197,8 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8118
8197
 
8119
8198
  .agent-gui-node__composer-queued-prompt-markdown
8120
8199
  [data-agent-file-mention="true"] {
8121
- max-width: 100%;
8200
+ width: max-content;
8201
+ max-width: min(100%, var(--agent-mention-max-width, 16rem));
8122
8202
  color: inherit;
8123
8203
  vertical-align: baseline;
8124
8204
  }
@@ -8127,20 +8207,20 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8127
8207
  [data-agent-file-mention="true"].tsh-agent-object-token--entity {
8128
8208
  color: inherit;
8129
8209
  top: 3px;
8210
+ max-width: min(100%, var(--agent-mention-max-width, 16rem));
8130
8211
  min-height: 24px;
8131
8212
  padding: 2px 4px;
8132
8213
  border: 1px solid transparent;
8133
8214
  border-radius: 4px;
8134
8215
  line-height: 20px;
8135
- transition:
8136
- background-color 140ms ease-in-out,
8137
- border-color 140ms ease-in-out;
8216
+ transition: none;
8138
8217
  }
8139
8218
 
8140
8219
  .agent-gui-node__composer-queued-prompt-markdown
8141
- [data-agent-file-mention="true"].tsh-agent-object-token--entity:hover {
8220
+ [data-agent-file-mention="true"].tsh-agent-object-token:hover {
8142
8221
  border-color: transparent;
8143
- background: color-mix(in srgb, var(--text-primary) 10%, transparent);
8222
+ background: transparent;
8223
+ text-decoration: none;
8144
8224
  }
8145
8225
 
8146
8226
  .agent-gui-node__composer-queued-prompt-markdown
@@ -8178,7 +8258,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8178
8258
  .agent-gui-node__composer-queued-prompt-panel[data-expanded="true"]
8179
8259
  .agent-gui-node__composer-queued-prompt-text {
8180
8260
  overflow: hidden;
8181
- text-overflow: ellipsis;
8261
+ text-overflow: clip;
8182
8262
  white-space: nowrap;
8183
8263
  }
8184
8264
 
@@ -8191,12 +8271,14 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8191
8271
  .agent-gui-node__composer-queued-prompt-markdown
8192
8272
  [data-workspace-agent-markdown="true"] {
8193
8273
  overflow: hidden;
8194
- text-overflow: ellipsis;
8274
+ text-overflow: clip;
8195
8275
  white-space: nowrap;
8196
8276
  }
8197
8277
 
8198
8278
  .agent-gui-node__composer-queued-prompt-actions {
8199
8279
  display: inline-flex;
8280
+ justify-self: end;
8281
+ flex: 0 0 auto;
8200
8282
  align-items: center;
8201
8283
  gap: 4px;
8202
8284
  }
@@ -8205,7 +8287,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8205
8287
  color: var(--text-secondary);
8206
8288
  }
8207
8289
 
8208
- .agent-gui-node__composer textarea,
8290
+ .agent-gui-node__composer-prompt-input-area textarea,
8209
8291
  .agent-gui-node__composer-textarea {
8210
8292
  --agent-gui-composer-text-line-height: 24px;
8211
8293
  --agent-gui-composer-text-max-visible-lines: 3.5;
@@ -8232,7 +8314,9 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8232
8314
  -ms-overflow-style: auto;
8233
8315
  }
8234
8316
 
8235
- .agent-gui-node__composer[data-layout="dock"] textarea,
8317
+ .agent-gui-node__composer[data-layout="dock"]
8318
+ .agent-gui-node__composer-prompt-input-area
8319
+ textarea,
8236
8320
  .agent-gui-node__composer[data-layout="dock"]
8237
8321
  .agent-gui-node__composer-textarea {
8238
8322
  display: block;
@@ -8242,6 +8326,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8242
8326
  overflow-x: hidden;
8243
8327
  overflow-y: auto;
8244
8328
  overflow-wrap: anywhere;
8329
+ padding-top: 12px;
8245
8330
  scrollbar-gutter: stable;
8246
8331
  /* Keep the scrollbar persistently visible (not hover/focus-only) once the
8247
8332
  draft overflows the visible viewport: a long pasted/dictated block of
@@ -8258,9 +8343,12 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8258
8343
  .agent-gui-node__composer-prompt-input-area[data-has-draft-images="true"]
8259
8344
  .agent-gui-node__composer-textarea {
8260
8345
  max-height: var(--agent-gui-composer-text-viewport-height);
8346
+ padding-top: 0;
8261
8347
  }
8262
8348
 
8263
- .agent-gui-node__composer[data-layout="dock"] textarea::-webkit-scrollbar,
8349
+ .agent-gui-node__composer[data-layout="dock"]
8350
+ .agent-gui-node__composer-prompt-input-area
8351
+ textarea::-webkit-scrollbar,
8264
8352
  .agent-gui-node__composer[data-layout="dock"]
8265
8353
  .agent-gui-node__composer-textarea::-webkit-scrollbar {
8266
8354
  display: block;
@@ -8268,21 +8356,21 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8268
8356
  height: 4px;
8269
8357
  }
8270
8358
 
8271
- .agent-gui-node__composer textarea::-webkit-scrollbar,
8359
+ .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar,
8272
8360
  .agent-gui-node__composer-textarea::-webkit-scrollbar {
8273
8361
  display: block;
8274
8362
  width: 4px;
8275
8363
  height: 4px;
8276
8364
  }
8277
8365
 
8278
- .agent-gui-node__composer textarea::-webkit-scrollbar-track,
8279
- .agent-gui-node__composer textarea::-webkit-scrollbar-corner,
8366
+ .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar-track,
8367
+ .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar-corner,
8280
8368
  .agent-gui-node__composer-textarea::-webkit-scrollbar-track,
8281
8369
  .agent-gui-node__composer-textarea::-webkit-scrollbar-corner {
8282
8370
  background: transparent;
8283
8371
  }
8284
8372
 
8285
- .agent-gui-node__composer textarea::-webkit-scrollbar-thumb,
8373
+ .agent-gui-node__composer-prompt-input-area textarea::-webkit-scrollbar-thumb,
8286
8374
  .agent-gui-node__composer-textarea::-webkit-scrollbar-thumb {
8287
8375
  border-radius: 999px;
8288
8376
  background: var(--transparency-hover);
@@ -8310,7 +8398,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8310
8398
  margin: 0;
8311
8399
  font-size: 13px;
8312
8400
  line-height: 24px;
8313
- min-height: 1.4em;
8401
+ min-height: 0;
8314
8402
  }
8315
8403
 
8316
8404
  .agent-gui-node__composer[data-layout="dock"]
@@ -8319,7 +8407,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8319
8407
  display: block;
8320
8408
  width: auto;
8321
8409
  min-width: 0;
8322
- min-height: 24px;
8410
+ min-height: 0;
8323
8411
  overflow: visible;
8324
8412
  overflow-wrap: anywhere;
8325
8413
  text-overflow: clip;
@@ -8341,6 +8429,19 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8341
8429
  line-height: 0;
8342
8430
  }
8343
8431
 
8432
+ .agent-gui-node__composer-textarea
8433
+ p:not(.agent-rich-text-placeholder-node):not(:empty) {
8434
+ position: relative;
8435
+ top: 0;
8436
+ line-height: 20px;
8437
+ }
8438
+
8439
+ .agent-gui-node__composer-textarea
8440
+ p:not(.agent-rich-text-placeholder-node):not(:empty)
8441
+ .agent-rich-text-mention-node {
8442
+ transform: translateY(-2px);
8443
+ }
8444
+
8344
8445
  .agent-gui-node__composer-textarea
8345
8446
  .agent-rich-text-placeholder-node:first-child::before {
8346
8447
  content: attr(data-agent-rich-text-placeholder);
@@ -8365,7 +8466,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
8365
8466
  white-space: nowrap;
8366
8467
  }
8367
8468
 
8368
- .agent-gui-node__composer textarea::placeholder,
8469
+ .agent-gui-node__composer-prompt-input-area textarea::placeholder,
8369
8470
  .agent-gui-node__composer-textarea::placeholder {
8370
8471
  color: var(--agent-gui-text-tertiary);
8371
8472
  line-height: 24px;
@@ -9351,6 +9452,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9351
9452
 
9352
9453
  display: grid;
9353
9454
  width: min(820px, 100%);
9455
+ min-width: 0;
9354
9456
  block-size: var(--agent-gui-empty-hero-anchor-block-size);
9355
9457
  align-content: start;
9356
9458
  gap: var(--agent-gui-empty-hero-gap);
@@ -9371,6 +9473,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9371
9473
  ),
9372
9474
  .agent-gui-node__empty-hero-icon-slot[data-carousel-placeholder="true"] {
9373
9475
  width: min(400px, 100%);
9476
+ min-width: 320px;
9374
9477
  height: 112px;
9375
9478
  }
9376
9479
 
@@ -9392,6 +9495,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9392
9495
  top: var(--agent-gui-hero-carousel-slot-top, calc(50% - 210px));
9393
9496
  left: 50%;
9394
9497
  width: round(nearest, min(400px, calc(100% - 64px)), 1px);
9498
+ min-width: 320px;
9395
9499
  transform: translateX(-50%) scale(var(--agent-gui-hero-carousel-scale));
9396
9500
  transform-origin: center center;
9397
9501
  }
@@ -9407,6 +9511,7 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
9407
9511
 
9408
9512
  .agent-gui-node__empty-hero-carousel-placeholder {
9409
9513
  width: min(400px, 100%);
9514
+ min-width: 320px;
9410
9515
  height: 112px;
9411
9516
  flex: 0 0 auto;
9412
9517
  }
@@ -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