@tutti-os/agent-gui 0.0.189 → 0.0.190

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 (80) hide show
  1. package/dist/AgentRichTextReadonly-UZQ5VSGO.js +19 -0
  2. package/dist/agent-conversation/index.d.ts +4 -4
  3. package/dist/agent-conversation/index.js +10 -10
  4. package/dist/agent-gui.d.ts +9 -6
  5. package/dist/agent-gui.js +21 -21
  6. package/dist/agent-message-center/index.d.ts +1 -1
  7. package/dist/agent-message-center/index.js +9 -9
  8. package/dist/{agentConversationVM-CYXZSrh9.d.ts → agentConversationVM-Bn5s1UMx.d.ts} +38 -1
  9. package/dist/{agentGuiNodeTypes-DAT3XJON.d.ts → agentGuiNodeTypes-RL1iNmSe.d.ts} +15 -2
  10. package/dist/agents.d.ts +1 -1
  11. package/dist/app/renderer/agentactivity.css +4 -3
  12. package/dist/{chunk-Z5IASLIU.js → chunk-2CZIBPST.js} +4 -4
  13. package/dist/{chunk-F5YFT4VB.js → chunk-2TPRBVDM.js} +1832 -1383
  14. package/dist/chunk-2TPRBVDM.js.map +1 -0
  15. package/dist/{chunk-CAZ7NYUE.js → chunk-44IFVKLS.js} +2 -2
  16. package/dist/{chunk-NCD5I4OB.js → chunk-4ZCSXKK5.js} +3 -3
  17. package/dist/{chunk-LLIM2OX6.js → chunk-6YRJ4OPB.js} +2 -2
  18. package/dist/{chunk-VGUKS6JR.js → chunk-AHDJFZAC.js} +123 -11
  19. package/dist/chunk-AHDJFZAC.js.map +1 -0
  20. package/dist/{chunk-ZREBC77R.js → chunk-CFWR4C36.js} +2 -2
  21. package/dist/{chunk-YSA4MXR5.js → chunk-DCZTHKWI.js} +2 -2
  22. package/dist/{chunk-5CLSJWUN.js → chunk-EWS7OGQK.js} +8 -1
  23. package/dist/chunk-EWS7OGQK.js.map +1 -0
  24. package/dist/{chunk-AODSTIED.js → chunk-F2U7LSJN.js} +2 -2
  25. package/dist/{chunk-U7GYZU6V.js → chunk-FJ4A3A6W.js} +5 -5
  26. package/dist/{chunk-BVA5SVOD.js → chunk-HD2TXBXU.js} +1190 -765
  27. package/dist/chunk-HD2TXBXU.js.map +1 -0
  28. package/dist/{chunk-5UTK6FDH.js → chunk-HH5PLD7L.js} +3 -3
  29. package/dist/{chunk-ETJFWUCA.js → chunk-HOT2PJ6T.js} +4 -4
  30. package/dist/{chunk-OKBVGNH7.js → chunk-KE3UYJMW.js} +2 -2
  31. package/dist/{chunk-6II57C72.js → chunk-ML53N3II.js} +2 -2
  32. package/dist/{chunk-V3QHMEJZ.js → chunk-QKCSWK7Y.js} +4 -4
  33. package/dist/{chunk-E5X3DSQZ.js → chunk-RSFK6YRS.js} +9 -9
  34. package/dist/{chunk-2674YZOF.js → chunk-RWUYIHO3.js} +3 -3
  35. package/dist/{chunk-SZVHT57M.js → chunk-UCDLFE2I.js} +2 -2
  36. package/dist/{chunk-KAF6JPGL.js → chunk-V3VPKWVK.js} +3 -3
  37. package/dist/chunk-V3VPKWVK.js.map +1 -0
  38. package/dist/context-mention-palette/index.js +10 -10
  39. package/dist/{contribution-C0MnLVKF.d.ts → contribution-DfeuQHH6.d.ts} +39 -0
  40. package/dist/conversation-rail-runtime.d.ts +7 -3
  41. package/dist/dock-icons.js +2 -2
  42. package/dist/i18n/index.d.ts +90 -14
  43. package/dist/i18n/index.js +2 -2
  44. package/dist/index.d.ts +187 -18
  45. package/dist/index.js +21 -21
  46. package/dist/mention-search.js +8 -8
  47. package/dist/provider-identity.js +1 -1
  48. package/dist/{types-CWFDZVkv.d.ts → types-izfKbJ8v.d.ts} +40 -0
  49. package/dist/workbench/contribution.d.ts +1 -1
  50. package/dist/workbench/contribution.js +9 -9
  51. package/dist/workbench/index.d.ts +2 -2
  52. package/dist/workbench/index.js +9 -9
  53. package/dist/workbench/launch.js +3 -3
  54. package/dist/workbench/providerCatalog.js +2 -2
  55. package/dist/workbench/sessionTitle.js +3 -3
  56. package/dist/workbench/state.js +3 -3
  57. package/package.json +14 -14
  58. package/dist/AgentRichTextReadonly-OKZPTCIX.js +0 -19
  59. package/dist/chunk-5CLSJWUN.js.map +0 -1
  60. package/dist/chunk-BVA5SVOD.js.map +0 -1
  61. package/dist/chunk-F5YFT4VB.js.map +0 -1
  62. package/dist/chunk-KAF6JPGL.js.map +0 -1
  63. package/dist/chunk-VGUKS6JR.js.map +0 -1
  64. /package/dist/{AgentRichTextReadonly-OKZPTCIX.js.map → AgentRichTextReadonly-UZQ5VSGO.js.map} +0 -0
  65. /package/dist/{chunk-Z5IASLIU.js.map → chunk-2CZIBPST.js.map} +0 -0
  66. /package/dist/{chunk-CAZ7NYUE.js.map → chunk-44IFVKLS.js.map} +0 -0
  67. /package/dist/{chunk-NCD5I4OB.js.map → chunk-4ZCSXKK5.js.map} +0 -0
  68. /package/dist/{chunk-LLIM2OX6.js.map → chunk-6YRJ4OPB.js.map} +0 -0
  69. /package/dist/{chunk-ZREBC77R.js.map → chunk-CFWR4C36.js.map} +0 -0
  70. /package/dist/{chunk-YSA4MXR5.js.map → chunk-DCZTHKWI.js.map} +0 -0
  71. /package/dist/{chunk-AODSTIED.js.map → chunk-F2U7LSJN.js.map} +0 -0
  72. /package/dist/{chunk-U7GYZU6V.js.map → chunk-FJ4A3A6W.js.map} +0 -0
  73. /package/dist/{chunk-5UTK6FDH.js.map → chunk-HH5PLD7L.js.map} +0 -0
  74. /package/dist/{chunk-ETJFWUCA.js.map → chunk-HOT2PJ6T.js.map} +0 -0
  75. /package/dist/{chunk-OKBVGNH7.js.map → chunk-KE3UYJMW.js.map} +0 -0
  76. /package/dist/{chunk-6II57C72.js.map → chunk-ML53N3II.js.map} +0 -0
  77. /package/dist/{chunk-V3QHMEJZ.js.map → chunk-QKCSWK7Y.js.map} +0 -0
  78. /package/dist/{chunk-E5X3DSQZ.js.map → chunk-RSFK6YRS.js.map} +0 -0
  79. /package/dist/{chunk-2674YZOF.js.map → chunk-RWUYIHO3.js.map} +0 -0
  80. /package/dist/{chunk-SZVHT57M.js.map → chunk-UCDLFE2I.js.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  agentGuiWorkbenchProviders,
3
3
  normalizeAgentGuiWorkbenchProvider
4
- } from "./chunk-SZVHT57M.js";
4
+ } from "./chunk-UCDLFE2I.js";
5
5
 
