@tutti-os/agent-gui 0.0.126 → 0.0.127

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 (53) hide show
  1. package/dist/{AgentGUI-CKk3WQrn.d.ts → AgentGUI-DprRUk8h.d.ts} +9 -2
  2. package/dist/{AgentRichTextReadonly-KOUZGF5Q.js → AgentRichTextReadonly-SPIPM3UM.js} +5 -5
  3. package/dist/agent-conversation/index.d.ts +1 -1
  4. package/dist/agent-conversation/index.js +7 -7
  5. package/dist/agent-gui.d.ts +2 -2
  6. package/dist/agent-gui.js +14 -14
  7. package/dist/agent-message-center/index.js +6 -6
  8. package/dist/{agentGuiNodeTypes-DedIWrEI.d.ts → agentGuiNodeTypes-5TL1hyCN.d.ts} +8 -2
  9. package/dist/app/renderer/agentactivity.css +10 -1
  10. package/dist/{chunk-BDWZUA3L.js → chunk-54GR2G3U.js} +4 -4
  11. package/dist/{chunk-2JFMGOHU.js → chunk-D5CIV4IB.js} +2 -2
  12. package/dist/chunk-D5CIV4IB.js.map +1 -0
  13. package/dist/{chunk-G3XB4FAQ.js → chunk-EG7IIFNL.js} +3 -3
  14. package/dist/{chunk-4CACBXIB.js → chunk-JE2DXS4U.js} +2 -2
  15. package/dist/{chunk-6RMVLH3G.js → chunk-JVISXD4K.js} +2 -2
  16. package/dist/{chunk-F2Z7P7BB.js → chunk-JWB5Z5GS.js} +4 -4
  17. package/dist/{chunk-QDNOOAAS.js → chunk-LWJITLCI.js} +2 -2
  18. package/dist/{chunk-2ZVXN2Z7.js → chunk-T2CHVUXH.js} +7 -1
  19. package/dist/chunk-T2CHVUXH.js.map +1 -0
  20. package/dist/{chunk-ADQENNSG.js → chunk-WB3KV4VH.js} +3 -3
  21. package/dist/{chunk-CO6XO5A2.js → chunk-WKFMSABH.js} +83 -5
  22. package/dist/chunk-WKFMSABH.js.map +1 -0
  23. package/dist/{chunk-RB6ZYQBA.js → chunk-WKYMLLHT.js} +2 -2
  24. package/dist/{chunk-PRE4IT6E.js → chunk-YJKTYMF4.js} +4 -4
  25. package/dist/{chunk-X22KJXVG.js → chunk-YWKS4ESK.js} +2 -2
  26. package/dist/{chunk-QWKJ646Z.js → chunk-ZXHXR2KT.js} +1044 -813
  27. package/dist/chunk-ZXHXR2KT.js.map +1 -0
  28. package/dist/context-mention-palette/index.js +7 -7
  29. package/dist/i18n/index.d.ts +6 -0
  30. package/dist/i18n/index.js +2 -2
  31. package/dist/index.d.ts +4 -4
  32. package/dist/index.js +14 -14
  33. package/dist/index.js.map +1 -1
  34. package/dist/mention-search.js +5 -5
  35. package/dist/workbench/contribution.js +3 -3
  36. package/dist/workbench/index.js +3 -3
  37. package/dist/workbench/sessionTitle.js +2 -2
  38. package/package.json +14 -14
  39. package/dist/chunk-2JFMGOHU.js.map +0 -1
  40. package/dist/chunk-2ZVXN2Z7.js.map +0 -1
  41. package/dist/chunk-CO6XO5A2.js.map +0 -1
  42. package/dist/chunk-QWKJ646Z.js.map +0 -1
  43. /package/dist/{AgentRichTextReadonly-KOUZGF5Q.js.map → AgentRichTextReadonly-SPIPM3UM.js.map} +0 -0
  44. /package/dist/{chunk-BDWZUA3L.js.map → chunk-54GR2G3U.js.map} +0 -0
  45. /package/dist/{chunk-G3XB4FAQ.js.map → chunk-EG7IIFNL.js.map} +0 -0
  46. /package/dist/{chunk-4CACBXIB.js.map → chunk-JE2DXS4U.js.map} +0 -0
  47. /package/dist/{chunk-6RMVLH3G.js.map → chunk-JVISXD4K.js.map} +0 -0
  48. /package/dist/{chunk-F2Z7P7BB.js.map → chunk-JWB5Z5GS.js.map} +0 -0
  49. /package/dist/{chunk-QDNOOAAS.js.map → chunk-LWJITLCI.js.map} +0 -0
  50. /package/dist/{chunk-ADQENNSG.js.map → chunk-WB3KV4VH.js.map} +0 -0
  51. /package/dist/{chunk-RB6ZYQBA.js.map → chunk-WKYMLLHT.js.map} +0 -0
  52. /package/dist/{chunk-PRE4IT6E.js.map → chunk-YJKTYMF4.js.map} +0 -0
  53. /package/dist/{chunk-X22KJXVG.js.map → chunk-YWKS4ESK.js.map} +0 -0
@@ -4,7 +4,7 @@ import { I18nRuntime } from '@tutti-os/ui-i18n-runtime';
4
4
  import { AgentActivityGoalControlInput, AgentActivityGoalControlResult, AgentActivityCreateSessionInput, AgentActivitySession, AgentActivityDeleteSessionInput, AgentActivityDeleteSessionResult, AgentActivitySendInput, AgentActivitySessionSettings, AgentActivityActivateSessionResult, AgentActivitySnapshot, AgentSessionEngine, AgentActivityMessageOrder, AgentActivityMessagePage, AgentActivitySendInputResult, AgentActivityRenameSessionInput, AgentActivitySubmitInteractiveInput, AgentActivitySubmitInteractiveResult, AgentActivitySnapshotListener, AgentActivitySubmitSettingsPatch } from '@tutti-os/agent-activity-core';
