@tutti-os/agent-gui 0.0.66 → 0.0.68
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.d.ts +2 -2
- package/dist/agent-conversation/index.js +8 -8
- package/dist/agent-env/index.js +2 -1
- package/dist/agent-env/index.js.map +1 -1
- package/dist/agent-message-center/index.js +10 -10
- package/dist/{agentGuiNodeTypes-B9Aq3UEU.d.ts → agentGuiNodeTypes-BTHu_g4m.d.ts} +2 -1
- package/dist/app/renderer/agentactivity.css +132 -5
- package/dist/app/renderer/assets/icons/agents/opencode-rounded.png +0 -0
- package/dist/app/renderer/assets/icons/agents/provider-rail-opencode-colorful.png +0 -0
- package/dist/app/renderer/assets/icons/agents/tutti-flat-filled.svg +12 -0
- package/dist/{chunk-KRJF7WLJ.js → chunk-3QPN2Y7R.js} +53 -7
- package/dist/chunk-3QPN2Y7R.js.map +1 -0
- package/dist/{chunk-R2NGSPQS.js → chunk-4I2VCAMW.js} +16 -1
- package/dist/chunk-4I2VCAMW.js.map +1 -0
- package/dist/chunk-4US2YHBY.js +195 -0
- package/dist/chunk-4US2YHBY.js.map +1 -0
- package/dist/{chunk-DXVMRZHH.js → chunk-A2KZVRUO.js} +2 -2
- package/dist/{chunk-6ULTMCKP.js → chunk-AIR6A4NP.js} +2 -2
- package/dist/{chunk-2IMBPRKV.js → chunk-ATEZXUHK.js} +1 -1
- package/dist/chunk-ATEZXUHK.js.map +1 -0
- package/dist/{chunk-CKCUEHBW.js → chunk-BHNJN2TR.js} +13 -9
- package/dist/chunk-BHNJN2TR.js.map +1 -0
- package/dist/{chunk-NOTZW5WH.js → chunk-C2M2ELXF.js} +3 -3
- package/dist/{chunk-HNODQVG2.js → chunk-D22A3KGQ.js} +10 -2
- package/dist/chunk-D22A3KGQ.js.map +1 -0
- package/dist/{chunk-JTFWT6DK.js → chunk-DYX6466P.js} +4 -4
- package/dist/{chunk-VBTPXEFH.js → chunk-GOEL3BO7.js} +2 -2
- package/dist/{chunk-Z26P2QNT.js → chunk-GXHZNIWT.js} +4 -166
- package/dist/chunk-GXHZNIWT.js.map +1 -0
- package/dist/{chunk-UBBHWDMP.js → chunk-J335PQ5H.js} +9 -9
- package/dist/chunk-J335PQ5H.js.map +1 -0
- package/dist/{chunk-T3KGZV35.js → chunk-KJLSZETD.js} +3 -3
- package/dist/{chunk-DL6BMEHI.js → chunk-LQRD4X6R.js} +12 -3
- package/dist/chunk-LQRD4X6R.js.map +1 -0
- package/dist/{chunk-CTJQTUQ3.js → chunk-QGKK6FHC.js} +5 -5
- package/dist/{chunk-LQHYHF36.js → chunk-TB7PKP6F.js} +75 -18
- package/dist/chunk-TB7PKP6F.js.map +1 -0
- package/dist/{chunk-P5C3ED3V.js → chunk-UAAXRSW2.js} +3 -3
- package/dist/{chunk-LJE2W4EM.js → chunk-VRV6GBF5.js} +33 -5
- package/dist/chunk-VRV6GBF5.js.map +1 -0
- package/dist/{chunk-UI3YDJTC.js → chunk-YE5JSME7.js} +10 -4
- package/dist/chunk-YE5JSME7.js.map +1 -0
- package/dist/{chunk-N4I3TD4G.js → chunk-ZZBLWZJR.js} +79 -5
- package/dist/chunk-ZZBLWZJR.js.map +1 -0
- package/dist/context-mention-palette/index.js +9 -9
- package/dist/cursor-flat-filled-CL7N3BTZ.svg +3 -0
- package/dist/i18n/index.d.ts +52 -6
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +61 -6
- package/dist/index.js +2164 -1069
- package/dist/index.js.map +1 -1
- package/dist/queued-prompt-runtime.d.ts +2 -2
- package/dist/tutti-flat-filled-K32QBTZE.svg +12 -0
- package/dist/{types-Bxn8bLEp.d.ts → types-BwDrG654.d.ts} +3 -3
- package/dist/workbench/contribution.d.ts +1 -1
- package/dist/workbench/contribution.js +8 -8
- package/dist/workbench/index.d.ts +3 -2
- package/dist/workbench/index.js +11 -11
- package/dist/workbench/launch.d.ts +1 -1
- package/dist/workbench/launch.js +3 -3
- package/dist/workbench/providerCatalog.d.ts +5 -5
- package/dist/workbench/providerCatalog.js +1 -1
- package/dist/workbench/sessionTitle.d.ts +1 -1
- package/dist/workbench/sessionTitle.js +3 -3
- package/dist/workbench/state.d.ts +11 -2
- package/dist/workbench/state.js +5 -3
- package/dist/workbench/types.d.ts +2 -2
- package/dist/workbench/types.js +1 -1
- package/dist/workspace-agent-generated-files.js +4 -4
- package/package.json +12 -12
- package/dist/chunk-2IMBPRKV.js.map +0 -1
- package/dist/chunk-CKCUEHBW.js.map +0 -1
- package/dist/chunk-DL6BMEHI.js.map +0 -1
- package/dist/chunk-HNODQVG2.js.map +0 -1
- package/dist/chunk-KRJF7WLJ.js.map +0 -1
- package/dist/chunk-LJE2W4EM.js.map +0 -1
- package/dist/chunk-LQHYHF36.js.map +0 -1
- package/dist/chunk-N4I3TD4G.js.map +0 -1
- package/dist/chunk-R2NGSPQS.js.map +0 -1
- package/dist/chunk-TYGL25EL.js +0 -30
- package/dist/chunk-TYGL25EL.js.map +0 -1
- package/dist/chunk-UBBHWDMP.js.map +0 -1
- package/dist/chunk-UI3YDJTC.js.map +0 -1
- package/dist/chunk-Z26P2QNT.js.map +0 -1
- /package/dist/{chunk-DXVMRZHH.js.map → chunk-A2KZVRUO.js.map} +0 -0
- /package/dist/{chunk-6ULTMCKP.js.map → chunk-AIR6A4NP.js.map} +0 -0
- /package/dist/{chunk-NOTZW5WH.js.map → chunk-C2M2ELXF.js.map} +0 -0
- /package/dist/{chunk-JTFWT6DK.js.map → chunk-DYX6466P.js.map} +0 -0
- /package/dist/{chunk-VBTPXEFH.js.map → chunk-GOEL3BO7.js.map} +0 -0
- /package/dist/{chunk-T3KGZV35.js.map → chunk-KJLSZETD.js.map} +0 -0
- /package/dist/{chunk-CTJQTUQ3.js.map → chunk-QGKK6FHC.js.map} +0 -0
- /package/dist/{chunk-P5C3ED3V.js.map → chunk-UAAXRSW2.js.map} +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { d as AgentGUIQueuedPromptVM } from './agentGuiNodeTypes-
|
|
1
|
+
import { d as AgentGUIQueuedPromptVM } from './agentGuiNodeTypes-BTHu_g4m.js';
|
|
2
2
|
import '@tutti-os/agent-activity-core';
|
|
3
|
-
import './types-
|
|
3
|
+
import './types-BwDrG654.js';
|
|
4
4
|
import './workspaceAgentActivityListViewModel-DJvAqZso.js';
|
|
5
5
|
import './agentConversationVM-DPAgUJlR.js';
|
|
6
6
|
import '@tutti-os/workspace-user-project/contracts';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<g clip-path="url(#clip0_4006_12727)">
|
|
3
|
+
<path d="M11.211 0.548002C15.073 0.543295 17.9345 1.81179 19.9296 3.83278L20.0239 3.92959C23.0552 7.07998 23.023 10.8748 22.9943 11.9018C22.8951 15.489 21.1542 19.394 18.0294 21.4325C15.586 23.0268 12.2832 23.8613 9.04026 23.2149C5.73648 22.5563 2.62419 20.3848 0.625961 16.2234L3.20797 14.9835C4.83801 18.3782 7.22765 19.933 9.60024 20.4059C12.0336 20.891 14.5815 20.2622 16.4644 19.0336L16.4645 19.0335C18.641 17.6137 20.0521 14.6807 20.1311 11.8223V11.8219C20.1548 10.9733 20.1554 8.19731 17.96 5.91559C16.5591 4.45982 14.4443 3.40834 11.2145 3.41226C6.37955 3.4188 3.86602 6.76421 3.83019 9.29717L3.82979 9.35691C3.83105 10.3775 4.17276 11.3212 4.80308 11.8258C5.35665 12.269 6.54025 12.6884 9.00181 11.7756C9.74148 11.5012 10.4014 11.1957 11.0683 10.8751C11.7204 10.5617 12.4153 10.2154 13.1403 9.91163C14.6484 9.2797 16.3347 8.80763 18.7078 8.80454L18.7115 11.6688C16.7745 11.6713 15.463 12.0439 14.2473 12.5533C13.6103 12.8202 13.0118 13.1188 12.3092 13.4566C11.6213 13.7872 10.8653 14.1393 9.99793 14.4611H9.99777C7.01416 15.5675 4.64823 15.3711 3.01281 14.0617C1.45417 12.8137 0.967387 10.8679 0.965528 9.36047L0.965609 9.36039C0.960216 5.06707 4.93334 0.55642 11.2108 0.548002H11.211Z" fill="black"/>
|
|
4
|
+
<path d="M6.97341 14.9505V6.38824H9.83775V14.9505C9.83775 15.3767 9.92837 15.571 9.98458 15.6564C10.0386 15.7384 10.1373 15.8367 10.3693 15.9334C10.9249 16.1648 11.8087 16.2252 13.1098 16.2252V19.0894C11.9066 19.0894 10.4383 19.065 9.26781 18.5774C8.63685 18.3146 8.02895 17.8947 7.59224 17.2314C7.15772 16.5714 6.97341 15.793 6.97341 14.9505Z" fill="black"/>
|
|
5
|
+
<path d="M12.918 14.9505V6.38824H15.7824V14.9505C15.7824 15.3767 15.873 15.571 15.9292 15.6564C15.9832 15.7384 16.0819 15.8367 16.3139 15.9334C16.8695 16.1648 17.7533 16.2252 19.0544 16.2252V19.0894C17.8512 19.0894 16.3829 19.065 15.2124 18.5774C14.5815 18.3146 13.9736 17.8947 13.5369 17.2314C13.1023 16.5714 12.918 15.793 12.918 14.9505Z" fill="black"/>
|
|
6
|
+
</g>
|
|
7
|
+
<defs>
|
|
8
|
+
<clipPath id="clip0_4006_12727">
|
|
9
|
+
<rect width="24" height="24" fill="white"/>
|
|
10
|
+
</clipPath>
|
|
11
|
+
</defs>
|
|
12
|
+
</svg>
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
type AgentHostAgentSessionProvider = "claude-code" | "codex" | "cursor" | "nexight" | "gemini" | "hermes" | "openclaw";
|
|
1
|
+
type AgentHostAgentSessionProvider = "claude-code" | "codex" | "tutti-agent" | "cursor" | "nexight" | "gemini" | "hermes" | "opencode" | "openclaw";
|
|
2
2
|
type AgentHostAgentSessionPermissionModeSemantic = "ask-before-write" | "accept-edits" | "locked-down" | "auto" | "full-access" | "unconfigurable";
|
|
3
3
|
type AgentHostAgentSessionReasoningEffort = "minimal" | "low" | "medium" | "high" | "xhigh" | string;
|
|
4
4
|
type AgentHostAgentSessionSpeed = "standard" | "fast" | string;
|
|
@@ -128,7 +128,7 @@ interface AgentHostAgentSessionCommand {
|
|
|
128
128
|
inputHint?: string;
|
|
129
129
|
}
|
|
130
130
|
|
|
131
|
-
declare const AGENT_PROVIDERS: readonly ["claude-code", "codex", "cursor", "nexight", "opencode", "gemini", "openclaw", "hermes"];
|
|
131
|
+
declare const AGENT_PROVIDERS: readonly ["claude-code", "codex", "cursor", "tutti-agent", "nexight", "opencode", "gemini", "openclaw", "hermes"];
|
|
132
132
|
type AgentProvider = (typeof AGENT_PROVIDERS)[number];
|
|
133
133
|
|
|
134
134
|
interface AgentGUINodeData {
|
|
@@ -147,7 +147,7 @@ interface AgentGUINodeData {
|
|
|
147
147
|
composerOverridesByAgentTargetId?: Record<string, AgentHostAgentSessionComposerSettings | null> | null;
|
|
148
148
|
composerOverridesByProvider?: Partial<Record<AgentGUIProvider, AgentHostAgentSessionComposerSettings | null>> | null;
|
|
149
149
|
}
|
|
150
|
-
type AgentGUIProvider = Extract<AgentProvider, "claude-code" | "codex" | "cursor" | "nexight" | "gemini" | "hermes" | "openclaw">;
|
|
150
|
+
type AgentGUIProvider = Extract<AgentProvider, "claude-code" | "codex" | "tutti-agent" | "cursor" | "nexight" | "gemini" | "hermes" | "openclaw" | "opencode">;
|
|
151
151
|
interface AgentGUIProviderTargetRef {
|
|
152
152
|
kind: string;
|
|
153
153
|
provider: AgentGUIProvider;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ReactNode } from 'react';
|
|
2
2
|
import { WorkbenchFrame, WorkbenchHostNodeBodyContext, WorkbenchHostLaunchRequest, WorkbenchHostDockEntry, WorkbenchContribution } from '@tutti-os/workbench-surface';
|
|
3
3
|
import { AgentGuiWorkbenchProvider, AgentGuiWorkbenchState } from './types.js';
|
|
4
|
-
import { f as AgentGUIProviderTarget, g as AgentGUIProviderTargetRef } from '../types-
|
|
4
|
+
import { f as AgentGUIProviderTarget, g as AgentGUIProviderTargetRef } from '../types-BwDrG654.js';
|
|
5
5
|
|
|
6
6
|
declare const agentGuiWorkbenchDefaultNodeFrame: WorkbenchFrame;
|
|
7
7
|
declare const agentGuiWorkbenchDefaultUsableWidthRatio = 0.8;
|
|
@@ -13,14 +13,14 @@ import {
|
|
|
13
13
|
resolveAgentGuiUnifiedDockLaunchPayload,
|
|
14
14
|
resolveAgentGuiWorkbenchContributionCopy,
|
|
15
15
|
resolveAgentGuiWorkbenchDefaultLaunchFrame
|
|
16
|
-
} from "../chunk-
|
|
17
|
-
import "../chunk-
|
|
18
|
-
import "../chunk-
|
|
19
|
-
import "../chunk-
|
|
20
|
-
import "../chunk-
|
|
21
|
-
import "../chunk-
|
|
22
|
-
import "../chunk-
|
|
23
|
-
import "../chunk-
|
|
16
|
+
} from "../chunk-TB7PKP6F.js";
|
|
17
|
+
import "../chunk-LQRD4X6R.js";
|
|
18
|
+
import "../chunk-UAAXRSW2.js";
|
|
19
|
+
import "../chunk-ATEZXUHK.js";
|
|
20
|
+
import "../chunk-BHNJN2TR.js";
|
|
21
|
+
import "../chunk-VRV6GBF5.js";
|
|
22
|
+
import "../chunk-YE5JSME7.js";
|
|
23
|
+
import "../chunk-4I2VCAMW.js";
|
|
24
24
|
export {
|
|
25
25
|
AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT,
|
|
26
26
|
AGENT_GUI_WORKBENCH_NEW_CONVERSATION_EVENT,
|
|
@@ -6,7 +6,7 @@ import { HTMLAttributes, ReactNode } from 'react';
|
|
|
6
6
|
import { WorkbenchDisplayMode, WorkbenchHostNodeHeaderWindowActions } from '@tutti-os/workbench-surface';
|
|
7
7
|
export { AgentGuiSessionTitleFormatOptions, AgentGuiWorkbenchSessionTitleResult, ResolveAgentGuiWorkbenchSessionTitleInput, formatAgentGuiConversationPlainTitle, formatAgentGuiSessionPlainTitle, resolveAgentGuiWorkbenchSessionTitle } from './sessionTitle.js';
|
|
8
8
|
export { AgentGuiWorkbenchComposerOverrides, AgentGuiWorkbenchNodeState, AgentGuiWorkbenchPrefillPromptPayload, AgentGuiWorkbenchProvider, AgentGuiWorkbenchState, AgentGuiWorkbenchWorkspaceState, agentGuiWorkbenchOpenSessionActivationType, agentGuiWorkbenchPrefillPromptActivationType } from './types.js';
|
|
9
|
-
import '../types-
|
|
9
|
+
import '../types-BwDrG654.js';
|
|
10
10
|
import '@tutti-os/agent-activity-core';
|
|
11
11
|
import '../uiSettings-BQS9r2eo.js';
|
|
12
12
|
|
|
@@ -28,6 +28,7 @@ interface AgentGuiWorkbenchHeaderProps extends HTMLAttributes<HTMLElement> {
|
|
|
28
28
|
isConversationRailCollapsed: boolean;
|
|
29
29
|
conversationRailWidthPx?: number | null;
|
|
30
30
|
conversationIconUrl?: string | null;
|
|
31
|
+
conversationIconFallbackUrl?: string | null;
|
|
31
32
|
providerRailWidthPx?: number | null;
|
|
32
33
|
conversationTitle?: string | null;
|
|
33
34
|
nodeId: string;
|
|
@@ -36,6 +37,6 @@ interface AgentGuiWorkbenchHeaderProps extends HTMLAttributes<HTMLElement> {
|
|
|
36
37
|
title?: string;
|
|
37
38
|
windowActions?: Pick<WorkbenchHostNodeHeaderWindowActions, "close" | "minimize" | "toggleDisplayMode">;
|
|
38
39
|
}
|
|
39
|
-
declare function AgentGuiWorkbenchHeader({ className, copy, defaultActions: _defaultActions, displayMode, isConversationRailAutoCollapsed, isConversationRailCollapsed, conversationRailWidthPx, conversationIconUrl, providerRailWidthPx, conversationTitle, nodeId, onCreateConversation, onToggleConversationRail, title: _title, windowActions, ...headerProps }: AgentGuiWorkbenchHeaderProps): ReactNode;
|
|
40
|
+
declare function AgentGuiWorkbenchHeader({ className, copy, defaultActions: _defaultActions, displayMode, isConversationRailAutoCollapsed, isConversationRailCollapsed, conversationRailWidthPx, conversationIconUrl, conversationIconFallbackUrl, providerRailWidthPx, conversationTitle, nodeId, onCreateConversation, onToggleConversationRail, title: _title, windowActions, ...headerProps }: AgentGuiWorkbenchHeaderProps): ReactNode;
|
|
40
41
|
|
|
41
42
|
export { AgentGuiWorkbenchHeader, type AgentGuiWorkbenchHeaderCopy, type AgentGuiWorkbenchHeaderProps };
|
package/dist/workbench/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
createAgentGuiWorkbenchContribution,
|
|
9
9
|
resolveAgentGuiUnifiedDockLaunchPayload,
|
|
10
10
|
resolveAgentGuiWorkbenchContributionCopy
|
|
11
|
-
} from "../chunk-
|
|
11
|
+
} from "../chunk-TB7PKP6F.js";
|
|
12
12
|
import {
|
|
13
13
|
agentGuiWorkbenchProviderFromInstanceId,
|
|
14
14
|
areAgentGuiWorkbenchNodeStatesEqual,
|
|
@@ -18,7 +18,7 @@ import {
|
|
|
18
18
|
normalizeAgentGuiWorkbenchNodeState,
|
|
19
19
|
normalizeAgentGuiWorkbenchState,
|
|
20
20
|
projectAgentGuiWorkbenchState
|
|
21
|
-
} from "../chunk-
|
|
21
|
+
} from "../chunk-LQRD4X6R.js";
|
|
22
22
|
import {
|
|
23
23
|
agentGuiWorkbenchDockEntryId,
|
|
24
24
|
agentGuiWorkbenchDockIdentityFromIdentifier,
|
|
@@ -31,11 +31,11 @@ import {
|
|
|
31
31
|
createAgentGuiWorkbenchInstanceId,
|
|
32
32
|
createAgentGuiWorkbenchLaunchDescriptor,
|
|
33
33
|
createAgentGuiWorkbenchSessionLaunchRequest
|
|
34
|
-
} from "../chunk-
|
|
34
|
+
} from "../chunk-UAAXRSW2.js";
|
|
35
35
|
import {
|
|
36
36
|
agentGuiWorkbenchOpenSessionActivationType,
|
|
37
37
|
agentGuiWorkbenchPrefillPromptActivationType
|
|
38
|
-
} from "../chunk-
|
|
38
|
+
} from "../chunk-ATEZXUHK.js";
|
|
39
39
|
import {
|
|
40
40
|
agentGuiWorkbenchComingSoonProviders,
|
|
41
41
|
agentGuiWorkbenchDefaultDockProviders,
|
|
@@ -48,17 +48,17 @@ import {
|
|
|
48
48
|
isAgentGuiWorkbenchProvider,
|
|
49
49
|
normalizeAgentGuiWorkbenchProvider,
|
|
50
50
|
resolveAgentGuiWorkbenchProviderLabel
|
|
51
|
-
} from "../chunk-
|
|
52
|
-
import "../chunk-
|
|
53
|
-
import "../chunk-
|
|
51
|
+
} from "../chunk-BHNJN2TR.js";
|
|
52
|
+
import "../chunk-VRV6GBF5.js";
|
|
53
|
+
import "../chunk-YE5JSME7.js";
|
|
54
54
|
import {
|
|
55
55
|
formatAgentGuiConversationPlainTitle,
|
|
56
56
|
formatAgentGuiSessionPlainTitle,
|
|
57
57
|
resolveAgentGuiWorkbenchSessionTitle
|
|
58
|
-
} from "../chunk-
|
|
59
|
-
import "../chunk-
|
|
60
|
-
import "../chunk-
|
|
61
|
-
import "../chunk-
|
|
58
|
+
} from "../chunk-GOEL3BO7.js";
|
|
59
|
+
import "../chunk-D22A3KGQ.js";
|
|
60
|
+
import "../chunk-4I2VCAMW.js";
|
|
61
|
+
import "../chunk-3QPN2Y7R.js";
|
|
62
62
|
import "../chunk-GCBDIQDX.js";
|
|
63
63
|
export {
|
|
64
64
|
AGENT_GUI_WORKBENCH_CONVERSATION_RAIL_TOGGLE_EVENT,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WorkbenchHostLaunchRequest } from '@tutti-os/workbench-surface';
|
|
2
2
|
import { agentGuiWorkbenchOpenSessionActivationType, AgentGuiWorkbenchPrefillPromptPayload, agentGuiWorkbenchPrefillPromptActivationType, AgentGuiWorkbenchProvider } from './types.js';
|
|
3
|
-
import '../types-
|
|
3
|
+
import '../types-BwDrG654.js';
|
|
4
4
|
|
|
5
5
|
type AgentGuiWorkbenchLaunchRequestInput = Pick<WorkbenchHostLaunchRequest, "payload" | "typeId"> & {
|
|
6
6
|
dockEntryId?: string | null;
|
package/dist/workbench/launch.js
CHANGED
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
createAgentGuiWorkbenchSessionLaunchRequest,
|
|
13
13
|
resolveAgentGuiWorkbenchLaunchDockEntryId,
|
|
14
14
|
shouldReuseAgentGuiWorkbenchDockEntryNode
|
|
15
|
-
} from "../chunk-
|
|
15
|
+
} from "../chunk-UAAXRSW2.js";
|
|
16
16
|
import {
|
|
17
17
|
agentGuiWorkbenchPrefillPromptActivationType
|
|
18
|
-
} from "../chunk-
|
|
19
|
-
import "../chunk-
|
|
18
|
+
} from "../chunk-ATEZXUHK.js";
|
|
19
|
+
import "../chunk-BHNJN2TR.js";
|
|
20
20
|
export {
|
|
21
21
|
agentGuiWorkbenchDockEntryId,
|
|
22
22
|
agentGuiWorkbenchDockIdentityFromIdentifier,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { AgentGuiWorkbenchProvider } from './types.js';
|
|
2
|
-
import '../types-
|
|
2
|
+
import '../types-BwDrG654.js';
|
|
3
3
|
|
|
4
|
-
declare const agentGuiWorkbenchProviders: readonly ["claude-code", "codex", "cursor", "
|
|
5
|
-
declare const agentGuiWorkbenchDefaultDockProviders: readonly ["codex", "claude-code"];
|
|
6
|
-
declare const agentGuiWorkbenchDockSuppressedProviders: readonly ["hermes", "gemini"];
|
|
7
|
-
declare const agentGuiWorkbenchComingSoonProviders: readonly [
|
|
4
|
+
declare const agentGuiWorkbenchProviders: readonly ["claude-code", "codex", "cursor", "tutti-agent", "opencode", "hermes", "gemini", "openclaw"];
|
|
5
|
+
declare const agentGuiWorkbenchDefaultDockProviders: readonly ["codex", "claude-code", "tutti-agent"];
|
|
6
|
+
declare const agentGuiWorkbenchDockSuppressedProviders: readonly ["hermes", "gemini", "opencode"];
|
|
7
|
+
declare const agentGuiWorkbenchComingSoonProviders: readonly [];
|
|
8
8
|
declare const agentGuiWorkbenchProviderLabels: Record<AgentGuiWorkbenchProvider, string>;
|
|
9
9
|
declare function resolveAgentGuiWorkbenchProviderLabel(provider: AgentGuiWorkbenchProvider): string;
|
|
10
10
|
declare function isAgentGuiWorkbenchDefaultDockProvider(provider: AgentGuiWorkbenchProvider): boolean;
|
|
@@ -10,7 +10,7 @@ import {
|
|
|
10
10
|
isAgentGuiWorkbenchProvider,
|
|
11
11
|
normalizeAgentGuiWorkbenchProvider,
|
|
12
12
|
resolveAgentGuiWorkbenchProviderLabel
|
|
13
|
-
} from "../chunk-
|
|
13
|
+
} from "../chunk-BHNJN2TR.js";
|
|
14
14
|
export {
|
|
15
15
|
agentGuiWorkbenchComingSoonProviders,
|
|
16
16
|
agentGuiWorkbenchDefaultDockProviders,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { AgentActivitySnapshot } from '@tutti-os/agent-activity-core';
|
|
2
2
|
import { U as UiLanguage } from '../uiSettings-BQS9r2eo.js';
|
|
3
3
|
import { AgentGuiWorkbenchProvider } from './types.js';
|
|
4
|
-
import '../types-
|
|
4
|
+
import '../types-BwDrG654.js';
|
|
5
5
|
|
|
6
6
|
interface AgentGuiSessionTitleFormatOptions {
|
|
7
7
|
fallbackAgentLabel?: string;
|
|
@@ -2,9 +2,9 @@ import {
|
|
|
2
2
|
formatAgentGuiConversationPlainTitle,
|
|
3
3
|
formatAgentGuiSessionPlainTitle,
|
|
4
4
|
resolveAgentGuiWorkbenchSessionTitle
|
|
5
|
-
} from "../chunk-
|
|
6
|
-
import "../chunk-
|
|
7
|
-
import "../chunk-
|
|
5
|
+
} from "../chunk-GOEL3BO7.js";
|
|
6
|
+
import "../chunk-D22A3KGQ.js";
|
|
7
|
+
import "../chunk-3QPN2Y7R.js";
|
|
8
8
|
import "../chunk-GCBDIQDX.js";
|
|
9
9
|
export {
|
|
10
10
|
formatAgentGuiConversationPlainTitle,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { WorkbenchHostExternalStateSource, WorkbenchHostExternalStateLookupInput } from '@tutti-os/workbench-surface';
|
|
2
2
|
import { AgentGuiWorkbenchProvider, AgentGuiWorkbenchNodeState, AgentGuiWorkbenchState, AgentGuiWorkbenchWorkspaceState } from './types.js';
|
|
3
|
-
import '../types-
|
|
3
|
+
import '../types-BwDrG654.js';
|
|
4
4
|
|
|
5
5
|
type AgentGuiWorkbenchStateLookupRequest = Pick<WorkbenchHostExternalStateLookupInput, "instanceId" | "typeId"> & Partial<Pick<WorkbenchHostExternalStateLookupInput, "nodeId">>;
|
|
6
6
|
declare function createDefaultAgentGuiWorkbenchNodeState(provider?: AgentGuiWorkbenchProvider): AgentGuiWorkbenchNodeState;
|
|
@@ -10,6 +10,15 @@ declare function areAgentGuiWorkbenchStatesEqual(left: AgentGuiWorkbenchState, r
|
|
|
10
10
|
declare function normalizeAgentGuiWorkbenchNodeState(state: Partial<AgentGuiWorkbenchNodeState> | null | undefined, fallbackProvider?: AgentGuiWorkbenchProvider): AgentGuiWorkbenchNodeState;
|
|
11
11
|
declare function areAgentGuiWorkbenchNodeStatesEqual(left: AgentGuiWorkbenchNodeState, right: AgentGuiWorkbenchNodeState): boolean;
|
|
12
12
|
declare function agentGuiWorkbenchProviderFromInstanceId(instanceId: string | null | undefined): AgentGuiWorkbenchProvider;
|
|
13
|
+
/**
|
|
14
|
+
* Like {@link agentGuiWorkbenchProviderFromInstanceId} but returns `null`
|
|
15
|
+
* instead of defaulting to `"codex"` when the provider cannot be determined
|
|
16
|
+
* yet (e.g. a freshly created session whose instanceId does not encode a
|
|
17
|
+
* provider). Callers that render a provider icon use this so they can show a
|
|
18
|
+
* neutral placeholder during that transient window instead of flashing the
|
|
19
|
+
* wrong provider's icon.
|
|
20
|
+
*/
|
|
21
|
+
declare function agentGuiWorkbenchProviderFromInstanceIdOrNull(instanceId: string | null | undefined): AgentGuiWorkbenchProvider | null;
|
|
13
22
|
declare function createAgentGuiWorkbenchNodeStateSource(input: {
|
|
14
23
|
typeId?: string;
|
|
15
24
|
workspaceId: string;
|
|
@@ -27,4 +36,4 @@ declare function createAgentGuiWorkbenchNodeStateSource(input: {
|
|
|
27
36
|
findInstanceIdByAgentSessionId: (agentSessionId: string) => string | null;
|
|
28
37
|
};
|
|
29
38
|
|
|
30
|
-
export { agentGuiWorkbenchProviderFromInstanceId, areAgentGuiWorkbenchNodeStatesEqual, areAgentGuiWorkbenchStatesEqual, createAgentGuiWorkbenchNodeStateSource, createDefaultAgentGuiWorkbenchNodeState, normalizeAgentGuiWorkbenchNodeState, normalizeAgentGuiWorkbenchState, projectAgentGuiWorkbenchState };
|
|
39
|
+
export { agentGuiWorkbenchProviderFromInstanceId, agentGuiWorkbenchProviderFromInstanceIdOrNull, areAgentGuiWorkbenchNodeStatesEqual, areAgentGuiWorkbenchStatesEqual, createAgentGuiWorkbenchNodeStateSource, createDefaultAgentGuiWorkbenchNodeState, normalizeAgentGuiWorkbenchNodeState, normalizeAgentGuiWorkbenchState, projectAgentGuiWorkbenchState };
|
package/dist/workbench/state.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
agentGuiWorkbenchProviderFromInstanceId,
|
|
3
|
+
agentGuiWorkbenchProviderFromInstanceIdOrNull,
|
|
3
4
|
areAgentGuiWorkbenchNodeStatesEqual,
|
|
4
5
|
areAgentGuiWorkbenchStatesEqual,
|
|
5
6
|
createAgentGuiWorkbenchNodeStateSource,
|
|
@@ -7,11 +8,12 @@ import {
|
|
|
7
8
|
normalizeAgentGuiWorkbenchNodeState,
|
|
8
9
|
normalizeAgentGuiWorkbenchState,
|
|
9
10
|
projectAgentGuiWorkbenchState
|
|
10
|
-
} from "../chunk-
|
|
11
|
-
import "../chunk-
|
|
12
|
-
import "../chunk-
|
|
11
|
+
} from "../chunk-LQRD4X6R.js";
|
|
12
|
+
import "../chunk-BHNJN2TR.js";
|
|
13
|
+
import "../chunk-YE5JSME7.js";
|
|
13
14
|
export {
|
|
14
15
|
agentGuiWorkbenchProviderFromInstanceId,
|
|
16
|
+
agentGuiWorkbenchProviderFromInstanceIdOrNull,
|
|
15
17
|
areAgentGuiWorkbenchNodeStatesEqual,
|
|
16
18
|
areAgentGuiWorkbenchStatesEqual,
|
|
17
19
|
createAgentGuiWorkbenchNodeStateSource,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { g as AgentGUIProviderTargetRef } from '../types-
|
|
1
|
+
import { g as AgentGUIProviderTargetRef } from '../types-BwDrG654.js';
|
|
2
2
|
|
|
3
|
-
type AgentGuiWorkbenchProvider = "claude-code" | "codex" | "cursor" | "nexight" | "gemini" | "hermes" | "openclaw";
|
|
3
|
+
type AgentGuiWorkbenchProvider = "claude-code" | "codex" | "tutti-agent" | "cursor" | "nexight" | "gemini" | "hermes" | "openclaw" | "opencode";
|
|
4
4
|
declare const agentGuiWorkbenchOpenSessionActivationType = "agent-gui:open-session";
|
|
5
5
|
declare const agentGuiWorkbenchPrefillPromptActivationType = "agent-gui:prefill-prompt";
|
|
6
6
|
interface AgentGuiWorkbenchPrefillPromptPayload {
|
package/dist/workbench/types.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
agentGuiWorkbenchOpenSessionActivationType,
|
|
3
3
|
agentGuiWorkbenchPrefillPromptActivationType
|
|
4
|
-
} from "../chunk-
|
|
4
|
+
} from "../chunk-ATEZXUHK.js";
|
|
5
5
|
export {
|
|
6
6
|
agentGuiWorkbenchOpenSessionActivationType,
|
|
7
7
|
agentGuiWorkbenchPrefillPromptActivationType
|
|
@@ -4,14 +4,14 @@ import {
|
|
|
4
4
|
resolveWorkspaceAgentActivityStatus,
|
|
5
5
|
resolveWorkspaceAgentActivityTitle,
|
|
6
6
|
reuseWorkspaceAgentActivityListViewModelIfUnchanged
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-GXHZNIWT.js";
|
|
8
8
|
import "./chunk-IBIMGLCD.js";
|
|
9
9
|
import "./chunk-Y35GDLP2.js";
|
|
10
10
|
import {
|
|
11
11
|
workspaceAgentProviderLabel
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
14
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-4US2YHBY.js";
|
|
13
|
+
import "./chunk-AIR6A4NP.js";
|
|
14
|
+
import "./chunk-3QPN2Y7R.js";
|
|
15
15
|
import "./chunk-GCBDIQDX.js";
|
|
16
16
|
export {
|
|
17
17
|
buildWorkspaceAgentActivityListViewModel,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tutti-os/agent-gui",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.68",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -94,17 +94,17 @@
|
|
|
94
94
|
},
|
|
95
95
|
"dependencies": {
|
|
96
96
|
"@monaco-editor/react": "^4.7.0",
|
|
97
|
-
"@tutti-os/agent-activity-core": "0.0.
|
|
98
|
-
"@tutti-os/ui-i18n-runtime": "0.0.
|
|
99
|
-
"@tutti-os/ui-rich-text": "0.0.
|
|
100
|
-
"@tutti-os/ui-react-hooks": "0.0.
|
|
101
|
-
"@tutti-os/ui-system": "0.0.
|
|
102
|
-
"@tutti-os/workbench-surface": "0.0.
|
|
103
|
-
"@tutti-os/workspace-external-core": "0.0.
|
|
104
|
-
"@tutti-os/workspace-file-manager": "0.0.
|
|
105
|
-
"@tutti-os/workspace-file-reference": "0.0.
|
|
106
|
-
"@tutti-os/workspace-issue-manager": "0.0.
|
|
107
|
-
"@tutti-os/workspace-user-project": "0.0.
|
|
97
|
+
"@tutti-os/agent-activity-core": "0.0.68",
|
|
98
|
+
"@tutti-os/ui-i18n-runtime": "0.0.68",
|
|
99
|
+
"@tutti-os/ui-rich-text": "0.0.68",
|
|
100
|
+
"@tutti-os/ui-react-hooks": "0.0.68",
|
|
101
|
+
"@tutti-os/ui-system": "0.0.68",
|
|
102
|
+
"@tutti-os/workbench-surface": "0.0.68",
|
|
103
|
+
"@tutti-os/workspace-external-core": "0.0.68",
|
|
104
|
+
"@tutti-os/workspace-file-manager": "0.0.68",
|
|
105
|
+
"@tutti-os/workspace-file-reference": "0.0.68",
|
|
106
|
+
"@tutti-os/workspace-issue-manager": "0.0.68",
|
|
107
|
+
"@tutti-os/workspace-user-project": "0.0.68",
|
|
108
108
|
"@tanstack/react-virtual": "^3.13.12",
|
|
109
109
|
"@tiptap/core": "^3.11.1",
|
|
110
110
|
"@tiptap/pm": "^3.23.6",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../workbench/types.ts"],"sourcesContent":["import type { AgentGUIProviderTargetRef } from \"../types\";\n\nexport type AgentGuiWorkbenchProvider =\n | \"claude-code\"\n | \"codex\"\n | \"cursor\"\n | \"nexight\"\n | \"gemini\"\n | \"hermes\"\n | \"openclaw\";\n\nexport const agentGuiWorkbenchOpenSessionActivationType =\n \"agent-gui:open-session\";\n\nexport const agentGuiWorkbenchPrefillPromptActivationType =\n \"agent-gui:prefill-prompt\";\n\nexport interface AgentGuiWorkbenchPrefillPromptPayload {\n agentTargetId?: string | null;\n autoSubmit?: boolean;\n draftPrompt: string;\n provider?: AgentGuiWorkbenchProvider;\n userProjectPath?: string | null;\n}\n\nexport interface AgentGuiWorkbenchComposerOverrides {\n model?: string | null;\n permissionModeId?: string | null;\n planMode?: boolean;\n reasoningEffort?: string | null;\n speed?: string | null;\n}\n\nexport type AgentGuiWorkbenchComposerOverridesByProvider = Partial<\n Record<AgentGuiWorkbenchProvider, AgentGuiWorkbenchComposerOverrides | null>\n>;\n\nexport type AgentGuiWorkbenchComposerOverridesByAgentTargetId = Record<\n string,\n AgentGuiWorkbenchComposerOverrides | null\n>;\n\nexport interface AgentGuiWorkbenchNodeState {\n agentTargetId?: string | null;\n composerOverrides?: AgentGuiWorkbenchComposerOverrides | null;\n composerOverridesByAgentTargetId?: AgentGuiWorkbenchComposerOverridesByAgentTargetId | null;\n composerOverridesByProvider?: AgentGuiWorkbenchComposerOverridesByProvider | null;\n conversationCount?: number | null;\n conversationRailCollapsed?: boolean | null;\n conversationRailWidthPx?: number | null;\n lastActiveAgentSessionId: string | null;\n /** @deprecated Conversation titles are derived from the active session id. */\n lastActiveConversationTitle?: string | null;\n provider: AgentGuiWorkbenchProvider;\n /** @deprecated Use agentTargetId for selection restore. */\n providerTargetId?: string | null;\n /** @deprecated Provider target refs are resolved from the current target list. */\n providerTargetRef?: AgentGUIProviderTargetRef | null;\n}\n\nexport interface AgentGuiWorkbenchState {\n agentTargetId?: string | null;\n conversationRailCollapsed?: boolean | null;\n conversationRailWidthPx?: number | null;\n lastActiveAgentSessionId: string | null;\n lastActiveConversationTitle?: string | null;\n}\n\nexport interface AgentGuiWorkbenchWorkspaceState {\n workspaceId: string;\n}\n"],"mappings":";AAWO,IAAM,6CACX;AAEK,IAAM,+CACX;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../workbench/providerCatalog.ts"],"sourcesContent":["import type { AgentGuiWorkbenchProvider } from \"./types.ts\";\n\nexport const agentGuiWorkbenchProviders = [\n \"claude-code\",\n \"codex\",\n \"cursor\",\n \"nexight\",\n \"hermes\",\n \"gemini\",\n \"openclaw\"\n] as const satisfies readonly AgentGuiWorkbenchProvider[];\n\nexport const agentGuiWorkbenchDefaultDockProviders = [\n \"codex\",\n \"claude-code\"\n] as const satisfies readonly AgentGuiWorkbenchProvider[];\n\nexport const agentGuiWorkbenchDockSuppressedProviders = [\n \"hermes\",\n \"gemini\"\n] as const satisfies readonly AgentGuiWorkbenchProvider[];\n\nexport const agentGuiWorkbenchComingSoonProviders = [\n \"nexight\"\n] as const satisfies readonly AgentGuiWorkbenchProvider[];\n\nconst defaultDockProviderSet = new Set<AgentGuiWorkbenchProvider>(\n agentGuiWorkbenchDefaultDockProviders\n);\nconst dockSuppressedProviderSet = new Set<AgentGuiWorkbenchProvider>(\n agentGuiWorkbenchDockSuppressedProviders\n);\nconst comingSoonProviderSet = new Set<AgentGuiWorkbenchProvider>(\n agentGuiWorkbenchComingSoonProviders\n);\n\n// i18n-check-ignore: provider brand names.\nexport const agentGuiWorkbenchProviderLabels: Record<\n AgentGuiWorkbenchProvider,\n string\n> = {\n \"claude-code\": \"Claude Code\",\n codex: \"Codex\",\n cursor: \"Cursor\",\n gemini: \"Gemini CLI\",\n hermes: \"Hermes Agent\",\n nexight: \"Nexight\",\n openclaw: \"OpenClaw\"\n};\n\nexport function resolveAgentGuiWorkbenchProviderLabel(\n provider: AgentGuiWorkbenchProvider\n): string {\n return agentGuiWorkbenchProviderLabels[provider];\n}\n\nexport function isAgentGuiWorkbenchDefaultDockProvider(\n provider: AgentGuiWorkbenchProvider\n): boolean {\n return defaultDockProviderSet.has(provider);\n}\n\nexport function isAgentGuiWorkbenchDockSuppressedProvider(\n provider: AgentGuiWorkbenchProvider\n): boolean {\n return dockSuppressedProviderSet.has(provider);\n}\n\nexport function isAgentGuiWorkbenchComingSoonProvider(\n provider: AgentGuiWorkbenchProvider\n): boolean {\n return comingSoonProviderSet.has(provider);\n}\n\nexport function isAgentGuiWorkbenchProvider(\n value: unknown\n): value is AgentGuiWorkbenchProvider {\n return (\n typeof value === \"string\" &&\n agentGuiWorkbenchProviders.includes(value as AgentGuiWorkbenchProvider)\n );\n}\n\nexport function normalizeAgentGuiWorkbenchProvider(\n value: unknown,\n fallbackProvider: AgentGuiWorkbenchProvider = \"codex\"\n): AgentGuiWorkbenchProvider {\n return isAgentGuiWorkbenchProvider(value) ? value : fallbackProvider;\n}\n"],"mappings":";AAEO,IAAM,6BAA6B;AAAA,EACxC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEO,IAAM,wCAAwC;AAAA,EACnD;AAAA,EACA;AACF;AAEO,IAAM,2CAA2C;AAAA,EACtD;AAAA,EACA;AACF;AAEO,IAAM,uCAAuC;AAAA,EAClD;AACF;AAEA,IAAM,yBAAyB,IAAI;AAAA,EACjC;AACF;AACA,IAAM,4BAA4B,IAAI;AAAA,EACpC;AACF;AACA,IAAM,wBAAwB,IAAI;AAAA,EAChC;AACF;AAGO,IAAM,kCAGT;AAAA,EACF,eAAe;AAAA,EACf,OAAO;AAAA,EACP,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,UAAU;AACZ;AAEO,SAAS,sCACd,UACQ;AACR,SAAO,gCAAgC,QAAQ;AACjD;AAEO,SAAS,uCACd,UACS;AACT,SAAO,uBAAuB,IAAI,QAAQ;AAC5C;AAEO,SAAS,0CACd,UACS;AACT,SAAO,0BAA0B,IAAI,QAAQ;AAC/C;AAEO,SAAS,sCACd,UACS;AACT,SAAO,sBAAsB,IAAI,QAAQ;AAC3C;AAEO,SAAS,4BACd,OACoC;AACpC,SACE,OAAO,UAAU,YACjB,2BAA2B,SAAS,KAAkC;AAE1E;AAEO,SAAS,mCACd,OACA,mBAA8C,SACnB;AAC3B,SAAO,4BAA4B,KAAK,IAAI,QAAQ;AACtD;","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../workbench/state.ts"],"sourcesContent":["import type {\n WorkbenchHostExternalStateLookupInput,\n WorkbenchHostExternalStateSource\n} from \"@tutti-os/workbench-surface\";\nimport {\n agentGuiWorkbenchProviders,\n isAgentGuiWorkbenchProvider,\n normalizeAgentGuiWorkbenchProvider\n} from \"./providerCatalog.ts\";\nimport { agentGUIProviderTargetRefsEqual } from \"../providerTargets.ts\";\nimport type {\n AgentGuiWorkbenchComposerOverrides,\n AgentGuiWorkbenchComposerOverridesByAgentTargetId,\n AgentGuiWorkbenchComposerOverridesByProvider,\n AgentGuiWorkbenchNodeState,\n AgentGuiWorkbenchProvider,\n AgentGuiWorkbenchState,\n AgentGuiWorkbenchWorkspaceState\n} from \"./types.ts\";\nimport type { AgentGUIProviderTargetRef } from \"../types.ts\";\n\ntype AgentGuiWorkbenchStateLookupRequest = Pick<\n WorkbenchHostExternalStateLookupInput,\n \"instanceId\" | \"typeId\"\n> &\n Partial<Pick<WorkbenchHostExternalStateLookupInput, \"nodeId\">>;\n\nexport function createDefaultAgentGuiWorkbenchNodeState(\n provider: AgentGuiWorkbenchProvider = \"codex\"\n): AgentGuiWorkbenchNodeState {\n return {\n agentTargetId: null,\n composerOverrides: null,\n composerOverridesByAgentTargetId: null,\n composerOverridesByProvider: null,\n conversationCount: null,\n conversationRailCollapsed: false,\n conversationRailWidthPx: null,\n lastActiveAgentSessionId: null,\n lastActiveConversationTitle: null,\n provider,\n providerTargetId: null,\n providerTargetRef: null\n };\n}\n\nexport function normalizeAgentGuiWorkbenchState(\n state: unknown\n): AgentGuiWorkbenchState {\n if (!isRecord(state)) {\n return createDefaultAgentGuiWorkbenchState();\n }\n const agentTargetId =\n normalizeOptionalNonEmptyString(state.agentTargetId) ??\n normalizeOptionalNonEmptyString(state.providerTargetId);\n return {\n ...(agentTargetId ? { agentTargetId } : {}),\n conversationRailCollapsed: state.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state.conversationRailWidthPx\n ),\n lastActiveAgentSessionId:\n typeof state.lastActiveAgentSessionId === \"string\"\n ? state.lastActiveAgentSessionId\n : null,\n ...(typeof state.lastActiveConversationTitle === \"string\"\n ? { lastActiveConversationTitle: state.lastActiveConversationTitle }\n : {})\n };\n}\n\nexport function projectAgentGuiWorkbenchState(\n state: AgentGuiWorkbenchNodeState\n): AgentGuiWorkbenchState {\n const agentTargetId =\n normalizeOptionalNonEmptyString(state.agentTargetId) ??\n normalizeOptionalNonEmptyString(state.providerTargetId);\n return {\n ...(agentTargetId ? { agentTargetId } : {}),\n conversationRailCollapsed: state.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state.conversationRailWidthPx\n ),\n lastActiveAgentSessionId: state.lastActiveAgentSessionId ?? null,\n ...(typeof state.lastActiveConversationTitle === \"string\"\n ? { lastActiveConversationTitle: state.lastActiveConversationTitle }\n : {})\n };\n}\n\nexport function areAgentGuiWorkbenchStatesEqual(\n left: AgentGuiWorkbenchState,\n right: AgentGuiWorkbenchState\n): boolean {\n return (\n (left.agentTargetId ?? null) === (right.agentTargetId ?? null) &&\n left.conversationRailCollapsed === right.conversationRailCollapsed &&\n left.conversationRailWidthPx === right.conversationRailWidthPx &&\n left.lastActiveAgentSessionId === right.lastActiveAgentSessionId &&\n (left.lastActiveConversationTitle ?? null) ===\n (right.lastActiveConversationTitle ?? null)\n );\n}\n\nexport function normalizeAgentGuiWorkbenchNodeState(\n state: Partial<AgentGuiWorkbenchNodeState> | null | undefined,\n fallbackProvider: AgentGuiWorkbenchProvider = \"codex\"\n): AgentGuiWorkbenchNodeState {\n const provider = normalizeAgentGuiWorkbenchProvider(\n state?.provider,\n fallbackProvider\n );\n return {\n ...createDefaultAgentGuiWorkbenchNodeState(provider),\n agentTargetId:\n normalizeOptionalNonEmptyString(state?.agentTargetId) ??\n normalizeOptionalNonEmptyString(state?.providerTargetId),\n composerOverrides: normalizeAgentGuiWorkbenchComposerOverrides(\n state?.composerOverrides\n ),\n composerOverridesByAgentTargetId:\n normalizeAgentGuiWorkbenchComposerOverridesByAgentTargetId(\n state?.composerOverridesByAgentTargetId\n ),\n composerOverridesByProvider:\n normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n state?.composerOverridesByProvider\n ),\n conversationCount: normalizeOptionalNonNegativeNumber(\n state?.conversationCount\n ),\n conversationRailCollapsed: state?.conversationRailCollapsed === true,\n conversationRailWidthPx: normalizeOptionalPositiveNumber(\n state?.conversationRailWidthPx\n ),\n lastActiveAgentSessionId:\n typeof state?.lastActiveAgentSessionId === \"string\"\n ? state.lastActiveAgentSessionId\n : null,\n lastActiveConversationTitle:\n typeof state?.lastActiveConversationTitle === \"string\"\n ? state.lastActiveConversationTitle\n : null,\n provider,\n providerTargetId: normalizeOptionalNonEmptyString(state?.providerTargetId),\n providerTargetRef: normalizeAgentGuiProviderTargetRef(\n state?.providerTargetRef,\n provider\n )\n };\n}\n\nexport function areAgentGuiWorkbenchNodeStatesEqual(\n left: AgentGuiWorkbenchNodeState,\n right: AgentGuiWorkbenchNodeState\n): boolean {\n return (\n (left.agentTargetId ?? null) === (right.agentTargetId ?? null) &&\n composerOverridesEqual(left.composerOverrides, right.composerOverrides) &&\n composerOverridesByAgentTargetIdEqual(\n left.composerOverridesByAgentTargetId,\n right.composerOverridesByAgentTargetId\n ) &&\n composerOverridesByProviderEqual(\n left.composerOverridesByProvider,\n right.composerOverridesByProvider\n ) &&\n left.conversationCount === right.conversationCount &&\n left.conversationRailCollapsed === right.conversationRailCollapsed &&\n left.conversationRailWidthPx === right.conversationRailWidthPx &&\n left.lastActiveAgentSessionId === right.lastActiveAgentSessionId &&\n left.lastActiveConversationTitle === right.lastActiveConversationTitle &&\n left.provider === right.provider &&\n (left.agentTargetId ?? null) === (right.agentTargetId ?? null) &&\n (left.providerTargetId ?? null) === (right.providerTargetId ?? null) &&\n agentGUIProviderTargetRefsEqual(\n left.providerTargetRef,\n right.providerTargetRef\n )\n );\n}\n\nexport function agentGuiWorkbenchProviderFromInstanceId(\n instanceId: string | null | undefined\n): AgentGuiWorkbenchProvider {\n const normalized = instanceId?.trim();\n if (!normalized || normalized === \"agent-gui\") {\n return \"codex\";\n }\n const [, provider] = normalized.split(\":\", 3);\n return normalizeAgentGuiWorkbenchProvider(provider);\n}\n\nexport function createAgentGuiWorkbenchNodeStateSource(input: {\n typeId?: string;\n workspaceId: string;\n}): {\n externalStateSource: WorkbenchHostExternalStateSource<\n AgentGuiWorkbenchState | null,\n AgentGuiWorkbenchWorkspaceState\n >;\n readNodeState: (\n request: AgentGuiWorkbenchStateLookupRequest\n ) => AgentGuiWorkbenchState | null;\n writeNodeState: (\n request: AgentGuiWorkbenchStateLookupRequest & {\n state: AgentGuiWorkbenchState;\n }\n ) => void;\n /**\n * Returns the launch instanceId of an open node currently showing the given\n * agent session, or null when none is found. Used to focus an existing\n * conversation instead of launching a duplicate node.\n */\n findInstanceIdByAgentSessionId: (agentSessionId: string) => string | null;\n} {\n const typeId = input.typeId ?? \"agent-gui\";\n const nodeStateByKey = new Map<string, AgentGuiWorkbenchState>();\n // Tracks the launch instanceId behind each state key so a node can be located\n // by the session it is currently showing, even when its key is node-scoped.\n const instanceIdByKey = new Map<string, string>();\n const listeners = new Set<() => void>();\n\n const lookupState = (request: AgentGuiWorkbenchStateLookupRequest) => {\n const nodeState = request.nodeId\n ? nodeStateByKey.get(agentGuiWorkbenchNodeStateKey(request))\n : null;\n const state =\n nodeState ??\n nodeStateByKey.get(agentGuiWorkbenchInstanceStateKey(request));\n return state ? { ...state } : null;\n };\n\n const notify = () => {\n for (const listener of listeners) {\n listener();\n }\n };\n\n return {\n externalStateSource: {\n getNodeState(request) {\n if (request.typeId !== typeId) {\n return null;\n }\n return lookupState(request);\n },\n getSnapshotNodeState(request) {\n if (request.typeId !== typeId) {\n return null;\n }\n return lookupState(request);\n },\n getWorkspaceState() {\n return {\n workspaceId: input.workspaceId\n };\n },\n subscribe(listener) {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n }\n },\n readNodeState(request) {\n if (request.typeId !== typeId) {\n return null;\n }\n return lookupState(request);\n },\n findInstanceIdByAgentSessionId(agentSessionId) {\n const target = agentSessionId.trim();\n if (!target) {\n return null;\n }\n for (const [key, state] of nodeStateByKey) {\n if (state.lastActiveAgentSessionId?.trim() === target) {\n return instanceIdByKey.get(key) ?? null;\n }\n }\n return null;\n },\n writeNodeState(request) {\n if (request.typeId !== typeId) {\n return;\n }\n const key = agentGuiWorkbenchNodeStateKey(request);\n instanceIdByKey.set(key, request.instanceId);\n const previous = nodeStateByKey.get(key);\n let clearedInstanceSeed = false;\n if (request.nodeId) {\n const instanceKey = agentGuiWorkbenchInstanceStateKey(request);\n instanceIdByKey.delete(instanceKey);\n clearedInstanceSeed = nodeStateByKey.delete(instanceKey);\n }\n const next = {\n ...normalizeAgentGuiWorkbenchState(request.state)\n };\n nodeStateByKey.set(key, next);\n if (\n !clearedInstanceSeed &&\n previous &&\n areAgentGuiWorkbenchMemoryStatesEqual(previous, next)\n ) {\n return;\n }\n notify();\n }\n };\n}\n\nfunction areAgentGuiWorkbenchMemoryStatesEqual(\n left: AgentGuiWorkbenchState,\n right: AgentGuiWorkbenchState\n): boolean {\n return areAgentGuiWorkbenchStatesEqual(left, right);\n}\n\nfunction agentGuiWorkbenchNodeStateKey(\n request: Pick<WorkbenchHostExternalStateLookupInput, \"instanceId\"> &\n Partial<Pick<WorkbenchHostExternalStateLookupInput, \"nodeId\">>\n): string {\n return request.nodeId\n ? `node:${request.nodeId}`\n : agentGuiWorkbenchInstanceStateKey(request);\n}\n\nfunction agentGuiWorkbenchInstanceStateKey(\n request: Pick<WorkbenchHostExternalStateLookupInput, \"instanceId\">\n): string {\n return `instance:${request.instanceId}`;\n}\n\nfunction createDefaultAgentGuiWorkbenchState(): AgentGuiWorkbenchState {\n return {\n conversationRailCollapsed: false,\n conversationRailWidthPx: null,\n lastActiveAgentSessionId: null\n };\n}\n\nfunction normalizeOptionalNonEmptyString(value: unknown): string | null {\n return typeof value === \"string\" && value.trim() ? value.trim() : null;\n}\n\nfunction normalizeAgentGuiProviderTargetRef(\n value: unknown,\n expectedProvider?: AgentGuiWorkbenchProvider\n): AgentGUIProviderTargetRef | null {\n if (!isRecord(value)) {\n return null;\n }\n const kind = normalizeOptionalNonEmptyString(value.kind);\n const provider = value.provider;\n if (!kind || !isAgentGuiWorkbenchProvider(provider)) {\n return null;\n }\n if (expectedProvider && provider !== expectedProvider) {\n return null;\n }\n return {\n ...value,\n kind,\n provider\n };\n}\n\nfunction normalizeAgentGuiWorkbenchComposerOverrides(\n value: unknown\n): AgentGuiWorkbenchComposerOverrides | null {\n if (!isRecord(value)) {\n return null;\n }\n const composerOverrides: AgentGuiWorkbenchComposerOverrides = {};\n if (typeof value.model === \"string\" && value.model.trim()) {\n composerOverrides.model = value.model.trim();\n }\n if (\n typeof value.reasoningEffort === \"string\" &&\n value.reasoningEffort.trim()\n ) {\n composerOverrides.reasoningEffort = value.reasoningEffort.trim();\n }\n if (\n typeof value.permissionModeId === \"string\" &&\n value.permissionModeId.trim()\n ) {\n composerOverrides.permissionModeId = value.permissionModeId.trim();\n }\n if (typeof value.planMode === \"boolean\") {\n composerOverrides.planMode = value.planMode;\n }\n return Object.keys(composerOverrides).length > 0 ? composerOverrides : null;\n}\n\nfunction normalizeAgentGuiWorkbenchComposerOverridesByProvider(\n value: unknown\n): AgentGuiWorkbenchComposerOverridesByProvider | null {\n if (!isRecord(value)) {\n return null;\n }\n const result: AgentGuiWorkbenchComposerOverridesByProvider = {};\n for (const provider of agentGuiWorkbenchProviders) {\n const overrides = normalizeAgentGuiWorkbenchComposerOverrides(\n value[provider]\n );\n if (overrides) {\n result[provider] = overrides;\n }\n }\n return Object.keys(result).length > 0 ? result : null;\n}\n\nfunction normalizeAgentGuiWorkbenchComposerOverridesByAgentTargetId(\n value: unknown\n): AgentGuiWorkbenchComposerOverridesByAgentTargetId | null {\n if (!isRecord(value)) {\n return null;\n }\n const result: AgentGuiWorkbenchComposerOverridesByAgentTargetId = {};\n for (const [rawAgentTargetId, rawOverrides] of Object.entries(value)) {\n const agentTargetId = normalizeOptionalNonEmptyString(rawAgentTargetId);\n if (!agentTargetId) {\n continue;\n }\n const overrides = normalizeAgentGuiWorkbenchComposerOverrides(rawOverrides);\n if (overrides) {\n result[agentTargetId] = overrides;\n }\n }\n return Object.keys(result).length > 0 ? result : null;\n}\n\nfunction normalizeOptionalPositiveNumber(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) && value > 0\n ? Math.round(value)\n : null;\n}\n\nfunction normalizeOptionalNonNegativeNumber(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) && value >= 0\n ? Math.round(value)\n : null;\n}\n\nfunction composerOverridesEqual(\n left: AgentGuiWorkbenchComposerOverrides | null | undefined,\n right: AgentGuiWorkbenchComposerOverrides | null | undefined\n): boolean {\n return (\n (left?.model ?? null) === (right?.model ?? null) &&\n (left?.permissionModeId ?? null) === (right?.permissionModeId ?? null) &&\n (left?.planMode ?? null) === (right?.planMode ?? null) &&\n (left?.reasoningEffort ?? null) === (right?.reasoningEffort ?? null)\n );\n}\n\nfunction composerOverridesByProviderEqual(\n left: AgentGuiWorkbenchComposerOverridesByProvider | null | undefined,\n right: AgentGuiWorkbenchComposerOverridesByProvider | null | undefined\n): boolean {\n for (const provider of agentGuiWorkbenchProviders) {\n if (!composerOverridesEqual(left?.[provider], right?.[provider])) {\n return false;\n }\n }\n return true;\n}\n\nfunction composerOverridesByAgentTargetIdEqual(\n left: AgentGuiWorkbenchComposerOverridesByAgentTargetId | null | undefined,\n right: AgentGuiWorkbenchComposerOverridesByAgentTargetId | null | undefined\n): boolean {\n const leftKeys = Object.keys(left ?? {}).sort();\n const rightKeys = Object.keys(right ?? {}).sort();\n if (leftKeys.length !== rightKeys.length) {\n return false;\n }\n return leftKeys.every(\n (key, index) =>\n key === rightKeys[index] &&\n composerOverridesEqual(left?.[key], right?.[key])\n );\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null;\n}\n"],"mappings":"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","names":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../shared/utils/agentSessionMentionText.ts","../contexts/settings/domain/agentSettings.providerMeta.ts","../shared/agentConversationTitleProjection.ts"],"sourcesContent":["import type { UiLanguage } from \"../../contexts/settings/domain/agentSettings\";\nimport { normalizeAgentTitleText } from \"./agentTitleText.ts\";\nimport {\n isRichTextMentionHref,\n parseRichTextMentionHref\n} from \"@tutti-os/ui-rich-text/core\";\n\nconst MARKDOWN_LINK_PATTERN = /\\[((?:\\\\.|[^\\]\\\\])*)\\]\\(([^)\\s]+)\\)/g;\nconst MARKDOWN_LABEL_ESCAPE_PATTERN = /\\\\([\\\\[\\]()])/g;\nconst SESSION_MENTION_DISPLAY_PREFIX_BY_LANGUAGE: Record<UiLanguage, string> = {\n \"zh-CN\": \"@会话 · \",\n en: \"@session · \"\n};\nconst PLAIN_SESSION_AGENT_LABELS = [\n \"Claude Code\",\n \"Gemini CLI\",\n \"Hermes Agent\",\n \"OpenClaw\",\n \"Nexight\",\n \"Gemini\",\n \"Hermes\",\n \"Codex\"\n] as const;\n\nexport interface FormatAgentSessionMentionTextOptions {\n language?: UiLanguage;\n}\n\nexport function formatAgentSessionMentionText(\n value: string | null | undefined,\n options: FormatAgentSessionMentionTextOptions = {}\n): string {\n const trimmed = value?.trim() ?? \"\";\n if (!trimmed) {\n return \"\";\n }\n const sessionMentionDisplayPrefix = sessionMentionDisplayPrefixForLanguage(\n options.language\n );\n\n const withSessionMentionsNormalized = trimmed.replace(\n MARKDOWN_LINK_PATTERN,\n (fullMatch, rawLabel: string, href: string) => {\n const label = unescapeMarkdownLabel(rawLabel);\n const mention = parseRichTextMentionHref(href, label);\n if (!mention) {\n return isRichTextMentionHref(href) ? label : fullMatch;\n }\n const providerId = mention.providerId.trim().toLowerCase();\n const displayLabel = label || mention.label;\n if (providerId === \"agent-session\") {\n return formatSessionLabel(displayLabel, sessionMentionDisplayPrefix);\n }\n if (providerId === \"workspace-issue\") {\n return formatIssueLabel(displayLabel);\n }\n return displayLabel;\n }\n );\n const normalized = normalizeAgentTitleText(withSessionMentionsNormalized);\n if (isPlainSessionMentionText(normalized, sessionMentionDisplayPrefix)) {\n return formatSessionLabel(normalized, sessionMentionDisplayPrefix);\n }\n return normalized;\n}\n\nfunction isPlainSessionMentionText(\n value: string,\n sessionMentionDisplayPrefix: string\n): boolean {\n const trimmed = value.trim();\n if (\n !trimmed.startsWith(\"@\") ||\n trimmed.startsWith(sessionMentionDisplayPrefix)\n ) {\n return false;\n }\n\n return PLAIN_SESSION_AGENT_LABELS.some((agentLabel) => {\n const ampersandSeparator = ` & ${agentLabel}`;\n const ampersandIndex = trimmed.indexOf(ampersandSeparator);\n if (ampersandIndex > 1) {\n const trailing = trimmed.slice(\n ampersandIndex + ampersandSeparator.length\n );\n if (trailing === \"\" || trailing.startsWith(\" \")) {\n return true;\n }\n }\n\n const dottedSeparator = ` · ${agentLabel} · `;\n return trimmed.indexOf(dottedSeparator) > 1;\n });\n}\n\nfunction sessionMentionDisplayPrefixForLanguage(\n language: UiLanguage | undefined\n): string {\n return SESSION_MENTION_DISPLAY_PREFIX_BY_LANGUAGE[language ?? \"en\"];\n}\n\nfunction formatSessionLabel(\n label: string,\n sessionMentionDisplayPrefix: string\n): string {\n const normalizedLabel = label.trim().replace(/^@+/, \"\").trim();\n return normalizedLabel\n ? `${sessionMentionDisplayPrefix}${normalizedLabel}`\n : label.trim();\n}\n\nfunction formatIssueLabel(label: string): string {\n const normalizedLabel = label.trim().replace(/^@+/, \"\").trim();\n return normalizedLabel ? `@Task · ${normalizedLabel}` : label.trim();\n}\n\nfunction unescapeMarkdownLabel(label: string): string {\n return label.replace(MARKDOWN_LABEL_ESCAPE_PATTERN, \"$1\");\n}\n","import type { AgentProvider } from \"./agentSettings\";\n\nexport const AGENT_PROVIDER_LABEL: Record<AgentProvider, string> = {\n \"claude-code\": \"Claude Code\",\n codex: \"Codex\",\n cursor: \"Cursor\",\n nexight: \"Nexight\",\n opencode: \"OpenCode\",\n gemini: \"Gemini CLI\",\n openclaw: \"OpenClaw\",\n hermes: \"Hermes Agent\"\n};\n\nexport interface AgentProviderCapabilities {\n runtimeObservation: \"jsonl\" | \"provider-api\" | \"none\";\n experimental: boolean;\n}\n\nexport const AGENT_PROVIDER_CAPABILITIES: Record<\n AgentProvider,\n AgentProviderCapabilities\n> = {\n \"claude-code\": {\n runtimeObservation: \"jsonl\",\n experimental: false\n },\n codex: {\n runtimeObservation: \"jsonl\",\n experimental: false\n },\n cursor: {\n runtimeObservation: \"jsonl\",\n experimental: false\n },\n nexight: {\n runtimeObservation: \"jsonl\",\n experimental: false\n },\n opencode: {\n runtimeObservation: \"provider-api\",\n experimental: false\n },\n gemini: {\n runtimeObservation: \"none\",\n experimental: false\n },\n openclaw: {\n runtimeObservation: \"jsonl\",\n experimental: false\n },\n hermes: {\n runtimeObservation: \"jsonl\",\n experimental: false\n }\n};\n","import { AGENT_PROVIDER_LABEL } from \"../contexts/settings/domain/agentSettings.providerMeta.ts\";\nimport type { UiLanguage } from \"../contexts/settings/domain/agentSettings.ts\";\nimport { translateInUiLanguage } from \"../i18n/runtime.ts\";\nimport type { AgentGUIProvider } from \"../types.ts\";\nimport type { WorkspaceAgentActivityTimelineItem } from \"./workspaceAgentActivityTypes.ts\";\nimport { formatAgentSessionMentionText } from \"./utils/agentSessionMentionText.ts\";\nimport { normalizeAgentTitleText } from \"./utils/agentTitleText.ts\";\n\nexport type AgentGUIResolvedProvider = AgentGUIProvider | \"unknown\";\nexport type AgentGUIConversationTitleFallback = \"generic-agent\" | null;\n\nexport interface AgentGUIConversationPlainTitleOptions {\n fallbackAgentLabel?: string;\n language?: UiLanguage;\n}\n\nexport interface AgentGUIConversationTitleMessage {\n id?: number | string | null;\n messageId?: string | null;\n version?: number | null;\n role?: string | null;\n kind?: string | null;\n payload?: {\n content?: unknown;\n displayPrompt?: unknown;\n text?: unknown;\n } | null;\n occurredAtUnixMs?: number | null;\n completedAtUnixMs?: number | null;\n startedAtUnixMs?: number | null;\n}\n\nexport function normalizeAgentGUIProviderIdentity(\n provider: string | null | undefined\n): AgentGUIResolvedProvider {\n switch (provider?.trim().toLowerCase() ?? \"\") {\n case \"claude-code\":\n case \"claude\":\n case \"claude code\":\n return \"claude-code\";\n case \"codex\":\n return \"codex\";\n case \"cursor\":\n case \"cursor-agent\":\n case \"cursor agent\":\n return \"cursor\";\n case \"nexight\":\n case \"tutti\":\n return \"nexight\";\n case \"gemini\":\n return \"gemini\";\n case \"hermes\":\n return \"hermes\";\n case \"openclaw\":\n return \"openclaw\";\n default:\n return \"unknown\";\n }\n}\n\nexport function resolveAgentGUIProviderIdentity(input: {\n sessionProvider?: string | null;\n workspaceSessionProvider?: string | null;\n conversationProvider?: string | null;\n timelineItems?: readonly WorkspaceAgentActivityTimelineItem[];\n}): AgentGUIResolvedProvider {\n const candidates = [\n input.sessionProvider,\n input.workspaceSessionProvider,\n input.conversationProvider,\n timelineProviderHint(input.timelineItems ?? [])\n ];\n for (const candidate of candidates) {\n const normalized = normalizeAgentGUIProviderIdentity(candidate);\n if (normalized !== \"unknown\") {\n return normalized;\n }\n }\n return \"unknown\";\n}\n\nexport function resolveAgentGUIConversationTitle(\n title: string | null | undefined,\n provider: AgentGUIResolvedProvider\n): {\n title: string;\n titleFallback: AgentGUIConversationTitleFallback;\n} {\n const normalizedTitle = stripAgentGUITitleTrailingPeriod(\n normalizeAgentTitleText(title)\n );\n if (normalizedTitle) {\n return {\n title: normalizedTitle,\n titleFallback: null\n };\n }\n if (provider === \"unknown\") {\n return {\n title: \"\",\n titleFallback: \"generic-agent\"\n };\n }\n return {\n title: AGENT_PROVIDER_LABEL[provider],\n titleFallback: null\n };\n}\n\nexport function resolveAgentGUIConversationDisplayTitle(\n input: {\n title: string;\n titleFallback?: AgentGUIConversationTitleFallback;\n },\n fallbackAgentLabel: string\n): string {\n if (input.title) {\n return stripAgentGUITitleTrailingPeriod(\n normalizeAgentTitleText(input.title)\n );\n }\n if (input.titleFallback === \"generic-agent\") {\n return stripAgentGUITitleTrailingPeriod(fallbackAgentLabel);\n }\n return \"\";\n}\n\nexport function formatAgentGUIConversationPlainTitle(\n input: {\n title: string;\n titleFallback?: AgentGUIConversationTitleFallback;\n },\n options: AgentGUIConversationPlainTitleOptions = {}\n): string {\n return formatAgentSessionMentionText(\n resolveAgentGUIConversationDisplayTitle(\n input,\n options.fallbackAgentLabel ?? \"Agent\"\n ),\n {\n language: options.language\n }\n );\n}\n\nexport function resolveAgentGUIDockConversationTitle(input: {\n provider: AgentGUIResolvedProvider;\n title: string;\n titleFallback?: AgentGUIConversationTitleFallback;\n}): string | null {\n return resolveAgentGUIExplicitConversationTitle(input);\n}\n\nexport function resolveAgentGUIExplicitConversationTitle(input: {\n provider: AgentGUIResolvedProvider;\n title: string;\n titleFallback?: AgentGUIConversationTitleFallback;\n}): string | null {\n if (input.titleFallback) {\n return null;\n }\n\n const title = stripAgentGUITitleTrailingPeriod(\n normalizeAgentTitleText(input.title)\n );\n if (!title) {\n return null;\n }\n if (isAgentGUIUntitledTaskTitle(title)) {\n return null;\n }\n\n if (\n input.provider !== \"unknown\" &&\n title === AGENT_PROVIDER_LABEL[input.provider]\n ) {\n return null;\n }\n\n return title;\n}\n\nexport function resolveAgentGUIProviderDisplayLabel(\n provider: string | null | undefined,\n fallbackAgentLabel: string\n): string {\n const resolvedProvider = normalizeAgentGUIProviderIdentity(provider);\n if (resolvedProvider === \"unknown\") {\n return fallbackAgentLabel;\n }\n return AGENT_PROVIDER_LABEL[resolvedProvider];\n}\n\nexport function firstAgentGUIUserMessageTitle(\n messages: readonly AgentGUIConversationTitleMessage[]\n): string {\n const userMessage = [...messages]\n .filter(\n (message) =>\n messageRole(message) === \"user\" && messageText(message).length > 0\n )\n .sort(compareMessagesAscending)[0];\n return userMessage ? messageText(userMessage) : \"\";\n}\n\nfunction messageRole(\n message: AgentGUIConversationTitleMessage\n): \"user\" | \"agent\" | null {\n const role = message.role?.trim().toLowerCase();\n if (role === \"user\") {\n return \"user\";\n }\n if (role === \"assistant\" || role === \"agent\") {\n return \"agent\";\n }\n const kind = message.kind?.trim().toLowerCase() ?? \"\";\n if (kind === \"message.user\") {\n return \"user\";\n }\n if (kind === \"message.assistant\" || kind === \"message.agent\") {\n return \"agent\";\n }\n return null;\n}\n\nfunction messageText(message: AgentGUIConversationTitleMessage): string {\n const payload = message.payload;\n const displayPrompt =\n typeof payload?.displayPrompt === \"string\" ? payload.displayPrompt : \"\";\n const text = typeof payload?.text === \"string\" ? payload.text : \"\";\n const content = typeof payload?.content === \"string\" ? payload.content : \"\";\n return normalizeAgentTitleText(displayPrompt || text || content);\n}\n\nfunction compareMessagesAscending(\n left: AgentGUIConversationTitleMessage,\n right: AgentGUIConversationTitleMessage\n): number {\n const leftTime =\n left.occurredAtUnixMs ??\n left.completedAtUnixMs ??\n left.startedAtUnixMs ??\n 0;\n const rightTime =\n right.occurredAtUnixMs ??\n right.completedAtUnixMs ??\n right.startedAtUnixMs ??\n 0;\n const timeDiff = leftTime - rightTime;\n if (timeDiff !== 0) {\n return timeDiff;\n }\n const sequenceDiff =\n messageSequence(left) - messageSequence(right) ||\n (left.messageId ?? \"\").localeCompare(right.messageId ?? \"\");\n return sequenceDiff;\n}\n\nfunction messageSequence(message: AgentGUIConversationTitleMessage): number {\n const numericId =\n typeof message.id === \"number\" && Number.isFinite(message.id)\n ? message.id\n : 0;\n return message.version ?? numericId;\n}\n\nfunction stripAgentGUITitleTrailingPeriod(title: string): string {\n return title\n .trimEnd()\n .replace(/[.。]+$/u, \"\")\n .trimEnd();\n}\n\nfunction isAgentGUIUntitledTaskTitle(title: string): boolean {\n return localizedAgentGUIUntitledTaskLabels().has(compactTitleText(title));\n}\n\nfunction localizedAgentGUIUntitledTaskLabels(): Set<string> {\n return new Set(\n ([\"en\", \"zh-CN\"] as const)\n .map((language) =>\n compactTitleText(\n translateInUiLanguage(\n language,\n \"agentHost.workspaceAgentsUntitledTask\"\n )\n )\n )\n .filter(Boolean)\n );\n}\n\nfunction timelineProviderHint(\n timelineItems: readonly WorkspaceAgentActivityTimelineItem[]\n): string | null {\n for (const item of timelineItems) {\n if (isUserTimelineItem(item)) {\n continue;\n }\n const normalized = normalizeAgentGUIProviderIdentity(item.actorId);\n if (normalized !== \"unknown\") {\n return normalized;\n }\n }\n return null;\n}\n\nfunction isUserTimelineItem(item: WorkspaceAgentActivityTimelineItem): boolean {\n const role = item.role?.trim().toLowerCase();\n if (role === \"user\") {\n return true;\n }\n const actorType = item.actorType.trim().toLowerCase();\n if (actorType === \"user\") {\n return true;\n }\n return item.itemType.trim().toLowerCase() === \"message.user\";\n}\n\nfunction compactTitleText(value: string): string {\n return value.trim().replace(/\\s+/g, \" \");\n}\n"],"mappings":"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","names":[]}
|