6
6
  // workbench/state.ts
7
7
  function createDefaultAgentGuiWorkbenchNodeState(provider = "codex") {
@@ -327,4 +327,4 @@ export {
327
327
  areAgentGuiWorkbenchNodeStatesEqual,
328
328
  createAgentGuiWorkbenchNodeStateSource
329
329
  };
330
- //# sourceMappingURL=chunk-6II57C72.js.map
330
+ //# sourceMappingURL=chunk-ML53N3II.js.map
@@ -2,17 +2,17 @@ import {
2
2
  AgentGUIConversation_styles_default,
3
3
  MessageSquareMoreIcon,
4
4
  extractAgentMcpToolTarget
5
- } from "./chunk-Z5IASLIU.js";
5
+ } from "./chunk-2CZIBPST.js";
6
6
  import {
7
7
  getOptionalAgentHostApi,
8
8
  useOptionalAgentHostApi
9
- } from "./chunk-KAF6JPGL.js";
9
+ } from "./chunk-V3VPKWVK.js";
10
10
  import {
11
11
  fileChangePathsFromChanges
12
12
  } from "./chunk-F5UR6EJG.js";
13
13
  import {
14
14
  translate
15
- } from "./chunk-CAZ7NYUE.js";
15
+ } from "./chunk-44IFVKLS.js";
16
16
 
17
17
  // shared/agentConversation/planImplementationPresentation.ts
18
18
  var PLAN_IMPLEMENTATION_PROMPT = "Implement the plan.";
@@ -1471,4 +1471,4 @@ export {
1471
1471
  isPromptRequestIdTitle,
1472
1472
  AgentInteractivePromptSurface
1473
1473
  };
1474
- //# sourceMappingURL=chunk-V3QHMEJZ.js.map
1474
+ //# sourceMappingURL=chunk-QKCSWK7Y.js.map
@@ -3,43 +3,43 @@ import {
3
3
  migrateLegacyAgentGuiWorkbenchState,
4
4
  normalizeAgentGuiWorkbenchNodeState,
5
5
  normalizeAgentGuiWorkbenchState
6
- } from "./chunk-6II57C72.js";
6
+ } from "./chunk-ML53N3II.js";
7
7
  import {
8
8
  agentGuiWorkbenchDockIdentityFromIdentifier,
9
9
  agentGuiWorkbenchTypeId,
10
10
  agentGuiWorkbenchUnifiedDockEntryId,
11
11
  createAgentGuiWorkbenchLaunchDescriptor
12
- } from "./chunk-YSA4MXR5.js";
12
+ } from "./chunk-DCZTHKWI.js";
13
13
  import {
14
14
  agentGuiWorkbenchDefaultDockProviders,
15
15
  isAgentGuiWorkbenchProvider,
16
16
  resolveAgentGuiWorkbenchProviderLabel
17
- } from "./chunk-SZVHT57M.js";
17
+ } from "./chunk-UCDLFE2I.js";
18
18
  import {
19
19
  resolveAgentGUIConversationBrowserFreeTitle,
20
20
  resolveAgentGUIConversationTitleDisplayPrompt,
21
21
  resolveAgentGuiWorkbenchHeaderTitle,
22
22
  resolveAgentGuiWorkbenchSessionTitle
23
- } from "./chunk-5UTK6FDH.js";
23
+ } from "./chunk-HH5PLD7L.js";
24
24
  import {
25
25
  normalizeAgentGUIAgents,
26
26
  projectAgentGUIAgentsToTargets
27
27
  } from "./chunk-CX6XXG6R.js";