5
5
  import { v as AgentHostAgentSessionComposerSettings, z as AgentHostUnactivateAgentSessionResult, i as AgentGUIAgentTarget, o as AgentGUIProvider, B as AgentPromptContentBlock, n as AgentGUINodeData, P as Point, p as AgentGUIProviderRailAllPresentation, q as AgentGUIProviderRailMode, r as AgentGUIProviderReadinessGate, m as AgentGUIHomeSuggestionId, N as NodeFrame, e as AgentGUIAgentDirectorySnapshot, l as AgentGUIAllAgentsPresentation } from './types-BicfRVrV.js';
6
6
  import { WorkspaceQueryCache } from './workspace-query-cache.js';
7
- import { A as AgentComposerDraft, u as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, p as AgentMessageMarkdownWorkspaceAppIcon, v as AgentSlashCommandCapability, c as AgentGUINodeViewModel, r as AgentProbeSnapshot, a as AgentComposerDraftFile, m as AgentHostInputApi } from './agentGuiNodeTypes-DedIWrEI.js';
7
+ import { A as AgentComposerDraft, v as AgentSessionCommand, d as AgentGUIProviderSkillOption, b as AgentGUIComposerSettingsVM, e as AgentGUIQueueStatus, f as AgentGUIQueuedPromptVM, q as AgentMessageMarkdownWorkspaceAppIcon, w as AgentSlashCommandCapability, c as AgentGUINodeViewModel, s as AgentProbeSnapshot, a as AgentComposerDraftFile, m as AgentHostInputApi } from './agentGuiNodeTypes-5TL1hyCN.js';
8
8
  import { WorkspaceFileReference, ReferenceLocateTarget, WorkspaceFileReferenceAdapter, ReferenceProvenanceCatalog } from '@tutti-os/workspace-file-reference/contracts';
9
9
  import { A as AgentContextMentionItem } from './agentFileMentionContracts-CWAeuL7S.js';
10
10
  import { WorkspaceFileEntry } from '@tutti-os/workspace-file-manager/services';
@@ -86,6 +86,7 @@ interface AgentActivityRuntimeUserProject {
86
86
  label: string;
87
87
  lastUsedAtUnixMs?: number;
88
88
  path: string;
89
+ pinnedAtUnixMs: number;
89
90
  sectionKey: string;
90
91
  updatedAtUnixMs: number;
91
92
  }
@@ -918,6 +919,12 @@ interface AgentGUIRememberComposerDefaultsInput {
918
919
  provider: AgentGUINodeData["provider"];
919
920
  defaults: AgentGUIComposerDefaults | null;
920
921
  }
922
+ declare const rememberComposerDefaultsFields: readonly ["model", "permissionModeId", "reasoningEffort", "speed"];
923
+ type AgentGUIComposerDefaultsField = (typeof rememberComposerDefaultsFields)[number];
924
+ interface AgentGUIRememberComposerDefaultsResult {
925
+ acknowledgedFields: AgentGUIComposerDefaultsField[];
926
+ supersededFields: AgentGUIComposerDefaultsField[];
927
+ }
921
928
 
