@tutti-os/agent-gui 0.0.33 → 0.0.34

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 (46) hide show
  1. package/README.md +5 -0
  2. package/dist/{AgentMessageMarkdown-Cp70W-Z2.d.ts → AgentMessageMarkdown-CU6gRvTm.d.ts} +53 -2
  3. package/dist/agent-conversation/index.d.ts +4 -4
  4. package/dist/agent-conversation/index.js +5 -5
  5. package/dist/agent-message-center/index.d.ts +2 -2
  6. package/dist/agent-message-center/index.js +29 -8
  7. package/dist/agent-message-center/index.js.map +1 -1
  8. package/dist/{agentConversationVM-BElW2LNR.d.ts → agentConversationVM-xuzmD5IL.d.ts} +2 -0
  9. package/dist/app/renderer/agentactivity.css +53 -76
  10. package/dist/{chunk-SGQ4C7JE.js → chunk-2ADVHCST.js} +2 -1
  11. package/dist/chunk-2ADVHCST.js.map +1 -0
  12. package/dist/{chunk-ERRANBGS.js → chunk-I5GHWK6X.js} +7 -11
  13. package/dist/chunk-I5GHWK6X.js.map +1 -0
  14. package/dist/{chunk-ZWYHKGQ7.js → chunk-NCS7X3XY.js} +11 -9
  15. package/dist/{chunk-ZWYHKGQ7.js.map → chunk-NCS7X3XY.js.map} +1 -1
  16. package/dist/{chunk-A4KUAXE5.js → chunk-PVEFWBH6.js} +2 -2
  17. package/dist/{chunk-WPWZKKKV.js → chunk-RUO6SDNC.js} +2 -2
  18. package/dist/{chunk-OOQIJXCA.js → chunk-SV4UKLJO.js} +3 -2
  19. package/dist/{chunk-RDCBACWR.js → chunk-TCKH7GZ6.js} +5 -5
  20. package/dist/{chunk-RQ3HEF42.js → chunk-TQFYX7KY.js} +36 -6
  21. package/dist/chunk-TQFYX7KY.js.map +1 -0
  22. package/dist/{chunk-AFTAFV2C.js → chunk-XPVYQUFK.js} +78 -12
  23. package/dist/chunk-XPVYQUFK.js.map +1 -0
  24. package/dist/{chunk-GSZPMKFW.js → chunk-ZR2LZVN6.js} +229 -21
  25. package/dist/chunk-ZR2LZVN6.js.map +1 -0
  26. package/dist/context-mention-palette/index.js +6 -6
  27. package/dist/i18n/index.d.ts +34 -4
  28. package/dist/i18n/index.js +1 -1
  29. package/dist/index.d.ts +5 -4
  30. package/dist/index.js +892 -198
  31. package/dist/index.js.map +1 -1
  32. package/dist/plan-decision-ops.d.ts +1 -1
  33. package/dist/workbench/contribution.js +1 -1
  34. package/dist/workbench/index.js +1 -1
  35. package/dist/workspace-agent-generated-files.js +2 -2
  36. package/dist/{workspaceLinkActions-CqWZaCY4.d.ts → workspaceLinkActions-C6POH38D.d.ts} +7 -1
  37. package/package.json +12 -12
  38. package/dist/chunk-AFTAFV2C.js.map +0 -1
  39. package/dist/chunk-ERRANBGS.js.map +0 -1
  40. package/dist/chunk-GSZPMKFW.js.map +0 -1
  41. package/dist/chunk-RQ3HEF42.js.map +0 -1
  42. package/dist/chunk-SGQ4C7JE.js.map +0 -1
  43. /package/dist/{chunk-A4KUAXE5.js.map → chunk-PVEFWBH6.js.map} +0 -0
  44. /package/dist/{chunk-WPWZKKKV.js.map → chunk-RUO6SDNC.js.map} +0 -0
  45. /package/dist/{chunk-OOQIJXCA.js.map → chunk-SV4UKLJO.js.map} +0 -0
  46. /package/dist/{chunk-RDCBACWR.js.map → chunk-TCKH7GZ6.js.map} +0 -0