28
28
  import {
29
29
  agentGuiDockIconUrls
30
- } from "./chunk-ZREBC77R.js";
30
+ } from "./chunk-CFWR4C36.js";
31
31
  import {
32
32
  useEngineSelector
33
33
  } from "./chunk-EVQ4JY3N.js";
34
34
  import {
35
35
  normalizeManagedAgentProvider
36
- } from "./chunk-AODSTIED.js";
36
+ } from "./chunk-F2U7LSJN.js";
37
37
  import {
38
38
  resolveProviderIconAsset
39
39
  } from "./chunk-QNE2ZPPV.js";
40
40
  import {
41
41
  resolveAgentGUIProviderCatalogIdentity
42
- } from "./chunk-5CLSJWUN.js";
42
+ } from "./chunk-EWS7OGQK.js";
43
43
 
44
44
  // workbench/contribution.ts
45
45
  import { createElement as createElement3 } from "react";
@@ -400,7 +400,7 @@ function stopPointerPropagation(event) {
400
400
 
401
401
  // workbench/header.ts
402
402
  var LazyAgentRichTextReadonly = lazy(
403
- () => import("./AgentRichTextReadonly-OKZPTCIX.js").then((module) => ({
403
+ () => import("./AgentRichTextReadonly-UZQ5VSGO.js").then((module) => ({
404
404
  default: module.AgentRichTextReadonly
405
405
  }))
406
406
  );
@@ -1665,4 +1665,4 @@ export {
1665
1665
  AGENT_GUI_WORKBENCH_OPEN_EXTERNAL_IMPORT_EVENT,
1666
1666
  createAgentGuiWorkbenchContribution
1667
1667
  };
1668
- //# sourceMappingURL=chunk-E5X3DSQZ.js.map
1668
+ //# sourceMappingURL=chunk-RSFK6YRS.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  normalizeManagedAgentProvider
3
- } from "./chunk-AODSTIED.js";
3
+ } from "./chunk-F2U7LSJN.js";
4
4
  import {
5
5
  agentColorfulUrl,
6
6
  createProviderIconUrlMap
7
7
  } from "./chunk-QNE2ZPPV.js";
8
8
  import {
9
9
  migratedAgentGUIProviderIdentityCatalog
10
- } from "./chunk-5CLSJWUN.js";
10
+ } from "./chunk-EWS7OGQK.js";
11
11
 
12
12
  // shared/managedAgentIcons.ts
13
13
  var managedAgentPresentationIconAliases = {
@@ -39,4 +39,4 @@ export {
39
39
  MANAGED_AGENT_ICON_FALLBACK_URL,
40
40
  managedAgentRoundedIconUrl
41
41
  };
42
- //# sourceMappingURL=chunk-2674YZOF.js.map
42
+ //# sourceMappingURL=chunk-RWUYIHO3.js.map
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  resolveAgentGUIProviderCatalogIdentity
3
- } from "./chunk-5CLSJWUN.js";
3
+ } from "./chunk-EWS7OGQK.js";
4
4
 
5
5
  // workbench/providerCatalog.ts
6
6
  var agentGuiWorkbenchProviders = [
@@ -98,4 +98,4 @@ export {
98
98
  isAgentGuiWorkbenchProvider,
99
99
  normalizeAgentGuiWorkbenchProvider
100
100
  };
101
- //# sourceMappingURL=chunk-SZVHT57M.js.map
101
+ //# sourceMappingURL=chunk-UCDLFE2I.js.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  translate
3
- } from "./chunk-CAZ7NYUE.js";
3
+ } from "./chunk-44IFVKLS.js";
4
4
  import {
5
5
  agentGUIProviderIdentityDisplayName,
6
6
  resolveMigratedAgentGUIProviderIdentity
7
- } from "./chunk-5CLSJWUN.js";
7
+ } from "./chunk-EWS7OGQK.js";
8
8
 
9
9
  // agentActivityRuntime.tsx