922
929
  interface AgentGUIOpenSessionRequest {
923
930
  agentSessionId: string;
@@ -1037,7 +1044,7 @@ interface AgentGUINodeHostActions {
1037
1044
  onClose: () => void;
1038
1045
  onResize: (frame: NodeFrame) => void;
1039
1046
  onUpdateNode: (updater: (current: AgentGUINodeData) => AgentGUINodeData) => void;
1040
- onRememberComposerDefaults?: (input: AgentGUIRememberComposerDefaultsInput) => void | Promise<void>;
1047
+ onRememberComposerDefaults?: (input: AgentGUIRememberComposerDefaultsInput) => void | Promise<AgentGUIRememberComposerDefaultsResult>;
1041
1048
  isMuted?: boolean;
1042
1049
  onMinimize?: () => void;
1043
1050
  onToggleMaximize?: () => void;
@@ -1,18 +1,18 @@
1
1
  import {
2
2
  AgentRichTextReadonly
3
- } from "./chunk-RB6ZYQBA.js";
4
- import "./chunk-QDNOOAAS.js";
3
+ } from "./chunk-WKYMLLHT.js";
4
+ import "./chunk-LWJITLCI.js";
5
5
  import "./chunk-LUGELG5V.js";
6
6
  import "./chunk-KPMQGPYU.js";
7
7
  import "./chunk-EDNJMG5T.js";
8
- import "./chunk-6RMVLH3G.js";
8
+ import "./chunk-JVISXD4K.js";
9
9
  import "./chunk-PJP5BUU6.js";
10
10
  import "./chunk-7KVZPJ3O.js";
11
- import "./chunk-2ZVXN2Z7.js";
11
+ import "./chunk-T2CHVUXH.js";
12
12
  import "./chunk-D2JUDUYY.js";
13
13
  import "./chunk-6CUELYIF.js";
14
14
  import "./chunk-QMMWKQOT.js";
15
15
  export {
16
16
  AgentRichTextReadonly
17
17
  };
18
- //# sourceMappingURL=AgentRichTextReadonly-KOUZGF5Q.js.map
18
+ //# sourceMappingURL=AgentRichTextReadonly-SPIPM3UM.js.map
@@ -2,7 +2,7 @@ import * as react from 'react';
2
2
  import { ReactNode, JSX } from 'react';
3
3
  import { c as AgentConversationVM, e as WorkspaceLinkAction, d as WorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BD0-gg6C.js';
4
4
  export { B as BuildWorkspaceAgentSessionDetailInput, W as WorkspaceAgentActivityTimelineItem, f as buildWorkspaceAgentSessionDetailViewModel } from '../agentConversationVM-BD0-gg6C.js';
5
- import { d as AgentGUIProviderSkillOption, p as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-DedIWrEI.js';
5
+ import { d as AgentGUIProviderSkillOption, q as AgentMessageMarkdownWorkspaceAppIcon } from '../agentGuiNodeTypes-5TL1hyCN.js';
6
6
  export { W as WorkspaceAgentActivityCard } from '../workspaceAgentActivityListTypes-DZfS_HgG.js';
7
7
  import '@tutti-os/workspace-issue-manager/core';
8
8
  import '@tutti-os/agent-activity-core';
@@ -6,25 +6,25 @@ import {
6
6
  projectAgentConversationVM,
7
7
  reconcileProjectedAgentConversationVM,
8
8
  useProjectedAgentConversation
9
- } from "../chunk-CO6XO5A2.js";
10
- import "../chunk-RB6ZYQBA.js";
9
+ } from "../chunk-WKFMSABH.js";
10
+ import "../chunk-WKYMLLHT.js";
11
11
  import "../chunk-VMQNG2KI.js";
12
12
  import "../chunk-FGLQZ6I4.js";
13
13
  import "../chunk-XJ34OIEQ.js";
14
14
  import "../chunk-R7AXDQCA.js";
15
- import "../chunk-QDNOOAAS.js";
15
+ import "../chunk-LWJITLCI.js";
16
16
  import "../chunk-LUGELG5V.js";
17
- import "../chunk-ADQENNSG.js";
17
+ import "../chunk-WB3KV4VH.js";
18
18
  import "../chunk-KPMQGPYU.js";
19
- import "../chunk-2JFMGOHU.js";
19
+ import "../chunk-D5CIV4IB.js";
20
20
  import "../chunk-F5UR6EJG.js";
21
21
  import "../chunk-EDNJMG5T.js";
22
22
  import {
23
23
  translate
24
- } from "../chunk-6RMVLH3G.js";
24
+ } from "../chunk-JVISXD4K.js";
25
25
  import "../chunk-PJP5BUU6.js";
26
26
  import "../chunk-7KVZPJ3O.js";
27
- import "../chunk-2ZVXN2Z7.js";
27
+ import "../chunk-T2CHVUXH.js";
28
28
  import "../chunk-MIJXEELH.js";
29
29
  import "../chunk-D2JUDUYY.js";
30
30
  import "../chunk-6CUELYIF.js";
@@ -1,7 +1,7 @@
1
1
  import 'react';
2
2
  import '@tutti-os/ui-i18n-runtime';
3
- export { n as AgentGUI, w as AgentGUIProps } from './AgentGUI-CKk3WQrn.js';
4
- import './agentGuiNodeTypes-DedIWrEI.js';
3
+ export { n as AgentGUI, w as AgentGUIProps } from './AgentGUI-DprRUk8h.js';
4
+ import './agentGuiNodeTypes-5TL1hyCN.js';
5
5
  export { m as AgentGUIHomeSuggestionId } from './types-BicfRVrV.js';
6
6
  import './runtime-BBNdWgDU.js';
7
7
  export { ReferenceProvenanceCatalog as AgentGUIReferenceProvenanceFilterCatalog } from '@tutti-os/workspace-file-reference/contracts';
package/dist/agent-gui.js CHANGED
@@ -1,41 +1,41 @@
1
1
  import {
2
2
  AgentGUI
3
- } from "./chunk-QWKJ646Z.js";
3
+ } from "./chunk-ZXHXR2KT.js";
4
4
  import "./chunk-A4WCTHWS.js";
5
- import "./chunk-G3XB4FAQ.js";
5
+ import "./chunk-EG7IIFNL.js";
6
6
  import "./chunk-TUWQV2MC.js";
7
7
  import "./chunk-MHOYBRCY.js";
8
- import "./chunk-X22KJXVG.js";
8
+ import "./chunk-YWKS4ESK.js";
9
9
  import "./chunk-5HIF53K5.js";
10
10
  import "./chunk-R2ZADXRB.js";
11
- import "./chunk-CO6XO5A2.js";
12
- import "./chunk-RB6ZYQBA.js";
11
+ import "./chunk-WKFMSABH.js";
12
+ import "./chunk-WKYMLLHT.js";
13
13
  import "./chunk-VMQNG2KI.js";
14
14
  import "./chunk-UP3ZDYTN.js";
15
- import "./chunk-BDWZUA3L.js";
15
+ import "./chunk-54GR2G3U.js";
16
16
  import "./chunk-T2NICA5D.js";
17
17
  import "./chunk-FGLQZ6I4.js";
18
18
  import "./chunk-DXT4W2SU.js";
19
- import "./chunk-PRE4IT6E.js";
19
+ import "./chunk-YJKTYMF4.js";
20
20
  import "./chunk-USIFGHT3.js";
21
21
  import "./chunk-XJ34OIEQ.js";
22
22
  import "./chunk-R7AXDQCA.js";
23
- import "./chunk-QDNOOAAS.js";
23
+ import "./chunk-LWJITLCI.js";
24
24
  import "./chunk-LUGELG5V.js";
25
25
  import "./chunk-RMQREVJY.js";
26
- import "./chunk-F2Z7P7BB.js";
26
+ import "./chunk-JWB5Z5GS.js";
27
27
  import "./chunk-2RQM7PJN.js";
28
- import "./chunk-ADQENNSG.js";
28
+ import "./chunk-WB3KV4VH.js";
29
29
  import "./chunk-KPMQGPYU.js";
30
- import "./chunk-4CACBXIB.js";
30
+ import "./chunk-JE2DXS4U.js";
31
31
  import "./chunk-YMXYBG7U.js";
32
- import "./chunk-2JFMGOHU.js";
32
+ import "./chunk-D5CIV4IB.js";
33
33
  import "./chunk-F5UR6EJG.js";
34
34
  import "./chunk-EDNJMG5T.js";
35
- import "./chunk-6RMVLH3G.js";
35
+ import "./chunk-JVISXD4K.js";
36
36
  import "./chunk-PJP5BUU6.js";
37
37
  import "./chunk-7KVZPJ3O.js";
38
- import "./chunk-2ZVXN2Z7.js";
38
+ import "./chunk-T2CHVUXH.js";
39
39
  import "./chunk-MIJXEELH.js";
40
40
  import "./chunk-D2JUDUYY.js";
41
41
  import "./chunk-6CUELYIF.js";
