@tutti-os/agent-gui 0.0.60 → 0.0.62
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 +5 -5
- package/dist/agent-message-center/index.js +7 -7
- package/dist/app/renderer/agentactivity.css +13 -1
- package/dist/{chunk-K3UBSTJ5.js → chunk-3KS22CG2.js} +2 -2
- package/dist/{chunk-BB2SVMEV.js → chunk-4UTWOSHP.js} +4 -1
- package/dist/chunk-4UTWOSHP.js.map +1 -0
- package/dist/{chunk-YZ3POK7G.js → chunk-6MUKWI6Z.js} +9 -5
- package/dist/chunk-6MUKWI6Z.js.map +1 -0
- package/dist/{chunk-I5ZIKJVN.js → chunk-7P6CUYQT.js} +2 -2
- package/dist/{chunk-6VVBG4BF.js → chunk-CA25GD5Q.js} +5 -3
- package/dist/chunk-CA25GD5Q.js.map +1 -0
- package/dist/{chunk-4OPTXOOZ.js → chunk-CVSCZ3CK.js} +2 -2
- package/dist/{chunk-2LGUBUEJ.js → chunk-FQQDBBNI.js} +2 -2
- package/dist/{chunk-6TEPDMX6.js → chunk-G6UO6JVM.js} +2 -2
- package/dist/{chunk-MPZ3CW5C.js → chunk-IIVHPXAB.js} +1 -1
- package/dist/chunk-IIVHPXAB.js.map +1 -0
- package/dist/{chunk-AWIZJQXW.js → chunk-K4UUEG7X.js} +14 -8
- package/dist/chunk-K4UUEG7X.js.map +1 -0
- package/dist/{chunk-WNVIKTJK.js → chunk-NZN43XT5.js} +2 -2
- package/dist/{chunk-CZSMZRAV.js → chunk-QC642RAG.js} +4 -4
- package/dist/{chunk-24CUBQKJ.js → chunk-RO6KQD3J.js} +2 -2
- package/dist/{chunk-CUMZV32B.js → chunk-SGXYVGQT.js} +4 -4
- package/dist/{chunk-B6YDXIZW.js → chunk-SW6JCJCO.js} +2 -2
- package/dist/{chunk-74TIEA6X.js → chunk-ZUVEBW5T.js} +2 -2
- package/dist/context-mention-palette/index.js +6 -6
- package/dist/i18n/index.d.ts +4 -2
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +22 -7
- package/dist/index.js +320 -78
- package/dist/index.js.map +1 -1
- package/dist/workbench/contribution.js +5 -5
- package/dist/workbench/index.js +8 -8
- package/dist/workbench/launch.js +2 -2
- package/dist/workbench/sessionTitle.js +3 -3
- package/dist/workbench/state.js +2 -2
- package/dist/workbench/types.d.ts +1 -0
- package/dist/workbench/types.js +1 -1
- package/dist/workspace-agent-generated-files.js +3 -3
- package/package.json +12 -12
- package/dist/chunk-6VVBG4BF.js.map +0 -1
- package/dist/chunk-AWIZJQXW.js.map +0 -1
- package/dist/chunk-BB2SVMEV.js.map +0 -1
- package/dist/chunk-MPZ3CW5C.js.map +0 -1
- package/dist/chunk-YZ3POK7G.js.map +0 -1
- /package/dist/{chunk-K3UBSTJ5.js.map → chunk-3KS22CG2.js.map} +0 -0
- /package/dist/{chunk-I5ZIKJVN.js.map → chunk-7P6CUYQT.js.map} +0 -0
- /package/dist/{chunk-4OPTXOOZ.js.map → chunk-CVSCZ3CK.js.map} +0 -0
- /package/dist/{chunk-2LGUBUEJ.js.map → chunk-FQQDBBNI.js.map} +0 -0
- /package/dist/{chunk-6TEPDMX6.js.map → chunk-G6UO6JVM.js.map} +0 -0
- /package/dist/{chunk-WNVIKTJK.js.map → chunk-NZN43XT5.js.map} +0 -0
- /package/dist/{chunk-CZSMZRAV.js.map → chunk-QC642RAG.js.map} +0 -0
- /package/dist/{chunk-24CUBQKJ.js.map → chunk-RO6KQD3J.js.map} +0 -0
- /package/dist/{chunk-CUMZV32B.js.map → chunk-SGXYVGQT.js.map} +0 -0
- /package/dist/{chunk-B6YDXIZW.js.map → chunk-SW6JCJCO.js.map} +0 -0
- /package/dist/{chunk-74TIEA6X.js.map → chunk-ZUVEBW5T.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -16,14 +16,15 @@ import {
|
|
|
16
16
|
createDisabledPlaceholderAgentGUIProviderTarget,
|
|
17
17
|
createLocalAgentGUIProviderTarget,
|
|
18
18
|
createLocalAgentGUIProviderTargets,
|
|
19
|
+
localAgentGUIAgentTargetId,
|
|
19
20
|
localAgentGUIProviderTargetId,
|
|
20
21
|
normalizeAgentGUIProviderTargets,
|
|
21
22
|
resolveAgentGUIProviderTarget
|
|
22
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-4UTWOSHP.js";
|
|
23
24
|
import {
|
|
24
25
|
AgentInteractivePromptSurface,
|
|
25
26
|
approvalOptionDisplayLabel
|
|
26
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-QC642RAG.js";
|
|
27
28
|
import {
|
|
28
29
|
PLAN_IMPLEMENTATION_ACTION_FEEDBACK,
|
|
29
30
|
PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
|
|
@@ -42,7 +43,7 @@ import {
|
|
|
42
43
|
resolveAgentGUIExplicitConversationTitle,
|
|
43
44
|
resolveAgentGUIProviderDisplayLabel,
|
|
44
45
|
resolveAgentGUIProviderIdentity
|
|
45
|
-
} from "./chunk-
|
|
46
|
+
} from "./chunk-CVSCZ3CK.js";
|
|
46
47
|
import {
|
|
47
48
|
AgentConversationFlow,
|
|
48
49
|
Button,
|
|
@@ -63,14 +64,14 @@ import {
|
|
|
63
64
|
skillTriggerForPrefix,
|
|
64
65
|
toLocalShortDateTime,
|
|
65
66
|
useProjectedAgentConversation
|
|
66
|
-
} from "./chunk-
|
|
67
|
+
} from "./chunk-6MUKWI6Z.js";
|
|
67
68
|
import {
|
|
68
69
|
AgentMessageMarkdown,
|
|
69
70
|
AgentTargetPresentationProvider,
|
|
70
71
|
ZoomableImage,
|
|
71
72
|
cn,
|
|
72
73
|
resolveWorkspaceLinkAction
|
|
73
|
-
} from "./chunk-
|
|
74
|
+
} from "./chunk-SW6JCJCO.js";
|
|
74
75
|
import {
|
|
75
76
|
openAgentEnvPanel
|
|
76
77
|
} from "./chunk-PSLAWU25.js";
|
|
@@ -81,7 +82,7 @@ import {
|
|
|
81
82
|
DEFAULT_AGENT_MENTION_FILTER,
|
|
82
83
|
agentMentionItemKey,
|
|
83
84
|
preloadAgentMentionBrowse
|
|
84
|
-
} from "./chunk-
|
|
85
|
+
} from "./chunk-SGXYVGQT.js";
|
|
85
86
|
import {
|
|
86
87
|
WORKSPACE_AGENT_ACTIVITY_RUNTIME_SESSION_ORIGIN,
|
|
87
88
|
buildWorkspaceAgentActivityListViewModel,
|
|
@@ -91,10 +92,10 @@ import {
|
|
|
91
92
|
isWorkspaceAgentUntitledTask,
|
|
92
93
|
mergeWorkspaceAgentActivityDurableAndOverlayMessages,
|
|
93
94
|
selectWorkspaceAgentActivityOverlayMessages
|
|
94
|
-
} from "./chunk-
|
|
95
|
+
} from "./chunk-7P6CUYQT.js";
|
|
95
96
|
import {
|
|
96
97
|
Spinner
|
|
97
|
-
} from "./chunk-
|
|
98
|
+
} from "./chunk-ZUVEBW5T.js";
|
|
98
99
|
import {
|
|
99
100
|
resolveWorkspaceAgentSessionSortTimeUnixMs
|
|
100
101
|
} from "./chunk-IBIMGLCD.js";
|
|
@@ -105,7 +106,7 @@ import {
|
|
|
105
106
|
mentionItemToAttrs,
|
|
106
107
|
normalizeAgentSessionMentionTitle,
|
|
107
108
|
parseMentionItemFromHref
|
|
108
|
-
} from "./chunk-
|
|
109
|
+
} from "./chunk-FQQDBBNI.js";
|
|
109
110
|
import "./chunk-Y35GDLP2.js";
|
|
110
111
|
import "./chunk-LUGELG5V.js";
|
|
111
112
|
import {
|
|
@@ -136,10 +137,10 @@ import {
|
|
|
136
137
|
agentGuiI18nResources,
|
|
137
138
|
translate,
|
|
138
139
|
useTranslation
|
|
139
|
-
} from "./chunk-
|
|
140
|
+
} from "./chunk-RO6KQD3J.js";
|
|
140
141
|
import "./chunk-PJP5BUU6.js";
|
|
141
142
|
import "./chunk-V4JGVBUN.js";
|
|
142
|
-
import "./chunk-
|
|
143
|
+
import "./chunk-CA25GD5Q.js";
|
|
143
144
|
import {
|
|
144
145
|
AGENT_CONTEXT_MENTION_PROVIDER_IDS
|
|
145
146
|
} from "./chunk-JM24HADP.js";
|
|
@@ -6708,21 +6709,26 @@ var AGENT_PROVIDER_SESSION_NOT_FOUND_FALLBACK_MESSAGE = "The previous agent sess
|
|
|
6708
6709
|
var AGENT_RESUME_SESSION_NOT_LOCAL_FALLBACK_MESSAGE = "The previous agent session is not available on this machine.";
|
|
6709
6710
|
var AGENT_GUI_CAUGHT_ERROR_STACK_LIMIT = 4e3;
|
|
6710
6711
|
var SELECTED_SESSION_NOT_FOUND_RETRY_DELAY_MS = 150;
|
|
6711
|
-
|
|
6712
|
-
|
|
6713
|
-
|
|
6714
|
-
|
|
6715
|
-
|
|
6716
|
-
|
|
6717
|
-
|
|
6718
|
-
}
|
|
6719
|
-
|
|
6720
|
-
|
|
6721
|
-
|
|
6722
|
-
|
|
6723
|
-
|
|
6712
|
+
var rememberComposerDefaultsFields = [
|
|
6713
|
+
"model",
|
|
6714
|
+
"permissionModeId",
|
|
6715
|
+
"reasoningEffort",
|
|
6716
|
+
"speed"
|
|
6717
|
+
];
|
|
6718
|
+
function composerDefaultsPatchFromSettings(touched, finalSettings) {
|
|
6719
|
+
const patch = {};
|
|
6720
|
+
for (const field of rememberComposerDefaultsFields) {
|
|
6721
|
+
if (touched[field] === void 0) {
|
|
6722
|
+
continue;
|
|
6723
|
+
}
|
|
6724
|
+
const touchedValue = normalizeOptionalText2(touched[field]);
|
|
6725
|
+
const finalValue = normalizeOptionalText2(finalSettings[field]);
|
|
6726
|
+
if (touchedValue !== null && finalValue === null) {
|
|
6727
|
+
continue;
|
|
6728
|
+
}
|
|
6729
|
+
patch[field] = finalValue;
|
|
6724
6730
|
}
|
|
6725
|
-
return Object.keys(
|
|
6731
|
+
return Object.keys(patch).length > 0 ? patch : null;
|
|
6726
6732
|
}
|
|
6727
6733
|
function composerTargetDataFromProviderTarget(input) {
|
|
6728
6734
|
const agentTargetId = normalizeOptionalText2(input.target.agentTargetId);
|
|
@@ -13082,8 +13088,12 @@ function useAgentGUINodeController({
|
|
|
13082
13088
|
)
|
|
13083
13089
|
);
|
|
13084
13090
|
void onRememberComposerDefaultsRef.current?.({
|
|
13091
|
+
agentTargetId: targetData.agentTargetId,
|
|
13085
13092
|
provider: targetData.provider,
|
|
13086
|
-
defaults:
|
|
13093
|
+
defaults: composerDefaultsPatchFromSettings(
|
|
13094
|
+
supportedNextSettings,
|
|
13095
|
+
targetSafeMerged
|
|
13096
|
+
)
|
|
13087
13097
|
});
|
|
13088
13098
|
void agentActivityRuntime.trackDraftComposerSettingsChange?.({
|
|
13089
13099
|
workspaceId,
|
|
@@ -13137,6 +13147,14 @@ function useAgentGUINodeController({
|
|
|
13137
13147
|
}
|
|
13138
13148
|
if (nextPermission !== void 0 && nextPermission && nextPermission !== currentPermission && activeSessionState2 !== null) {
|
|
13139
13149
|
sessionSettingsPatch.permissionModeId = normalizePermissionModeId(nextPermission);
|
|
13150
|
+
const turnPhase = activeSessionState2.turnLifecycle?.phase;
|
|
13151
|
+
const isTurnInFlight = turnPhase === "running" || turnPhase === "submitted";
|
|
13152
|
+
if (dataRef.current.provider === "codex" && isTurnInFlight) {
|
|
13153
|
+
onShowMessageRef.current?.(
|
|
13154
|
+
translate("messages.agentPermissionModeAppliesNextTurn"),
|
|
13155
|
+
"info"
|
|
13156
|
+
);
|
|
13157
|
+
}
|
|
13140
13158
|
}
|
|
13141
13159
|
if (Object.keys(sessionSettingsPatch).length > 0 && activeSessionState2 !== null) {
|
|
13142
13160
|
updateAgentSessionViewControlState(
|
|
@@ -13155,6 +13173,46 @@ function useAgentGUINodeController({
|
|
|
13155
13173
|
}
|
|
13156
13174
|
} : existing
|
|
13157
13175
|
);
|
|
13176
|
+
void onRememberComposerDefaultsRef.current?.({
|
|
13177
|
+
agentTargetId: normalizeOptionalText2(dataRef.current.agentTargetId),
|
|
13178
|
+
provider: dataRef.current.provider,
|
|
13179
|
+
defaults: composerDefaultsPatchFromSettings(
|
|
13180
|
+
sessionSettingsPatch,
|
|
13181
|
+
sessionSettingsPatch
|
|
13182
|
+
)
|
|
13183
|
+
});
|
|
13184
|
+
const durableNodeDefaultsPatch = {};
|
|
13185
|
+
for (const field of rememberComposerDefaultsFields) {
|
|
13186
|
+
if (sessionSettingsPatch[field] !== void 0) {
|
|
13187
|
+
durableNodeDefaultsPatch[field] = sessionSettingsPatch[field];
|
|
13188
|
+
}
|
|
13189
|
+
}
|
|
13190
|
+
if (Object.keys(durableNodeDefaultsPatch).length > 0) {
|
|
13191
|
+
const defaultDraftKey = nodeDefaultDraftKey(
|
|
13192
|
+
dataRef.current.provider,
|
|
13193
|
+
dataRef.current.agentTargetId
|
|
13194
|
+
);
|
|
13195
|
+
const storedNodeDefaults = readNodeDefaultDraftSettings({
|
|
13196
|
+
data: dataRef.current,
|
|
13197
|
+
defaultReasoningEffort,
|
|
13198
|
+
drafts: draftSettingsBySessionIdRef.current
|
|
13199
|
+
});
|
|
13200
|
+
const nextNodeDefaults = {
|
|
13201
|
+
...storedNodeDefaults,
|
|
13202
|
+
...durableNodeDefaultsPatch
|
|
13203
|
+
};
|
|
13204
|
+
draftSettingsBySessionIdRef.current = {
|
|
13205
|
+
...draftSettingsBySessionIdRef.current,
|
|
13206
|
+
[defaultDraftKey]: nextNodeDefaults
|
|
13207
|
+
};
|
|
13208
|
+
setDraftSettingsBySessionId((current) => ({
|
|
13209
|
+
...current,
|
|
13210
|
+
[defaultDraftKey]: nextNodeDefaults
|
|
13211
|
+
}));
|
|
13212
|
+
onDataChangeRef.current(
|
|
13213
|
+
(current) => nodeDataFromComposerSettings(current, nextNodeDefaults)
|
|
13214
|
+
);
|
|
13215
|
+
}
|
|
13158
13216
|
if (updatingSessionSettingsIdsRef.current[agentSessionId]) {
|
|
13159
13217
|
const queuedUpdate = queuedComposerSettingsUpdatesRef.current[agentSessionId];
|
|
13160
13218
|
queuedComposerSettingsUpdatesRef.current[agentSessionId] = {
|
|
@@ -14208,10 +14266,6 @@ function useAgentGUINodeController({
|
|
|
14208
14266
|
targetSafeNodeDefaultSettings
|
|
14209
14267
|
)
|
|
14210
14268
|
);
|
|
14211
|
-
void onRememberComposerDefaultsRef.current?.({
|
|
14212
|
-
provider: selectedComposerTargetData.provider,
|
|
14213
|
-
defaults: composerDefaultsFromSettings(targetSafeNodeDefaultSettings)
|
|
14214
|
-
});
|
|
14215
14269
|
}, [
|
|
14216
14270
|
activeConversationId,
|
|
14217
14271
|
providerComposerOptions,
|
|
@@ -14489,11 +14543,68 @@ function useAgentGUINodeController({
|
|
|
14489
14543
|
draftSpeed
|
|
14490
14544
|
]);
|
|
14491
14545
|
const stableComposerSettings = useStableComposerSettingsVM(composerSettings);
|
|
14546
|
+
const resolveDefaultHomeComposerTarget = useCallback4(() => {
|
|
14547
|
+
const defaultTargetId = defaultProviderTargetId?.trim() ?? "";
|
|
14548
|
+
const explicitDefaultTarget = defaultTargetId ? normalizedProviderTargets.find(
|
|
14549
|
+
(target) => target.targetId === defaultTargetId || target.agentTargetId === defaultTargetId
|
|
14550
|
+
) ?? null : null;
|
|
14551
|
+
return explicitDefaultTarget ?? normalizedProviderTargets.find((target) => target.disabled !== true) ?? normalizedProviderTargets[0] ?? null;
|
|
14552
|
+
}, [defaultProviderTargetId, normalizedProviderTargets]);
|
|
14553
|
+
const resetHomeComposerAgentTargetToDefault = useCallback4(() => {
|
|
14554
|
+
if (previewMode) {
|
|
14555
|
+
return;
|
|
14556
|
+
}
|
|
14557
|
+
const nextTarget = resolveDefaultHomeComposerTarget();
|
|
14558
|
+
if (!nextTarget) {
|
|
14559
|
+
return;
|
|
14560
|
+
}
|
|
14561
|
+
const nextTargetIsExplicit = normalizedExplicitProviderTargets.some(
|
|
14562
|
+
(target) => target.provider === nextTarget.provider && target.targetId === nextTarget.targetId && agentGUIProviderTargetRefsEqual(target.ref, nextTarget.ref)
|
|
14563
|
+
);
|
|
14564
|
+
const nextTargetData = composerTargetDataFromProviderTarget({
|
|
14565
|
+
current: dataRef.current,
|
|
14566
|
+
isExplicit: nextTargetIsExplicit,
|
|
14567
|
+
target: nextTarget
|
|
14568
|
+
});
|
|
14569
|
+
setHomeComposerTargetOverride(nextTarget);
|
|
14570
|
+
setIntent({ tag: "home" });
|
|
14571
|
+
isComposerHomeRef.current = true;
|
|
14572
|
+
setIsComposerHome(true);
|
|
14573
|
+
onDataChangeRef.current((current) => {
|
|
14574
|
+
const currentNextTargetData = composerTargetDataFromProviderTarget({
|
|
14575
|
+
current,
|
|
14576
|
+
isExplicit: nextTargetIsExplicit,
|
|
14577
|
+
target: nextTarget
|
|
14578
|
+
});
|
|
14579
|
+
const nextData = {
|
|
14580
|
+
...currentNextTargetData.data,
|
|
14581
|
+
lastActiveAgentSessionId: null
|
|
14582
|
+
};
|
|
14583
|
+
dataRef.current = nextData;
|
|
14584
|
+
return nextData;
|
|
14585
|
+
});
|
|
14586
|
+
dataRef.current = {
|
|
14587
|
+
...nextTargetData.data,
|
|
14588
|
+
lastActiveAgentSessionId: null
|
|
14589
|
+
};
|
|
14590
|
+
if (nextTarget.disabled !== true) {
|
|
14591
|
+
loadComposerOptionsForTarget(nextTargetData, { force: true });
|
|
14592
|
+
}
|
|
14593
|
+
}, [
|
|
14594
|
+
loadComposerOptionsForTarget,
|
|
14595
|
+
normalizedExplicitProviderTargets,
|
|
14596
|
+
previewMode,
|
|
14597
|
+
resolveDefaultHomeComposerTarget
|
|
14598
|
+
]);
|
|
14492
14599
|
const updateConversationFilter = useCallback4(
|
|
14493
14600
|
(filter) => {
|
|
14494
|
-
|
|
14601
|
+
const nextFilter = normalizeAgentGUIConversationFilter(filter);
|
|
14602
|
+
setConversationFilter(nextFilter);
|
|
14603
|
+
if (nextFilter.kind === "all" && activeConversationIdRef.current === null) {
|
|
14604
|
+
resetHomeComposerAgentTargetToDefault();
|
|
14605
|
+
}
|
|
14495
14606
|
},
|
|
14496
|
-
[]
|
|
14607
|
+
[resetHomeComposerAgentTargetToDefault]
|
|
14497
14608
|
);
|
|
14498
14609
|
const selectHomeComposerAgentTarget = useCallback4(
|
|
14499
14610
|
(input) => {
|
|
@@ -14519,7 +14630,14 @@ function useAgentGUINodeController({
|
|
|
14519
14630
|
isExplicit: nextTargetIsExplicit,
|
|
14520
14631
|
target: nextTarget
|
|
14521
14632
|
});
|
|
14633
|
+
const shouldSyncScopedRailFilter = conversationFilterRef.current.kind === "agentTarget";
|
|
14522
14634
|
setHomeComposerTargetOverride(nextTarget);
|
|
14635
|
+
if (shouldSyncScopedRailFilter) {
|
|
14636
|
+
const nextAgentTargetId = nextTarget.agentTargetId?.trim() ?? "";
|
|
14637
|
+
setConversationFilter(
|
|
14638
|
+
nextAgentTargetId ? { kind: "agentTarget", agentTargetId: nextAgentTargetId } : { kind: "all" }
|
|
14639
|
+
);
|
|
14640
|
+
}
|
|
14523
14641
|
const previous = activeConversationIdRef.current;
|
|
14524
14642
|
if (previous) {
|
|
14525
14643
|
void activation.unactivate(previous);
|
|
@@ -14578,12 +14696,12 @@ function useAgentGUINodeController({
|
|
|
14578
14696
|
providerTargets: normalizedProviderTargets,
|
|
14579
14697
|
useStaticCatalog: shouldUseStaticProviderTargets
|
|
14580
14698
|
});
|
|
14581
|
-
if (!nextTarget
|
|
14699
|
+
if (!nextTarget) {
|
|
14582
14700
|
reportAgentGUIConversationFilterTargetUnresolved({
|
|
14583
14701
|
provider: input.provider,
|
|
14584
14702
|
providerTargetId: input.providerTargetId ?? null,
|
|
14585
14703
|
providerTargetCount: normalizedProviderTargets.length,
|
|
14586
|
-
reason:
|
|
14704
|
+
reason: "unresolved",
|
|
14587
14705
|
runtime: agentActivityRuntime,
|
|
14588
14706
|
workspaceId
|
|
14589
14707
|
});
|
|
@@ -14605,6 +14723,34 @@ function useAgentGUINodeController({
|
|
|
14605
14723
|
workspaceId
|
|
14606
14724
|
]
|
|
14607
14725
|
);
|
|
14726
|
+
useEffect4(() => {
|
|
14727
|
+
if (previewMode || providerTargetsLoading || activeConversationId === null || conversationFilter.kind !== "agentTarget" || isLoadingConversations || conversationListState?.initialized !== true) {
|
|
14728
|
+
return;
|
|
14729
|
+
}
|
|
14730
|
+
if (filterAgentGUIConversationSummaries(conversations, conversationFilter).length > 0) {
|
|
14731
|
+
return;
|
|
14732
|
+
}
|
|
14733
|
+
const target = normalizedProviderTargets.find(
|
|
14734
|
+
(candidate) => (candidate.agentTargetId?.trim() ?? "") === conversationFilter.agentTargetId
|
|
14735
|
+
);
|
|
14736
|
+
if (!target) {
|
|
14737
|
+
return;
|
|
14738
|
+
}
|
|
14739
|
+
selectHomeComposerAgentTarget({
|
|
14740
|
+
provider: target.provider,
|
|
14741
|
+
providerTargetId: target.targetId
|
|
14742
|
+
});
|
|
14743
|
+
}, [
|
|
14744
|
+
activeConversationId,
|
|
14745
|
+
conversationFilter,
|
|
14746
|
+
conversationListState?.initialized,
|
|
14747
|
+
conversations,
|
|
14748
|
+
isLoadingConversations,
|
|
14749
|
+
normalizedProviderTargets,
|
|
14750
|
+
previewMode,
|
|
14751
|
+
providerTargetsLoading,
|
|
14752
|
+
selectHomeComposerAgentTarget
|
|
14753
|
+
]);
|
|
14608
14754
|
const stableCreateConversation = useStableControllerEventCallback(createConversation);
|
|
14609
14755
|
const stableSelectHomeComposerAgentTarget = useStableControllerEventCallback(
|
|
14610
14756
|
selectHomeComposerAgentTarget
|
|
@@ -16910,6 +17056,7 @@ var styles3 = {
|
|
|
16910
17056
|
composerHero: "agent-gui-node__composer-hero",
|
|
16911
17057
|
composerFloatingPrompt: "agent-gui-node__composer-floating-prompt",
|
|
16912
17058
|
composerHandoffIcon: "agent-gui-node__composer-handoff-icon",
|
|
17059
|
+
composerHandoffAnimatedIcon: "agent-gui-node__composer-handoff-icon-animated",
|
|
16913
17060
|
composerHandoffMenuContent: "agent-gui-node__composer-handoff-menu-content",
|
|
16914
17061
|
composerHandoffStaticIcon: "agent-gui-node__composer-handoff-icon-static",
|
|
16915
17062
|
composerHandoffTrigger: "agent-gui-node__composer-handoff-trigger",
|
|
@@ -17367,6 +17514,13 @@ import {
|
|
|
17367
17514
|
function permissionModeSelectionPatch(permissionModeId, options) {
|
|
17368
17515
|
return options.clearsPlanMode ? { permissionModeId, planMode: false } : { permissionModeId };
|
|
17369
17516
|
}
|
|
17517
|
+
function resolvePermissionModeControlsDisabled(options) {
|
|
17518
|
+
const liveDuringTurn = options.provider === "claude-code" || options.provider === "codex";
|
|
17519
|
+
if (liveDuringTurn) {
|
|
17520
|
+
return options.isSubmittingPrompt;
|
|
17521
|
+
}
|
|
17522
|
+
return options.isSendingTurn || options.isSubmittingPrompt || options.showStopButton;
|
|
17523
|
+
}
|
|
17370
17524
|
|
|
17371
17525
|
// agent-gui/agentGuiNode/model/composerSettingsMenuModel.ts
|
|
17372
17526
|
function buildComposerModelMenuModel(composerSettings, labels) {
|
|
@@ -20361,6 +20515,8 @@ var handoff_lined_default = "./handoff-lined-4WQUBVG3.svg";
|
|
|
20361
20515
|
// agent-gui/agentGuiNode/AgentComposer.tsx
|
|
20362
20516
|
import { jsx as jsx28, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
20363
20517
|
var USAGE_POPOVER_HOVER_DELAY_MS = 120;
|
|
20518
|
+
var HANDOFF_LOTTIE_PLAYER_SCRIPT_SRC = "https://unpkg.com/@lottiefiles/dotlottie-wc@0.9.14/dist/dotlottie-wc.js";
|
|
20519
|
+
var HANDOFF_LOTTIE_ANIMATION_SRC = "https://lottie.host/03d75946-52e5-4ccf-97df-174919a13ced/Av6piqVmPa.lottie";
|
|
20364
20520
|
var DOCK_COMPOSER_INPUT_MIN_HEIGHT = 56;
|
|
20365
20521
|
var DOCK_COMPOSER_TEXT_LINE_HEIGHT = 24;
|
|
20366
20522
|
var DOCK_COMPOSER_MAX_VISIBLE_TEXT_LINES = 3.5;
|
|
@@ -20653,23 +20809,93 @@ function AgentComposerMaskIcon({
|
|
|
20653
20809
|
);
|
|
20654
20810
|
}
|
|
20655
20811
|
var HANDOFF_SELECT_IDLE_VALUE = "__agent-handoff-idle__";
|
|
20656
|
-
|
|
20657
|
-
|
|
20812
|
+
var handoffLottiePlayerLoadPromise = null;
|
|
20813
|
+
function loadHandoffLottiePlayer() {
|
|
20814
|
+
if (typeof window === "undefined" || typeof document === "undefined") {
|
|
20815
|
+
return Promise.resolve(false);
|
|
20816
|
+
}
|
|
20817
|
+
if (window.customElements?.get("dotlottie-wc")) {
|
|
20818
|
+
return Promise.resolve(true);
|
|
20819
|
+
}
|
|
20820
|
+
if (handoffLottiePlayerLoadPromise) {
|
|
20821
|
+
return handoffLottiePlayerLoadPromise;
|
|
20822
|
+
}
|
|
20823
|
+
handoffLottiePlayerLoadPromise = new Promise((resolve) => {
|
|
20824
|
+
const existingScript = document.querySelector(
|
|
20825
|
+
'script[data-agent-gui-handoff-lottie="true"]'
|
|
20826
|
+
);
|
|
20827
|
+
const script = existingScript ?? document.createElement("script");
|
|
20828
|
+
const handleLoad = () => {
|
|
20829
|
+
resolve(Boolean(window.customElements?.get("dotlottie-wc")));
|
|
20830
|
+
};
|
|
20831
|
+
const handleError = () => {
|
|
20832
|
+
resolve(false);
|
|
20833
|
+
};
|
|
20834
|
+
script.addEventListener("load", handleLoad, { once: true });
|
|
20835
|
+
script.addEventListener("error", handleError, { once: true });
|
|
20836
|
+
if (!existingScript) {
|
|
20837
|
+
script.dataset.agentGuiHandoffLottie = "true";
|
|
20838
|
+
script.src = HANDOFF_LOTTIE_PLAYER_SCRIPT_SRC;
|
|
20839
|
+
script.type = "module";
|
|
20840
|
+
document.head.append(script);
|
|
20841
|
+
}
|
|
20842
|
+
});
|
|
20843
|
+
return handoffLottiePlayerLoadPromise;
|
|
20844
|
+
}
|
|
20845
|
+
function AgentComposerHandoffIcon({
|
|
20846
|
+
disabled,
|
|
20847
|
+
isPlaying
|
|
20848
|
+
}) {
|
|
20849
|
+
const [isLottieReady, setIsLottieReady] = useState11(false);
|
|
20850
|
+
useEffect12(() => {
|
|
20851
|
+
let isMounted = true;
|
|
20852
|
+
void loadHandoffLottiePlayer().then((isReady) => {
|
|
20853
|
+
if (isMounted) {
|
|
20854
|
+
setIsLottieReady(isReady);
|
|
20855
|
+
}
|
|
20856
|
+
});
|
|
20857
|
+
return () => {
|
|
20858
|
+
isMounted = false;
|
|
20859
|
+
};
|
|
20860
|
+
}, []);
|
|
20861
|
+
const shouldShowAnimation = !disabled && isPlaying && isLottieReady;
|
|
20862
|
+
return /* @__PURE__ */ jsxs15(
|
|
20658
20863
|
"span",
|
|
20659
20864
|
{
|
|
20660
|
-
|
|
20661
|
-
|
|
20662
|
-
|
|
20663
|
-
|
|
20664
|
-
|
|
20665
|
-
|
|
20666
|
-
|
|
20667
|
-
|
|
20668
|
-
|
|
20669
|
-
|
|
20670
|
-
|
|
20865
|
+
"aria-hidden": "true",
|
|
20866
|
+
className: AgentGUINode_styles_default.composerHandoffIcon,
|
|
20867
|
+
"data-disabled": disabled ? "true" : void 0,
|
|
20868
|
+
"data-playing": shouldShowAnimation ? "true" : void 0,
|
|
20869
|
+
children: [
|
|
20870
|
+
/* @__PURE__ */ jsx28(
|
|
20871
|
+
"span",
|
|
20872
|
+
{
|
|
20873
|
+
className: AgentGUINode_styles_default.composerHandoffStaticIcon,
|
|
20874
|
+
style: {
|
|
20875
|
+
WebkitMaskImage: `url("${handoff_lined_default}")`,
|
|
20876
|
+
WebkitMaskPosition: "center",
|
|
20877
|
+
WebkitMaskRepeat: "no-repeat",
|
|
20878
|
+
WebkitMaskSize: "contain",
|
|
20879
|
+
maskImage: `url("${handoff_lined_default}")`,
|
|
20880
|
+
maskPosition: "center",
|
|
20881
|
+
maskRepeat: "no-repeat",
|
|
20882
|
+
maskSize: "contain"
|
|
20883
|
+
}
|
|
20884
|
+
}
|
|
20885
|
+
),
|
|
20886
|
+
/* @__PURE__ */ jsx28(
|
|
20887
|
+
"dotlottie-wc",
|
|
20888
|
+
{
|
|
20889
|
+
autoplay: true,
|
|
20890
|
+
className: AgentGUINode_styles_default.composerHandoffAnimatedIcon,
|
|
20891
|
+
"data-active": shouldShowAnimation ? "true" : void 0,
|
|
20892
|
+
loop: true,
|
|
20893
|
+
src: HANDOFF_LOTTIE_ANIMATION_SRC
|
|
20894
|
+
}
|
|
20895
|
+
)
|
|
20896
|
+
]
|
|
20671
20897
|
}
|
|
20672
|
-
)
|
|
20898
|
+
);
|
|
20673
20899
|
}
|
|
20674
20900
|
function AgentComposer({
|
|
20675
20901
|
workspaceId,
|
|
@@ -20756,6 +20982,7 @@ function AgentComposer({
|
|
|
20756
20982
|
);
|
|
20757
20983
|
const [isPaletteOpen, setIsPaletteOpen] = useState11(true);
|
|
20758
20984
|
const [isReviewPickerOpen, setIsReviewPickerOpen] = useState11(false);
|
|
20985
|
+
const [isHandoffIconPlaying, setIsHandoffIconPlaying] = useState11(false);
|
|
20759
20986
|
const [highlightedIndex, setHighlightedIndex] = useState11(0);
|
|
20760
20987
|
const [mentionHighlightedKey, setMentionHighlightedKey] = useState11(null);
|
|
20761
20988
|
const [shouldCenterMentionHighlight, setShouldCenterMentionHighlight] = useState11(false);
|
|
@@ -21050,6 +21277,12 @@ function AgentComposer({
|
|
|
21050
21277
|
setIsSlashStatusPanelOpen(false);
|
|
21051
21278
|
}, []);
|
|
21052
21279
|
const settingsControlsDisabled = isSendingTurn || isSubmittingPrompt || showStopButton;
|
|
21280
|
+
const permissionModeControlsDisabled = resolvePermissionModeControlsDisabled({
|
|
21281
|
+
provider,
|
|
21282
|
+
isSendingTurn,
|
|
21283
|
+
isSubmittingPrompt,
|
|
21284
|
+
showStopButton
|
|
21285
|
+
});
|
|
21053
21286
|
const composerControlsHardDisabled = isSelectedProjectMissing || isSubmittingPrompt || disabled && !isSendingTurn && !showStopButton;
|
|
21054
21287
|
const closeReviewPicker = useCallback9(() => {
|
|
21055
21288
|
setIsReviewPickerOpen(false);
|
|
@@ -21959,13 +22192,17 @@ function AgentComposer({
|
|
|
21959
22192
|
() => providerTargets.filter(Boolean),
|
|
21960
22193
|
[providerTargets]
|
|
21961
22194
|
);
|
|
22195
|
+
const enabledProviderSwitchTargets = useMemo9(
|
|
22196
|
+
() => providerSwitchTargets.filter((target) => target.disabled !== true),
|
|
22197
|
+
[providerSwitchTargets]
|
|
22198
|
+
);
|
|
21962
22199
|
const selectedProviderTargetId = selectedProviderTarget?.targetId ?? `local:${provider}`;
|
|
21963
22200
|
const selectedProviderSwitchTarget = providerSwitchTargets.find(
|
|
21964
22201
|
(target) => target.targetId === selectedProviderTargetId
|
|
21965
22202
|
) ?? providerSwitchTargets.find((target) => target.provider === provider) ?? selectedProviderTarget;
|
|
21966
|
-
const providerMenuTargets = selectedProviderSwitchTarget && !
|
|
22203
|
+
const providerMenuTargets = selectedProviderSwitchTarget && !enabledProviderSwitchTargets.some(
|
|
21967
22204
|
(target) => target.targetId === selectedProviderSwitchTarget.targetId
|
|
21968
|
-
) ? [selectedProviderSwitchTarget, ...
|
|
22205
|
+
) ? [selectedProviderSwitchTarget, ...enabledProviderSwitchTargets] : enabledProviderSwitchTargets;
|
|
21969
22206
|
const handoffMenuTargets = selectedProviderSwitchTarget ? providerMenuTargets.filter((target) => {
|
|
21970
22207
|
if (target.disabled === true) {
|
|
21971
22208
|
return false;
|
|
@@ -22932,6 +23169,18 @@ function AgentComposer({
|
|
|
22932
23169
|
size: "sm",
|
|
22933
23170
|
"aria-label": effectiveHandoffLabel,
|
|
22934
23171
|
title: effectiveHandoffLabel,
|
|
23172
|
+
onBlur: () => {
|
|
23173
|
+
setIsHandoffIconPlaying(false);
|
|
23174
|
+
},
|
|
23175
|
+
onFocus: () => {
|
|
23176
|
+
setIsHandoffIconPlaying(true);
|
|
23177
|
+
},
|
|
23178
|
+
onMouseEnter: () => {
|
|
23179
|
+
setIsHandoffIconPlaying(true);
|
|
23180
|
+
},
|
|
23181
|
+
onMouseLeave: () => {
|
|
23182
|
+
setIsHandoffIconPlaying(false);
|
|
23183
|
+
},
|
|
22935
23184
|
className: cn(
|
|
22936
23185
|
AgentGUINode_styles_default.composerMenuTrigger,
|
|
22937
23186
|
AgentGUINode_styles_default.composerProviderSelect,
|
|
@@ -22939,7 +23188,13 @@ function AgentComposer({
|
|
|
22939
23188
|
"w-auto max-w-[180px] [&>svg:last-child]:hidden"
|
|
22940
23189
|
),
|
|
22941
23190
|
children: /* @__PURE__ */ jsxs15("span", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
22942
|
-
/* @__PURE__ */ jsx28(
|
|
23191
|
+
/* @__PURE__ */ jsx28(
|
|
23192
|
+
AgentComposerHandoffIcon,
|
|
23193
|
+
{
|
|
23194
|
+
disabled: handoffDisabled,
|
|
23195
|
+
isPlaying: isHandoffIconPlaying
|
|
23196
|
+
}
|
|
23197
|
+
),
|
|
22943
23198
|
/* @__PURE__ */ jsx28("span", { className: "min-w-0 truncate", children: effectiveHandoffLabel })
|
|
22944
23199
|
] })
|
|
22945
23200
|
}
|
|
@@ -23164,7 +23419,7 @@ function AgentComposer({
|
|
|
23164
23419
|
AgentPermissionModeDropdown,
|
|
23165
23420
|
{
|
|
23166
23421
|
composerSettings,
|
|
23167
|
-
disabled:
|
|
23422
|
+
disabled: permissionModeControlsDisabled,
|
|
23168
23423
|
previewMode,
|
|
23169
23424
|
labels: {
|
|
23170
23425
|
permissionLabel: labels.permissionLabel,
|
|
@@ -24514,7 +24769,7 @@ function AgentGUINodeView({
|
|
|
24514
24769
|
showProviderRail ? /* @__PURE__ */ jsx31(
|
|
24515
24770
|
"aside",
|
|
24516
24771
|
{
|
|
24517
|
-
className: AgentGUINode_styles_default.providerRailPanel
|
|
24772
|
+
className: `${AgentGUINode_styles_default.providerRailPanel} nodrag tsh-desktop-no-drag`,
|
|
24518
24773
|
"aria-label": labels.providerSwitchLabel,
|
|
24519
24774
|
"aria-hidden": conversationRailCollapsed ? "true" : void 0,
|
|
24520
24775
|
inert: conversationRailCollapsed ? true : void 0,
|
|
@@ -26204,7 +26459,10 @@ function EmptyHeroTitle({
|
|
|
26204
26459
|
}
|
|
26205
26460
|
const providerEnd = providerStart + providerLabel.length;
|
|
26206
26461
|
const selectedProviderTargetId = selectedProviderTarget?.targetId ?? `local:${selectedProviderTarget?.provider ?? ""}`;
|
|
26207
|
-
const
|
|
26462
|
+
const enabledProviderTargets = providerTargets.filter(
|
|
26463
|
+
(target) => target.disabled !== true
|
|
26464
|
+
);
|
|
26465
|
+
const canSwitchProvider = enabledProviderTargets.length > 1 && selectedProviderTarget && onProviderSelect;
|
|
26208
26466
|
const providerName = label.slice(providerStart, providerEnd);
|
|
26209
26467
|
return /* @__PURE__ */ jsxs17(Fragment8, { children: [
|
|
26210
26468
|
label.slice(0, providerStart),
|
|
@@ -26213,10 +26471,10 @@ function EmptyHeroTitle({
|
|
|
26213
26471
|
{
|
|
26214
26472
|
value: selectedProviderTargetId,
|
|
26215
26473
|
onValueChange: (nextTargetId) => {
|
|
26216
|
-
const target =
|
|
26474
|
+
const target = enabledProviderTargets.find(
|
|
26217
26475
|
(candidate) => candidate.targetId === nextTargetId
|
|
26218
26476
|
);
|
|
26219
|
-
if (!target
|
|
26477
|
+
if (!target) {
|
|
26220
26478
|
return;
|
|
26221
26479
|
}
|
|
26222
26480
|
onProviderSelect({
|
|
@@ -26240,42 +26498,25 @@ function EmptyHeroTitle({
|
|
|
26240
26498
|
{
|
|
26241
26499
|
align: "center",
|
|
26242
26500
|
className: cn3(AgentGUINode_styles_default.composerMenuContent, "min-w-[190px]"),
|
|
26243
|
-
children:
|
|
26501
|
+
children: enabledProviderTargets.map((target) => /* @__PURE__ */ jsx31(
|
|
26244
26502
|
SelectItem3,
|
|
26245
26503
|
{
|
|
26246
26504
|
value: target.targetId,
|
|
26247
|
-
className: cn3(
|
|
26248
|
-
AgentGUINode_styles_default.composerMenuItem,
|
|
26249
|
-
"gap-2 data-[disabled]:cursor-not-allowed data-[disabled]:opacity-30 data-[disabled]:text-[var(--text-disabled,var(--text-tertiary))]",
|
|
26250
|
-
target.disabled === true ? "cursor-not-allowed opacity-30" : null
|
|
26251
|
-
),
|
|
26252
|
-
disabled: target.disabled === true,
|
|
26505
|
+
className: cn3(AgentGUINode_styles_default.composerMenuItem, "gap-2"),
|
|
26253
26506
|
children: /* @__PURE__ */ jsxs17("span", { className: "flex min-w-0 items-center gap-1.5", children: [
|
|
26254
26507
|
/* @__PURE__ */ jsx31(
|
|
26255
26508
|
"img",
|
|
26256
26509
|
{
|
|
26257
26510
|
alt: "",
|
|
26258
26511
|
"aria-hidden": "true",
|
|
26259
|
-
className:
|
|
26260
|
-
"size-4 shrink-0 rounded-[4px]",
|
|
26261
|
-
target.disabled === true ? "grayscale opacity-30" : null
|
|
26262
|
-
),
|
|
26512
|
+
className: "size-4 shrink-0 rounded-[4px]",
|
|
26263
26513
|
src: agentGUIProviderIconPresentation(
|
|
26264
26514
|
target.provider,
|
|
26265
26515
|
target.iconUrl
|
|
26266
26516
|
).iconUrl
|
|
26267
26517
|
}
|
|
26268
26518
|
),
|
|
26269
|
-
/* @__PURE__ */ jsx31(
|
|
26270
|
-
"span",
|
|
26271
|
-
{
|
|
26272
|
-
className: cn3(
|
|
26273
|
-
"min-w-0 truncate",
|
|
26274
|
-
target.disabled === true ? "text-[var(--text-disabled,var(--text-tertiary))]" : null
|
|
26275
|
-
),
|
|
26276
|
-
children: target.label
|
|
26277
|
-
}
|
|
26278
|
-
)
|
|
26519
|
+
/* @__PURE__ */ jsx31("span", { className: "min-w-0 truncate", children: target.label })
|
|
26279
26520
|
] })
|
|
26280
26521
|
},
|
|
26281
26522
|
`${target.provider}:${target.targetId}`
|
|
@@ -26877,7 +27118,7 @@ var AgentGUIProviderRail = memo(function AgentGUIProviderRail2({
|
|
|
26877
27118
|
"data-disabled": target.disabled === true ? "true" : void 0,
|
|
26878
27119
|
"data-provider-tile": "true",
|
|
26879
27120
|
"data-selected": providerSelected ? "true" : "false",
|
|
26880
|
-
disabled: previewMode
|
|
27121
|
+
disabled: previewMode,
|
|
26881
27122
|
onClick: () => selectAgentTargetTile(target),
|
|
26882
27123
|
children: /* @__PURE__ */ jsx31("span", { className: AgentGUINode_styles_default.providerRailAvatar, children: /* @__PURE__ */ jsx31(
|
|
26883
27124
|
AgentGUIProviderIconVisual,
|
|
@@ -29993,6 +30234,7 @@ export {
|
|
|
29993
30234
|
getAgentActivityRuntime,
|
|
29994
30235
|
getAgentCustomMentionKind,
|
|
29995
30236
|
getOptionalAgentActivityRuntime,
|
|
30237
|
+
localAgentGUIAgentTargetId,
|
|
29996
30238
|
localAgentGUIProviderTargetId,
|
|
29997
30239
|
normalizeAgentGUIProviderTargets,
|
|
29998
30240
|
preloadAgentMentionBrowse,
|