10
10
  import {
@@ -213,4 +213,4 @@ export {
213
213
  getOptionalAgentHostApi,
214
214
  workspaceAgentProviderLabel
215
215
  };
216
- //# sourceMappingURL=chunk-KAF6JPGL.js.map
216
+ //# sourceMappingURL=chunk-V3VPKWVK.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 AgentActivityCollaborationRun,\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 AgentActivitySetCollaborationAdoptionInput,\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 cleanupFailedSessionIds: string[];\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 /**\n * Record whether a collaboration outcome was adopted.\n * Optional; hosts without support omit it and adoption controls stay hidden.\n */\n setCollaborationAdoption?(\n input: AgentActivitySetCollaborationAdoptionInput\n ): Promise<AgentActivityCollaborationRun>;\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 interface AgentHostQuickPrompt {\n id: string;\n title: string;\n content: string;\n version: number;\n createdAtUnixMs: number;\n updatedAtUnixMs: number;\n}\n\nexport interface AgentHostQuickPromptSnapshot {\n enabled: boolean;\n status: \"idle\" | \"loading\" | \"ready\" | \"error\";\n prompts: readonly AgentHostQuickPrompt[];\n error: string | null;\n revision: number;\n pendingMutationIds: readonly string[];\n orderMutationPending?: boolean;\n}\n\nexport interface AgentHostQuickPromptsApi {\n ensureLoaded: (input?: { force?: boolean }) => AgentHostAsyncResult<void>;\n getSnapshot: () => AgentHostQuickPromptSnapshot;\n subscribe: (\n listener: (snapshot: AgentHostQuickPromptSnapshot) => void\n ) => AgentHostUnsubscribe;\n create: (input: {\n title: string;\n content: string;\n }) => AgentHostAsyncResult<AgentHostQuickPrompt>;\n update: (input: {\n id: string;\n title: string;\n content: string;\n expectedVersion: number;\n }) => AgentHostAsyncResult<AgentHostQuickPrompt>;\n remove: (input: {\n id: string;\n expectedVersion: number;\n }) => AgentHostAsyncResult<void>;\n move?: (input: {\n promptId: string;\n beforePromptId: string | null;\n expectedVersion: number;\n }) => AgentHostAsyncResult<readonly AgentHostQuickPrompt[]>;\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 AgentHostToastHandle = {\n /** Settles the toast to a neutral, non-error, non-success tone. */\n info: (title: string, description?: string) => void;\n /** Settles the toast to the destructive tone. */\n reject: (title: string, description?: string) => void;\n /** Settles the toast to the success tone. */\n resolve: (title: string, description?: string) => void;\n};\n\nexport type AgentHostToastApi = AgentHostRecord & {\n error: (title: string, description?: string) => void;\n info?: (title: string, description?: string) => void;\n /**\n * Opens one toast that stays mounted across async work: it shows busy\n * (spinner, no auto-dismiss) until the returned handle settles it in\n * place, at which point it starts auto-dismissing like any other toast.\n */\n loading?: (title: string) => AgentHostToastHandle;\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 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 quickPrompts?: AgentHostQuickPromptsApi;\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\" | \"binary\";\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 quickPrompts?: AgentHostQuickPromptsApi;\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 quickPrompts: hostApi.quickPrompts,\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"]}
@@ -3,32 +3,32 @@ import {
3
3
  AgentFileMentionPalette,
4
4
  flattenAgentMentionPaletteEntries,
5
5
  groupStartKeys
6
- } from "../chunk-U7GYZU6V.js";
6
+ } from "../chunk-FJ4A3A6W.js";
7
7
  import {
8
8
  AgentMentionSearchController
9
- } from "../chunk-ETJFWUCA.js";
9
+ } from "../chunk-HOT2PJ6T.js";
10
10
  import "../chunk-VMPA46ET.js";
11
11
  import "../chunk-XJ34OIEQ.js";
12
12
  import "../chunk-JDVP33S5.js";
13
- import "../chunk-NCD5I4OB.js";
13
+ import "../chunk-4ZCSXKK5.js";
14
14
  import "../chunk-3V5OCA2M.js";
15
15
  import {
16
16
  AGENT_CONTEXT_MENTION_PROVIDER_IDS
17
17
  } from "../chunk-RMQREVJY.js";
18
18
  import "../chunk-FGLQZ6I4.js";
19
- import "../chunk-OKBVGNH7.js";
19
+ import "../chunk-KE3UYJMW.js";
20
20
  import "../chunk-YMXYBG7U.js";
21
- import "../chunk-KAF6JPGL.js";
21
+ import "../chunk-V3VPKWVK.js";
22
22
  import "../chunk-F5UR6EJG.js";
23
- import "../chunk-2674YZOF.js";
24
- import "../chunk-CAZ7NYUE.js";
23
+ import "../chunk-RWUYIHO3.js";
24
+ import "../chunk-44IFVKLS.js";
25
25
  import "../chunk-5BJYO6X3.js";
26
- import "../chunk-AODSTIED.js";
27
- import "../chunk-VGUKS6JR.js";
26
+ import "../chunk-F2U7LSJN.js";
27
+ import "../chunk-AHDJFZAC.js";
28
28
  import "../chunk-MIJXEELH.js";
29
29
  import "../chunk-D2JUDUYY.js";
30
30
  import "../chunk-QNE2ZPPV.js";
