@tutti-os/agent-gui 0.0.172 → 0.0.173
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.
- package/dist/agent-conversation/index.js +3 -3
- package/dist/agent-gui.d.ts +1 -0
- package/dist/agent-gui.js +7 -7
- package/dist/agent-message-center/index.js +3 -3
- package/dist/{chunk-ADZL6MLR.js → chunk-5VUHTRRS.js} +3 -3
- package/dist/{chunk-P5OTILPN.js → chunk-I27O33CO.js} +3 -3
- package/dist/{chunk-ARJ63FKZ.js → chunk-NNBJT5DD.js} +2 -2
- package/dist/{chunk-P44BIVG6.js → chunk-UXSYGLY3.js} +2 -2
- package/dist/{chunk-7E2JZRSI.js → chunk-V7V7PU7Z.js} +1 -1
- package/dist/chunk-V7V7PU7Z.js.map +1 -0
- package/dist/{chunk-EJM3JYAD.js → chunk-ZPZD5XTH.js} +2 -2
- package/dist/{chunk-7VPICMI3.js → chunk-ZRZVJR3M.js} +49 -9
- package/dist/chunk-ZRZVJR3M.js.map +1 -0
- package/dist/context-mention-palette/index.js +3 -3
- package/dist/index.d.ts +1 -0
- package/dist/index.js +7 -7
- package/dist/mention-search.js +2 -2
- package/package.json +15 -15
- package/dist/chunk-7E2JZRSI.js.map +0 -1
- package/dist/chunk-7VPICMI3.js.map +0 -1
- /package/dist/{chunk-ADZL6MLR.js.map → chunk-5VUHTRRS.js.map} +0 -0
- /package/dist/{chunk-P5OTILPN.js.map → chunk-I27O33CO.js.map} +0 -0
- /package/dist/{chunk-ARJ63FKZ.js.map → chunk-NNBJT5DD.js.map} +0 -0
- /package/dist/{chunk-P44BIVG6.js.map → chunk-UXSYGLY3.js.map} +0 -0
- /package/dist/{chunk-EJM3JYAD.js.map → chunk-ZPZD5XTH.js.map} +0 -0
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
reconcileProjectedAgentConversationVM,
|
|
8
8
|
serializeAgentConversationForClipboard,
|
|
9
9
|
useProjectedAgentConversation
|
|
10
|
-
} from "../chunk-
|
|
10
|
+
} from "../chunk-I27O33CO.js";
|
|
11
11
|
import "../chunk-UPX5IC2U.js";
|
|
12
12
|
import "../chunk-THBCAUBR.js";
|
|
13
13
|
import "../chunk-XJ34OIEQ.js";
|
|
@@ -15,9 +15,9 @@ import "../chunk-JDVP33S5.js";
|
|
|
15
15
|
import "../chunk-K57GJTVC.js";
|
|
16
16
|
import "../chunk-5QPOMKMQ.js";
|
|
17
17
|
import "../chunk-FGLQZ6I4.js";
|
|
18
|
-
import "../chunk-
|
|
18
|
+
import "../chunk-UXSYGLY3.js";
|
|
19
19
|
import "../chunk-ZVYUTXQJ.js";
|
|
20
|
-
import "../chunk-
|
|
20
|
+
import "../chunk-V7V7PU7Z.js";
|
|
21
21
|
import "../chunk-F5UR6EJG.js";
|
|
22
22
|
import "../chunk-ZWLWT3TZ.js";
|
|
23
23
|
import {
|
package/dist/agent-gui.d.ts
CHANGED
|
@@ -271,6 +271,7 @@ interface AgentActivityRuntimeDeleteSessionsBatchInput {
|
|
|
271
271
|
workspaceId: string;
|
|
272
272
|
}
|
|
273
273
|
interface AgentActivityRuntimeDeleteSessionsBatchResult {
|
|
274
|
+
cleanupFailedSessionIds: string[];
|
|
274
275
|
removedMessages: number;
|
|
275
276
|
removedSessionIds: string[];
|
|
276
277
|
removedSessions: number;
|
package/dist/agent-gui.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
AgentGUI
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-ZRZVJR3M.js";
|
|
4
4
|
import "./chunk-A4WCTHWS.js";
|
|
5
5
|
import "./chunk-3QPFTVLN.js";
|
|
6
6
|
import "./chunk-6II57C72.js";
|
|
@@ -8,15 +8,15 @@ import "./chunk-YSA4MXR5.js";
|
|
|
8
8
|
import "./chunk-MHOYBRCY.js";
|
|
9
9
|
import "./chunk-SZVHT57M.js";
|
|
10
10
|
import "./chunk-5UTK6FDH.js";
|
|
11
|
-
import "./chunk-
|
|
11
|
+
import "./chunk-I27O33CO.js";
|
|
12
12
|
import "./chunk-UPX5IC2U.js";
|
|
13
13
|
import "./chunk-THBCAUBR.js";
|
|
14
14
|
import "./chunk-UP3ZDYTN.js";
|
|
15
15
|
import "./chunk-GUFEHWUX.js";
|
|
16
|
-
import "./chunk-
|
|
16
|
+
import "./chunk-ZPZD5XTH.js";
|
|
17
17
|
import "./chunk-CX6XXG6R.js";
|
|
18
18
|
import "./chunk-PQPNDL4A.js";
|
|
19
|
-
import "./chunk-
|
|
19
|
+
import "./chunk-NNBJT5DD.js";
|
|
20
20
|
import "./chunk-VMPA46ET.js";
|
|
21
21
|
import "./chunk-XJ34OIEQ.js";
|
|
22
22
|
import "./chunk-JDVP33S5.js";
|
|
@@ -24,13 +24,13 @@ import "./chunk-K57GJTVC.js";
|
|
|
24
24
|
import "./chunk-5QPOMKMQ.js";
|
|
25
25
|
import "./chunk-RMQREVJY.js";
|
|
26
26
|
import "./chunk-FGLQZ6I4.js";
|
|
27
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-5VUHTRRS.js";
|
|
28
28
|
import "./chunk-EVQ4JY3N.js";
|
|
29
|
-
import "./chunk-
|
|
29
|
+
import "./chunk-UXSYGLY3.js";
|
|
30
30
|
import "./chunk-ZVYUTXQJ.js";
|
|
31
31
|
import "./chunk-OKBVGNH7.js";
|
|
32
32
|
import "./chunk-YMXYBG7U.js";
|
|
33
|
-
import "./chunk-
|
|
33
|
+
import "./chunk-V7V7PU7Z.js";
|
|
34
34
|
import "./chunk-F5UR6EJG.js";
|
|
35
35
|
import "./chunk-ZWLWT3TZ.js";
|
|
36
36
|
import "./chunk-CAZ7NYUE.js";
|
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
isPromptRequestIdTitle,
|
|
9
9
|
latestPlanTurnId,
|
|
10
10
|
planImplementationPromptFromPlanTurn
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-5VUHTRRS.js";
|
|
12
12
|
import {
|
|
13
13
|
useEngineSelector
|
|
14
14
|
} from "../chunk-EVQ4JY3N.js";
|
|
@@ -21,7 +21,7 @@ import {
|
|
|
21
21
|
isExitPlanSwitchModeInput,
|
|
22
22
|
normalizeAgentApprovalPurpose,
|
|
23
23
|
normalizeAskUserQuestions
|
|
24
|
-
} from "../chunk-
|
|
24
|
+
} from "../chunk-UXSYGLY3.js";
|
|
25
25
|
import {
|
|
26
26
|
cn
|
|
27
27
|
} from "../chunk-ZVYUTXQJ.js";
|
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
} from "../chunk-YMXYBG7U.js";
|
|
35
35
|
import {
|
|
36
36
|
workspaceAgentProviderLabel
|
|
37
|
-
} from "../chunk-
|
|
37
|
+
} from "../chunk-V7V7PU7Z.js";
|
|
38
38
|
import "../chunk-F5UR6EJG.js";
|
|
39
39
|
import {
|
|
40
40
|
managedAgentRoundedIconUrl
|
|
@@ -2,11 +2,11 @@ import {
|
|
|
2
2
|
AgentGUIConversation_styles_default,
|
|
3
3
|
MessageSquareMoreIcon,
|
|
4
4
|
extractAgentMcpToolTarget
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-UXSYGLY3.js";
|
|
6
6
|
import {
|
|
7
7
|
getOptionalAgentHostApi,
|
|
8
8
|
useOptionalAgentHostApi
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-V7V7PU7Z.js";
|
|
10
10
|
import {
|
|
11
11
|
fileChangePathsFromChanges
|
|
12
12
|
} from "./chunk-F5UR6EJG.js";
|
|
@@ -1471,4 +1471,4 @@ export {
|
|
|
1471
1471
|
isPromptRequestIdTitle,
|
|
1472
1472
|
AgentInteractivePromptSurface
|
|
1473
1473
|
};
|
|
1474
|
-
//# sourceMappingURL=chunk-
|
|
1474
|
+
//# sourceMappingURL=chunk-5VUHTRRS.js.map
|
|
@@ -47,7 +47,7 @@ import {
|
|
|
47
47
|
resolveWorkspaceFileLinkAction,
|
|
48
48
|
resolveWorkspaceFilePathCandidate,
|
|
49
49
|
resolveWorkspaceLinkAction
|
|
50
|
-
} from "./chunk-
|
|
50
|
+
} from "./chunk-UXSYGLY3.js";
|
|
51
51
|
import {
|
|
52
52
|
cn
|
|
53
53
|
} from "./chunk-ZVYUTXQJ.js";
|
|
@@ -55,7 +55,7 @@ import {
|
|
|
55
55
|
useOptionalAgentActivityRuntime,
|
|
56
56
|
useOptionalAgentHostApi,
|
|
57
57
|
workspaceAgentProviderLabel
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-V7V7PU7Z.js";
|
|
59
59
|
import {
|
|
60
60
|
fileChangeCountFromChanges,
|
|
61
61
|
fileChangeEntriesFromChanges,
|
|
@@ -14917,4 +14917,4 @@ export {
|
|
|
14917
14917
|
AgentConversationFlow,
|
|
14918
14918
|
useProjectedAgentConversation
|
|
14919
14919
|
};
|
|
14920
|
-
//# sourceMappingURL=chunk-
|
|
14920
|
+
//# sourceMappingURL=chunk-I27O33CO.js.map
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import {
|
|
21
21
|
getOptionalAgentHostApi,
|
|
22
22
|
workspaceAgentProviderLabel
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-V7V7PU7Z.js";
|
|
24
24
|
import {
|
|
25
25
|
translate,
|
|
26
26
|
translateInUiLanguage
|
|
@@ -3052,4 +3052,4 @@ export {
|
|
|
3052
3052
|
AgentMentionSearchController,
|
|
3053
3053
|
preloadAgentMentionBrowse
|
|
3054
3054
|
};
|
|
3055
|
-
//# sourceMappingURL=chunk-
|
|
3055
|
+
//# sourceMappingURL=chunk-NNBJT5DD.js.map
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
getOptionalAgentHostApi,
|
|
8
8
|
useOptionalAgentHostApi
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-V7V7PU7Z.js";
|
|
10
10
|
import {
|
|
11
11
|
managedAgentRoundedIconUrl
|
|
12
12
|
} from "./chunk-ZWLWT3TZ.js";
|
|
@@ -3730,4 +3730,4 @@ export {
|
|
|
3730
3730
|
AgentMessageMarkdown,
|
|
3731
3731
|
CustomScrollArea
|
|
3732
3732
|
};
|
|
3733
|
-
//# sourceMappingURL=chunk-
|
|
3733
|
+
//# sourceMappingURL=chunk-UXSYGLY3.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 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 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"]}
|
|
@@ -5,7 +5,7 @@ import {
|
|
|
5
5
|
agentMentionFilterLabel,
|
|
6
6
|
agentMentionGroupLabel,
|
|
7
7
|
mentionGroupExpandCount
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-NNBJT5DD.js";
|
|
9
9
|
import {
|
|
10
10
|
resolveAgentMentionFileThumbnailUrl,
|
|
11
11
|
resolveAgentMentionFileVisualKind
|
|
@@ -517,4 +517,4 @@ export {
|
|
|
517
517
|
AgentFileMentionPalette,
|
|
518
518
|
AgentContextMentionPalette
|
|
519
519
|
};
|
|
520
|
-
//# sourceMappingURL=chunk-
|
|
520
|
+
//# sourceMappingURL=chunk-ZPZD5XTH.js.map
|
|
@@ -65,7 +65,7 @@ import {
|
|
|
65
65
|
toLocalShortDateTime,
|
|
66
66
|
updateAgentComposerDraft,
|
|
67
67
|
useProjectedAgentConversation
|
|
68
|
-
} from "./chunk-
|
|
68
|
+
} from "./chunk-I27O33CO.js";
|
|
69
69
|
import {
|
|
70
70
|
agentRichTextContentToPromptText,
|
|
71
71
|
createAgentRichTextInputExtensions,
|
|
@@ -90,7 +90,7 @@ import {
|
|
|
90
90
|
AgentFileMentionPalette,
|
|
91
91
|
agentMentionItemKey,
|
|
92
92
|
isAgentMentionItemDisabled
|
|
93
|
-
} from "./chunk-
|
|
93
|
+
} from "./chunk-ZPZD5XTH.js";
|
|
94
94
|
import {
|
|
95
95
|
normalizeAgentGUIAgents,
|
|
96
96
|
projectAgentGUIAgentsToTargets
|
|
@@ -101,7 +101,7 @@ import {
|
|
|
101
101
|
DEFAULT_AGENT_MENTION_FILTER,
|
|
102
102
|
agentGuiScheduler,
|
|
103
103
|
buildWorkspaceAgentActivityListViewModel
|
|
104
|
-
} from "./chunk-
|
|
104
|
+
} from "./chunk-NNBJT5DD.js";
|
|
105
105
|
import {
|
|
106
106
|
AGENT_RICH_TEXT_CARET_ANCHOR,
|
|
107
107
|
agentComposerFileMentionReferences,
|
|
@@ -128,7 +128,7 @@ import {
|
|
|
128
128
|
dispatchAgentPlanPromptAction,
|
|
129
129
|
latestPlanTurnId,
|
|
130
130
|
planImplementationPromptFromPlanTurn
|
|
131
|
-
} from "./chunk-
|
|
131
|
+
} from "./chunk-5VUHTRRS.js";
|
|
132
132
|
import {
|
|
133
133
|
useEngineSelector
|
|
134
134
|
} from "./chunk-EVQ4JY3N.js";
|
|
@@ -138,7 +138,7 @@ import {
|
|
|
138
138
|
blobToBase64,
|
|
139
139
|
normalizeAgentApprovalPurpose,
|
|
140
140
|
resolveWorkspaceLinkAction
|
|
141
|
-
} from "./chunk-
|
|
141
|
+
} from "./chunk-UXSYGLY3.js";
|
|
142
142
|
import {
|
|
143
143
|
AgentTargetPresentationProvider,
|
|
144
144
|
cn,
|
|
@@ -156,7 +156,7 @@ import {
|
|
|
156
156
|
useAgentHostApi,
|
|
157
157
|
useOptionalAgentActivityRuntime,
|
|
158
158
|
useOptionalAgentHostApi
|
|
159
|
-
} from "./chunk-
|
|
159
|
+
} from "./chunk-V7V7PU7Z.js";
|
|
160
160
|
import {
|
|
161
161
|
MANAGED_AGENT_ICON_FALLBACK_URL,
|
|
162
162
|
MANAGED_AGENT_ICON_URLS,
|
|
@@ -5054,7 +5054,7 @@ function normalizeInteractiveToolName(toolName) {
|
|
|
5054
5054
|
function areAgentGUIUserProjectsEqual(left, right) {
|
|
5055
5055
|
return left.length === right.length && left.every((project, index) => {
|
|
5056
5056
|
const candidate = right[index];
|
|
5057
|
-
return candidate !== void 0 && project.id === candidate.id && project.path === candidate.path && project.label === candidate.label && project.sectionKey === candidate.sectionKey && project.pinnedAtUnixMs === candidate.pinnedAtUnixMs;
|
|
5057
|
+
return candidate !== void 0 && project.id === candidate.id && project.path === candidate.path && project.label === candidate.label && project.sectionKey === candidate.sectionKey && project.pinnedAtUnixMs === candidate.pinnedAtUnixMs && project.createdAtUnixMs === candidate.createdAtUnixMs && project.updatedAtUnixMs === candidate.updatedAtUnixMs && project.lastUsedAtUnixMs === candidate.lastUsedAtUnixMs;
|
|
5058
5058
|
});
|
|
5059
5059
|
}
|
|
5060
5060
|
function upsertAgentGUIUserProject(projects, project) {
|
|
@@ -5738,6 +5738,7 @@ function useAgentGUIActivation({
|
|
|
5738
5738
|
...input.cwd !== void 0 ? { cwd: input.cwd } : {},
|
|
5739
5739
|
expiresAtUnixMs: requestedAtUnixMs + ACTIVATION_EXPIRY_MS,
|
|
5740
5740
|
...input.initialTurnExpected !== void 0 ? { initialTurnExpected: input.initialTurnExpected } : {},
|
|
5741
|
+
...input.railSectionKey?.trim() ? { railSectionKey: input.railSectionKey.trim() } : {},
|
|
5741
5742
|
...input.initialDisplayPrompt ? { initialDisplayPrompt: input.initialDisplayPrompt } : {},
|
|
5742
5743
|
...input.runtimeContent ? { runtimeContent: input.runtimeContent } : {},
|
|
5743
5744
|
...input.submitDiagnostics ? { submitDiagnostics: input.submitDiagnostics } : {},
|
|
@@ -6662,6 +6663,7 @@ function useAgentGuiConversationList(engine, query, agentTargets = EMPTY_AGENT_G
|
|
|
6662
6663
|
sortTimeUnixMs: activation.requestedAtUnixMs,
|
|
6663
6664
|
status: "working",
|
|
6664
6665
|
projectionSource: "pending_activation",
|
|
6666
|
+
railSectionKey: activation.railSectionKey,
|
|
6665
6667
|
title,
|
|
6666
6668
|
titleLeadingMentionKind,
|
|
6667
6669
|
titleFallback,
|
|
@@ -8154,6 +8156,37 @@ function useAgentGUIConversationBatchDeletion(input) {
|
|
|
8154
8156
|
sessionIds: [...targetIds],
|
|
8155
8157
|
workspaceId
|
|
8156
8158
|
}).then((result) => {
|
|
8159
|
+
if (result.cleanupFailedSessionIds.length > 0) {
|
|
8160
|
+
try {
|
|
8161
|
+
void Promise.resolve(
|
|
8162
|
+
agentActivityRuntime.reportDiagnostic?.({
|
|
8163
|
+
details: {
|
|
8164
|
+
cleanupFailedSessionIds: result.cleanupFailedSessionIds
|
|
8165
|
+
},
|
|
8166
|
+
event: "agent.gui.conversation_delete.cleanup_failed",
|
|
8167
|
+
level: "warn",
|
|
8168
|
+
source: "agent-gui",
|
|
8169
|
+
workspaceId
|
|
8170
|
+
})
|
|
8171
|
+
).catch((error) => {
|
|
8172
|
+
console.error(
|
|
8173
|
+
"[agent-gui-cleanup-diagnostic]",
|
|
8174
|
+
JSON.stringify({
|
|
8175
|
+
error: getAgentGUIErrorMessage(error),
|
|
8176
|
+
workspaceId
|
|
8177
|
+
})
|
|
8178
|
+
);
|
|
8179
|
+
});
|
|
8180
|
+
} catch (error) {
|
|
8181
|
+
console.error(
|
|
8182
|
+
"[agent-gui-cleanup-diagnostic]",
|
|
8183
|
+
JSON.stringify({
|
|
8184
|
+
error: getAgentGUIErrorMessage(error),
|
|
8185
|
+
workspaceId
|
|
8186
|
+
})
|
|
8187
|
+
);
|
|
8188
|
+
}
|
|
8189
|
+
}
|
|
8157
8190
|
const removedIds = /* @__PURE__ */ new Set([
|
|
8158
8191
|
...targetIds,
|
|
8159
8192
|
...result.removedSessionIds
|
|
@@ -8829,6 +8862,7 @@ function useAgentGUINewConversationActivation(input) {
|
|
|
8829
8862
|
isCreatingConversationRef,
|
|
8830
8863
|
onDataChangeRef,
|
|
8831
8864
|
selectedProjectPathRef,
|
|
8865
|
+
userProjectsRef,
|
|
8832
8866
|
draftByScopeKeyRef,
|
|
8833
8867
|
submittedDraftSnapshotsRef,
|
|
8834
8868
|
draftSettingsBySessionIdRef,
|
|
@@ -8884,6 +8918,11 @@ function useAgentGUINewConversationActivation(input) {
|
|
|
8884
8918
|
}
|
|
8885
8919
|
);
|
|
8886
8920
|
const selectedProjectPath = selectedProjectPathRef.current;
|
|
8921
|
+
const selectedProject = resolveAgentGUIConversationProject(
|
|
8922
|
+
selectedProjectPath,
|
|
8923
|
+
userProjectsRef.current
|
|
8924
|
+
);
|
|
8925
|
+
const railSectionKey = !selectedProjectPath?.trim() ? "conversations" : selectedProject?.sectionKey?.trim() || void 0;
|
|
8887
8926
|
const initialNodeSettings = readNodeDefaultDraftSettings({
|
|
8888
8927
|
data: targetData.data,
|
|
8889
8928
|
defaultReasoningEffort,
|
|
@@ -8927,6 +8966,7 @@ function useAgentGUINewConversationActivation(input) {
|
|
|
8927
8966
|
agentTargetId,
|
|
8928
8967
|
clientSubmitId: submitTrace.clientSubmitId,
|
|
8929
8968
|
cwd: selectedProjectPath ?? "",
|
|
8969
|
+
...railSectionKey ? { railSectionKey } : {},
|
|
8930
8970
|
initialContent: normalizedInitialContent,
|
|
8931
8971
|
...initialTurnExpected !== void 0 ? { initialTurnExpected } : {},
|
|
8932
8972
|
initialDisplayPrompt,
|
|
@@ -33803,7 +33843,7 @@ function projectConversationRailMembershipRecords(state) {
|
|
|
33803
33843
|
id: record.agentSessionId,
|
|
33804
33844
|
pinnedAtUnixMs: null,
|
|
33805
33845
|
projectionSource: "pending_activation",
|
|
33806
|
-
railSectionKey: null,
|
|
33846
|
+
railSectionKey: record.railSectionKey?.trim() || null,
|
|
33807
33847
|
title: record.title ?? ""
|
|
33808
33848
|
}))
|
|
33809
33849
|
];
|
|
@@ -40476,4 +40516,4 @@ export {
|
|
|
40476
40516
|
AgentHandoffMenu,
|
|
40477
40517
|
AgentGUI
|
|
40478
40518
|
};
|
|
40479
|
-
//# sourceMappingURL=chunk-
|
|
40519
|
+
//# sourceMappingURL=chunk-ZRZVJR3M.js.map
|