@@ -6,7 +6,7 @@ import {
6
6
  dispatchAgentPlanPromptAction,
7
7
  getPromptToolDetails,
8
8
  isPromptRequestIdTitle
9
- } from "../chunk-F2Z7P7BB.js";
9
+ } from "../chunk-JWB5Z5GS.js";
10
10
  import {
11
11
  useEngineSelector
12
12
  } from "../chunk-2RQM7PJN.js";
@@ -19,20 +19,20 @@ import {
19
19
  isExitPlanSwitchModeInput,
20
20
  normalizeAgentApprovalPurpose,
21
21
  normalizeAskUserQuestions
22
- } from "../chunk-ADQENNSG.js";
22
+ } from "../chunk-WB3KV4VH.js";
23
23
  import {
24
24
  cn
25
25
  } from "../chunk-KPMQGPYU.js";
26
26
  import {
27
27
  userAvatarPlaceholderUrl,
28
28
  workspaceAgentActivityStatusLabel
29
- } from "../chunk-4CACBXIB.js";
29
+ } from "../chunk-JE2DXS4U.js";
30
30
  import {
31
31
  resolveWorkspaceAgentSessionSortTimeUnixMs
32
32
  } from "../chunk-YMXYBG7U.js";
33
33
  import {
34
34
  workspaceAgentProviderLabel
35
- } from "../chunk-2JFMGOHU.js";
35
+ } from "../chunk-D5CIV4IB.js";
36
36
  import "../chunk-F5UR6EJG.js";
37
37
  import {
38
38
  managedAgentRoundedIconUrl
@@ -41,10 +41,10 @@ import {
41
41
  AgentGuiI18nProvider,
42
42
  getActiveUiLanguage,
43
43
  useTranslation
44
- } from "../chunk-6RMVLH3G.js";
44
+ } from "../chunk-JVISXD4K.js";
45
45
  import "../chunk-PJP5BUU6.js";
46
46
  import "../chunk-7KVZPJ3O.js";
47
- import "../chunk-2ZVXN2Z7.js";
47
+ import "../chunk-T2CHVUXH.js";
48
48
  import {
49
49
  normalizeAgentTitleText
50
50
  } from "../chunk-MIJXEELH.js";
@@ -324,6 +324,7 @@ interface AgentHostUserProject {
324
324
  id: string;
325
325
  path: string;
326
326
  label: string;
327
+ pinnedAtUnixMs: number;
327
328
  sectionKey?: string;
328
329
  createdAtUnixMs?: number;
329
330
  updatedAtUnixMs?: number;
@@ -351,6 +352,10 @@ type AgentHostUserProjectsApi = AgentHostRecord & {
351
352
  beforeProjectId: string | null;
352
353
  projectId: string;
353
354
  }) => AgentHostAsyncResult<void>;
355
+ pin: (input: {
356
+ pinned: boolean;
357
+ projectId: string;
358
+ }) => AgentHostAsyncResult<void>;
354
359
  subscribe?: (listener: () => void) => AgentHostUnsubscribe;
355
360
  prepareSelection?: (input: {
356
361
  projectLocked: boolean;
@@ -430,8 +435,9 @@ interface AgentGUIConversationProjectSummary {
430
435
  createdAtUnixMs?: number;
431
436
  updatedAtUnixMs?: number;
432
437
  lastUsedAtUnixMs?: number;
438
+ pinnedAtUnixMs: number;
433
439
  }
434
- type AgentGUIConversationUserProject = Pick<AgentHostUserProject, "id" | "path" | "label" | "sectionKey" | "createdAtUnixMs" | "updatedAtUnixMs" | "lastUsedAtUnixMs">;
440
+ type AgentGUIConversationUserProject = Pick<AgentHostUserProject, "id" | "path" | "label" | "sectionKey" | "createdAtUnixMs" | "updatedAtUnixMs" | "lastUsedAtUnixMs" | "pinnedAtUnixMs">;
435
441
 
436
442
  type AgentGUIConversationFilter = {
437
443
  kind: "all";
@@ -731,4 +737,4 @@ interface AgentGUINodeViewModel {
731
737
  operations: AgentGUIOperationsViewModel;
732
738
  }
733
739
 
734
- 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, AgentHostAgentTargetAuthenticatedAccount as g, AgentHostAgentTargetSetupSnapshot as h, AgentHostAgentTargetSetupState as i, AgentHostAgentTargetSetupWatch as j, AgentHostApi as k, AgentHostApplyWorkspaceGitPatchInput as l, AgentHostInputApi as m, AgentHostRuntimeApi as n, AgentHostSelectFilesInput as o, AgentMessageMarkdownWorkspaceAppIcon as p, AgentProbeProvider as q, AgentProbeSnapshot as r, AgentProviderProbeListInput as s, AgentProviderProbeListResult as t, AgentSessionCommand as u, AgentSlashCommandCapability as v, AgentUsageQuota as w, AgentUsageSnapshot as x, WriteWorkspaceAgentReadStateInput as y };
740
+ 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, AgentHostAgentTargetAuthenticatedAccount as g, AgentHostAgentTargetSetupSnapshot as h, AgentHostAgentTargetSetupState as i, AgentHostAgentTargetSetupWatch as j, AgentHostApi as k, AgentHostApplyWorkspaceGitPatchInput as l, AgentHostInputApi as m, AgentHostRuntimeApi as n, AgentHostSelectFilesInput as o, AgentHostUserProject as p, AgentMessageMarkdownWorkspaceAppIcon as q, AgentProbeProvider as r, AgentProbeSnapshot as s, AgentProviderProbeListInput as t, AgentProviderProbeListResult as u, AgentSessionCommand as v, AgentSlashCommandCapability as w, AgentUsageQuota as x, AgentUsageSnapshot as y, WriteWorkspaceAgentReadStateInput as z };
@@ -4763,7 +4763,7 @@ aside.workspace-agents-status-panel
4763
4763
  --agent-gui-workbench-header-traffic-light-gap: 8px;
4764
4764
  --agent-gui-workbench-header-traffic-light-size: 12px;
4765
4765
  --agent-gui-workbench-header-title-max-width: calc(100% - 32px);
4766
- --agent-gui-workbench-header-text: var(--text-secondary);
4766
+ --agent-gui-workbench-header-text: var(--text-primary);
4767
4767
  --agent-gui-workbench-header-muted: var(--text-secondary);
4768
4768
  --agent-gui-workbench-header-divider: color-mix(
4769
4769
  in srgb,
@@ -5890,6 +5890,15 @@ aside.workspace-agents-status-panel
5890
5890
  max-width: 100%;
5891
5891
  }
5892
5892
 
5893
+ .agent-gui-node__pinned-project-rail-header {
5894
+ min-width: 0;
5895
+ padding: 4px 10px;
5896
+ color: var(--text-secondary);
5897
+ font-size: 13px;
5898
+ font-weight: 400;
5899
+ line-height: 18px;
5900
+ }
5901
+
5893
5902
  .agent-gui-node__conversation-section[data-project-dragging="true"] {
5894
5903
  opacity: 0.42;
5895
5904
  }
@@ -5,7 +5,7 @@ import {
5
5
  agentMentionFilterLabel,
6
6
  agentMentionGroupLabel,
7
7
  mentionGroupExpandCount
8
- } from "./chunk-PRE4IT6E.js";
8
+ } from "./chunk-YJKTYMF4.js";
9
9
  import {
10
10
  resolveAgentMentionFileThumbnailUrl,
11
11
  resolveAgentMentionFileVisualKind
@@ -13,13 +13,13 @@ import {
13
13
  import {
14
14
  userAvatarPlaceholderUrl,
15
15
  workspaceAgentActivityStatusLabel
16
- } from "./chunk-4CACBXIB.js";
16
+ } from "./chunk-JE2DXS4U.js";
17
17
  import {
18
18
  managedAgentRoundedIconUrl
19
19
  } from "./chunk-EDNJMG5T.js";
20
20
  import {
21
21
  translate
22
- } from "./chunk-6RMVLH3G.js";
22
+ } from "./chunk-JVISXD4K.js";
23
23
 