31
- import "../chunk-5CLSJWUN.js";
31
+ import "../chunk-EWS7OGQK.js";
32
32
  export {
33
33
  AGENT_CONTEXT_MENTION_PROVIDER_IDS,
34
34
  AgentContextMentionPalette,
@@ -18,11 +18,49 @@ interface AgentGUIAgentAvailability {
18
18
  pendingAction?: AgentGUIAgentAvailabilityAction | null;
19
19
  }
20
20
  interface AgentGUIAgentOwner {
21
+ userId?: string | null;
21
22
  name?: string | null;
22
23
  avatarUrl?: string | null;
23
24
  }
24
25
  /** Host-authoritative ownership classification for Agent directory entries. */
25
26
  type AgentGUIAgentOwnership = "self" | "shared";
27
+ interface AgentGUISharedAgentQuota {
28
+ unit: "runs" | "tokens";
29
+ remaining: number;
30
+ limit?: number;
31
+ resetAt?: string | null;
32
+ }
33
+ interface AgentGUISharedAgentConcurrency {
34
+ active: number;
35
+ limit: number;
36
+ }
37
+ interface AgentGUISharedAgentCostQuota {
38
+ currency: string;
39
+ remainingMicros: number;
40
+ limitMicros?: number;
41
+ }
42
+ interface AgentGUISharedAgentAllowedModel {
43
+ modelPlanId?: string | null;
44
+ model: string;
45
+ }
46
+ interface AgentGUISharedAgentPolicyPermissions {
47
+ consult: boolean;
48
+ review: boolean;
49
+ delegate: boolean;
50
+ upgrade: boolean;
51
+ }
52
+ /** Credential-free access snapshot supplied by the shared-Agent control plane. */
53
+ interface AgentGUISharedAgentAccess {
54
+ grantId: string;
55
+ ownerUserId: string;
56
+ ownerOnline: boolean;
57
+ auditRequired: boolean;
58
+ quota?: AgentGUISharedAgentQuota | null;
59
+ concurrency?: AgentGUISharedAgentConcurrency | null;
60
+ costQuota?: AgentGUISharedAgentCostQuota | null;
61
+ allowedModels?: readonly AgentGUISharedAgentAllowedModel[] | null;
62
+ policyPermissions?: AgentGUISharedAgentPolicyPermissions | null;
63
+ }
26
64
  /**
27
65
  * Host-projected entry from the workspace `/agents` directory.
28
66
  *
@@ -42,6 +80,7 @@ interface AgentGUIAgent {
42
80
  ownerDeviceLabel?: string | null;
43
81
  owner?: AgentGUIAgentOwner | null;
44
82
  ownership?: AgentGUIAgentOwnership | null;
83
+ sharedAccess?: AgentGUISharedAgentAccess | null;
45
84
  availability: AgentGUIAgentAvailability;
46
85
  provider: AgentGUIProvider;
47
86
  setupKind?: "target_runtime" | null;
@@ -1,10 +1,11 @@
1
- import { AgentActivityGoalControlInput, AgentActivityGoalControlResult, AgentActivityCreateSessionInput, AgentActivitySession, AgentActivityDeleteSessionInput, AgentActivityDeleteSessionResult, AgentActivitySendInput, AgentActivitySessionSettings, AgentActivityInitialGoalControl, AgentActivityActivateSessionResult, AgentActivitySnapshot, AgentSessionEngine, AgentActivityMessageOrder, AgentActivityMessagePage, AgentActivitySendInputResult, AgentActivityRenameSessionInput, AgentActivitySubmitInteractiveInput, AgentActivitySubmitInteractiveResult, AgentActivitySnapshotListener } from '@tutti-os/agent-activity-core';
1
+ import { AgentActivityGoalControlInput, AgentActivityGoalControlResult, AgentActivityCreateSessionInput, AgentActivitySession, AgentActivityDeleteSessionInput, AgentActivityDeleteSessionResult, AgentActivitySendInput, AgentActivitySessionSettings, AgentActivityActivateSessionResult, AgentActivitySnapshot, AgentSessionEngine, AgentActivityMessageOrder, AgentActivityMessagePage, AgentActivitySendInputResult, AgentActivityRenameSessionInput, AgentActivitySetCollaborationAdoptionInput, AgentActivityCollaborationRun, AgentActivitySubmitInteractiveInput, AgentActivitySubmitInteractiveResult, AgentActivitySnapshotListener } from '@tutti-os/agent-activity-core';
2
2
  import { WorkspaceQueryCache } from './workspace-query-cache.js';
3
3
 
4
4
  type AgentHostAgentSessionReasoningEffort = "minimal" | "low" | "medium" | "high" | "xhigh" | string;
5
5
  type AgentHostAgentSessionSpeed = "standard" | "fast" | string;
6
6
  interface AgentHostAgentSessionComposerSettings {
7
7
  model?: string | null;
8
+ modelPlanId?: string | null;
8
9
  reasoningEffort?: AgentHostAgentSessionReasoningEffort | null;
9
10
  speed?: AgentHostAgentSessionSpeed | null;
10
11
  planMode?: boolean;
@@ -175,12 +176,10 @@ interface AgentActivityRuntimeActivateSessionInputBase {
175
176
  type AgentActivityRuntimeActivateSessionInput = (AgentActivityRuntimeActivateSessionInputBase & {
176
177
  agentTargetId: string;
177
178
  clientSubmitId: string;
178
- initialGoalControl?: AgentActivityInitialGoalControl;
179
179
  mode: "new";
180
180
  }) | (AgentActivityRuntimeActivateSessionInputBase & {
181
181
  agentTargetId?: string | null;
182
182
  clientSubmitId?: never;
183
- initialGoalControl?: never;
184
183
  mode: "existing";
185
184
  });
186
185
  interface AgentActivityRuntimeUnactivateSessionInput {
@@ -328,6 +327,11 @@ interface AgentActivityRuntime {
328
327
  readSessionAttachment?(input: AgentActivityRuntimeReadSessionAttachmentInput): Promise<AgentActivityRuntimeSessionAttachment>;
329
328
  readPromptAsset?(input: AgentActivityRuntimeReadPromptAssetInput): Promise<AgentActivityRuntimePromptAsset>;
330
329
  renameSession(input: AgentActivityRenameSessionInput): Promise<AgentActivitySession>;
330
+ /**
331
+ * Record whether a collaboration outcome was adopted.
332
+ * Optional; hosts without support omit it and adoption controls stay hidden.
333
+ */
334
+ setCollaborationAdoption?(input: AgentActivitySetCollaborationAdoptionInput): Promise<AgentActivityCollaborationRun>;
331
335
  setSessionPinned(input: AgentActivityRuntimeSetSessionPinnedInput): Promise<AgentActivitySession>;
332
336
  trackSettingsProjectChange?(input: AgentActivityRuntimeTrackSettingsProjectChangeInput): Promise<void>;
333
337
  trackDraftComposerSettingsChange?(input: AgentActivityRuntimeTrackDraftComposerSettingsChangeInput): Promise<void>;
@@ -1,9 +1,9 @@
1
1
  import {
2
2
  agentGuiDockIconUrl,
3
3
  agentGuiDockIconUrls
4
- } from "./chunk-ZREBC77R.js";
4
+ } from "./chunk-CFWR4C36.js";
5
5
  import "./chunk-QNE2ZPPV.js";