@@ -18,6 +18,7 @@ interface WorkspaceAgentSessionDetailMessage {
18
18
  systemNotice?: {
19
19
  noticeKind: string | null;
20
20
  severity: string | null;
21
+ source?: string | null;
21
22
  title: string | null;
22
23
  detail: string | null;
23
24
  retryable: boolean | null;
@@ -158,6 +159,7 @@ interface AgentMessageContentVM {
158
159
  systemNotice?: {
159
160
  noticeKind: string | null;
160
161
  severity: string | null;
162
+ source?: string | null;
161
163
  title: string | null;
162
164
  detail: string | null;
163
165
  retryable: boolean | null;
@@ -162,9 +162,9 @@
162
162
  [data-testid="workspace-agent-message-center"] {
163
163
  --agent-gui-package-accent: var(--accent-codex);
164
164
  --agent-gui-package-accent-strong: var(--accent-codex);
165
- --agent-gui-package-success: rgb(34 197 94);
166
- --agent-gui-package-warning: rgb(234 121 8);
167
- --agent-gui-package-danger: rgb(220 38 38);
165
+ --agent-gui-package-success: var(--state-success);
166
+ --agent-gui-package-warning: var(--state-warning);
167
+ --agent-gui-package-danger: var(--state-danger);
168
168
  --agent-gui-accent: var(--agent-gui-package-accent);
169
169
  --agent-gui-accent-strong: var(--agent-gui-package-accent-strong);
170
170
  --agent-gui-success: var(--agent-gui-package-success);
@@ -3808,9 +3808,9 @@ aside.workspace-agents-status-panel
3808
3808
  var(--agent-gui-package-accent) 12%
3809
3809
  );
3810
3810
  --agent-gui-package-border-focus: var(--accent-codex-border);
3811
- --agent-gui-package-success: rgb(34 197 94);
3812
- --agent-gui-package-warning: rgb(234 121 8);
3813
- --agent-gui-package-danger: rgb(220 38 38);
3811
+ --agent-gui-package-success: var(--state-success);
3812
+ --agent-gui-package-warning: var(--state-warning);
3813
+ --agent-gui-package-danger: var(--state-danger);
3814
3814
  --agent-gui-accent: var(--agent-gui-package-accent);
3815
3815
  --agent-gui-accent-strong: var(--agent-gui-package-accent-strong);
3816
3816
  --agent-gui-accent-bg: var(--agent-gui-package-accent-bg);
@@ -3856,12 +3856,13 @@ aside.workspace-agents-status-panel
3856
3856
  }
3857
3857
 
3858
3858
  .agent-gui-node__rail-panel {
3859
+ position: relative;
3860
+ z-index: 2;
3859
3861
  min-width: 0;
3860
3862
  min-height: 0;
3861
3863
  height: 100%;
3862
- border-right: 1px solid var(--line-1);
3863
- overflow: hidden;
3864
- position: relative;
3864
+ border-right: 1px solid var(--agent-gui-border-subtle, var(--line-2));
3865
+ overflow: visible;
3865
3866
  isolation: isolate;
3866
3867
  }
3867
3868
 
@@ -3983,6 +3984,8 @@ aside.workspace-agents-status-panel
3983
3984
  }
3984
3985
 
3985
3986
  .agent-gui-node__rail-toolbar {
3987
+ --agent-gui-rail-control-radius: 6px;
3988
+
3986
3989
  display: grid;
3987
3990
  grid-template-columns: minmax(0, 1fr) max-content;
3988
3991
  align-items: center;
@@ -4104,8 +4107,23 @@ aside.workspace-agents-status-panel
4104
4107
  flex: 1 1 auto;
4105
4108
  width: 100%;
4106
4109
  min-width: 0;
4110
+ box-sizing: border-box;
4111
+ height: 32px !important;
4112
+ min-height: 32px;
4113
+ max-height: 32px;
4114
+ border: 0 !important;
4115
+ border-radius: var(--agent-gui-rail-control-radius) !important;
4107
4116
  padding-left: 12px;
4108
4117
  padding-right: 36px;
4118
+ font-size: 13px !important;
4119
+ line-height: 18px;
4120
+ appearance: none;
4121
+ }
4122
+
4123
+ .room-issue-node__search-input:hover,
4124
+ .room-issue-node__search-input:focus,
4125
+ .room-issue-node__search-input:focus-visible {
4126
+ background: var(--transparency-hover);
4109
4127
  }
4110
4128
 
4111
4129
  .room-issue-node__search-field[data-has-value="false"]
@@ -4170,16 +4188,20 @@ aside.workspace-agents-status-panel
4170
4188
  flex: 0 0 auto;
4171
4189
  width: auto;
4172
4190
  min-width: max-content;
4191
+ box-sizing: border-box;
4173
4192
  height: 32px;
4174
4193
  min-height: 32px;
4175
- padding-inline: 12px;
4194
+ max-height: 32px;
4195
+ border: 0 !important;
4196
+ border-radius: var(--agent-gui-rail-control-radius) !important;
4197
+ font-size: 13px;
4176
4198
  gap: 8px;
4177
4199
  white-space: nowrap;
4178
4200
  }
4179
4201
 
4180
4202
  .agent-gui-node__new-conversation-icon-button svg {
4181
- width: 16px;
4182
- height: 16px;
4203
+ width: 14px;
4204
+ height: 14px;
4183
4205
  flex-shrink: 0;
4184
4206
  }
4185
4207
 
@@ -4436,45 +4458,16 @@ button.agent-gui-node__conversation-section-toggle:hover
4436
4458
  }
4437
4459
 
4438
4460
  .agent-gui-node__conversation-section-action-tooltip-wrap {
4439
- position: relative;
4440
4461
  display: inline-flex;
4441
4462
  flex: none;
4442
4463
  }
4443
4464
 
4444
4465
  .agent-gui-node__conversation-section-action-tooltip {
4445
- position: absolute;
4446
- top: calc(100% + 6px);
4447
- left: 50%;
4448
- z-index: var(--z-tooltip);
4449
4466
  max-width: 180px;
4450
- padding: 5px 8px;
4451
- border: 1px solid var(--line-2, var(--tutti-line-2));
4452
- border-radius: 6px;
4453
- background: var(--background-fronted);
4454
- box-shadow: 0 10px 26px rgb(0 0 0 / 0.18);
4455
- color: var(--text-primary);
4456
- font-size: 11px;
4457
- font-weight: 500;
4458
- line-height: 1.2;
4459
- opacity: 0;
4460
- overflow: hidden;
4461
- pointer-events: none;
4462
4467
  text-overflow: ellipsis;
4463
- transform: translate(-50%, -2px);
4464
- transition:
4465
- opacity 120ms ease,
4466
- transform 120ms ease;
4467
4468
  white-space: nowrap;
4468
4469
  }
4469
4470
 