24
24
  // agent-gui/agentGuiNode/AgentFileMentionPalette.tsx
25
25
  import {
@@ -517,4 +517,4 @@ export {
517
517
  AgentFileMentionPalette,
518
518
  AgentContextMentionPalette
519
519
  };
520
- //# sourceMappingURL=chunk-BDWZUA3L.js.map
520
+ //# sourceMappingURL=chunk-54GR2G3U.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  translate
3
- } from "./chunk-6RMVLH3G.js";
3
+ } from "./chunk-JVISXD4K.js";
4
4
  import {
5
5
  agentGUIProviderIdentityDisplayName,
6
6
  resolveMigratedAgentGUIProviderIdentity
@@ -212,4 +212,4 @@ export {
212
212
  getOptionalAgentHostApi,
213
213
  workspaceAgentProviderLabel
214
214
  };
215
- //# sourceMappingURL=chunk-2JFMGOHU.js.map
215
+ //# sourceMappingURL=chunk-D5CIV4IB.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../agentActivityRuntime.tsx","../agentActivityHost.tsx","../host/agentHostApi.ts","../shared/workspaceAgentProviderLabel.ts"],"sourcesContent":["import {\n createContext,\n useContext,\n useSyncExternalStore,\n type JSX,\n type PropsWithChildren\n} from \"react\";\nimport type {\n AgentActivityActivateSessionResult,\n AgentActivityGoalControlInput,\n AgentActivityGoalControlResult,\n AgentActivityCreateSessionInput,\n AgentActivityDeleteSessionInput,\n AgentActivityDeleteSessionResult,\n AgentActivityMessageOrder,\n AgentActivityMessagePage,\n AgentActivityRenameSessionInput,\n AgentActivitySendInput,\n AgentActivitySendInputResult,\n AgentActivitySession,\n AgentActivitySessionSettings,\n AgentActivitySnapshot,\n AgentActivitySnapshotListener,\n AgentActivitySubmitInteractiveInput,\n AgentActivitySubmitInteractiveResult,\n AgentSessionEngine\n} from \"@tutti-os/agent-activity-core\";\nimport type {\n AgentHostAgentSessionComposerSettings,\n AgentHostUnactivateAgentSessionResult\n} from \"./shared/contracts/dto\";\nimport type { WorkspaceQueryCache } from \"./shared/query/workspaceQueryCache\";\n\nexport interface AgentActivityRuntimeUpdateSessionSettingsResult {\n agentSessionId: string;\n settings: AgentHostAgentSessionComposerSettings;\n session: AgentActivitySession;\n}\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 agentTargetIds?: readonly string[];\n cursor?: string;\n limit?: number;\n query?: string;\n sectionKey: string;\n signal?: AbortSignal;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeListSessionsPageInput {\n agentTargetId?: string | null;\n cursor?: string;\n limit?: number;\n searchQuery?: string;\n signal?: AbortSignal;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeSessionPageResult {\n hasMore: boolean;\n nextCursor?: string;\n sessions: AgentActivitySession[];\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeListSessionSectionsInput {\n agentTargetId?: string | null;\n limitPerSection?: number;\n signal?: AbortSignal;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeListSessionSectionPageInput {\n agentTargetId?: string | null;\n cursor?: string;\n limit?: number;\n sectionKey: string;\n signal?: AbortSignal;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeListPinnedSessionsPageInput {\n agentTargetId?: string | null;\n cursor?: string;\n limit?: number;\n signal?: AbortSignal;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeUserProject {\n createdAtUnixMs: number;\n id: string;\n label: string;\n lastUsedAtUnixMs?: number;\n path: string;\n pinnedAtUnixMs: number;\n sectionKey: string;\n updatedAtUnixMs: number;\n}\n\nexport interface AgentActivityRuntimeSessionSection {\n kind: \"conversations\" | \"project\";\n sectionKey: string;\n userProject?: AgentActivityRuntimeUserProject;\n sessions: AgentActivitySession[];\n hasMore: boolean;\n totalCount: number;\n nextCursor?: string;\n}\n\nexport interface AgentActivityRuntimeSessionPage {\n sessions: AgentActivitySession[];\n hasMore: boolean;\n totalCount: number;\n nextCursor?: string;\n}\n\nexport interface AgentActivityRuntimeSessionSectionsResult {\n pinned?: AgentActivityRuntimeSessionPage;\n sections: AgentActivityRuntimeSessionSection[];\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeGeneratedFile {\n label: string;\n path: string;\n}\n\nexport interface AgentActivityRuntimeGeneratedFileList {\n entries: AgentActivityRuntimeGeneratedFile[];\n hasMore?: boolean;\n nextCursor?: string;\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 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 AgentActivityRuntimeGetComposerOptionsInput {\n agentTargetId: string;\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 AgentActivityRuntimeDiagnosticInput {\n details?: Record<string, unknown>;\n event: string;\n level?: \"debug\" | \"info\" | \"warn\" | \"error\";\n source?: string;\n workspaceId?: string | null;\n}\n\ninterface AgentActivityRuntimeActivateSessionInputBase {\n agentSessionId: string;\n cwd?: string;\n initialContent?: AgentActivitySendInput[\"content\"];\n /** 仅展示用首轮文本(bundle 折叠成一个 chip);initialContent 仍带展开后的文件。 */\n initialDisplayPrompt?: string | null;\n submitDiagnostics?: AgentActivitySendInput[\"submitDiagnostics\"];\n settings?: AgentActivitySessionSettings;\n title?: string;\n visible?: boolean;\n workspaceId: string;\n signal?: AbortSignal;\n}\n\nexport type AgentActivityRuntimeActivateSessionInput =\n | (AgentActivityRuntimeActivateSessionInputBase & {\n agentTargetId: string;\n clientSubmitId: string;\n mode: \"new\";\n })\n | (AgentActivityRuntimeActivateSessionInputBase & {\n agentTargetId?: string | null;\n clientSubmitId?: never;\n mode: \"existing\";\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\n/**\n * Dedicated host boundary for turning an in-memory text paste into a local\n * prompt asset. The runtime owns persistence and returns a sendable host path;\n * AgentGUI must not infer this capability from generic file-upload support.\n */\nexport interface AgentActivityRuntimeStagePastedTextInput {\n name: string;\n text: string;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeStagePastedTextResult {\n name: string;\n path: string;\n sizeBytes: number;\n}\n\nexport interface AgentActivityRuntimeSessionSectionScopeInput {\n agentTargetId?: string | null;\n excludePinned?: boolean;\n sectionKey: string;\n signal?: AbortSignal;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeSessionSectionDeletionCandidates {\n agentTargetId?: string | null;\n excludePinned: boolean;\n sectionKey: string;\n sessionIds: string[];\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeDeleteSessionsBatchInput {\n sessionIds: string[];\n signal?: AbortSignal;\n workspaceId: string;\n}\n\nexport interface AgentActivityRuntimeDeleteSessionsBatchResult {\n removedMessages: number;\n removedSessionIds: string[];\n removedSessions: number;\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 /**\n * Stable identity of this runtime instance (e.g. a local origin vs a\n * shared/room origin). The runtime owns one session engine per workspace and\n * that engine verifies this origin as part of its injected identity. Runtime\n * consumers resolve only through the nearest React provider; module-global\n * runtime lookup and last-mounted fallback are forbidden. An absent origin\n * means the canonical local origin.\n */\n origin?: string;\n /**\n * The session cwd is not resolvable on the local filesystem (e.g. a\n * shared/cloud sandbox not mounted locally), so AgentGUI must not run its\n * local stat-based \"working directory missing\" existence check — it would\n * always false-positive. Absent/false (default) => local, legacy behaviour.\n * Only that one guard is gated; project selection/listing is unaffected.\n */\n projectPathIsRemote?: boolean;\n promptContentUploadSupport?: {\n file?: boolean;\n image?: boolean;\n };\n /** Set false to suppress AgentGUI diagnostics in development consoles. */\n devDiagnosticConsoleSink?: boolean;\n goalControl(\n input: AgentActivityGoalControlInput\n ): Promise<AgentActivityGoalControlResult>;\n createSession(\n input: AgentActivityCreateSessionInput\n ): Promise<AgentActivitySession>;\n deleteSession(\n input: AgentActivityDeleteSessionInput\n ): Promise<AgentActivityDeleteSessionResult>;\n activateSession(\n input: AgentActivityRuntimeActivateSessionInput\n ): Promise<AgentActivityActivateSessionResult>;\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<AgentActivityRuntimeUpdateSessionSettingsResult>;\n getSnapshot(workspaceId: string): AgentActivitySnapshot;\n getSessionEngine(workspaceId: string): AgentSessionEngine;\n getSessionSectionsQueryCache?(\n workspaceId: string\n ): WorkspaceQueryCache<unknown>;\n listSessionMessages(\n input: AgentActivityRuntimeListSessionMessagesInput\n ): Promise<AgentActivityMessagePage>;\n listAgentGeneratedFiles?(\n input: AgentActivityRuntimeListGeneratedFilesInput\n ): Promise<AgentActivityRuntimeGeneratedFileList>;\n listSessionsPage?(\n input: AgentActivityRuntimeListSessionsPageInput\n ): Promise<AgentActivityRuntimeSessionPageResult>;\n listSessionSections?(\n input: AgentActivityRuntimeListSessionSectionsInput\n ): Promise<AgentActivityRuntimeSessionSectionsResult>;\n listSessionSectionPage?(\n input: AgentActivityRuntimeListSessionSectionPageInput\n ): Promise<AgentActivityRuntimeSessionSection>;\n listSessionSectionDeletionCandidates?(\n input: AgentActivityRuntimeSessionSectionScopeInput\n ): Promise<AgentActivityRuntimeSessionSectionDeletionCandidates>;\n deleteSessionsBatch?(\n input: AgentActivityRuntimeDeleteSessionsBatchInput\n ): Promise<AgentActivityRuntimeDeleteSessionsBatchResult>;\n listPinnedSessionsPage?(\n input: AgentActivityRuntimeListPinnedSessionsPageInput\n ): Promise<AgentActivityRuntimeSessionPage>;\n load(\n workspaceId: string,\n signal?: AbortSignal\n ): Promise<AgentActivitySnapshot>;\n ensureSessionSynchronized?(\n input: AgentActivityRuntimeEnsureSessionSynchronizedInput\n ): () => void;\n sendInput(\n input: AgentActivitySendInput\n ): Promise<AgentActivitySendInputResult>;\n uploadPromptContent?(\n input: AgentActivityRuntimeUploadPromptContentInput\n ): Promise<AgentActivityRuntimeUploadPromptContentResult>;\n stagePastedText?(\n input: AgentActivityRuntimeStagePastedTextInput\n ): Promise<AgentActivityRuntimeStagePastedTextResult>;\n readSessionAttachment?(\n input: AgentActivityRuntimeReadSessionAttachmentInput\n ): Promise<AgentActivityRuntimeSessionAttachment>;\n readPromptAsset?(\n input: AgentActivityRuntimeReadPromptAssetInput\n ): Promise<AgentActivityRuntimePromptAsset>;\n renameSession(\n input: AgentActivityRenameSessionInput\n ): Promise<AgentActivitySession>;\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<AgentActivitySubmitInteractiveResult>;\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\nfunction createTestAgentActivityRuntimeHolder(): {\n get: () => AgentActivityRuntime | null;\n set: (runtime: AgentActivityRuntime | null) => void;\n} {\n let runtime: AgentActivityRuntime | null = null;\n return {\n get: () => runtime,\n set: (nextRuntime) => {\n runtime = nextRuntime;\n }\n };\n}\n\nconst testAgentActivityRuntimeHolder = createTestAgentActivityRuntimeHolder();\n\nexport interface AgentActivityRuntimeProviderProps extends PropsWithChildren {\n runtime?: AgentActivityRuntime | null;\n}\n\nexport function AgentActivityRuntimeProvider({\n children,\n runtime\n}: AgentActivityRuntimeProviderProps): JSX.Element {\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 resetAgentActivityRuntimeForTests(): void {\n if (process.env.NODE_ENV === \"test\") {\n testAgentActivityRuntimeHolder.set(null);\n }\n}\n\nexport function setAgentActivityRuntimeForTests(\n runtime: AgentActivityRuntime | null\n): void {\n if (process.env.NODE_ENV === \"test\") {\n testAgentActivityRuntimeHolder.set(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 const testRuntimeOverride = testAgentActivityRuntimeHolder.get();\n if (testRuntimeOverride) {\n return testRuntimeOverride;\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 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 AgentHostListWorkspaceAgentProbesInput,\n AgentHostWorkspaceAgentProbesResult,\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;\n\nexport type AgentHostClipboardApi = {\n writeImage?: (input: {\n data: string;\n mimeType: \"image/png\";\n }) => AgentHostAsyncResult<void>;\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};\n\nexport type AgentHostPersistenceApi = AgentHostRecord & {\n readWorkspaceAgentReadState: (\n input: ReadWorkspaceAgentReadStateInput\n ) => AgentHostAsyncResult<WorkspaceAgentReadStateSnapshot>;\n writeWorkspaceAgentReadState: (\n input: WriteWorkspaceAgentReadStateInput\n ) => AgentHostAsyncResult<PersistWriteResult>;\n};\n\nexport type AgentHostToastApi = AgentHostRecord & {\n error: (title: string, description?: string) => void;\n info?: (title: string, description?: string) => void;\n success?: (title: string, description?: string) => void;\n};\n\nexport interface AgentHostSelectedFile {\n name?: string;\n path: string;\n}\n\nexport interface AgentHostSelectFilesInput {\n allowDirectories?: boolean;\n}\n\nexport interface AgentHostApplyWorkspaceGitPatchInput {\n allowBinary?: boolean;\n atomic?: boolean;\n cwd: string;\n diff: string;\n revert?: boolean;\n target?: \"unstaged\" | \"staged\" | \"staged-and-unstaged\";\n}\n\nexport interface AgentHostApplyWorkspaceGitPatchResult {\n status: \"success\" | \"partial-success\" | \"error\";\n appliedPaths: string[];\n skippedPaths: string[];\n conflictedPaths: string[];\n errorCode?: \"not-git-repo\" | string;\n execOutput?: {\n command: string;\n stdout: string;\n stderr: string;\n };\n}\n\nexport interface AgentHostResolveWorkspaceGitPatchSupportInput {\n cwd: string;\n}\n\nexport interface AgentHostResolveWorkspaceGitPatchSupportResult {\n supported: boolean;\n root?: string;\n errorCode?: \"not-git-repo\" | string;\n}\n\nexport type AgentHostWorkspaceApi = AgentHostRecord & {\n applyGitPatch?: (\n input: AgentHostApplyWorkspaceGitPatchInput\n ) => AgentHostAsyncResult<AgentHostApplyWorkspaceGitPatchResult>;\n resolveGitPatchSupport?: (\n input: AgentHostResolveWorkspaceGitPatchSupportInput\n ) => AgentHostAsyncResult<AgentHostResolveWorkspaceGitPatchSupportResult>;\n copyPath?: (input: { path: string }) => AgentHostAsyncResult<void>;\n ensureDirectory: (input: { path: string }) => AgentHostAsyncResult<void>;\n getReferenceForFile?: (file: File) => {\n kind: \"file\" | \"folder\";\n path: string;\n };\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 agentSessions?: AgentHostAgentSessionsApi;\n agentTargetSetup?: AgentHostAgentTargetSetupApi;\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 toast?: AgentHostToastApi;\n userProjects?: AgentHostUserProjectsApi;\n workspace: AgentHostWorkspaceApi;\n workspaceAgentProbes?: AgentHostWorkspaceAgentProbesApi;\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 AgentHostWorkspaceAgentProbesApi = AgentHostRecord & {\n list: (\n input: AgentHostListWorkspaceAgentProbesInput\n ) => AgentHostAsyncResult<AgentHostWorkspaceAgentProbesResult>;\n};\n\nexport interface AgentHostAgentTargetInstallPlan {\n packageName: string;\n packageVersion: string;\n runner: \"npm\" | \"pnpm\" | \"uv\";\n planDigest: string;\n installRoot: string;\n}\n\nexport interface AgentHostAgentTargetSetupAction {\n actionId: string;\n clientActionId: string;\n kind: \"install\" | \"authenticate\";\n status: \"queued\" | \"running\" | \"succeeded\" | \"failed\" | \"interrupted\";\n phase:\n | \"preparing\"\n | \"installing\"\n | \"verifying\"\n | \"probing\"\n | \"activating\"\n | \"authenticating\"\n | \"complete\";\n errorCode: string | null;\n errorMessage: string | null;\n}\n\nexport interface AgentHostAgentTargetSetupSnapshot {\n agentTargetId: string;\n status:\n | \"ready\"\n | \"auth_required\"\n | \"not_installed\"\n | \"installing\"\n | \"authenticating\"\n | \"failed\";\n runtimeSource: \"local\" | \"managed\" | null;\n runtimeVersion: string | null;\n reason: string | null;\n authMethods: AgentHostAgentTargetAuthMethod[];\n account: AgentHostAgentTargetAuthenticatedAccount | null;\n plan: AgentHostAgentTargetInstallPlan | null;\n action: AgentHostAgentTargetSetupAction | null;\n}\n\nexport interface AgentHostAgentTargetAuthenticatedAccount {\n id: string;\n displayName: string;\n authMethodId: string;\n organization: string | null;\n}\n\nexport interface AgentHostAgentTargetAuthMethod {\n id: string;\n name: string;\n description?: string | null;\n}\n\nexport interface AgentHostAgentTargetSetupState {\n snapshot: AgentHostAgentTargetSetupSnapshot | null;\n loading: boolean;\n failed: boolean;\n}\n\nexport interface AgentHostAgentTargetSetupWatch {\n getSnapshot: () => AgentHostAgentTargetSetupState;\n subscribe: (\n listener: (state: AgentHostAgentTargetSetupState) => void\n ) => AgentHostUnsubscribe;\n install: (input: {\n planDigest: string;\n clientActionId: string;\n }) => AgentHostAsyncResult<void>;\n authenticate: (input: {\n methodId: string;\n clientActionId: string;\n }) => AgentHostAsyncResult<void>;\n refresh: () => AgentHostAsyncResult<void>;\n}\n\nexport type AgentHostAgentTargetSetupApi = AgentHostRecord & {\n watch: (input: { agentTargetId: string }) => AgentHostAgentTargetSetupWatch;\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 pinnedAtUnixMs: number;\n sectionKey?: 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 move?: (input: {\n beforeProjectId: string | null;\n projectId: string;\n }) => AgentHostAsyncResult<void>;\n pin: (input: {\n pinned: boolean;\n projectId: string;\n }) => AgentHostAsyncResult<void>;\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 getComposerOptions?: (input: any) => AgentHostAsyncResult<any>;\n getState: (input: any) => AgentHostAsyncResult<any>;\n onEvent?: (listener: (event: any) => void) => AgentHostUnsubscribe;\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\nexport interface AgentHostRuntimeApi {\n account?: AgentHostAccountApi;\n agentTargetSetup?: AgentHostAgentTargetSetupApi;\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 toast?: AgentHostToastApi;\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 agentTargetSetup: hostApi.agentTargetSetup,\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 toast: hostApi.toast,\n userProjects: hostApi.userProjects,\n workspace: hostApi.workspace,\n workspaceAgentProbes: hostApi.workspaceAgentProbes\n };\n}\n","import {\n agentGUIProviderIdentityDisplayName,\n resolveMigratedAgentGUIProviderIdentity\n} from \"../providerIdentityCatalog.ts\";\nimport { translate } from \"../i18n/index.ts\";\n\nexport function workspaceAgentProviderLabel(provider: string): string {\n const normalized = provider.trim().toLowerCase();\n const migratedIdentity = resolveMigratedAgentGUIProviderIdentity(normalized);\n if (migratedIdentity) {\n return agentGUIProviderIdentityDisplayName(migratedIdentity, translate);\n }\n return titleCase(provider);\n}\n\nfunction titleCase(value: string): string {\n return value\n .split(/[-_\\s]+/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n"],"mappings":"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","names":["createContext","useContext","jsx","createContext","useContext"]}
@@ -9,7 +9,7 @@ import {
9
9
  resolveAgentGUIConversationTitleDisplayPrompt,
10
10
  resolveAgentGuiWorkbenchHeaderTitle,
11
11
  resolveAgentGuiWorkbenchSessionTitle
12
- } from "./chunk-X22KJXVG.js";
12
+ } from "./chunk-YWKS4ESK.js";
13
13
  import {
14
14
  createAgentGuiWorkbenchNodeStateSource,
15
15
  migrateLegacyAgentGuiWorkbenchState,
@@ -276,7 +276,7 @@ function useAgentGuiWorkbenchBodyRenderError(nodeId) {
276
276
 
277
277
  // workbench/header.ts
278
278
  var LazyAgentRichTextReadonly = lazy(
279
- () => import("./AgentRichTextReadonly-KOUZGF5Q.js").then((module) => ({
279
+ () => import("./AgentRichTextReadonly-SPIPM3UM.js").then((module) => ({
280
280
  default: module.AgentRichTextReadonly
281
281
  }))
282
282
  );
@@ -1482,4 +1482,4 @@ export {
1482
1482
  AGENT_GUI_WORKBENCH_OPEN_EXTERNAL_IMPORT_EVENT,
1483
1483
  createAgentGuiWorkbenchContribution
1484
1484
  };
1485
- //# sourceMappingURL=chunk-G3XB4FAQ.js.map
1485
+ //# sourceMappingURL=chunk-EG7IIFNL.js.map