6
- import "./chunk-5CLSJWUN.js";
6
+ import "./chunk-EWS7OGQK.js";
7
7
  export {
8
8
  agentGuiDockIconUrl,
9
9
  agentGuiDockIconUrls
@@ -332,6 +332,48 @@ declare const agentGuiI18nResources: {
332
332
  readonly workspaceCenterSearchAria: "Open room search";
333
333
  readonly workspaceCenterSearchTitle: "Search nodes, partitions, and notes in this room";
334
334
  readonly agentGui: {
335
+ readonly collaborationModeConsult: "Consult";
336
+ readonly collaborationModeFork: "Fork";
337
+ readonly collaborationModeDelegate: "Delegate";
338
+ readonly collaborationModeHandoff: "Handoff";
339
+ readonly collaborationTriggerUser: "Manual";
340
+ readonly collaborationTriggerAgent: "Agent";
341
+ readonly collaborationTriggerPolicy: "Policy";
342
+ readonly collaborationStatusRunning: "Running";
343
+ readonly collaborationStatusCompleted: "Completed";
344
+ readonly collaborationStatusFailed: "Failed";
345
+ readonly collaborationStatusCanceled: "Canceled";
346
+ readonly collaborationPlanLabel: "Plan: {{name}}";
347
+ readonly collaborationUsageTokens: "Tokens: {{input}} in · {{output}} out";
348
+ readonly collaborationFailureReason: "Failure: {{reason}}";
349
+ readonly collaborationResultShow: "Show result";
350
+ readonly collaborationResultHide: "Hide result";
351
+ readonly collaborationAdopt: "Adopt";
352
+ readonly collaborationReject: "Reject";
353
+ readonly collaborationAdopted: "Adopted";
354
+ readonly collaborationRejected: "Not adopted";
355
+ readonly collaborationAdoptionFailed: "Failed to record the adoption decision.";
356
+ readonly composerModelPlanBadge: "Plan: {{name}}";
357
+ readonly composerModelSearchPlaceholder: "Search models";
358
+ readonly composerModelSearchEmpty: "No matching models";
359
+ readonly composerModelFavoritesGroup: "Favorites";
360
+ readonly composerModelRecentsGroup: "Recently used";
361
+ readonly composerModelSwitchNextTurnHint: "Applies from the next request";
362
+ readonly composerModelFavoriteAdd: "Add to favorites";
363
+ readonly composerModelFavoriteRemove: "Remove from favorites";
364
+ readonly consultEntryLabel: "Consult model";
365
+ readonly consultDialogTitle: "Consult a model";
366
+ readonly consultPlanLabel: "Plan";
367
+ readonly consultModelLabel: "Model";
368
+ readonly consultQuestionLabel: "Question";
369
+ readonly consultQuestionPlaceholder: "Ask another model for advice...";
370
+ readonly consultIncludeContextLabel: "Attach the latest assistant reply as context";
371
+ readonly consultSubmit: "Consult";
372
+ readonly consultSubmitting: "Consulting...";
373
+ readonly mentionFilterCollab: "Collaboration";
374
+ readonly mentionGroupCollabSessions: "Collaboration sessions";
375
+ readonly mentionEmptyCollabSessions: "No collaboration sessions yet";
376
+ readonly mentionCollaboratorFallback: "Collaborator";
335
377
  readonly projectLocked: "Project cannot be changed after the session starts";
336
378
  readonly projectMissingDescription: "This conversation's working directory no longer exists";
337
379
  readonly fileMentionEnterFolder: "Enter folder";
@@ -349,7 +391,6 @@ declare const agentGuiI18nResources: {
349
391
  readonly provenanceFilterMembers: "Members";
350
392
  readonly provenanceFilterReset: "Reset";
351
393
  readonly mentionFilterSession: "Sessions";
352
- readonly mentionFilterCollab: "Collaboration";
353
394
  readonly mentionFilterIssue: "Tasks";
354
395
  readonly mentionKindAgent: "Agent";
355
396
  readonly mentionKindApp: "App";
@@ -364,10 +405,8 @@ declare const agentGuiI18nResources: {
364
405
  readonly mentionGroupApps: "Apps";
365
406
  readonly mentionGroupAgents: "Agents";
366
407
  readonly mentionGroupMySessions: "My sessions";
367
- readonly mentionGroupCollabSessions: "Collaboration sessions";
368
408
  readonly mentionGroupIssues: "Tasks";
369
409
  readonly mentionEmptyMySessions: "No sessions yet";
370
- readonly mentionEmptyCollabSessions: "No collaboration sessions yet";
371
410
  readonly mentionEmptyApps: "No apps yet";
372
411
  readonly mentionEmptyAgents: "No agents available";
373
412
  readonly mentionEmptyIssues: "No tasks yet";
@@ -394,7 +433,6 @@ declare const agentGuiI18nResources: {
394
433
  readonly taskContentLabel: "Task content";
395
434
  readonly taskTitleLabel: "Task title";
396
435
  };
397
- readonly mentionCollaboratorFallback: "Collaborator";
398
436
  readonly syncPending: "Saved locally, syncing to cloud";
399
437
  readonly syncSynced: "Synced to cloud";
400
438
  readonly syncFailed: "Cloud sync failed";
@@ -600,9 +638,6 @@ declare const agentGuiI18nResources: {
600
638
  readonly conversationCopyImagesOmitted: string;
601
639
  readonly conversationCopyInProgress: string;
602
640
  readonly sessionActionUnavailable: string;
603
- readonly contextCompactionInProgress: "Compacting context";
604
- readonly contextCompactionCompleted: "Context compacted.";
605
- readonly contextCompactionInterrupted: "Context compaction interrupted.";
606
641
  readonly turnSummary: "Changed files";
607
642
  readonly userMessageLocator: "User messages";
608
643
  readonly turnSummaryFilesChanged: "{{count}} files changed";
@@ -661,6 +696,9 @@ declare const agentGuiI18nResources: {
661
696
  readonly showLessConversations: "Show less";
662
697
  readonly deleteSession: "Delete session";
663
698
  readonly pinSession: "Pin session";
699
+ readonly contextCompactionInProgress: "Compacting context";
700
+ readonly contextCompactionCompleted: "Context compacted.";
701
+ readonly contextCompactionInterrupted: "Context compaction interrupted.";
664
702
  readonly visibleErrorStartFailed: "{{provider}} failed to start";
665
703
  readonly visibleErrorRequestFailed: "{{provider}} request failed";
666
704
  readonly visibleErrorAuthRequired: "{{provider}} needs authentication or configuration";
@@ -3018,6 +3056,48 @@ declare const agentGuiI18nResources: {
3018
3056
  readonly workspaceCenterSearchAria: "打开房间搜索";
3019
3057
  readonly workspaceCenterSearchTitle: "在当前房间搜索节点、分区与便签";
3020
3058
  readonly agentGui: {
3059
+ readonly collaborationModeConsult: "咨询";
3060
+ readonly collaborationModeFork: "Fork";
3061
+ readonly collaborationModeDelegate: "委派";
3062
+ readonly collaborationModeHandoff: "Handoff";
3063
+ readonly collaborationTriggerUser: "手动";
3064
+ readonly collaborationTriggerAgent: "Agent";
3065
+ readonly collaborationTriggerPolicy: "策略";
3066
+ readonly collaborationStatusRunning: "进行中";
3067
+ readonly collaborationStatusCompleted: "已完成";
3068
+ readonly collaborationStatusFailed: "失败";
3069
+ readonly collaborationStatusCanceled: "已取消";
3070
+ readonly collaborationPlanLabel: "方案:{{name}}";
3071
+ readonly collaborationUsageTokens: "Tokens:输入 {{input}} · 输出 {{output}}";
3072
+ readonly collaborationFailureReason: "失败原因:{{reason}}";
3073
+ readonly collaborationResultShow: "查看结果";
3074
+ readonly collaborationResultHide: "收起结果";
3075
+ readonly collaborationAdopt: "采纳";
3076
+ readonly collaborationReject: "不采纳";
3077
+ readonly collaborationAdopted: "已采纳";
3078
+ readonly collaborationRejected: "未采纳";
3079
+ readonly collaborationAdoptionFailed: "记录采纳状态失败";
3080
+ readonly composerModelPlanBadge: "方案:{{name}}";
3081
+ readonly composerModelSearchPlaceholder: "搜索模型";
3082
+ readonly composerModelSearchEmpty: "没有匹配的模型";
3083
+ readonly composerModelFavoritesGroup: "收藏";
3084
+ readonly composerModelRecentsGroup: "最近使用";
3085
+ readonly composerModelSwitchNextTurnHint: "下一次调用生效";
3086
+ readonly composerModelFavoriteAdd: "添加到收藏";
3087
+ readonly composerModelFavoriteRemove: "取消收藏";
3088
+ readonly consultEntryLabel: "咨询模型";
3089
+ readonly consultDialogTitle: "咨询模型";
3090
+ readonly consultPlanLabel: "方案";
3091
+ readonly consultModelLabel: "模型";
3092
+ readonly consultQuestionLabel: "问题";
3093
+ readonly consultQuestionPlaceholder: "向其他模型咨询建议…";
3094
+ readonly consultIncludeContextLabel: "附带当前会话最后回复作为上下文";
3095
+ readonly consultSubmit: "发起咨询";
3096
+ readonly consultSubmitting: "咨询中…";
3097
+ readonly mentionFilterCollab: "协作";
3098
+ readonly mentionGroupCollabSessions: "协作会话";
3099
+ readonly mentionEmptyCollabSessions: "暂无协作会话";
3100
+ readonly mentionCollaboratorFallback: "协作者";
3021
3101
  readonly projectLocked: "会话开始后项目不可更改";
3022
3102
  readonly projectMissingDescription: "此对话的工作目录已不存在";
3023
3103
  readonly fileMentionEnterFolder: "进入文件夹";
@@ -3035,7 +3115,6 @@ declare const agentGuiI18nResources: {
3035
3115
  readonly provenanceFilterMembers: "成员";
3036
3116
  readonly provenanceFilterReset: "重置";
3037
3117
  readonly mentionFilterSession: "会话";
3038
- readonly mentionFilterCollab: "协作";
3039
3118
  readonly mentionFilterIssue: "任务";
3040
3119
  readonly mentionKindAgent: "智能体";
3041
3120
  readonly mentionKindApp: "应用";
@@ -3050,10 +3129,8 @@ declare const agentGuiI18nResources: {
3050
3129
  readonly mentionGroupApps: "应用";
3051
3130
  readonly mentionGroupAgents: "智能体";
3052
3131
  readonly mentionGroupMySessions: "我的会话";
3053
- readonly mentionGroupCollabSessions: "协作会话";
3054
3132
  readonly mentionGroupIssues: "任务";
3055
3133
  readonly mentionEmptyMySessions: "暂无会话";
3056
- readonly mentionEmptyCollabSessions: "暂无协作会话";
3057
3134
  readonly mentionEmptyApps: "暂无应用";
3058
3135
  readonly mentionEmptyAgents: "暂无可用智能体";
3059
3136
  readonly mentionEmptyIssues: "暂无任务";
@@ -3080,7 +3157,6 @@ declare const agentGuiI18nResources: {
3080
3157
  readonly taskContentLabel: "任务内容";
3081
3158
  readonly taskTitleLabel: "任务标题";
3082
3159
  };
3083
- readonly mentionCollaboratorFallback: "协作者";
3084
3160
  readonly syncPending: "已保存到本地,正在同步到云端";
3085
3161
  readonly syncSynced: "已同步到云端";
3086
3162
  readonly syncFailed: "云端同步失败";
@@ -3286,9 +3362,6 @@ declare const agentGuiI18nResources: {
3286
3362
  readonly conversationCopyImagesOmitted: string;
3287
3363
  readonly conversationCopyInProgress: string;
3288
3364
  readonly sessionActionUnavailable: string;
3289
- readonly contextCompactionInProgress: "正在压缩上下文";
3290
- readonly contextCompactionCompleted: "已压缩上下文";
3291
- readonly contextCompactionInterrupted: "上下文压缩已中断";
3292
3365
  readonly turnSummary: "已变更文件";
3293
3366
  readonly userMessageLocator: "用户消息";
3294
3367
  readonly turnSummaryFilesChanged: "变更了 {{count}} 个文件";
@@ -3347,6 +3420,9 @@ declare const agentGuiI18nResources: {
3347
3420
  readonly showLessConversations: "收起";
3348
3421
  readonly deleteSession: "删除会话";
3349
3422
  readonly pinSession: "置顶会话";
3423
+ readonly contextCompactionInProgress: "正在压缩上下文";
3424
+ readonly contextCompactionCompleted: "已压缩上下文";
3425
+ readonly contextCompactionInterrupted: "上下文压缩已中断";
3350
3426
  readonly visibleErrorStartFailed: "{{provider}} 启动失败";
3351
3427
  readonly visibleErrorRequestFailed: "{{provider}} 请求失败";
3352
3428
  readonly visibleErrorAuthRequired: "{{provider}} 需要认证或配置";
@@ -6,8 +6,8 @@ import {
6
6
  translate,
7
7
  translateInUiLanguage,
8
8
  useTranslation
9
- } from "../chunk-CAZ7NYUE.js";
10
- import "../chunk-VGUKS6JR.js";
9
+ } from "../chunk-44IFVKLS.js";
10
+ import "../chunk-AHDJFZAC.js";
11
11
  export {
12
12
  AgentGuiI18nProvider,
13
13
  agentGuiI18nModule,