4470
- .agent-gui-node__conversation-section-action-tooltip-wrap:hover
4471
- .agent-gui-node__conversation-section-action-tooltip,
4472
- .agent-gui-node__conversation-section-action-tooltip-wrap:focus-within
4473
- .agent-gui-node__conversation-section-action-tooltip {
4474
- opacity: 1;
4475
- transform: translate(-50%, 0);
4476
- }
4477
-
4478
4471
  .agent-gui-node__conversation-section-more-button {
4479
4472
  flex: none;
4480
4473
  opacity: 0;
@@ -5493,46 +5486,30 @@ button.agent-gui-node__conversation-section-toggle:hover
5493
5486
 
5494
5487
  .agent-gui-node__provider-setup-notice {
5495
5488
  position: absolute;
5496
- top: 16px;
5497
- right: var(--agent-gui-detail-padding-x);
5489
+ top: 8px;
5498
5490
  left: var(--agent-gui-detail-padding-x);
5499
5491
  z-index: 2;
5500
- display: flex;
5501
- align-items: center;
5502
- gap: 8px;
5503
5492
  box-sizing: border-box;
5493
+ width: max-content;
5494
+ max-width: min(calc(100% - (var(--agent-gui-detail-padding-x) * 2)), 420px);
5504
5495
  margin: 0;
5505
- border: 1px solid
5506
- color-mix(
5507
- in srgb,
5508
- var(--agent-gui-warning, var(--state-warning)) 26%,
5509
- transparent
5510
- );
5511
- border-radius: 8px;
5512
- padding: 8px 10px;
5513
- color: var(--agent-gui-warning, var(--state-warning));
5514
- background: color-mix(
5515
- in srgb,
5516
- var(--agent-gui-warning, var(--state-warning)) 9%,
5517
- transparent
5518
- );
5519
- font-size: 13px;
5520
- line-height: 18px;
5521
5496
  pointer-events: auto;
5522
5497
  }
5523
5498
 
5524
5499
  .agent-gui-node__detail-header + .agent-gui-node__provider-setup-notice {
5525
- top: calc(64px + 8px);
5500
+ top: calc(64px + 4px);
5526
5501
  }
5527
5502
 
5528
- .agent-gui-node__provider-setup-notice-icon {
5503
+ .agent-gui-node__provider-setup-notice-action {
5529
5504
  flex: 0 0 auto;
5505
+ margin-left: auto;
5506
+ border: 0;
5507
+ padding: 0;
5508
+ background: transparent;
5530
5509
  color: currentColor;
5531
- }
5532
-
5533
- .agent-gui-node__provider-setup-notice-text {
5534
- min-width: 0;
5535
- overflow-wrap: anywhere;
5510
+ font: inherit;
5511
+ text-decoration: underline;
5512
+ cursor: pointer;
5536
5513
  }
5537
5514
 
5538
5515
  .agent-gui-node__layout [data-slot="status-dot"],
@@ -5580,25 +5557,25 @@ button.agent-gui-node__conversation-section-toggle:hover
5580
5557
  .agent-gui-node__layout [data-slot="status-dot"][data-tone="green"],
5581
5558
  [data-testid="workspace-agent-message-center"]
5582
5559
  [data-slot="status-dot"][data-tone="green"] {
5583
- --agent-gui-status-dot-color: var(--agent-gui-success, var(--state-success));
5560
+ --agent-gui-status-dot-color: var(--state-success);
5584
5561
  }
5585
5562
 
5586
5563
  .agent-gui-node__layout [data-slot="status-dot"][data-tone="blue"],
5587
5564
  [data-testid="workspace-agent-message-center"]
5588
5565
  [data-slot="status-dot"][data-tone="blue"] {
5589
- --agent-gui-status-dot-color: var(--agent-gui-accent);
5566
+ --agent-gui-status-dot-color: var(--status-running);
5590
5567
  }
5591
5568
 
5592
5569
  .agent-gui-node__layout [data-slot="status-dot"][data-tone="amber"],
5593
5570
  [data-testid="workspace-agent-message-center"]
5594
5571
  [data-slot="status-dot"][data-tone="amber"] {
5595
- --agent-gui-status-dot-color: var(--agent-gui-warning, var(--state-warning));
5572
+ --agent-gui-status-dot-color: var(--state-warning);
5596
5573
  }
5597
5574
 
5598
5575
  .agent-gui-node__layout [data-slot="status-dot"][data-tone="red"],
5599
5576
  [data-testid="workspace-agent-message-center"]
5600
5577
  [data-slot="status-dot"][data-tone="red"] {
5601
- --agent-gui-status-dot-color: var(--agent-gui-danger, var(--state-danger));
5578
+ --agent-gui-status-dot-color: var(--state-danger);
5602
5579
  }
5603
5580
 
5604
5581
  .agent-gui-node__layout [data-slot="status-dot"][data-pulse="true"],
@@ -6828,9 +6805,9 @@ html[data-theme="light"] [data-message-center-item-id].agent-gui-edge-glow {
6828
6805
  --agent-gui-border-subtle: var(--line-2);
6829
6806
  --agent-gui-package-accent: var(--tutti-purple);
6830
6807
  --agent-gui-package-accent-strong: var(--tutti-purple);
6831
- --agent-gui-package-success: rgb(34 197 94);
6832
- --agent-gui-package-warning: rgb(234 121 8);
6833
- --agent-gui-package-danger: rgb(220 38 38);
6808
+ --agent-gui-package-success: var(--state-success);
6809
+ --agent-gui-package-warning: var(--state-warning);
6810
+ --agent-gui-package-danger: var(--state-danger);
6834
6811
  --agent-gui-accent: var(--agent-gui-package-accent);
6835
6812
  --agent-gui-accent-strong: var(--agent-gui-package-accent-strong);
6836
6813
  --agent-gui-success: var(--agent-gui-package-success);
@@ -107,6 +107,7 @@ function toAgentHostRuntimeApi(hostApi) {
107
107
  filesystem: hostApi.filesystem,
108
108
  meta: hostApi.meta,
109
109
  onHostEvent: hostApi.onHostEvent,
110
+ persistence: hostApi.persistence,
110
111
  runtime: hostApi.runtime,
111
112
  userProjects: hostApi.userProjects,
112
113
  workspace: hostApi.workspace,
@@ -193,4 +194,4 @@ export {
193
194
  useOptionalAgentHostApi,
194
195
  getOptionalAgentHostApi
195
196
  };
196
- //# sourceMappingURL=chunk-SGQ4C7JE.js.map
197
+ //# sourceMappingURL=chunk-2ADVHCST.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../agentActivityRuntime.tsx","../agentActivityHost.tsx","../host/agentHostApi.ts"],"sourcesContent":["import {\n createContext,\n useContext,\n useSyncExternalStore,\n type JSX,\n type PropsWithChildren\n} from \"react\";\nimport type {\n AgentActivityCancelSessionInput,\n AgentActivityCancelSessionResult,\n AgentActivityCreateSessionInput,\n AgentActivityDeleteSessionInput,\n AgentActivityDeleteSessionResult,\n AgentActivityMessageOrder,\n AgentActivityMessagePage,\n AgentActivitySendInput,\n AgentActivitySendInputResult,\n AgentActivitySession,\n AgentActivitySnapshot,\n AgentActivitySnapshotListener,\n AgentActivitySubmitInteractiveInput\n} from \"@tutti-os/agent-activity-core\";\nimport type {\n AgentHostAgentSessionComposerSettings,\n AgentHostActivateAgentSessionResult,\n AgentHostRuntimeOpenclawGatewayWarmupResult,\n AgentHostUpdateAgentSessionSettingsResult,\n AgentHostUnactivateAgentSessionResult,\n AgentHostAgentSessionState\n} from \"./shared/contracts/dto\";\n\nexport interface AgentActivityRuntimeListSessionMessagesInput {\n afterVersion?: number;\n beforeVersion?: number;\n cache?: boolean;\n agentSessionId: string;\n limit?: number;\n order?: AgentActivityMessageOrder;\n signal?: AbortSignal;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeListGeneratedFilesInput {\n limit?: number;\n query?: string;\n sessionCwd?: string;\n signal?: AbortSignal;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeGeneratedFile {\n label: string;\n path: string;\n}\n\nexport interface AgentActivityRuntimeGeneratedFileList {\n entries: AgentActivityRuntimeGeneratedFile[];\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeEnsureSessionSynchronizedInput {\n afterVersion?: number;\n agentSessionId: string;\n onError?: (error: unknown) => void;\n workspaceId: string;\n}\n\nexport type AgentActivityRuntimeRetainSessionEventsInput =\n AgentActivityRuntimeEnsureSessionSynchronizedInput;\n\nexport interface AgentActivityRuntimeSetSessionPinnedInput {\n agentSessionId: string;\n pinned: boolean;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeTrackSettingsProjectChangeInput {\n action: \"clear\" | \"create_new\" | \"select_existing\";\n agentSessionId: string;\n provider?: string | null;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeGetSessionControlStateInput {\n agentSessionId: string;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeGetComposerOptionsInput {\n cwd?: string | null;\n force?: boolean;\n provider?: string;\n settings?: AgentHostAgentSessionComposerSettings | null;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeUpdateSessionSettingsInput {\n agentSessionId: string;\n settings: AgentHostAgentSessionComposerSettings;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeTrackDraftComposerSettingsChangeInput {\n nextSettings: AgentHostAgentSessionComposerSettings;\n previousSettings: AgentHostAgentSessionComposerSettings;\n provider: string;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeWarmupOpenclawGatewayInput {\n workspaceId?: string | null;\n}\n\nexport interface AgentActivityRuntimeDiagnosticInput {\n details?: Record<string, unknown>;\n event: string;\n level?: \"debug\" | \"info\" | \"warn\" | \"error\";\n source?: string;\n workspaceId?: string | null;\n}\n\nexport interface AgentActivityRuntimeActivateSessionInput {\n agentSessionId: string;\n cwd?: string;\n initialContent?: AgentActivitySendInput[\"content\"];\n /** 仅展示用首轮文本(bundle 折叠成一个 chip);initialContent 仍带展开后的文件。 */\n initialDisplayPrompt?: string | null;\n metadata?: Record<string, unknown>;\n mode: \"existing\" | \"new\";\n openclawGatewayReady?: boolean;\n provider?: string;\n settings?: AgentHostAgentSessionComposerSettings;\n title?: string;\n visible?: boolean;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeUnactivateSessionInput {\n agentSessionId: string;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeReadSessionAttachmentInput {\n agentSessionId: string;\n attachmentId: string;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeReadPromptAssetInput {\n agentSessionId?: string | null;\n assetId?: string | null;\n hostPath?: string | null;\n kind?: string | null;\n mimeType: string;\n name?: string | null;\n path?: string | null;\n sha256?: string | null;\n uploadStatus?: string | null;\n uri?: string | null;\n workspaceId: string;\n}\n\nexport type AgentActivityRuntimePromptContentBlock =\n AgentActivitySendInput[\"content\"][number] & {\n assetId?: string;\n hostPath?: string;\n kind?: string;\n path?: string;\n sizeBytes?: number;\n uploadStatus?: string;\n uri?: string;\n };\n\nexport interface AgentActivityRuntimeUploadPromptContentInput {\n content: AgentActivityRuntimePromptContentBlock[];\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeUploadPromptContentResult {\n content: AgentActivityRuntimePromptContentBlock[];\n}\n\nexport interface AgentActivityRuntimeSessionAttachment {\n attachmentId: string;\n mimeType: string;\n name?: string;\n data: string;\n}\n\nexport interface AgentActivityRuntimePromptAsset {\n assetId?: string;\n hostPath?: string;\n kind?: string;\n mimeType: string;\n name?: string;\n path: string;\n uploadStatus?: string;\n uri?: string;\n data: string;\n}\n\nexport interface AgentActivityRuntime {\n cancelSession(\n input: AgentActivityCancelSessionInput\n ): Promise<AgentActivityCancelSessionResult>;\n createSession(\n input: AgentActivityCreateSessionInput\n ): Promise<AgentActivitySession>;\n deleteSession(\n input: AgentActivityDeleteSessionInput\n ): Promise<AgentActivityDeleteSessionResult>;\n activateSession(\n input: AgentActivityRuntimeActivateSessionInput\n ): Promise<AgentHostActivateAgentSessionResult>;\n getSession(\n workspaceId: string,\n agentSessionId: string\n ): Promise<AgentActivitySession>;\n getComposerOptions(\n input: AgentActivityRuntimeGetComposerOptionsInput\n ): Promise<unknown>;\n updateSessionSettings(\n input: AgentActivityRuntimeUpdateSessionSettingsInput\n ): Promise<AgentHostUpdateAgentSessionSettingsResult>;\n warmupOpenclawGateway?(\n input?: AgentActivityRuntimeWarmupOpenclawGatewayInput\n ): Promise<AgentHostRuntimeOpenclawGatewayWarmupResult>;\n getSessionControlState(\n input: AgentActivityRuntimeGetSessionControlStateInput\n ): Promise<AgentHostAgentSessionState>;\n getSnapshot(workspaceId: string): AgentActivitySnapshot;\n listSessionMessages(\n input: AgentActivityRuntimeListSessionMessagesInput\n ): Promise<AgentActivityMessagePage>;\n listAgentGeneratedFiles?(\n input: AgentActivityRuntimeListGeneratedFilesInput\n ): Promise<AgentActivityRuntimeGeneratedFileList>;\n load(\n workspaceId: string,\n signal?: AbortSignal\n ): Promise<AgentActivitySnapshot>;\n ensureSessionSynchronized?(\n input: AgentActivityRuntimeEnsureSessionSynchronizedInput\n ): () => void;\n /** @deprecated Use ensureSessionSynchronized. */\n retainSessionEvents(\n input: AgentActivityRuntimeRetainSessionEventsInput\n ): () => void;\n sendInput(\n input: AgentActivitySendInput\n ): Promise<AgentActivitySendInputResult>;\n uploadPromptContent?(\n input: AgentActivityRuntimeUploadPromptContentInput\n ): Promise<AgentActivityRuntimeUploadPromptContentResult>;\n readSessionAttachment?(\n input: AgentActivityRuntimeReadSessionAttachmentInput\n ): Promise<AgentActivityRuntimeSessionAttachment>;\n readPromptAsset?(\n input: AgentActivityRuntimeReadPromptAssetInput\n ): Promise<AgentActivityRuntimePromptAsset>;\n setSessionPinned(\n input: AgentActivityRuntimeSetSessionPinnedInput\n ): Promise<AgentActivitySession>;\n trackSettingsProjectChange?(\n input: AgentActivityRuntimeTrackSettingsProjectChangeInput\n ): Promise<void>;\n trackDraftComposerSettingsChange?(\n input: AgentActivityRuntimeTrackDraftComposerSettingsChangeInput\n ): Promise<void>;\n reportDiagnostic?(\n input: AgentActivityRuntimeDiagnosticInput\n ): Promise<void> | void;\n unactivateSession(\n input: AgentActivityRuntimeUnactivateSessionInput\n ): Promise<AgentHostUnactivateAgentSessionResult>;\n submitInteractive(\n input: AgentActivitySubmitInteractiveInput\n ): Promise<unknown>;\n subscribeSessionEvents(\n workspaceId: string,\n listener: (event: unknown) => void\n ): () => void;\n subscribe(\n workspaceId: string,\n listener: AgentActivitySnapshotListener\n ): () => void;\n}\n\nconst AgentActivityRuntimeContext = createContext<AgentActivityRuntime | null>(\n null\n);\n\nlet currentAgentActivityRuntime: AgentActivityRuntime | null = null;\n\nexport interface AgentActivityRuntimeProviderProps extends PropsWithChildren {\n runtime?: AgentActivityRuntime | null;\n}\n\nexport function AgentActivityRuntimeProvider({\n children,\n runtime\n}: AgentActivityRuntimeProviderProps): JSX.Element {\n currentAgentActivityRuntime = runtime ?? null;\n return (\n <AgentActivityRuntimeContext.Provider value={runtime ?? null}>\n {children}\n </AgentActivityRuntimeContext.Provider>\n );\n}\n\nexport function useAgentActivityRuntime(): AgentActivityRuntime {\n const runtime =\n useContext(AgentActivityRuntimeContext) ?? getTestAgentActivityRuntime();\n if (!runtime) {\n throw new Error(\n \"AgentActivityRuntimeProvider is missing an AgentActivityRuntime instance.\"\n );\n }\n return runtime;\n}\n\nexport function useOptionalAgentActivityRuntime(): AgentActivityRuntime | null {\n return (\n useContext(AgentActivityRuntimeContext) ?? getTestAgentActivityRuntime()\n );\n}\n\nexport function useAgentActivitySnapshot(\n workspaceId: string\n): AgentActivitySnapshot {\n const runtime = useAgentActivityRuntime();\n const normalizedWorkspaceId = workspaceId.trim();\n return useSyncExternalStore(\n (listener) => runtime.subscribe(normalizedWorkspaceId, listener),\n () => runtime.getSnapshot(normalizedWorkspaceId),\n () => runtime.getSnapshot(normalizedWorkspaceId)\n );\n}\n\nexport function getAgentActivityRuntime(): AgentActivityRuntime {\n const runtime =\n getExplicitWindowTestAgentActivityRuntime() ??\n currentAgentActivityRuntime ??\n getTestAgentActivityRuntime();\n if (!runtime) {\n throw new Error(\n \"AgentActivityRuntimeProvider is missing an AgentActivityRuntime instance.\"\n );\n }\n return runtime;\n}\n\nexport function getOptionalAgentActivityRuntime(): AgentActivityRuntime | null {\n return (\n getExplicitWindowTestAgentActivityRuntime() ??\n currentAgentActivityRuntime ??\n getTestAgentActivityRuntime()\n );\n}\n\nexport function resetAgentActivityRuntimeForTests(): void {\n if (process.env.NODE_ENV === \"test\") {\n currentAgentActivityRuntime = null;\n }\n}\n\nexport function setAgentActivityRuntimeForTests(\n runtime: AgentActivityRuntime | null\n): void {\n if (process.env.NODE_ENV === \"test\") {\n currentAgentActivityRuntime = runtime;\n }\n}\n\nfunction getTestAgentActivityRuntime(): AgentActivityRuntime | null {\n if (process.env.NODE_ENV !== \"test\") {\n return null;\n }\n if (typeof window === \"undefined\") {\n return null;\n }\n const explicitRuntime = getExplicitWindowTestAgentActivityRuntime();\n if (explicitRuntime) {\n return explicitRuntime;\n }\n if (currentAgentActivityRuntime) {\n return currentAgentActivityRuntime;\n }\n const testRuntime = (\n window as unknown as Window & {\n agentActivityRuntime?: AgentActivityRuntime;\n }\n ).agentActivityRuntime;\n return testRuntime ?? null;\n}\n\nfunction getExplicitWindowTestAgentActivityRuntime(): AgentActivityRuntime | null {\n if (process.env.NODE_ENV !== \"test\" || typeof window === \"undefined\") {\n return null;\n }\n const testDescriptor = Object.getOwnPropertyDescriptor(\n window,\n \"agentActivityRuntime\"\n );\n if (!testDescriptor || !(\"value\" in testDescriptor)) {\n return null;\n }\n return (testDescriptor.value as AgentActivityRuntime | undefined) ?? null;\n}\n","import {\n createContext,\n useContext,\n useMemo,\n type JSX,\n type PropsWithChildren\n} from \"react\";\nimport {\n toAgentHostRuntimeApi,\n type AgentHostInputApi,\n type AgentHostRuntimeApi\n} from \"./host/agentHostApi\";\nimport {\n AgentActivityRuntimeProvider,\n type AgentActivityRuntime\n} from \"./agentActivityRuntime\";\n\nconst AgentActivityHostContext = createContext<AgentHostRuntimeApi | null>(\n null\n);\n\nlet currentAgentHostApi: AgentHostRuntimeApi | null = null;\n\nexport interface AgentActivityHostProviderProps extends PropsWithChildren {\n agentActivityRuntime?: AgentActivityRuntime | null;\n agentHostApi?: AgentHostInputApi | null;\n}\n\nexport function AgentActivityHostProvider({\n agentActivityRuntime,\n agentHostApi,\n children\n}: AgentActivityHostProviderProps): JSX.Element {\n const resolvedAgentHostApi = useMemo(\n () => (agentHostApi ? toAgentHostRuntimeApi(agentHostApi) : null),\n [agentHostApi]\n );\n currentAgentHostApi = resolvedAgentHostApi;\n return (\n <AgentActivityRuntimeProvider runtime={agentActivityRuntime}>\n <AgentActivityHostContext.Provider value={resolvedAgentHostApi}>\n {children}\n </AgentActivityHostContext.Provider>\n </AgentActivityRuntimeProvider>\n );\n}\n\nexport function useAgentHostApi(): AgentHostRuntimeApi {\n const agentHostApi =\n useContext(AgentActivityHostContext) ?? getTestAgentHostApi();\n if (!agentHostApi) {\n throw new Error(\n \"AgentActivityHostProvider is missing an agentHostApi instance.\"\n );\n }\n return agentHostApi;\n}\n\nexport function useOptionalAgentHostApi(): AgentHostRuntimeApi | null {\n return useContext(AgentActivityHostContext) ?? getTestAgentHostApi();\n}\n\nexport function getAgentHostApi(): AgentHostRuntimeApi {\n const agentHostApi =\n getExplicitWindowTestAgentHostApi() ??\n currentAgentHostApi ??\n getTestAgentHostApi();\n if (!agentHostApi) {\n throw new Error(\n \"AgentActivityHostProvider is missing an agentHostApi instance.\"\n );\n }\n return agentHostApi;\n}\n\nexport function getOptionalAgentHostApi(): AgentHostRuntimeApi | null {\n return (\n getExplicitWindowTestAgentHostApi() ??\n currentAgentHostApi ??\n getTestAgentHostApi()\n );\n}\n\nexport function resetAgentHostApiForTests(): void {\n if (process.env.NODE_ENV === \"test\") {\n currentAgentHostApi = null;\n }\n}\n\nexport function setAgentHostApiForTests(\n agentHostApi: AgentHostInputApi | AgentHostRuntimeApi | null\n): void {\n if (process.env.NODE_ENV === \"test\") {\n currentAgentHostApi = agentHostApi\n ? toAgentHostRuntimeApi(agentHostApi)\n : null;\n }\n}\n\nfunction getTestAgentHostApi(): AgentHostRuntimeApi | null {\n if (process.env.NODE_ENV !== \"test\") {\n return null;\n }\n if (typeof window === \"undefined\") {\n return null;\n }\n const explicitAgentHostApi = getExplicitWindowTestAgentHostApi();\n if (explicitAgentHostApi) {\n return explicitAgentHostApi;\n }\n if (currentAgentHostApi) {\n return currentAgentHostApi;\n }\n const testAgentHostApi = (\n window as unknown as Window & {\n agentHostApi?: AgentHostInputApi | AgentHostRuntimeApi;\n }\n ).agentHostApi;\n return testAgentHostApi ? toAgentHostRuntimeApi(testAgentHostApi) : null;\n}\n\nfunction getExplicitWindowTestAgentHostApi(): AgentHostRuntimeApi | null {\n if (process.env.NODE_ENV !== \"test\" || typeof window === \"undefined\") {\n return null;\n }\n const testDescriptor = Object.getOwnPropertyDescriptor(\n window,\n \"agentHostApi\"\n );\n if (!testDescriptor || !(\"value\" in testDescriptor)) {\n return null;\n }\n const testAgentHostApi = testDescriptor.value as\n | AgentHostInputApi\n | AgentHostRuntimeApi\n | undefined;\n return testAgentHostApi ? toAgentHostRuntimeApi(testAgentHostApi) : null;\n}\n","import type {\n AgentHostBatchUserInfoInput,\n AgentHostBatchUserInfoResult,\n AgentHostDeleteWorkspaceAgentSessionInput,\n AgentHostWorkspaceAgentListInput as AgentHostListWorkspaceAgentsInput,\n AgentHostListWorkspaceAgentProbesInput,\n AgentHostWorkspaceAgentSessionMessages,\n AgentHostWorkspaceAgentSessionMessagesInput,\n AgentHostWorkspaceAgentSessionSummary,\n AgentHostWorkspaceAgentSessionSummaryInput,\n AgentHostWorkspaceAgentProbesResult,\n AgentHostWorkspaceAgentSnapshot,\n PersistWriteResult,\n ReadWorkspaceAgentReadStateInput,\n ReadWorkspaceFileResult as AgentHostReadWorkspaceFileResult,\n WorkspaceAgentReadStateSnapshot,\n WriteWorkspaceAgentReadStateInput\n} from \"../shared/contracts/dto\";\nimport type { WorkspaceUserProjectService } from \"@tutti-os/workspace-user-project/contracts\";\n\ntype AgentHostAsyncResult<T = any> = Promise<T>;\ntype AgentHostRecord = Record<string, unknown>;\ntype AgentHostUnsubscribe = () => void;\ntype AgentHostWorkspaceScopedInput<\n T extends {\n workspaceId?: string | null;\n }\n> = Omit<T, \"workspaceId\"> & {\n workspaceId: string;\n};\ntype AgentHostWorkspaceAgentsListInput =\n AgentHostWorkspaceScopedInput<AgentHostListWorkspaceAgentsInput>;\ntype AgentHostWorkspaceAgentSessionMessagesRuntimeInput =\n AgentHostWorkspaceScopedInput<AgentHostWorkspaceAgentSessionMessagesInput>;\ntype AgentHostWorkspaceAgentSessionSummaryRuntimeInput =\n AgentHostWorkspaceScopedInput<AgentHostWorkspaceAgentSessionSummaryInput>;\ntype AgentHostDeleteWorkspaceAgentSessionRuntimeInput =\n AgentHostWorkspaceScopedInput<AgentHostDeleteWorkspaceAgentSessionInput>;\n\nexport type AgentHostClipboardApi = {\n writeText: (text: string) => AgentHostAsyncResult<void>;\n};\n\nexport type AgentHostDebugApi = {\n logRuntimeDiagnostics: (\n payload: unknown\n ) => AgentHostAsyncResult<void> | void;\n logTerminalDiagnostics?: (\n payload: unknown\n ) => AgentHostAsyncResult<void> | void;\n};\n\nexport type AgentHostFilesystemApi = AgentHostRecord & {\n readFileText: (payload: {\n path?: string;\n uri?: string;\n }) => AgentHostAsyncResult<{\n content: string;\n name?: string;\n path?: string;\n }>;\n};\n\nexport type AgentHostMetaApi = AgentHostRecord & {\n appVersion?: string | null;\n isPackaged?: boolean;\n isTest?: boolean;\n mainPid?: number | null;\n platform?: string;\n workspaceId?: string;\n};\n\nexport type AgentHostEnvironmentApi = AgentHostRecord & {\n getBaseUrl?: () => AgentHostAsyncResult<string>;\n warmupOpenclawGateway?: (input?: unknown) => AgentHostAsyncResult<unknown>;\n};\n\nexport type AgentHostPersistenceApi = AgentHostRecord & {\n readWorkspaceAgentReadState: (\n input: ReadWorkspaceAgentReadStateInput\n ) => AgentHostAsyncResult<WorkspaceAgentReadStateSnapshot>;\n writeWorkspaceAgentReadState: (\n input: WriteWorkspaceAgentReadStateInput\n ) => AgentHostAsyncResult<PersistWriteResult>;\n};\n\nexport interface AgentHostSelectedFile {\n name?: string;\n path: string;\n}\n\nexport interface AgentHostSelectFilesInput {\n allowDirectories?: boolean;\n}\n\nexport type AgentHostWorkspaceApi = AgentHostRecord & {\n copyPath?: (input: { path: string }) => AgentHostAsyncResult<void>;\n ensureDirectory: (input: { path: string }) => AgentHostAsyncResult<void>;\n getPathForFile: (file: File) => string;\n readFile: (input: {\n path: string;\n }) => AgentHostAsyncResult<AgentHostReadWorkspaceFileResult>;\n selectContextEntries?: () => AgentHostAsyncResult<{ entries: unknown[] }>;\n selectDirectory: () => AgentHostAsyncResult<{ path: string } | null>;\n selectFiles: (\n input?: AgentHostSelectFilesInput\n ) => AgentHostAsyncResult<AgentHostSelectedFile[]>;\n writeFileText: (input: {\n content: string;\n path: string;\n }) => AgentHostAsyncResult<unknown>;\n};\n\nexport interface AgentHostInputApi {\n account?: AgentHostAccountApi;\n agentGuiBatch?: AgentHostAgentGuiBatchApi;\n agentSessions?: AgentHostAgentSessionsApi;\n clipboard: AgentHostClipboardApi;\n debug?: AgentHostDebugApi;\n filesystem: AgentHostFilesystemApi;\n meta?: AgentHostMetaApi;\n onHostEvent?: (listener: (event: any) => void) => AgentHostUnsubscribe;\n persistence?: AgentHostPersistenceApi;\n runtime?: AgentHostEnvironmentApi;\n userProjects?: AgentHostUserProjectsApi;\n workspace: AgentHostWorkspaceApi;\n workspaceAgentProbes?: AgentHostWorkspaceAgentProbesApi;\n workspaceAgents?: AgentHostWorkspaceAgentsApi;\n}\n\nexport type AgentHostApi = AgentHostInputApi;\n\nexport type AgentHostAccountApi = AgentHostRecord & {\n batchGetUserInfo: (\n input: AgentHostBatchUserInfoInput\n ) => AgentHostAsyncResult<AgentHostBatchUserInfoResult>;\n ensureProfiles?: (input: any) => AgentHostAsyncResult<any>;\n};\n\nexport type AgentHostAgentGuiBatchApi = AgentHostRecord & {\n exportRun: (input: any) => AgentHostAsyncResult<any>;\n};\n\nexport type AgentHostWorkspaceAgentProbesApi = AgentHostRecord & {\n list: (\n input: AgentHostListWorkspaceAgentProbesInput\n ) => AgentHostAsyncResult<AgentHostWorkspaceAgentProbesResult>;\n};\n\nexport type AgentProviderProbeListInput =\n AgentHostListWorkspaceAgentProbesInput;\nexport type AgentProviderProbeListResult = AgentHostWorkspaceAgentProbesResult;\n\nexport interface AgentHostUserProject {\n id: string;\n path: string;\n label: string;\n createdAtUnixMs?: number;\n updatedAtUnixMs?: number;\n lastUsedAtUnixMs?: number;\n}\n\nexport type AgentHostUserProjectsApi = AgentHostRecord & {\n service?: WorkspaceUserProjectService;\n checkPath?: (input: { path: string }) => AgentHostAsyncResult<{\n exists: boolean;\n isDirectory: boolean;\n path: string;\n }>;\n create?: (input: {\n name: string;\n }) => AgentHostAsyncResult<AgentHostUserProject>;\n getDefaultSelection?: () => AgentHostAsyncResult<{\n path: string | null;\n } | null>;\n list: () => AgentHostAsyncResult<{\n projects: AgentHostUserProject[];\n }>;\n subscribe?: (listener: () => void) => AgentHostUnsubscribe;\n prepareSelection?: (input: {\n projectLocked: boolean;\n selectedPath: string | null;\n }) => AgentHostAsyncResult<{\n isSelectedPathMissing: boolean;\n projects: AgentHostUserProject[];\n selection:\n | {\n kind: \"clear\";\n suppressedPath: string;\n }\n | {\n kind: \"none\";\n }\n | {\n kind: \"select\";\n path: string;\n };\n }>;\n remove?: (input: { path: string }) => AgentHostAsyncResult<void>;\n isNoProjectPath?: (input: { path: string }) => boolean;\n rememberDefaultSelection?: (input: {\n path: string | null;\n }) => AgentHostAsyncResult<void>;\n use: (input: { path: string }) => AgentHostAsyncResult<AgentHostUserProject>;\n};\n\nexport type AgentHostAgentSessionsApi = AgentHostRecord & {\n activate: (input: any) => AgentHostAsyncResult<any>;\n /**\n * @deprecated AgentGUI production writes must use AgentActivityRuntime.cancelSession.\n */\n cancel: (input: any) => AgentHostAsyncResult<any>;\n /**\n * @deprecated AgentGUI production writes must use AgentActivityRuntime.sendInput.\n */\n exec: (input: any) => AgentHostAsyncResult<any>;\n getComposerOptions?: (input: any) => AgentHostAsyncResult<any>;\n getState: (input: any) => AgentHostAsyncResult<any>;\n onEvent?: (listener: (event: any) => void) => AgentHostUnsubscribe;\n /**\n * @deprecated AgentGUI production writes must use AgentActivityRuntime.setSessionPinned.\n */\n pinSession?: (input: any) => AgentHostAsyncResult<any>;\n /**\n * @deprecated AgentGUI production sync must use AgentActivityRuntime.ensureSessionSynchronized.\n */\n releaseEventStream?: (input?: any) => AgentHostAsyncResult;\n /**\n * @deprecated AgentGUI production sync must use AgentActivityRuntime.ensureSessionSynchronized.\n */\n retainEventStream?: (input: any) => AgentHostAsyncResult;\n /**\n * @deprecated AgentGUI production writes must use AgentActivityRuntime.submitInteractive.\n */\n submitInteractive: (input: any) => AgentHostAsyncResult<any>;\n /**\n * @deprecated AgentGUI production UI must derive events from AgentActivityRuntime snapshots.\n */\n trackSettingsProjectChange?: (input: {\n action: \"clear\" | \"create_new\" | \"select_existing\";\n agentSessionId: string;\n provider?: string | null;\n }) => AgentHostAsyncResult<void>;\n subscribeEvents: (\n input: any,\n listener: (event: any) => void\n ) => AgentHostUnsubscribe;\n unactivate: (input: any) => AgentHostAsyncResult<any>;\n updateSettings: (input: any) => AgentHostAsyncResult<any>;\n};\n\n/**\n * @deprecated Legacy host DTO projection. AgentGUI production reads and writes\n * must use AgentActivityRuntime and AgentActivity* models.\n */\nexport type AgentHostWorkspaceAgentsApi = AgentHostRecord & {\n /**\n * @deprecated Use AgentActivityRuntime.deleteSession.\n */\n deleteSession: (\n input: AgentHostDeleteWorkspaceAgentSessionRuntimeInput\n ) => AgentHostAsyncResult<any>;\n /**\n * @deprecated Derive summaries from AgentActivitySnapshot/session messages.\n */\n getSessionSummary: (\n input: AgentHostWorkspaceAgentSessionSummaryRuntimeInput\n ) => AgentHostAsyncResult<AgentHostWorkspaceAgentSessionSummary>;\n /**\n * @deprecated Use AgentActivityRuntime.load/getSnapshot.\n */\n list: (\n input: string | AgentHostWorkspaceAgentsListInput\n ) => AgentHostAsyncResult<AgentHostWorkspaceAgentSnapshot>;\n /**\n * @deprecated Use AgentActivityRuntime.listSessionMessages.\n */\n listSessionMessages: (\n input: AgentHostWorkspaceAgentSessionMessagesRuntimeInput\n ) => AgentHostAsyncResult<AgentHostWorkspaceAgentSessionMessages>;\n};\n\nexport interface AgentHostRuntimeApi {\n account?: AgentHostAccountApi;\n agentGuiBatch: AgentHostAgentGuiBatchApi;\n clipboard: AgentHostClipboardApi;\n debug?: AgentHostDebugApi;\n filesystem: AgentHostFilesystemApi;\n meta?: AgentHostMetaApi;\n onHostEvent?: (listener: (event: any) => void) => AgentHostUnsubscribe;\n persistence?: AgentHostPersistenceApi;\n runtime?: AgentHostEnvironmentApi;\n userProjects?: AgentHostUserProjectsApi;\n workspace: AgentHostWorkspaceApi;\n workspaceAgentProbes?: AgentHostWorkspaceAgentProbesApi;\n}\n\nexport function toAgentHostRuntimeApi(\n hostApi: AgentHostInputApi | AgentHostRuntimeApi\n): AgentHostRuntimeApi {\n return {\n account: hostApi.account,\n agentGuiBatch: hostApi.agentGuiBatch ?? ({} as AgentHostAgentGuiBatchApi),\n clipboard: hostApi.clipboard,\n debug: hostApi.debug,\n filesystem: hostApi.filesystem,\n meta: hostApi.meta,\n onHostEvent: hostApi.onHostEvent,\n persistence: hostApi.persistence,\n runtime: hostApi.runtime,\n userProjects: hostApi.userProjects,\n workspace: hostApi.workspace,\n workspaceAgentProbes: hostApi.workspaceAgentProbes\n };\n}\n"],"mappings":"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","names":["createContext","useContext","jsx","createContext","useContext"]}
@@ -3,19 +3,19 @@ import {
3
3
  managedAgentRoundedIconUrl,
4
4
  userAvatarPlaceholderUrl,
5
5
  workspaceAgentActivityStatusLabel
6
- } from "./chunk-WPWZKKKV.js";
6
+ } from "./chunk-RUO6SDNC.js";
7
7
  import {
8
8
  normalizeAgentSessionMentionTitle
9
- } from "./chunk-A4KUAXE5.js";
9
+ } from "./chunk-PVEFWBH6.js";
10
10
  import {
11
11
  getOptionalAgentHostApi
12
- } from "./chunk-SGQ4C7JE.js";
12
+ } from "./chunk-2ADVHCST.js";
13
13
  import {
14
14
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
15
15
  } from "./chunk-JM24HADP.js";
16
16
  import {
17
17
  translate
18
- } from "./chunk-RQ3HEF42.js";
18
+ } from "./chunk-TQFYX7KY.js";
19
19
  import {
20
20
  resolveAgentMentionFileThumbnailUrl,
21
21
  resolveAgentMentionFileVisualKind
@@ -1184,7 +1184,6 @@ var AgentMentionSearchController = class {
1184
1184
  workspaceId: input.workspaceId,
1185
1185
  currentUserId: input.currentUserId,
1186
1186
  query: input.query,
1187
- limit: DEFAULT_MENTION_GROUP_PAGE_SIZE,
1188
1187
  sessionCwd: input.sessionCwd,
1189
1188
  diagnostics: providerDiagnostics
1190
1189
  });
@@ -1359,10 +1358,7 @@ var AgentMentionSearchController = class {
1359
1358
  return buildEmptyGroup(groupId, this.currentQuery);
1360
1359
  }
1361
1360
  const pageSize = mentionGroupPageSize(this.currentFilter, groupId);
1362
- const visibleCount = Math.min(
1363
- items.length,
1364
- this.expandedCounts[groupId] ?? pageSize
1365
- );
1361
+ const visibleCount = groupId === "apps" ? items.length : Math.min(items.length, this.expandedCounts[groupId] ?? pageSize);
1366
1362
  const totalCount = resolveMentionGroupTotalCount(
1367
1363
  groupId,
1368
1364
  this.totalCounts,
@@ -1373,7 +1369,7 @@ var AgentMentionSearchController = class {
1373
1369
  items: items.slice(0, visibleCount),
1374
1370
  totalCount,
1375
1371
  visibleCount,
1376
- hasMore: items.length > visibleCount || (groupId === "opened_files" || groupId === "files" || groupId === "agent_generated_files") && items.length >= this.currentFileSearchLimit || totalCount > visibleCount
1372
+ hasMore: groupId !== "apps" && (items.length > visibleCount || (groupId === "opened_files" || groupId === "files" || groupId === "agent_generated_files") && items.length >= this.currentFileSearchLimit || totalCount > visibleCount)
1377
1373
  };
1378
1374
  }).filter((group) => group !== null);
1379
1375
  }
@@ -2126,4 +2122,4 @@ export {
2126
2122
  AgentFileMentionPalette,
2127
2123
  AgentContextMentionPalette
2128
2124
  };
2129
- //# sourceMappingURL=chunk-ERRANBGS.js.map
2125
+ //# sourceMappingURL=chunk-I5GHWK6X.js.map