@tutti-os/agent-gui 0.0.84 → 0.0.86
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/README.md +49 -44
- package/dist/agent-conversation/index.d.ts +2 -2
- package/dist/agent-conversation/index.js +5 -5
- package/dist/agent-message-center/index.js +7 -7
- package/dist/{agentGuiNodeTypes-CmuJ7VDZ.d.ts → agentGuiNodeTypes-fRobgKiP.d.ts} +1 -5
- package/dist/app/renderer/agentactivity.css +7 -0
- package/dist/{chunk-A2JPL5N6.js → chunk-3HARXLAZ.js} +2 -2
- package/dist/{chunk-BEM3KDOJ.js → chunk-45FF4DQU.js} +17 -281
- package/dist/chunk-45FF4DQU.js.map +1 -0
- package/dist/{chunk-UNLTQUPO.js → chunk-4SQNOOJ3.js} +4 -4
- package/dist/{chunk-FIH7IYLX.js → chunk-7FZT2OYT.js} +4 -4
- package/dist/chunk-7FZT2OYT.js.map +1 -0
- package/dist/{chunk-L2ZMLLYL.js → chunk-7LMJXF4R.js} +2 -2
- package/dist/{chunk-DBIJRSFG.js → chunk-A7RA7ORT.js} +104 -45
- package/dist/chunk-A7RA7ORT.js.map +1 -0
- package/dist/{chunk-CVPWQHQH.js → chunk-AOVPGJBC.js} +2 -2
- package/dist/{chunk-BT2DT2P7.js → chunk-GAPTLVII.js} +1 -1
- package/dist/{chunk-BT2DT2P7.js.map → chunk-GAPTLVII.js.map} +1 -1
- package/dist/{chunk-3355GEBI.js → chunk-HOSX5C5V.js} +2 -2
- package/dist/{chunk-CXJEQQR5.js → chunk-KQE5KV2V.js} +2 -2
- package/dist/{chunk-N7EX6XK3.js → chunk-SXDLSEHO.js} +3 -3
- package/dist/{chunk-MQ6WW3CD.js → chunk-U7D7G3UU.js} +2 -2
- package/dist/{chunk-6YLA7R4S.js → chunk-UNO7CEAF.js} +2 -2
- package/dist/{chunk-AA75BOX3.js → chunk-VWXFFSIM.js} +3 -1
- package/dist/chunk-VWXFFSIM.js.map +1 -0
- package/dist/{chunk-HUNUSBQQ.js → chunk-XQUUELKF.js} +2 -2
- package/dist/context-mention-palette/index.js +6 -6
- package/dist/i18n/index.d.ts +2 -0
- package/dist/i18n/index.js +2 -2
- package/dist/index.d.ts +28 -94
- package/dist/index.js +581 -458
- package/dist/index.js.map +1 -1
- package/dist/queued-prompt-runtime.d.ts +2 -2
- package/dist/{types-DUHHejs2.d.ts → types-BvztUbHf.d.ts} +31 -21
- package/dist/workbench/contribution.d.ts +9 -11
- package/dist/workbench/contribution.js +4 -4
- package/dist/workbench/index.d.ts +1 -1
- package/dist/workbench/index.js +7 -7
- package/dist/workbench/launch.d.ts +0 -1
- package/dist/workbench/launch.js +2 -2
- package/dist/workbench/providerCatalog.d.ts +0 -1
- package/dist/workbench/sessionTitle.d.ts +0 -1
- package/dist/workbench/sessionTitle.js +3 -3
- package/dist/workbench/state.d.ts +7 -2
- package/dist/workbench/state.js +3 -1
- package/dist/workbench/types.d.ts +0 -6
- package/dist/workbench/types.js +1 -1
- package/dist/workspace-agent-generated-files.js +3 -3
- package/package.json +14 -14
- package/dist/chunk-AA75BOX3.js.map +0 -1
- package/dist/chunk-BEM3KDOJ.js.map +0 -1
- package/dist/chunk-DBIJRSFG.js.map +0 -1
- package/dist/chunk-FIH7IYLX.js.map +0 -1
- /package/dist/{chunk-A2JPL5N6.js.map → chunk-3HARXLAZ.js.map} +0 -0
- /package/dist/{chunk-UNLTQUPO.js.map → chunk-4SQNOOJ3.js.map} +0 -0
- /package/dist/{chunk-L2ZMLLYL.js.map → chunk-7LMJXF4R.js.map} +0 -0
- /package/dist/{chunk-CVPWQHQH.js.map → chunk-AOVPGJBC.js.map} +0 -0
- /package/dist/{chunk-3355GEBI.js.map → chunk-HOSX5C5V.js.map} +0 -0
- /package/dist/{chunk-CXJEQQR5.js.map → chunk-KQE5KV2V.js.map} +0 -0
- /package/dist/{chunk-N7EX6XK3.js.map → chunk-SXDLSEHO.js.map} +0 -0
- /package/dist/{chunk-MQ6WW3CD.js.map → chunk-U7D7G3UU.js.map} +0 -0
- /package/dist/{chunk-6YLA7R4S.js.map → chunk-UNO7CEAF.js.map} +0 -0
- /package/dist/{chunk-HUNUSBQQ.js.map → chunk-XQUUELKF.js.map} +0 -0
package/dist/index.js
CHANGED
|
@@ -6,33 +6,24 @@ import {
|
|
|
6
6
|
agentGuiDockIconUrl,
|
|
7
7
|
agentGuiDockIconUrls,
|
|
8
8
|
clampAgentGUIConversationRailWidthPx,
|
|
9
|
+
normalizeAgentGUIAgents,
|
|
10
|
+
projectAgentGUIAgentsToInternalTargets,
|
|
9
11
|
resolveAgentGUIConversationRailMaxWidthPx,
|
|
10
12
|
resolveAgentGUIExpandedWindowFrame,
|
|
11
13
|
resolveAgentGuiSessionProviderFlatIconUrl,
|
|
12
14
|
resolveNextAgentGUIConversationRailWidthPx,
|
|
13
15
|
shouldAutoCollapseAgentGUIConversationRail
|
|
14
|
-
} from "./chunk-
|
|
15
|
-
import
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
createDisabledPlaceholderAgentGUIProviderTarget,
|
|
19
|
-
createLocalAgentGUIProviderTarget,
|
|
20
|
-
createLocalAgentGUIProviderTargets,
|
|
21
|
-
createSharedAgentGUIProviderTarget,
|
|
22
|
-
localAgentGUIAgentTargetId,
|
|
23
|
-
localAgentGUIProviderTargetId,
|
|
24
|
-
normalizeAgentGUIProviderTargets,
|
|
25
|
-
resolveAgentGUIProviderTarget
|
|
26
|
-
} from "./chunk-BEM3KDOJ.js";
|
|
27
|
-
import "./chunk-L2ZMLLYL.js";
|
|
28
|
-
import "./chunk-BT2DT2P7.js";
|
|
16
|
+
} from "./chunk-A7RA7ORT.js";
|
|
17
|
+
import "./chunk-45FF4DQU.js";
|
|
18
|
+
import "./chunk-7LMJXF4R.js";
|
|
19
|
+
import "./chunk-GAPTLVII.js";
|
|
29
20
|
import {
|
|
30
21
|
resolveAgentGuiWorkbenchProviderLabel
|
|
31
22
|
} from "./chunk-XW4CVBUH.js";
|
|
32
23
|
import {
|
|
33
24
|
AgentInteractivePromptSurface,
|
|
34
25
|
approvalOptionDisplayLabel
|
|
35
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-SXDLSEHO.js";
|
|
36
27
|
import {
|
|
37
28
|
PLAN_IMPLEMENTATION_ACTION_FEEDBACK,
|
|
38
29
|
PLAN_IMPLEMENTATION_ACTION_IMPLEMENT,
|
|
@@ -51,7 +42,7 @@ import {
|
|
|
51
42
|
resolveAgentGUIExplicitConversationTitle,
|
|
52
43
|
resolveAgentGUIProviderDisplayLabel,
|
|
53
44
|
resolveAgentGUIProviderIdentity
|
|
54
|
-
} from "./chunk-
|
|
45
|
+
} from "./chunk-HOSX5C5V.js";
|
|
55
46
|
import {
|
|
56
47
|
AGENT_PASTED_TEXT_BLOCK_KIND,
|
|
57
48
|
AGENT_PASTED_TEXT_MENTION_KIND,
|
|
@@ -88,14 +79,14 @@ import {
|
|
|
88
79
|
textPromptContent,
|
|
89
80
|
toLocalShortDateTime,
|
|
90
81
|
useProjectedAgentConversation
|
|
91
|
-
} from "./chunk-
|
|
82
|
+
} from "./chunk-7FZT2OYT.js";
|
|
92
83
|
import {
|
|
93
84
|
AgentMessageMarkdown,
|
|
94
85
|
AgentTargetPresentationProvider,
|
|
95
86
|
ZoomableImage,
|
|
96
87
|
cn,
|
|
97
88
|
resolveWorkspaceLinkAction
|
|
98
|
-
} from "./chunk-
|
|
89
|
+
} from "./chunk-XQUUELKF.js";
|
|
99
90
|
import {
|
|
100
91
|
openAgentEnvPanel
|
|
101
92
|
} from "./chunk-PSLAWU25.js";
|
|
@@ -106,12 +97,12 @@ import {
|
|
|
106
97
|
DEFAULT_AGENT_MENTION_FILTER,
|
|
107
98
|
agentMentionItemKey,
|
|
108
99
|
preloadAgentMentionBrowse
|
|
109
|
-
} from "./chunk-
|
|
100
|
+
} from "./chunk-4SQNOOJ3.js";
|
|
110
101
|
import {
|
|
111
102
|
buildWorkspaceAgentActivityListViewModel,
|
|
112
103
|
isWorkspaceAgentUntitledTask
|
|
113
|
-
} from "./chunk-
|
|
114
|
-
import "./chunk-
|
|
104
|
+
} from "./chunk-3HARXLAZ.js";
|
|
105
|
+
import "./chunk-AOVPGJBC.js";
|
|
115
106
|
import {
|
|
116
107
|
resolveWorkspaceAgentSessionSortTimeUnixMs
|
|
117
108
|
} from "./chunk-IBIMGLCD.js";
|
|
@@ -125,7 +116,7 @@ import {
|
|
|
125
116
|
mentionItemToAttrs,
|
|
126
117
|
normalizeAgentSessionMentionTitle,
|
|
127
118
|
parseMentionItemFromHref
|
|
128
|
-
} from "./chunk-
|
|
119
|
+
} from "./chunk-KQE5KV2V.js";
|
|
129
120
|
import "./chunk-Y35GDLP2.js";
|
|
130
121
|
import "./chunk-LUGELG5V.js";
|
|
131
122
|
import {
|
|
@@ -166,14 +157,14 @@ import {
|
|
|
166
157
|
agentGuiI18nResources,
|
|
167
158
|
translate,
|
|
168
159
|
useTranslation
|
|
169
|
-
} from "./chunk-
|
|
160
|
+
} from "./chunk-U7D7G3UU.js";
|
|
170
161
|
import "./chunk-PJP5BUU6.js";
|
|
171
162
|
import {
|
|
172
163
|
agentColorfulUrl,
|
|
173
164
|
cursorColorfulUrl,
|
|
174
165
|
normalizeManagedAgentProvider
|
|
175
166
|
} from "./chunk-XDV4ZRVK.js";
|
|
176
|
-
import "./chunk-
|
|
167
|
+
import "./chunk-VWXFFSIM.js";
|
|
177
168
|
import {
|
|
178
169
|
AGENT_CONTEXT_MENTION_PROVIDER_IDS
|
|
179
170
|
} from "./chunk-JM24HADP.js";
|
|
@@ -2374,6 +2365,169 @@ var DEFAULT_AGENT_SETTINGS = {
|
|
|
2374
2365
|
hideWorktreeMismatchDropWarning: false
|
|
2375
2366
|
};
|
|
2376
2367
|
|
|
2368
|
+
// providerTargets.ts
|
|
2369
|
+
var agentGUIProviderTargetStaticLabels = {
|
|
2370
|
+
"claude-code": "Claude Code",
|
|
2371
|
+
codex: "Codex",
|
|
2372
|
+
cursor: "Cursor",
|
|
2373
|
+
hermes: "Hermes",
|
|
2374
|
+
nexight: "Tutti Agent",
|
|
2375
|
+
openclaw: "OpenClaw",
|
|
2376
|
+
opencode: "Open Code",
|
|
2377
|
+
"tutti-agent": "Tutti Agent"
|
|
2378
|
+
};
|
|
2379
|
+
var agentGUIDefaultTargetProviders = [
|
|
2380
|
+
"codex",
|
|
2381
|
+
"claude-code",
|
|
2382
|
+
"cursor",
|
|
2383
|
+
"tutti-agent",
|
|
2384
|
+
"opencode",
|
|
2385
|
+
"hermes",
|
|
2386
|
+
"openclaw"
|
|
2387
|
+
];
|
|
2388
|
+
var agentGUIDisabledPlaceholderProviders = [
|
|
2389
|
+
"hermes",
|
|
2390
|
+
"openclaw"
|
|
2391
|
+
];
|
|
2392
|
+
function createLocalAgentGUIProviderTarget(provider) {
|
|
2393
|
+
const targetId = localAgentGUIProviderTargetId(provider);
|
|
2394
|
+
const agentTargetId = localAgentGUIAgentTargetId(provider);
|
|
2395
|
+
return {
|
|
2396
|
+
targetId,
|
|
2397
|
+
...agentTargetId ? { agentTargetId } : {},
|
|
2398
|
+
provider,
|
|
2399
|
+
ref: {
|
|
2400
|
+
kind: "local",
|
|
2401
|
+
provider
|
|
2402
|
+
},
|
|
2403
|
+
label: agentGUIProviderTargetStaticLabels[provider] ?? provider
|
|
2404
|
+
};
|
|
2405
|
+
}
|
|
2406
|
+
function createDisabledPlaceholderAgentGUIProviderTarget(provider) {
|
|
2407
|
+
return {
|
|
2408
|
+
...createLocalAgentGUIProviderTarget(provider),
|
|
2409
|
+
disabled: true
|
|
2410
|
+
};
|
|
2411
|
+
}
|
|
2412
|
+
function createStaticAgentGUIProviderTargets(providers = agentGUIDefaultTargetProviders, options) {
|
|
2413
|
+
const disabledProviders = new Set(
|
|
2414
|
+
options?.includeDisabledPlaceholders === true ? agentGUIDisabledPlaceholderProviders : []
|
|
2415
|
+
);
|
|
2416
|
+
return providers.map(
|
|
2417
|
+
(provider) => disabledProviders.has(provider) ? createDisabledPlaceholderAgentGUIProviderTarget(provider) : createLocalAgentGUIProviderTarget(provider)
|
|
2418
|
+
);
|
|
2419
|
+
}
|
|
2420
|
+
function localAgentGUIProviderTargetId(provider) {
|
|
2421
|
+
return `local:${provider}`;
|
|
2422
|
+
}
|
|
2423
|
+
function localAgentGUIAgentTargetId(provider) {
|
|
2424
|
+
switch (provider) {
|
|
2425
|
+
case "codex":
|
|
2426
|
+
return "local:codex";
|
|
2427
|
+
case "claude-code":
|
|
2428
|
+
return "local:claude-code";
|
|
2429
|
+
case "tutti-agent":
|
|
2430
|
+
return "local:tutti-agent";
|
|
2431
|
+
case "cursor":
|
|
2432
|
+
return "local:cursor";
|
|
2433
|
+
case "hermes":
|
|
2434
|
+
return "local:hermes";
|
|
2435
|
+
case "nexight":
|
|
2436
|
+
return "local:nexight";
|
|
2437
|
+
case "openclaw":
|
|
2438
|
+
return "local:openclaw";
|
|
2439
|
+
case "opencode":
|
|
2440
|
+
return "local:opencode";
|
|
2441
|
+
default:
|
|
2442
|
+
return null;
|
|
2443
|
+
}
|
|
2444
|
+
}
|
|
2445
|
+
function normalizeAgentGUIProviderTargets(targets, options) {
|
|
2446
|
+
const includeDisabledPlaceholders = options?.includeDisabledPlaceholders === true;
|
|
2447
|
+
const useStaticCatalog = options?.useStaticCatalog !== false;
|
|
2448
|
+
const source = targets && targets.length > 0 ? targets : [];
|
|
2449
|
+
const normalizedTargets = [];
|
|
2450
|
+
const seenTargetKeys = /* @__PURE__ */ new Set();
|
|
2451
|
+
const seenProviders = /* @__PURE__ */ new Set();
|
|
2452
|
+
for (const target of source) {
|
|
2453
|
+
const normalized = normalizeAgentGUIProviderTarget(target);
|
|
2454
|
+
if (!normalized) {
|
|
2455
|
+
continue;
|
|
2456
|
+
}
|
|
2457
|
+
const dedupeKey = `${normalized.provider}\0${normalized.targetId}`;
|
|
2458
|
+
if (seenTargetKeys.has(dedupeKey)) {
|
|
2459
|
+
continue;
|
|
2460
|
+
}
|
|
2461
|
+
seenTargetKeys.add(dedupeKey);
|
|
2462
|
+
seenProviders.add(normalized.provider);
|
|
2463
|
+
normalizedTargets.push(normalized);
|
|
2464
|
+
}
|
|
2465
|
+
if (includeDisabledPlaceholders && normalizedTargets.length > 0) {
|
|
2466
|
+
for (const provider of agentGUIDisabledPlaceholderProviders) {
|
|
2467
|
+
if (seenProviders.has(provider)) {
|
|
2468
|
+
continue;
|
|
2469
|
+
}
|
|
2470
|
+
normalizedTargets.push(
|
|
2471
|
+
createDisabledPlaceholderAgentGUIProviderTarget(provider)
|
|
2472
|
+
);
|
|
2473
|
+
}
|
|
2474
|
+
}
|
|
2475
|
+
return normalizedTargets.length > 0 || !useStaticCatalog ? normalizedTargets : createStaticAgentGUIProviderTargets(void 0, {
|
|
2476
|
+
includeDisabledPlaceholders
|
|
2477
|
+
});
|
|
2478
|
+
}
|
|
2479
|
+
function normalizeAgentGUIProviderTarget(target) {
|
|
2480
|
+
const {
|
|
2481
|
+
targetId: _targetId,
|
|
2482
|
+
agentTargetId: _agentTargetId,
|
|
2483
|
+
provider: _provider,
|
|
2484
|
+
ref: _ref,
|
|
2485
|
+
label: _label,
|
|
2486
|
+
badge,
|
|
2487
|
+
description,
|
|
2488
|
+
iconUrl,
|
|
2489
|
+
ownerLabel,
|
|
2490
|
+
unavailableReason,
|
|
2491
|
+
...rest
|
|
2492
|
+
} = target;
|
|
2493
|
+
const targetId = target.targetId.trim();
|
|
2494
|
+
const agentTargetId = target.agentTargetId?.trim();
|
|
2495
|
+
const label = target.label.trim();
|
|
2496
|
+
const kind = typeof target.ref.kind === "string" ? target.ref.kind.trim() : "";
|
|
2497
|
+
if (!targetId || !label || !kind || target.ref.provider !== target.provider) {
|
|
2498
|
+
return null;
|
|
2499
|
+
}
|
|
2500
|
+
const normalizedBadge = normalizeAgentGUIProviderTargetBadge(badge);
|
|
2501
|
+
return {
|
|
2502
|
+
...rest,
|
|
2503
|
+
targetId,
|
|
2504
|
+
...agentTargetId ? { agentTargetId } : {},
|
|
2505
|
+
provider: target.provider,
|
|
2506
|
+
ref: {
|
|
2507
|
+
...target.ref,
|
|
2508
|
+
kind,
|
|
2509
|
+
provider: target.provider
|
|
2510
|
+
},
|
|
2511
|
+
label,
|
|
2512
|
+
...normalizedBadge ? { badge: normalizedBadge } : {},
|
|
2513
|
+
...description?.trim() ? { description: description.trim() } : {},
|
|
2514
|
+
...iconUrl?.trim() ? { iconUrl: iconUrl.trim() } : {},
|
|
2515
|
+
...ownerLabel?.trim() ? { ownerLabel: ownerLabel.trim() } : {},
|
|
2516
|
+
...unavailableReason?.trim() ? { unavailableReason: unavailableReason.trim() } : {}
|
|
2517
|
+
};
|
|
2518
|
+
}
|
|
2519
|
+
function normalizeAgentGUIProviderTargetBadge(badge) {
|
|
2520
|
+
const iconUrl = badge?.iconUrl?.trim() ?? "";
|
|
2521
|
+
if (!iconUrl) {
|
|
2522
|
+
return null;
|
|
2523
|
+
}
|
|
2524
|
+
const label = badge?.label?.trim() ?? "";
|
|
2525
|
+
return {
|
|
2526
|
+
iconUrl,
|
|
2527
|
+
...label ? { label } : {}
|
|
2528
|
+
};
|
|
2529
|
+
}
|
|
2530
|
+
|
|
2377
2531
|
// agent-gui/agentGuiNode/model/agentGuiConversationFilter.ts
|
|
2378
2532
|
function createAgentGUIConversationFilterState(filter = { kind: "all" }) {
|
|
2379
2533
|
return {
|
|
@@ -6860,7 +7014,7 @@ function composerTargetDataFromProviderTarget(input) {
|
|
|
6860
7014
|
const currentAgentTargetId = normalizeOptionalText2(
|
|
6861
7015
|
input.current.agentTargetId
|
|
6862
7016
|
);
|
|
6863
|
-
const canPromoteLegacyComposerOverrides = agentTargetId !== null && currentAgentTargetId === null &&
|
|
7017
|
+
const canPromoteLegacyComposerOverrides = agentTargetId !== null && currentAgentTargetId === null && input.current.provider === input.target.provider && input.current.composerOverrides != null && !input.current.composerOverridesByAgentTargetId?.[agentTargetId];
|
|
6864
7018
|
const composerOverridesByAgentTargetId = canPromoteLegacyComposerOverrides ? {
|
|
6865
7019
|
...input.current.composerOverridesByAgentTargetId ?? {},
|
|
6866
7020
|
[agentTargetId]: input.current.composerOverrides
|
|
@@ -6869,15 +7023,11 @@ function composerTargetDataFromProviderTarget(input) {
|
|
|
6869
7023
|
return {
|
|
6870
7024
|
agentTargetId,
|
|
6871
7025
|
provider: input.target.provider,
|
|
6872
|
-
providerTargetId: null,
|
|
6873
|
-
providerTargetRef: null,
|
|
6874
7026
|
targetId: input.target.targetId,
|
|
6875
7027
|
data: {
|
|
6876
7028
|
...input.current,
|
|
6877
7029
|
provider: input.target.provider,
|
|
6878
7030
|
agentTargetId,
|
|
6879
|
-
providerTargetId: null,
|
|
6880
|
-
providerTargetRef: null,
|
|
6881
7031
|
composerOverrides: canPromoteLegacyComposerOverrides ? null : currentTargetIdentityChanged ? null : input.current.composerOverrides,
|
|
6882
7032
|
composerOverridesByAgentTargetId
|
|
6883
7033
|
}
|
|
@@ -6885,7 +7035,7 @@ function composerTargetDataFromProviderTarget(input) {
|
|
|
6885
7035
|
}
|
|
6886
7036
|
function isExplicitAgentGUIProviderTarget(target, explicitTargets) {
|
|
6887
7037
|
return explicitTargets.some(
|
|
6888
|
-
(candidate) => candidate.
|
|
7038
|
+
(candidate) => candidate.agentTargetId === target.agentTargetId
|
|
6889
7039
|
);
|
|
6890
7040
|
}
|
|
6891
7041
|
function findAgentGUIDirectoryTarget(directory, agentTargetId) {
|
|
@@ -6896,21 +7046,26 @@ function findAgentGUIDirectoryTarget(directory, agentTargetId) {
|
|
|
6896
7046
|
(target) => normalizeOptionalText2(target.agentTargetId) === agentTargetId
|
|
6897
7047
|
);
|
|
6898
7048
|
}
|
|
7049
|
+
function resolveAgentGUIDirectorySelection(input) {
|
|
7050
|
+
const agentTargetId = normalizeOptionalText2(input.agentTargetId);
|
|
7051
|
+
if (agentTargetId) {
|
|
7052
|
+
return findAgentGUIDirectoryTarget(input.targets, agentTargetId) ?? null;
|
|
7053
|
+
}
|
|
7054
|
+
const providerTargets = input.provider ? input.targets.filter((target) => target.provider === input.provider) : [];
|
|
7055
|
+
return providerTargets.find((target) => target.disabled !== true) ?? providerTargets[0] ?? input.targets.find((target) => target.disabled !== true) ?? input.targets[0] ?? null;
|
|
7056
|
+
}
|
|
6899
7057
|
function composerTargetDataFromNodeData(data, directory) {
|
|
6900
7058
|
const foreignKeyAgentTargetId = normalizeOptionalText2(data.agentTargetId);
|
|
6901
|
-
const lookupAgentTargetId = foreignKeyAgentTargetId ?? localAgentGUIAgentTargetId(data.provider);
|
|
6902
7059
|
const directoryTarget = findAgentGUIDirectoryTarget(
|
|
6903
7060
|
directory,
|
|
6904
|
-
|
|
7061
|
+
foreignKeyAgentTargetId
|
|
6905
7062
|
);
|
|
6906
7063
|
const agentTargetId = normalizeOptionalText2(directoryTarget?.agentTargetId) ?? foreignKeyAgentTargetId;
|
|
6907
7064
|
const provider = directoryTarget?.provider ?? data.provider;
|
|
6908
7065
|
return {
|
|
6909
7066
|
agentTargetId,
|
|
6910
7067
|
provider,
|
|
6911
|
-
|
|
6912
|
-
providerTargetRef: null,
|
|
6913
|
-
targetId: directoryTarget?.targetId ?? agentTargetId ?? `local:${provider}`,
|
|
7068
|
+
targetId: directoryTarget?.targetId ?? agentTargetId ?? "__missing__",
|
|
6914
7069
|
data: directoryTarget && directoryTarget.provider !== data.provider ? { ...data, provider } : data
|
|
6915
7070
|
};
|
|
6916
7071
|
}
|
|
@@ -6920,18 +7075,17 @@ function resolveActiveSessionComposerTarget(input) {
|
|
|
6920
7075
|
if (input.directoryLoading) {
|
|
6921
7076
|
return { status: "loading", target, missingAgentTargetId: null };
|
|
6922
7077
|
}
|
|
6923
|
-
const resolveKey = foreignKey ?? localAgentGUIAgentTargetId(input.data.provider);
|
|
6924
7078
|
const directoryTarget = findAgentGUIDirectoryTarget(
|
|
6925
7079
|
input.directory,
|
|
6926
|
-
|
|
7080
|
+
foreignKey
|
|
6927
7081
|
);
|
|
6928
7082
|
if (directoryTarget) {
|
|
6929
7083
|
return { status: "resolved", target, missingAgentTargetId: null };
|
|
6930
7084
|
}
|
|
6931
|
-
return { status: "missing", target, missingAgentTargetId:
|
|
7085
|
+
return { status: "missing", target, missingAgentTargetId: foreignKey };
|
|
6932
7086
|
}
|
|
6933
7087
|
function agentGUINodeDataHasComposerTarget(data) {
|
|
6934
|
-
return normalizeOptionalText2(data.agentTargetId) !== null
|
|
7088
|
+
return normalizeOptionalText2(data.agentTargetId) !== null;
|
|
6935
7089
|
}
|
|
6936
7090
|
function composerOptionsForTarget(input) {
|
|
6937
7091
|
if (!input.target.agentTargetId) {
|
|
@@ -6985,7 +7139,7 @@ function sanitizeComposerSettingsForTarget(input) {
|
|
|
6985
7139
|
return sanitizeComposerSettingsForOptions(input.settings, input.options);
|
|
6986
7140
|
}
|
|
6987
7141
|
function agentGUIProviderTargetsEqual(left, right) {
|
|
6988
|
-
return left.
|
|
7142
|
+
return (left.agentTargetId ?? left.targetId) === (right.agentTargetId ?? right.targetId);
|
|
6989
7143
|
}
|
|
6990
7144
|
function reportAgentGUIDiagnostic(runtime, input) {
|
|
6991
7145
|
const reportDiagnostic = runtime.reportDiagnostic;
|
|
@@ -7037,9 +7191,9 @@ function showAgentGUIControllerErrorToast(hostToast, message) {
|
|
|
7037
7191
|
function reportAgentGUIConversationFilterTargetUnresolved(input) {
|
|
7038
7192
|
reportAgentGUIDiagnostic(input.runtime, {
|
|
7039
7193
|
details: {
|
|
7194
|
+
agentTargetId: input.agentTargetId,
|
|
7040
7195
|
provider: input.provider,
|
|
7041
7196
|
providerTargetCount: input.providerTargetCount,
|
|
7042
|
-
providerTargetId: input.providerTargetId,
|
|
7043
7197
|
reason: input.reason
|
|
7044
7198
|
},
|
|
7045
7199
|
event: "agent.gui.conversation_filter.target_unresolved",
|
|
@@ -8158,20 +8312,6 @@ function normalizeOptionalText2(value) {
|
|
|
8158
8312
|
const trimmed = value.trim();
|
|
8159
8313
|
return trimmed ? trimmed : null;
|
|
8160
8314
|
}
|
|
8161
|
-
function resolveSameProviderActiveSessionModel(input) {
|
|
8162
|
-
const agentSessionId = normalizeOptionalText2(input.agentSessionId);
|
|
8163
|
-
if (agentSessionId === null) {
|
|
8164
|
-
return null;
|
|
8165
|
-
}
|
|
8166
|
-
const runtimeSession = input.runtime.getSnapshot(input.workspaceId).sessions.find(
|
|
8167
|
-
(candidate) => candidate.agentSessionId.trim() === agentSessionId
|
|
8168
|
-
) ?? null;
|
|
8169
|
-
const activeProvider = normalizeOptionalText2(runtimeSession?.provider) ?? normalizeOptionalText2(input.activeProvider);
|
|
8170
|
-
if (activeProvider !== input.provider) {
|
|
8171
|
-
return null;
|
|
8172
|
-
}
|
|
8173
|
-
return normalizeOptionalText2(input.sessionState?.settings?.model) ?? normalizeOptionalText2(runtimeSession?.model);
|
|
8174
|
-
}
|
|
8175
8315
|
function normalizeOptionalPrompt(value) {
|
|
8176
8316
|
return typeof value === "string" ? value.trim() : "";
|
|
8177
8317
|
}
|
|
@@ -9007,16 +9147,6 @@ function normalizedPositiveNumber2(value) {
|
|
|
9007
9147
|
function timelineItemTime(item) {
|
|
9008
9148
|
return item.occurredAtUnixMs ?? item.createdAtUnixMs ?? 0;
|
|
9009
9149
|
}
|
|
9010
|
-
var emptyComingSoonProviders = [];
|
|
9011
|
-
function applyComingSoonProviderTargets(targets, comingSoonProviders) {
|
|
9012
|
-
if (comingSoonProviders.length === 0) {
|
|
9013
|
-
return targets;
|
|
9014
|
-
}
|
|
9015
|
-
const comingSoon = new Set(comingSoonProviders);
|
|
9016
|
-
return targets.map(
|
|
9017
|
-
(target) => comingSoon.has(target.provider) && target.disabled !== true ? { ...target, disabled: true } : target
|
|
9018
|
-
);
|
|
9019
|
-
}
|
|
9020
9150
|
function useAgentGUINodeController({
|
|
9021
9151
|
nodeId,
|
|
9022
9152
|
workspaceId,
|
|
@@ -9026,10 +9156,8 @@ function useAgentGUINodeController({
|
|
|
9026
9156
|
data,
|
|
9027
9157
|
providerTargets,
|
|
9028
9158
|
providerTargetsLoading = false,
|
|
9029
|
-
providerRailMode = "catalog",
|
|
9030
|
-
comingSoonProviders,
|
|
9031
9159
|
providerReadinessGates = null,
|
|
9032
|
-
|
|
9160
|
+
defaultAgentTargetId = null,
|
|
9033
9161
|
openSessionRequest = null,
|
|
9034
9162
|
prefillPromptRequest = null,
|
|
9035
9163
|
previewMode = false,
|
|
@@ -9058,42 +9186,16 @@ function useAgentGUINodeController({
|
|
|
9058
9186
|
const agentQueuedPromptRuntime = useAgentQueuedPromptRuntime();
|
|
9059
9187
|
const agentHostApi = useAgentHostApi();
|
|
9060
9188
|
const agentActivitySnapshot = useAgentActivitySnapshot(workspaceId);
|
|
9061
|
-
const
|
|
9062
|
-
() =>
|
|
9063
|
-
|
|
9064
|
-
|
|
9065
|
-
|
|
9066
|
-
|
|
9067
|
-
|
|
9068
|
-
|
|
9069
|
-
|
|
9070
|
-
|
|
9071
|
-
return isExactProviderRailMode ? normalized : applyComingSoonProviderTargets(
|
|
9072
|
-
normalized,
|
|
9073
|
-
normalizedComingSoonProviders
|
|
9074
|
-
);
|
|
9075
|
-
}, [isExactProviderRailMode, normalizedComingSoonProviders, providerTargets]);
|
|
9076
|
-
const normalizedProviderTargets = useMemo3(() => {
|
|
9077
|
-
if (providerTargetsLoading) {
|
|
9078
|
-
return [];
|
|
9079
|
-
}
|
|
9080
|
-
if (!isExactProviderRailMode && (providerTargets === void 0 || normalizedExplicitProviderTargets.length === 0)) {
|
|
9081
|
-
return applyComingSoonProviderTargets(
|
|
9082
|
-
normalizeAgentGUIProviderTargets(null, {
|
|
9083
|
-
includeDisabledPlaceholders: true
|
|
9084
|
-
}),
|
|
9085
|
-
normalizedComingSoonProviders
|
|
9086
|
-
);
|
|
9087
|
-
}
|
|
9088
|
-
return normalizedExplicitProviderTargets;
|
|
9089
|
-
}, [
|
|
9090
|
-
isExactProviderRailMode,
|
|
9091
|
-
normalizedExplicitProviderTargets,
|
|
9092
|
-
normalizedComingSoonProviders,
|
|
9093
|
-
providerTargets,
|
|
9094
|
-
providerTargetsLoading
|
|
9095
|
-
]);
|
|
9096
|
-
const shouldUseStaticProviderTargets = !isExactProviderRailMode && !providerTargetsLoading && (providerTargets === void 0 || normalizedExplicitProviderTargets.length === 0);
|
|
9189
|
+
const normalizedExplicitProviderTargets = useMemo3(
|
|
9190
|
+
() => normalizeAgentGUIProviderTargets(providerTargets, {
|
|
9191
|
+
// AgentGUINode always passes the projected `/agents` array, including
|
|
9192
|
+
// an explicit empty array. The undefined branch exists only for direct
|
|
9193
|
+
// package-internal controller harnesses and legacy tests.
|
|
9194
|
+
useStaticCatalog: providerTargets === void 0
|
|
9195
|
+
}),
|
|
9196
|
+
[providerTargets]
|
|
9197
|
+
);
|
|
9198
|
+
const normalizedProviderTargets = providerTargetsLoading ? [] : normalizedExplicitProviderTargets;
|
|
9097
9199
|
const handoffProviderTargets = useMemo3(
|
|
9098
9200
|
() => providerTargetsLoading ? [] : normalizedExplicitProviderTargets.filter(
|
|
9099
9201
|
(target) => target.disabled !== true
|
|
@@ -9101,14 +9203,10 @@ function useAgentGUINodeController({
|
|
|
9101
9203
|
[normalizedExplicitProviderTargets, providerTargetsLoading]
|
|
9102
9204
|
);
|
|
9103
9205
|
const selectedProviderTarget = useMemo3(() => {
|
|
9104
|
-
const
|
|
9105
|
-
|
|
9106
|
-
|
|
9107
|
-
|
|
9108
|
-
providerTargetId: data.providerTargetId,
|
|
9109
|
-
providerTargets: normalizedProviderTargets,
|
|
9110
|
-
useStaticCatalog: shouldUseStaticProviderTargets
|
|
9111
|
-
});
|
|
9206
|
+
const selectedAgentTargetId = normalizeOptionalText2(data.agentTargetId) ?? normalizeOptionalText2(defaultAgentTargetId);
|
|
9207
|
+
const resolved = normalizedProviderTargets.find(
|
|
9208
|
+
(target) => target.agentTargetId === selectedAgentTargetId
|
|
9209
|
+
) ?? normalizedProviderTargets.find((target) => target.disabled !== true) ?? normalizedProviderTargets[0];
|
|
9112
9210
|
return resolved ?? {
|
|
9113
9211
|
targetId: data.agentTargetId ?? "__loading__",
|
|
9114
9212
|
provider: data.provider,
|
|
@@ -9122,27 +9220,19 @@ function useAgentGUINodeController({
|
|
|
9122
9220
|
}, [
|
|
9123
9221
|
data.agentTargetId,
|
|
9124
9222
|
data.provider,
|
|
9125
|
-
|
|
9126
|
-
|
|
9127
|
-
normalizedProviderTargets,
|
|
9128
|
-
shouldUseStaticProviderTargets
|
|
9223
|
+
defaultAgentTargetId,
|
|
9224
|
+
normalizedProviderTargets
|
|
9129
9225
|
]);
|
|
9130
9226
|
const selectedProviderTargetIsExplicit = useMemo3(
|
|
9131
9227
|
() => normalizedExplicitProviderTargets.some(
|
|
9132
|
-
(target) => target.
|
|
9133
|
-
target.ref,
|
|
9134
|
-
selectedProviderTarget.ref
|
|
9135
|
-
)
|
|
9228
|
+
(target) => target.agentTargetId === selectedProviderTarget.agentTargetId
|
|
9136
9229
|
),
|
|
9137
9230
|
[normalizedExplicitProviderTargets, selectedProviderTarget]
|
|
9138
9231
|
);
|
|
9139
9232
|
const [homeComposerTargetOverride, setHomeComposerTargetOverride] = useState4(null);
|
|
9140
9233
|
const homeComposerTargetOverrideIsExplicit = useMemo3(
|
|
9141
9234
|
() => homeComposerTargetOverride ? normalizedExplicitProviderTargets.some(
|
|
9142
|
-
(target) => target.
|
|
9143
|
-
target.ref,
|
|
9144
|
-
homeComposerTargetOverride.ref
|
|
9145
|
-
)
|
|
9235
|
+
(target) => target.agentTargetId === homeComposerTargetOverride.agentTargetId
|
|
9146
9236
|
) : false,
|
|
9147
9237
|
[homeComposerTargetOverride, normalizedExplicitProviderTargets]
|
|
9148
9238
|
);
|
|
@@ -9155,10 +9245,7 @@ function useAgentGUINodeController({
|
|
|
9155
9245
|
(target) => target.disabled !== true && providerReadinessGates[target.provider] === null
|
|
9156
9246
|
) ?? null;
|
|
9157
9247
|
}, [normalizedProviderTargets, providerReadinessGates]);
|
|
9158
|
-
const nodeComposerTargetResolvedByProviderTarget = agentGUINodeDataHasComposerTarget(data) &&
|
|
9159
|
-
selectedProviderTarget.ref,
|
|
9160
|
-
data.providerTargetRef
|
|
9161
|
-
));
|
|
9248
|
+
const nodeComposerTargetResolvedByProviderTarget = agentGUINodeDataHasComposerTarget(data) && selectedProviderTarget.agentTargetId === normalizeOptionalText2(data.agentTargetId);
|
|
9162
9249
|
const selectedComposerTargetData = useMemo3(
|
|
9163
9250
|
() => homeComposerTargetOverride ? composerTargetDataFromProviderTarget({
|
|
9164
9251
|
current: data,
|
|
@@ -9168,7 +9255,7 @@ function useAgentGUINodeController({
|
|
|
9168
9255
|
current: data,
|
|
9169
9256
|
isExplicit: selectedProviderTargetIsExplicit,
|
|
9170
9257
|
target: selectedProviderTarget
|
|
9171
|
-
}) : agentGUINodeDataHasComposerTarget(data) ? composerTargetDataFromNodeData(data, normalizedProviderTargets) : composerTargetDataFromProviderTarget({
|
|
9258
|
+
}) : agentGUINodeDataHasComposerTarget(data) && data.lastActiveAgentSessionId !== null ? composerTargetDataFromNodeData(data, normalizedProviderTargets) : composerTargetDataFromProviderTarget({
|
|
9172
9259
|
current: data,
|
|
9173
9260
|
isExplicit: selectedProviderTargetIsExplicit,
|
|
9174
9261
|
target: selectedProviderTarget
|
|
@@ -9618,7 +9705,7 @@ function useAgentGUINodeController({
|
|
|
9618
9705
|
const pendingHomeErrorRef = useRef4(null);
|
|
9619
9706
|
const activatedConversationIdsRef = useRef4(/* @__PURE__ */ new Set());
|
|
9620
9707
|
const failedNewConversationIdsRef = useRef4(/* @__PURE__ */ new Set());
|
|
9621
|
-
const
|
|
9708
|
+
const lastActiveModelByAgentTargetIdRef = useRef4({});
|
|
9622
9709
|
const pendingTurnIdBySessionIdRef = useRef4({});
|
|
9623
9710
|
const submitTraceBySessionIdRef = useRef4({});
|
|
9624
9711
|
const conversationIdsRef = useRef4(
|
|
@@ -12023,14 +12110,14 @@ function useAgentGUINodeController({
|
|
|
12023
12110
|
(initialContentInput, displayPrompt) => {
|
|
12024
12111
|
const target = selectedProviderTargetRef.current;
|
|
12025
12112
|
const targetData = selectedComposerTargetDataRef.current;
|
|
12026
|
-
if (isCreatingConversation || target.disabled === true || targetData.provider === "openclaw" && openclawGateway?.status !== "ready") {
|
|
12027
|
-
return;
|
|
12028
|
-
}
|
|
12029
12113
|
const agentTargetId = targetData.agentTargetId ?? "";
|
|
12030
12114
|
if (!agentTargetId || providerTargetsProvidedRef.current && !selectedProviderTargetIsExplicitRef.current) {
|
|
12031
12115
|
setDetailError(translate("agentHost.agentGui.agentTargetRequired"));
|
|
12032
12116
|
return;
|
|
12033
12117
|
}
|
|
12118
|
+
if (isCreatingConversation || target.disabled === true || targetData.provider === "openclaw" && openclawGateway?.status !== "ready") {
|
|
12119
|
+
return;
|
|
12120
|
+
}
|
|
12034
12121
|
const normalizedInitialContent = Array.isArray(initialContentInput) ? normalizeAgentPromptContentBlocks(
|
|
12035
12122
|
initialContentInput
|
|
12036
12123
|
) : textPromptContent(normalizeOptionalPrompt(initialContentInput));
|
|
@@ -12057,15 +12144,10 @@ function useAgentGUINodeController({
|
|
|
12057
12144
|
const provider = targetData.provider;
|
|
12058
12145
|
const agentTargetId2 = targetData.agentTargetId ?? "";
|
|
12059
12146
|
onDataChangeRef.current(
|
|
12060
|
-
(current) => current.provider === provider && (current.agentTargetId ?? null) === (agentTargetId2 || null)
|
|
12061
|
-
current.providerTargetRef,
|
|
12062
|
-
targetData.providerTargetRef
|
|
12063
|
-
) ? current : {
|
|
12147
|
+
(current) => current.provider === provider && (current.agentTargetId ?? null) === (agentTargetId2 || null) ? current : {
|
|
12064
12148
|
...current,
|
|
12065
12149
|
provider,
|
|
12066
|
-
agentTargetId: agentTargetId2 || null
|
|
12067
|
-
providerTargetId: targetData.providerTargetId,
|
|
12068
|
-
providerTargetRef: targetData.providerTargetRef
|
|
12150
|
+
agentTargetId: agentTargetId2 || null
|
|
12069
12151
|
}
|
|
12070
12152
|
);
|
|
12071
12153
|
const selectedProjectPath2 = selectedProjectPathRef.current;
|
|
@@ -12094,15 +12176,8 @@ function useAgentGUINodeController({
|
|
|
12094
12176
|
currentActiveConversationId,
|
|
12095
12177
|
transientConversationRef.current
|
|
12096
12178
|
) : null;
|
|
12097
|
-
const inheritedModel = normalizeOptionalText2(targetSafeInitialNodeSettings.model) === null ?
|
|
12098
|
-
|
|
12099
|
-
agentSessionId: currentActiveConversationId,
|
|
12100
|
-
provider,
|
|
12101
|
-
runtime: agentActivityRuntime,
|
|
12102
|
-
sessionState: activeSessionState,
|
|
12103
|
-
workspaceId
|
|
12104
|
-
}) ?? normalizeOptionalText2(
|
|
12105
|
-
lastActiveModelByProviderRef.current[provider]
|
|
12179
|
+
const inheritedModel = normalizeOptionalText2(targetSafeInitialNodeSettings.model) === null ? normalizeOptionalText2(
|
|
12180
|
+
lastActiveModelByAgentTargetIdRef.current[agentTargetId2]
|
|
12106
12181
|
) : null;
|
|
12107
12182
|
const effectiveInitialSettings = inheritedModel === null ? initialSettings : { ...initialSettings, model: inheritedModel };
|
|
12108
12183
|
const targetSafeEffectiveInitialSettings = sanitizeComposerSettingsForTarget({
|
|
@@ -12571,12 +12646,10 @@ function useAgentGUINodeController({
|
|
|
12571
12646
|
}
|
|
12572
12647
|
const filter = conversationFilterRef.current;
|
|
12573
12648
|
if (filter.kind === "agentTarget") {
|
|
12574
|
-
const filterTarget =
|
|
12649
|
+
const filterTarget = resolveAgentGUIDirectorySelection({
|
|
12575
12650
|
agentTargetId: filter.agentTargetId,
|
|
12576
|
-
defaultProviderTargetId,
|
|
12577
12651
|
provider: dataRef.current.provider,
|
|
12578
|
-
|
|
12579
|
-
useStaticCatalog: false
|
|
12652
|
+
targets: normalizedProviderTargets
|
|
12580
12653
|
});
|
|
12581
12654
|
if (filterTarget && filterTarget.disabled !== true && (filterTarget.agentTargetId?.trim() ?? "") === filter.agentTargetId) {
|
|
12582
12655
|
setHomeComposerTargetOverride(filterTarget);
|
|
@@ -12615,7 +12688,7 @@ function useAgentGUINodeController({
|
|
|
12615
12688
|
[
|
|
12616
12689
|
activation,
|
|
12617
12690
|
agentActivityRuntime,
|
|
12618
|
-
|
|
12691
|
+
defaultAgentTargetId,
|
|
12619
12692
|
loadDraftComposerOptions,
|
|
12620
12693
|
normalizedProviderTargets,
|
|
12621
12694
|
persistActiveConversation,
|
|
@@ -12629,7 +12702,20 @@ function useAgentGUINodeController({
|
|
|
12629
12702
|
if (handledPrefillPromptSequenceRef.current === prefillPromptRequest.sequence) {
|
|
12630
12703
|
return;
|
|
12631
12704
|
}
|
|
12705
|
+
if (providerTargetsLoading && prefillPromptRequest.agentTargetId?.trim()) {
|
|
12706
|
+
return;
|
|
12707
|
+
}
|
|
12708
|
+
const selectedTargetData = selectedComposerTargetDataRef.current;
|
|
12709
|
+
const prefillTargetHinted = Boolean(prefillPromptRequest.provider) || Boolean(prefillPromptRequest.agentTargetId);
|
|
12710
|
+
const prefillTarget = prefillTargetHinted ? resolveAgentGUIDirectorySelection({
|
|
12711
|
+
agentTargetId: prefillPromptRequest.agentTargetId,
|
|
12712
|
+
provider: prefillPromptRequest.provider ?? selectedTargetData.provider,
|
|
12713
|
+
targets: normalizedProviderTargets
|
|
12714
|
+
}) : null;
|
|
12632
12715
|
handledPrefillPromptSequenceRef.current = prefillPromptRequest.sequence;
|
|
12716
|
+
if (prefillPromptRequest.agentTargetId?.trim() && !prefillTarget) {
|
|
12717
|
+
return;
|
|
12718
|
+
}
|
|
12633
12719
|
const draftPrompt2 = prefillPromptRequest.draftPrompt.trim();
|
|
12634
12720
|
if (!draftPrompt2) {
|
|
12635
12721
|
return;
|
|
@@ -12660,15 +12746,6 @@ function useAgentGUINodeController({
|
|
|
12660
12746
|
setActiveConversationId(null);
|
|
12661
12747
|
setIsLoadingMessages(false);
|
|
12662
12748
|
setDetailError(null);
|
|
12663
|
-
const selectedTargetData = selectedComposerTargetDataRef.current;
|
|
12664
|
-
const prefillTargetHinted = Boolean(prefillPromptRequest.provider) || Boolean(prefillPromptRequest.agentTargetId);
|
|
12665
|
-
const prefillTarget = prefillTargetHinted ? resolveAgentGUIProviderTarget({
|
|
12666
|
-
agentTargetId: prefillPromptRequest.agentTargetId,
|
|
12667
|
-
defaultProviderTargetId,
|
|
12668
|
-
provider: prefillPromptRequest.provider ?? selectedTargetData.provider,
|
|
12669
|
-
providerTargets: normalizedProviderTargets,
|
|
12670
|
-
useStaticCatalog: shouldUseStaticProviderTargets
|
|
12671
|
-
}) : null;
|
|
12672
12749
|
const targetData = prefillTarget ? composerTargetDataFromProviderTarget({
|
|
12673
12750
|
current: dataRef.current,
|
|
12674
12751
|
isExplicit: isExplicitAgentGUIProviderTarget(
|
|
@@ -12717,14 +12794,14 @@ function useAgentGUINodeController({
|
|
|
12717
12794
|
}, [
|
|
12718
12795
|
activation,
|
|
12719
12796
|
agentActivityRuntime,
|
|
12720
|
-
|
|
12797
|
+
defaultAgentTargetId,
|
|
12721
12798
|
loadDraftComposerOptions,
|
|
12722
12799
|
normalizedExplicitProviderTargets,
|
|
12723
12800
|
normalizedProviderTargets,
|
|
12724
12801
|
persistActiveConversation,
|
|
12725
12802
|
prefillPromptRequest,
|
|
12726
12803
|
previewMode,
|
|
12727
|
-
|
|
12804
|
+
providerTargetsLoading,
|
|
12728
12805
|
workspaceId
|
|
12729
12806
|
]);
|
|
12730
12807
|
const continueInNewConversation = useCallback4(() => {
|
|
@@ -13815,9 +13892,7 @@ function useAgentGUINodeController({
|
|
|
13815
13892
|
{
|
|
13816
13893
|
...current,
|
|
13817
13894
|
provider: targetData.provider,
|
|
13818
|
-
agentTargetId: targetData.agentTargetId
|
|
13819
|
-
providerTargetId: targetData.providerTargetId,
|
|
13820
|
-
providerTargetRef: targetData.providerTargetRef
|
|
13895
|
+
agentTargetId: targetData.agentTargetId
|
|
13821
13896
|
},
|
|
13822
13897
|
targetSafeMerged
|
|
13823
13898
|
)
|
|
@@ -14871,12 +14946,10 @@ function useAgentGUINodeController({
|
|
|
14871
14946
|
if (!providerMismatch && !agentTargetMismatch) {
|
|
14872
14947
|
return;
|
|
14873
14948
|
}
|
|
14874
|
-
const sessionTarget =
|
|
14949
|
+
const sessionTarget = resolveAgentGUIDirectorySelection({
|
|
14875
14950
|
agentTargetId: summaryAgentTargetId,
|
|
14876
|
-
defaultProviderTargetId,
|
|
14877
14951
|
provider: summary.provider,
|
|
14878
|
-
|
|
14879
|
-
useStaticCatalog: shouldUseStaticProviderTargets
|
|
14952
|
+
targets: normalizedProviderTargets
|
|
14880
14953
|
});
|
|
14881
14954
|
if (!sessionTarget || sessionTarget.provider !== summary.provider) {
|
|
14882
14955
|
return;
|
|
@@ -14886,7 +14959,7 @@ function useAgentGUINodeController({
|
|
|
14886
14959
|
}
|
|
14887
14960
|
setHomeComposerTargetOverride(null);
|
|
14888
14961
|
const sessionTargetIsExplicit = normalizedExplicitProviderTargets.some(
|
|
14889
|
-
(target) =>
|
|
14962
|
+
(target) => agentGUIProviderTargetsEqual(target, sessionTarget)
|
|
14890
14963
|
);
|
|
14891
14964
|
onDataChangeRef.current((current) => {
|
|
14892
14965
|
const targetData = composerTargetDataFromProviderTarget({
|
|
@@ -14894,10 +14967,7 @@ function useAgentGUINodeController({
|
|
|
14894
14967
|
isExplicit: sessionTargetIsExplicit,
|
|
14895
14968
|
target: sessionTarget
|
|
14896
14969
|
});
|
|
14897
|
-
if (current.provider === targetData.provider && normalizeOptionalText2(current.agentTargetId) === targetData.agentTargetId
|
|
14898
|
-
current.providerTargetRef,
|
|
14899
|
-
targetData.providerTargetRef
|
|
14900
|
-
)) {
|
|
14970
|
+
if (current.provider === targetData.provider && normalizeOptionalText2(current.agentTargetId) === targetData.agentTargetId) {
|
|
14901
14971
|
return current;
|
|
14902
14972
|
}
|
|
14903
14973
|
dataRef.current = targetData.data;
|
|
@@ -14906,12 +14976,11 @@ function useAgentGUINodeController({
|
|
|
14906
14976
|
}, [
|
|
14907
14977
|
activeConversationId,
|
|
14908
14978
|
conversations,
|
|
14909
|
-
|
|
14979
|
+
defaultAgentTargetId,
|
|
14910
14980
|
normalizedExplicitProviderTargets,
|
|
14911
14981
|
normalizedProviderTargets,
|
|
14912
14982
|
previewMode,
|
|
14913
|
-
providerTargetsLoading
|
|
14914
|
-
shouldUseStaticProviderTargets
|
|
14983
|
+
providerTargetsLoading
|
|
14915
14984
|
]);
|
|
14916
14985
|
const activeSessionTargetResolution = useMemo3(() => {
|
|
14917
14986
|
if (previewMode || activeConversationId === null) {
|
|
@@ -15240,9 +15309,7 @@ function useAgentGUINodeController({
|
|
|
15240
15309
|
{
|
|
15241
15310
|
...current,
|
|
15242
15311
|
provider: selectedComposerTargetData.provider,
|
|
15243
|
-
agentTargetId: selectedComposerTargetData.agentTargetId
|
|
15244
|
-
providerTargetId: selectedComposerTargetData.providerTargetId,
|
|
15245
|
-
providerTargetRef: selectedComposerTargetData.providerTargetRef
|
|
15312
|
+
agentTargetId: selectedComposerTargetData.agentTargetId
|
|
15246
15313
|
},
|
|
15247
15314
|
targetSafeNodeDefaultSettings
|
|
15248
15315
|
)
|
|
@@ -15280,24 +15347,23 @@ function useAgentGUINodeController({
|
|
|
15280
15347
|
) : null;
|
|
15281
15348
|
const pendingInteractivePrompt = serverInteractivePrompt ?? planImplementationPromptVM;
|
|
15282
15349
|
useEffect4(() => {
|
|
15283
|
-
const
|
|
15284
|
-
|
|
15285
|
-
);
|
|
15286
|
-
if (
|
|
15350
|
+
const agentTargetId = activeSessionTargetResolution.status === "resolved" ? normalizeOptionalText2(
|
|
15351
|
+
activeSessionTargetResolution.target.agentTargetId
|
|
15352
|
+
) : null;
|
|
15353
|
+
if (agentTargetId === null) {
|
|
15287
15354
|
return;
|
|
15288
15355
|
}
|
|
15289
15356
|
const model = normalizeOptionalText2(activeSessionState?.settings?.model) ?? normalizeOptionalText2(activeRuntimeSession?.model);
|
|
15290
15357
|
if (model === null) {
|
|
15291
15358
|
return;
|
|
15292
15359
|
}
|
|
15293
|
-
|
|
15294
|
-
...
|
|
15295
|
-
[
|
|
15360
|
+
lastActiveModelByAgentTargetIdRef.current = {
|
|
15361
|
+
...lastActiveModelByAgentTargetIdRef.current,
|
|
15362
|
+
[agentTargetId]: model
|
|
15296
15363
|
};
|
|
15297
15364
|
}, [
|
|
15298
|
-
|
|
15365
|
+
activeSessionTargetResolution,
|
|
15299
15366
|
activeRuntimeSession?.model,
|
|
15300
|
-
activeRuntimeSession?.provider,
|
|
15301
15367
|
activeSessionState?.settings?.model
|
|
15302
15368
|
]);
|
|
15303
15369
|
const activeActivityDisplayStatus = activeConversationId ? agentActivityDisplayStatuses.get(activeConversationId) ?? null : null;
|
|
@@ -15358,7 +15424,7 @@ function useAgentGUINodeController({
|
|
|
15358
15424
|
hasProviderSessionNotFoundError,
|
|
15359
15425
|
pendingApproval
|
|
15360
15426
|
]);
|
|
15361
|
-
const canSubmit = !providerTargetsLoading && activeLiveState !== "activating" && activeLiveState !== "failed" && !activeConversationResumeUnavailable && (activeConversationId !== null || effectiveSelectedProviderTarget.disabled !== true) && (composerTargetData.provider !== "openclaw" || openclawGateway?.status === "ready") && pendingApproval === null && pendingInteractivePrompt === null && sessionChrome.auth === null && !activeConversationBusy && !isCreatingConversation && !isSubmitting && !isInterrupting;
|
|
15427
|
+
const canSubmit = !providerTargetsLoading && activeLiveState !== "activating" && activeLiveState !== "failed" && !activeConversationResumeUnavailable && (activeConversationId !== null || effectiveSelectedProviderTarget.disabled !== true && (homeComposerTargetOverride ? homeComposerTargetOverrideIsExplicit : selectedProviderTargetIsExplicit)) && (composerTargetData.provider !== "openclaw" || openclawGateway?.status === "ready") && pendingApproval === null && pendingInteractivePrompt === null && sessionChrome.auth === null && !activeConversationBusy && !isCreatingConversation && !isSubmitting && !isInterrupting;
|
|
15362
15428
|
const activeConversationCreatePending = Boolean(activeConversationId) && isCreatingConversation && startingConversationIdRef.current === activeConversationId;
|
|
15363
15429
|
const canQueueWhileBusy = Boolean(activeConversationId) && (activeConversationCreatePending || activeConversationBusy || isSubmitting || Boolean(activeSessionState?.pendingInteractive));
|
|
15364
15430
|
useEffect4(() => {
|
|
@@ -15549,12 +15615,12 @@ function useAgentGUINodeController({
|
|
|
15549
15615
|
]);
|
|
15550
15616
|
const stableComposerSettings = useStableComposerSettingsVM(composerSettings);
|
|
15551
15617
|
const resolveDefaultHomeComposerTarget = useCallback4(() => {
|
|
15552
|
-
const defaultTargetId =
|
|
15618
|
+
const defaultTargetId = defaultAgentTargetId?.trim() ?? "";
|
|
15553
15619
|
const explicitDefaultTarget = defaultTargetId ? normalizedProviderTargets.find(
|
|
15554
15620
|
(target) => target.targetId === defaultTargetId || target.agentTargetId === defaultTargetId
|
|
15555
15621
|
) ?? null : null;
|
|
15556
15622
|
return explicitDefaultTarget ?? normalizedProviderTargets.find((target) => target.disabled !== true) ?? normalizedProviderTargets[0] ?? null;
|
|
15557
|
-
}, [
|
|
15623
|
+
}, [defaultAgentTargetId, normalizedProviderTargets]);
|
|
15558
15624
|
const resetHomeComposerAgentTargetToDefault = useCallback4(() => {
|
|
15559
15625
|
if (previewMode) {
|
|
15560
15626
|
return;
|
|
@@ -15564,7 +15630,7 @@ function useAgentGUINodeController({
|
|
|
15564
15630
|
return;
|
|
15565
15631
|
}
|
|
15566
15632
|
const nextTargetIsExplicit = normalizedExplicitProviderTargets.some(
|
|
15567
|
-
(target) =>
|
|
15633
|
+
(target) => agentGUIProviderTargetsEqual(target, nextTarget)
|
|
15568
15634
|
);
|
|
15569
15635
|
const nextTargetData = composerTargetDataFromProviderTarget({
|
|
15570
15636
|
current: dataRef.current,
|
|
@@ -15617,18 +15683,16 @@ function useAgentGUINodeController({
|
|
|
15617
15683
|
return;
|
|
15618
15684
|
}
|
|
15619
15685
|
const nextProvider = input.provider;
|
|
15620
|
-
const nextTarget =
|
|
15621
|
-
|
|
15686
|
+
const nextTarget = resolveAgentGUIDirectorySelection({
|
|
15687
|
+
agentTargetId: input.agentTargetId,
|
|
15622
15688
|
provider: nextProvider,
|
|
15623
|
-
|
|
15624
|
-
providerTargets: normalizedProviderTargets,
|
|
15625
|
-
useStaticCatalog: shouldUseStaticProviderTargets
|
|
15689
|
+
targets: normalizedProviderTargets
|
|
15626
15690
|
});
|
|
15627
15691
|
if (!nextTarget) {
|
|
15628
15692
|
return;
|
|
15629
15693
|
}
|
|
15630
15694
|
const nextTargetIsExplicit = normalizedExplicitProviderTargets.some(
|
|
15631
|
-
(target) =>
|
|
15695
|
+
(target) => agentGUIProviderTargetsEqual(target, nextTarget)
|
|
15632
15696
|
);
|
|
15633
15697
|
const nextTargetData = composerTargetDataFromProviderTarget({
|
|
15634
15698
|
current: dataRef.current,
|
|
@@ -15703,8 +15767,6 @@ function useAgentGUINodeController({
|
|
|
15703
15767
|
provider: currentNextTargetData.provider,
|
|
15704
15768
|
agentTargetId: currentNextTargetData.agentTargetId,
|
|
15705
15769
|
lastActiveAgentSessionId: null,
|
|
15706
|
-
providerTargetId: currentNextTargetData.providerTargetId,
|
|
15707
|
-
providerTargetRef: currentNextTargetData.providerTargetRef,
|
|
15708
15770
|
composerOverrides: providerTargetChanged ? null : current.composerOverrides
|
|
15709
15771
|
};
|
|
15710
15772
|
dataRef.current = nextData;
|
|
@@ -15716,22 +15778,21 @@ function useAgentGUINodeController({
|
|
|
15716
15778
|
},
|
|
15717
15779
|
[
|
|
15718
15780
|
activation,
|
|
15719
|
-
|
|
15781
|
+
defaultAgentTargetId,
|
|
15720
15782
|
loadComposerOptionsForTarget,
|
|
15721
15783
|
normalizedExplicitProviderTargets,
|
|
15722
15784
|
normalizedProviderTargets,
|
|
15723
15785
|
persistActiveConversation,
|
|
15724
|
-
previewMode
|
|
15725
|
-
shouldUseStaticProviderTargets
|
|
15786
|
+
previewMode
|
|
15726
15787
|
]
|
|
15727
15788
|
);
|
|
15728
15789
|
useEffect4(() => {
|
|
15729
15790
|
if (previewMode || activeConversationId !== null || conversationFilter.kind !== "all" || homeComposerTargetOverride !== null || agentGUINodeDataHasComposerTarget(data) || !providerReadinessGates || !firstReadyHomeComposerProviderTarget) {
|
|
15730
15791
|
return;
|
|
15731
15792
|
}
|
|
15732
|
-
if (
|
|
15733
|
-
firstReadyHomeComposerProviderTarget
|
|
15734
|
-
effectiveSelectedProviderTarget
|
|
15793
|
+
if (agentGUIProviderTargetsEqual(
|
|
15794
|
+
firstReadyHomeComposerProviderTarget,
|
|
15795
|
+
effectiveSelectedProviderTarget
|
|
15735
15796
|
)) {
|
|
15736
15797
|
return;
|
|
15737
15798
|
}
|
|
@@ -15747,7 +15808,7 @@ function useAgentGUINodeController({
|
|
|
15747
15808
|
}
|
|
15748
15809
|
selectHomeComposerAgentTarget({
|
|
15749
15810
|
provider: firstReadyHomeComposerProviderTarget.provider,
|
|
15750
|
-
|
|
15811
|
+
agentTargetId: firstReadyHomeComposerProviderTarget.agentTargetId ?? firstReadyHomeComposerProviderTarget.targetId
|
|
15751
15812
|
});
|
|
15752
15813
|
}, [
|
|
15753
15814
|
activeConversationId,
|
|
@@ -15762,17 +15823,15 @@ function useAgentGUINodeController({
|
|
|
15762
15823
|
]);
|
|
15763
15824
|
const selectConversationFilterTarget = useCallback4(
|
|
15764
15825
|
(input) => {
|
|
15765
|
-
const nextTarget =
|
|
15766
|
-
|
|
15826
|
+
const nextTarget = resolveAgentGUIDirectorySelection({
|
|
15827
|
+
agentTargetId: input.agentTargetId,
|
|
15767
15828
|
provider: input.provider,
|
|
15768
|
-
|
|
15769
|
-
providerTargets: normalizedProviderTargets,
|
|
15770
|
-
useStaticCatalog: shouldUseStaticProviderTargets
|
|
15829
|
+
targets: normalizedProviderTargets
|
|
15771
15830
|
});
|
|
15772
15831
|
if (!nextTarget) {
|
|
15773
15832
|
reportAgentGUIConversationFilterTargetUnresolved({
|
|
15774
15833
|
provider: input.provider,
|
|
15775
|
-
|
|
15834
|
+
agentTargetId: input.agentTargetId ?? null,
|
|
15776
15835
|
providerTargetCount: normalizedProviderTargets.length,
|
|
15777
15836
|
reason: "unresolved",
|
|
15778
15837
|
runtime: agentActivityRuntime,
|
|
@@ -15815,11 +15874,10 @@ function useAgentGUINodeController({
|
|
|
15815
15874
|
},
|
|
15816
15875
|
[
|
|
15817
15876
|
agentActivityRuntime,
|
|
15818
|
-
|
|
15877
|
+
defaultAgentTargetId,
|
|
15819
15878
|
normalizedProviderTargets,
|
|
15820
15879
|
selectConversation,
|
|
15821
15880
|
selectHomeComposerAgentTarget,
|
|
15822
|
-
shouldUseStaticProviderTargets,
|
|
15823
15881
|
workspaceId
|
|
15824
15882
|
]
|
|
15825
15883
|
);
|
|
@@ -15838,7 +15896,7 @@ function useAgentGUINodeController({
|
|
|
15838
15896
|
}
|
|
15839
15897
|
selectHomeComposerAgentTarget({
|
|
15840
15898
|
provider: target.provider,
|
|
15841
|
-
|
|
15899
|
+
agentTargetId: target.agentTargetId ?? target.targetId
|
|
15842
15900
|
});
|
|
15843
15901
|
}, [
|
|
15844
15902
|
activeConversationId,
|
|
@@ -16011,8 +16069,6 @@ function useAgentGUINodeController({
|
|
|
16011
16069
|
providerTargets: normalizedProviderTargets,
|
|
16012
16070
|
handoffProviderTargets,
|
|
16013
16071
|
providerTargetsLoading,
|
|
16014
|
-
providerRailMode,
|
|
16015
|
-
comingSoonProviders: normalizedComingSoonProviders,
|
|
16016
16072
|
conversationFilter,
|
|
16017
16073
|
conversations: visibleConversations,
|
|
16018
16074
|
userProjects,
|
|
@@ -16094,9 +16150,7 @@ function useAgentGUINodeController({
|
|
|
16094
16150
|
data,
|
|
16095
16151
|
effectiveSelectedProviderTarget,
|
|
16096
16152
|
handoffProviderTargets,
|
|
16097
|
-
normalizedComingSoonProviders,
|
|
16098
16153
|
normalizedProviderTargets,
|
|
16099
|
-
providerRailMode,
|
|
16100
16154
|
providerReadinessGate,
|
|
16101
16155
|
providerTargetsLoading,
|
|
16102
16156
|
detailError,
|
|
@@ -17107,6 +17161,7 @@ var AgentGuiHeroCarouselScene = class _AgentGuiHeroCarouselScene {
|
|
|
17107
17161
|
wheelRadius;
|
|
17108
17162
|
onSettle;
|
|
17109
17163
|
images = [];
|
|
17164
|
+
ownedImages = /* @__PURE__ */ new Set();
|
|
17110
17165
|
scroll = 0;
|
|
17111
17166
|
target = 0;
|
|
17112
17167
|
velocity = 0;
|
|
@@ -17144,22 +17199,26 @@ var AgentGuiHeroCarouselScene = class _AgentGuiHeroCarouselScene {
|
|
|
17144
17199
|
this.tiles.push({ mesh });
|
|
17145
17200
|
}
|
|
17146
17201
|
options.iconUrls.forEach((iconUrl, agentIndex) => {
|
|
17147
|
-
const
|
|
17202
|
+
const loadedImage = options.loadedImages?.[agentIndex] ?? null;
|
|
17203
|
+
const image = loadedImage ?? new Image();
|
|
17204
|
+
if (!loadedImage) {
|
|
17205
|
+
image.decoding = "async";
|
|
17206
|
+
image.loading = "eager";
|
|
17207
|
+
image.setAttribute("fetchpriority", "high");
|
|
17208
|
+
this.ownedImages.add(image);
|
|
17209
|
+
}
|
|
17148
17210
|
this.images.push(image);
|
|
17149
17211
|
image.onload = () => {
|
|
17150
17212
|
if (this.disposed) {
|
|
17151
17213
|
return;
|
|
17152
17214
|
}
|
|
17153
|
-
|
|
17154
|
-
for (const tile of this.tiles) {
|
|
17155
|
-
if (tile.mesh.userData.agentIndex === agentIndex) {
|
|
17156
|
-
tile.mesh.material.map = texture;
|
|
17157
|
-
tile.mesh.material.visible = true;
|
|
17158
|
-
tile.mesh.material.needsUpdate = true;
|
|
17159
|
-
}
|
|
17160
|
-
}
|
|
17215
|
+
this.applyImageTexture(image, agentIndex);
|
|
17161
17216
|
};
|
|
17162
|
-
image.
|
|
17217
|
+
if (image.complete && image.naturalWidth > 0) {
|
|
17218
|
+
this.applyImageTexture(image, agentIndex);
|
|
17219
|
+
} else if (!loadedImage) {
|
|
17220
|
+
image.src = iconUrl;
|
|
17221
|
+
}
|
|
17163
17222
|
});
|
|
17164
17223
|
this.applyPoses();
|
|
17165
17224
|
}
|
|
@@ -17245,8 +17304,11 @@ var AgentGuiHeroCarouselScene = class _AgentGuiHeroCarouselScene {
|
|
|
17245
17304
|
}
|
|
17246
17305
|
for (const image of this.images) {
|
|
17247
17306
|
image.onload = null;
|
|
17248
|
-
image
|
|
17307
|
+
if (this.ownedImages.has(image)) {
|
|
17308
|
+
image.src = "";
|
|
17309
|
+
}
|
|
17249
17310
|
}
|
|
17311
|
+
this.ownedImages.clear();
|
|
17250
17312
|
for (const tile of this.tiles) {
|
|
17251
17313
|
tile.mesh.geometry.dispose();
|
|
17252
17314
|
tile.mesh.material.map?.dispose();
|
|
@@ -17308,6 +17370,19 @@ var AgentGuiHeroCarouselScene = class _AgentGuiHeroCarouselScene {
|
|
|
17308
17370
|
}
|
|
17309
17371
|
});
|
|
17310
17372
|
}
|
|
17373
|
+
applyImageTexture(image, agentIndex) {
|
|
17374
|
+
if (this.disposed) {
|
|
17375
|
+
return;
|
|
17376
|
+
}
|
|
17377
|
+
const texture = roundedIconTexture(image, () => this.requestRender());
|
|
17378
|
+
for (const tile of this.tiles) {
|
|
17379
|
+
if (tile.mesh.userData.agentIndex === agentIndex) {
|
|
17380
|
+
tile.mesh.material.map = texture;
|
|
17381
|
+
tile.mesh.material.visible = true;
|
|
17382
|
+
tile.mesh.material.needsUpdate = true;
|
|
17383
|
+
}
|
|
17384
|
+
}
|
|
17385
|
+
}
|
|
17311
17386
|
applyPoses() {
|
|
17312
17387
|
const step = Math.PI * 2 / Math.max(this.tileCount, 1);
|
|
17313
17388
|
this.tiles.forEach((tile, index) => {
|
|
@@ -17325,30 +17400,87 @@ var AgentGuiHeroCarouselScene = class _AgentGuiHeroCarouselScene {
|
|
|
17325
17400
|
|
|
17326
17401
|
// agent-gui/agentGuiNode/AgentGUIHeroAgentCarousel.tsx
|
|
17327
17402
|
import { jsx as jsx20, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
17328
|
-
function agentGUILaunchpadProviderTarget(providerTargets, provider) {
|
|
17329
|
-
const normalized = normalizeManagedAgentProvider(provider);
|
|
17330
|
-
const matches = providerTargets.filter(
|
|
17331
|
-
(target) => normalizeManagedAgentProvider(target.provider) === normalized
|
|
17332
|
-
);
|
|
17333
|
-
return matches.find((target) => target.disabled !== true) ?? matches[0] ?? null;
|
|
17334
|
-
}
|
|
17335
17403
|
var CAROUSEL_WHEEL_STEP_THRESHOLD = 42;
|
|
17336
17404
|
var CAROUSEL_WHEEL_STEP_COOLDOWN_MS = 110;
|
|
17337
17405
|
var CAROUSEL_DRAG_STEP_PX = 52;
|
|
17406
|
+
function emptyPreloadedCarouselImages(length) {
|
|
17407
|
+
return Array.from({ length }).map(() => null);
|
|
17408
|
+
}
|
|
17409
|
+
function useAgentGUIHeroCarouselImages(icons, iconKey) {
|
|
17410
|
+
const [preloadState, setPreloadState] = useState7({
|
|
17411
|
+
images: [],
|
|
17412
|
+
ready: icons.length === 0
|
|
17413
|
+
});
|
|
17414
|
+
useEffect6(() => {
|
|
17415
|
+
if (icons.length === 0) {
|
|
17416
|
+
setPreloadState({ images: [], ready: true });
|
|
17417
|
+
return;
|
|
17418
|
+
}
|
|
17419
|
+
if (typeof Image !== "function") {
|
|
17420
|
+
setPreloadState({
|
|
17421
|
+
images: emptyPreloadedCarouselImages(icons.length),
|
|
17422
|
+
ready: true
|
|
17423
|
+
});
|
|
17424
|
+
return;
|
|
17425
|
+
}
|
|
17426
|
+
let cancelled = false;
|
|
17427
|
+
setPreloadState({
|
|
17428
|
+
images: emptyPreloadedCarouselImages(icons.length),
|
|
17429
|
+
ready: false
|
|
17430
|
+
});
|
|
17431
|
+
void Promise.all(
|
|
17432
|
+
icons.map(
|
|
17433
|
+
(icon) => new Promise((resolve) => {
|
|
17434
|
+
const image = new Image();
|
|
17435
|
+
const resolveDecoded = () => {
|
|
17436
|
+
const decode = image.decode?.();
|
|
17437
|
+
if (decode) {
|
|
17438
|
+
void decode.then(() => resolve(image)).catch(() => resolve(image));
|
|
17439
|
+
return;
|
|
17440
|
+
}
|
|
17441
|
+
resolve(image);
|
|
17442
|
+
};
|
|
17443
|
+
image.decoding = "async";
|
|
17444
|
+
image.loading = "eager";
|
|
17445
|
+
image.setAttribute("fetchpriority", "high");
|
|
17446
|
+
image.onload = () => {
|
|
17447
|
+
resolveDecoded();
|
|
17448
|
+
};
|
|
17449
|
+
image.onerror = () => resolve(null);
|
|
17450
|
+
image.src = icon.iconUrl;
|
|
17451
|
+
if (image.complete) {
|
|
17452
|
+
if (image.naturalWidth > 0) {
|
|
17453
|
+
resolveDecoded();
|
|
17454
|
+
} else {
|
|
17455
|
+
resolve(null);
|
|
17456
|
+
}
|
|
17457
|
+
}
|
|
17458
|
+
})
|
|
17459
|
+
)
|
|
17460
|
+
).then((images) => {
|
|
17461
|
+
if (!cancelled) {
|
|
17462
|
+
setPreloadState({ images, ready: true });
|
|
17463
|
+
}
|
|
17464
|
+
});
|
|
17465
|
+
return () => {
|
|
17466
|
+
cancelled = true;
|
|
17467
|
+
};
|
|
17468
|
+
}, [iconKey]);
|
|
17469
|
+
return preloadState;
|
|
17470
|
+
}
|
|
17338
17471
|
var AgentGUIHeroAgentCarousel = memo2(
|
|
17339
17472
|
function AgentGUIHeroAgentCarousel2({
|
|
17340
|
-
|
|
17473
|
+
activeAgentTargetId,
|
|
17341
17474
|
icons,
|
|
17342
17475
|
providerTargets,
|
|
17343
17476
|
onProviderSelect,
|
|
17344
17477
|
providerSelectLabel
|
|
17345
17478
|
}) {
|
|
17346
|
-
const normalizedActiveProvider = activeProvider ? normalizeManagedAgentProvider(activeProvider) : null;
|
|
17347
17479
|
const activeIconIndex = useMemo4(
|
|
17348
|
-
() =>
|
|
17349
|
-
(icon) =>
|
|
17480
|
+
() => !activeAgentTargetId ? -1 : icons.findIndex(
|
|
17481
|
+
(icon) => icon.agentTargetId === activeAgentTargetId
|
|
17350
17482
|
),
|
|
17351
|
-
[
|
|
17483
|
+
[activeAgentTargetId, icons]
|
|
17352
17484
|
);
|
|
17353
17485
|
const [centerIndex, setCenterIndex] = useState7(
|
|
17354
17486
|
activeIconIndex >= 0 ? activeIconIndex : 0
|
|
@@ -17364,10 +17496,12 @@ var AgentGUIHeroAgentCarousel = memo2(
|
|
|
17364
17496
|
if (!icon || !interactive) {
|
|
17365
17497
|
return null;
|
|
17366
17498
|
}
|
|
17367
|
-
|
|
17368
|
-
|
|
17369
|
-
|
|
17370
|
-
|
|
17499
|
+
if (!icon.agentTargetId) {
|
|
17500
|
+
return null;
|
|
17501
|
+
}
|
|
17502
|
+
return providerTargets?.find(
|
|
17503
|
+
(target) => (target.agentTargetId ?? target.targetId) === icon.agentTargetId
|
|
17504
|
+
) ?? null;
|
|
17371
17505
|
},
|
|
17372
17506
|
[icons, interactive, providerTargets]
|
|
17373
17507
|
);
|
|
@@ -17379,7 +17513,7 @@ var AgentGUIHeroAgentCarousel = memo2(
|
|
|
17379
17513
|
}
|
|
17380
17514
|
onProviderSelect({
|
|
17381
17515
|
provider: target.provider,
|
|
17382
|
-
|
|
17516
|
+
agentTargetId: target.targetId
|
|
17383
17517
|
});
|
|
17384
17518
|
},
|
|
17385
17519
|
[onProviderSelect, targetForIndex]
|
|
@@ -17389,16 +17523,18 @@ var AgentGUIHeroAgentCarousel = memo2(
|
|
|
17389
17523
|
const stageRef = useRef5(null);
|
|
17390
17524
|
const canvasRef = useRef5(null);
|
|
17391
17525
|
const sceneRef = useRef5(null);
|
|
17392
|
-
const iconKey = icons.map((icon) => `${icon.provider}:${icon.iconUrl}`).join("|");
|
|
17526
|
+
const iconKey = icons.map((icon) => `${icon.agentTargetId ?? icon.provider}:${icon.iconUrl}`).join("|");
|
|
17527
|
+
const carouselImages = useAgentGUIHeroCarouselImages(icons, iconKey);
|
|
17393
17528
|
useEffect6(() => {
|
|
17394
17529
|
const canvas = canvasRef.current;
|
|
17395
17530
|
const stage = stageRef.current;
|
|
17396
|
-
if (!canvas || !stage) {
|
|
17531
|
+
if (!canvas || !stage || !carouselImages.ready) {
|
|
17397
17532
|
return;
|
|
17398
17533
|
}
|
|
17399
17534
|
const scene = AgentGuiHeroCarouselScene.create({
|
|
17400
17535
|
canvas,
|
|
17401
17536
|
iconUrls: icons.map((icon) => icon.iconUrl),
|
|
17537
|
+
loadedImages: carouselImages.images,
|
|
17402
17538
|
onSettle: (index) => {
|
|
17403
17539
|
centerIndexRef.current = index;
|
|
17404
17540
|
setCenterIndex(index);
|
|
@@ -17424,7 +17560,7 @@ var AgentGUIHeroAgentCarousel = memo2(
|
|
|
17424
17560
|
scene.dispose();
|
|
17425
17561
|
sceneRef.current = null;
|
|
17426
17562
|
};
|
|
17427
|
-
}, [iconKey]);
|
|
17563
|
+
}, [carouselImages.images, carouselImages.ready, iconKey]);
|
|
17428
17564
|
useEffect6(() => {
|
|
17429
17565
|
if (activeIconIndex >= 0 && activeIconIndex !== centerIndexRef.current) {
|
|
17430
17566
|
centerIndexRef.current = activeIconIndex;
|
|
@@ -17562,6 +17698,7 @@ var AgentGUIHeroAgentCarousel = memo2(
|
|
|
17562
17698
|
"aria-label": interactive ? providerSelectLabel : void 0,
|
|
17563
17699
|
role: interactive ? "group" : void 0,
|
|
17564
17700
|
className: AgentGUINode_styles_default.emptyHeroCarousel,
|
|
17701
|
+
"data-icons-ready": carouselImages.ready,
|
|
17565
17702
|
onKeyDown: interactive ? handleKeyDown : void 0,
|
|
17566
17703
|
onPointerDown: interactive ? handlePointerDown : void 0,
|
|
17567
17704
|
onPointerMove: interactive ? handlePointerMove : void 0,
|
|
@@ -17582,7 +17719,7 @@ var AgentGUIHeroAgentCarousel = memo2(
|
|
|
17582
17719
|
icons.map((icon, index) => {
|
|
17583
17720
|
const isCenter = index === centerIndex;
|
|
17584
17721
|
const target = targetForIndex(index);
|
|
17585
|
-
const key = `${icon.provider}:${icon.iconUrl}`;
|
|
17722
|
+
const key = `${icon.agentTargetId ?? icon.provider}:${icon.iconUrl}`;
|
|
17586
17723
|
if (target && onProviderSelect) {
|
|
17587
17724
|
const label = providerSelectLabel ? `${providerSelectLabel}: ${target.label}` : target.label;
|
|
17588
17725
|
return /* @__PURE__ */ jsx20(
|
|
@@ -17590,6 +17727,7 @@ var AgentGUIHeroAgentCarousel = memo2(
|
|
|
17590
17727
|
{
|
|
17591
17728
|
type: "button",
|
|
17592
17729
|
className: AgentGUINode_styles_default.emptyHeroCarouselItem,
|
|
17730
|
+
"data-agent-target-id": icon.agentTargetId,
|
|
17593
17731
|
"data-provider": icon.provider,
|
|
17594
17732
|
"data-provider-active": isCenter,
|
|
17595
17733
|
"aria-label": label,
|
|
@@ -24452,9 +24590,9 @@ ${normalizedText}` : normalizedText;
|
|
|
24452
24590
|
() => providerSwitchTargets.filter((target) => target.disabled !== true),
|
|
24453
24591
|
[providerSwitchTargets]
|
|
24454
24592
|
);
|
|
24455
|
-
const
|
|
24593
|
+
const selectedAgentTargetId = selectedProviderTarget?.targetId ?? `local:${provider}`;
|
|
24456
24594
|
const selectedProviderSwitchTarget = providerSwitchTargets.find(
|
|
24457
|
-
(target) => target.targetId ===
|
|
24595
|
+
(target) => target.targetId === selectedAgentTargetId
|
|
24458
24596
|
) ?? providerSwitchTargets.find((target) => target.provider === provider) ?? selectedProviderTarget;
|
|
24459
24597
|
const providerMenuTargets = selectedProviderSwitchTarget && !enabledProviderSwitchTargets.some(
|
|
24460
24598
|
(target) => target.targetId === selectedProviderSwitchTarget.targetId
|
|
@@ -24469,9 +24607,9 @@ ${normalizedText}` : normalizedText;
|
|
|
24469
24607
|
if (target.targetId === selectedProviderSwitchTarget.targetId) {
|
|
24470
24608
|
return false;
|
|
24471
24609
|
}
|
|
24472
|
-
const
|
|
24610
|
+
const selectedAgentTargetId2 = selectedProviderSwitchTarget.agentTargetId ?? selectedProviderSwitchTarget.targetId;
|
|
24473
24611
|
const targetAgentTargetId = target.agentTargetId ?? target.targetId;
|
|
24474
|
-
return targetAgentTargetId !==
|
|
24612
|
+
return targetAgentTargetId !== selectedAgentTargetId2;
|
|
24475
24613
|
}) : enabledHandoffProviderTargets;
|
|
24476
24614
|
const selectedProviderLabel = selectedProviderSwitchTarget?.label ?? selectedProviderTarget?.label ?? provider;
|
|
24477
24615
|
const effectiveHandoffLabel = handoffLabel || labels.handoffConversation;
|
|
@@ -25671,7 +25809,7 @@ ${normalizedText}` : normalizedText;
|
|
|
25671
25809
|
}
|
|
25672
25810
|
onProviderSelect?.({
|
|
25673
25811
|
provider: target.provider,
|
|
25674
|
-
|
|
25812
|
+
agentTargetId: target.targetId
|
|
25675
25813
|
});
|
|
25676
25814
|
},
|
|
25677
25815
|
children: [
|
|
@@ -26584,13 +26722,12 @@ function resolveAgentGUIHeroIconUrl(provider) {
|
|
|
26584
26722
|
const normalizedProvider = normalizeManagedAgentProvider(provider);
|
|
26585
26723
|
return MANAGED_AGENT_ICON_URLS[normalizedProvider] ?? MANAGED_AGENT_ICON_FALLBACK_URL;
|
|
26586
26724
|
}
|
|
26587
|
-
var HERO_USES_PROVIDER_RAIL_ICON = /* @__PURE__ */ new Set(["cursor", "opencode"]);
|
|
26588
26725
|
function agentGUIProviderIconPresentation(provider, iconUrl) {
|
|
26589
26726
|
const normalizedProvider = normalizeManagedAgentProvider(provider);
|
|
26590
26727
|
const providerRailIconUrl = MANAGED_AGENT_PROVIDER_RAIL_ICON_URLS[normalizedProvider] ?? null;
|
|
26591
26728
|
return {
|
|
26592
26729
|
provider: normalizedProvider,
|
|
26593
|
-
iconUrl: (
|
|
26730
|
+
iconUrl: iconUrl?.trim() || providerRailIconUrl || resolveAgentGUIHeroIconUrl(normalizedProvider)
|
|
26594
26731
|
};
|
|
26595
26732
|
}
|
|
26596
26733
|
function agentGUIProviderRailIconPresentation(provider, iconUrl) {
|
|
@@ -26598,7 +26735,7 @@ function agentGUIProviderRailIconPresentation(provider, iconUrl) {
|
|
|
26598
26735
|
const providerRailIconUrl = MANAGED_AGENT_PROVIDER_RAIL_ICON_URLS[normalizedProvider] ?? null;
|
|
26599
26736
|
return {
|
|
26600
26737
|
provider: normalizedProvider,
|
|
26601
|
-
iconUrl:
|
|
26738
|
+
iconUrl: iconUrl?.trim() || providerRailIconUrl || resolveAgentGUIHeroIconUrl(normalizedProvider)
|
|
26602
26739
|
};
|
|
26603
26740
|
}
|
|
26604
26741
|
function shouldEmphasizeEmptyHeroProvider(label) {
|
|
@@ -27398,10 +27535,8 @@ function AgentGUINodeView({
|
|
|
27398
27535
|
selectedProviderTarget: viewModel.selectedProviderTarget,
|
|
27399
27536
|
providerTargets: viewModel.providerTargets,
|
|
27400
27537
|
providerTargetsLoading: viewModel.providerTargetsLoading,
|
|
27401
|
-
providerRailMode: viewModel.providerRailMode,
|
|
27402
27538
|
renderProviderRailEmpty,
|
|
27403
27539
|
providerRailAllPresentation,
|
|
27404
|
-
comingSoonProviders: viewModel.comingSoonProviders,
|
|
27405
27540
|
onSelectConversationFilterTarget: actions.selectConversationFilterTarget,
|
|
27406
27541
|
onUpdateConversationFilter: actions.updateConversationFilter,
|
|
27407
27542
|
onRequestComposerFocus: requestComposerFocus
|
|
@@ -27542,6 +27677,7 @@ function AgentGUINodeView({
|
|
|
27542
27677
|
contextMentionProviders,
|
|
27543
27678
|
workspaceAppIcons: effectiveWorkspaceAppIcons,
|
|
27544
27679
|
workspaceUserProjectI18n,
|
|
27680
|
+
renderAgentsEmpty: renderProviderRailEmpty,
|
|
27545
27681
|
renderProviderUnavailableState,
|
|
27546
27682
|
renderProviderReadinessGateState,
|
|
27547
27683
|
previewMode
|
|
@@ -27797,6 +27933,7 @@ var AgentGUIDetailPane = memo3(function AgentGUIDetailPane2({
|
|
|
27797
27933
|
onRequestComposerFocus,
|
|
27798
27934
|
contextMentionProviders,
|
|
27799
27935
|
workspaceAppIcons = EMPTY_WORKSPACE_APP_ICONS3,
|
|
27936
|
+
renderAgentsEmpty,
|
|
27800
27937
|
renderProviderUnavailableState,
|
|
27801
27938
|
renderProviderReadinessGateState
|
|
27802
27939
|
}) {
|
|
@@ -27822,8 +27959,9 @@ var AgentGUIDetailPane = memo3(function AgentGUIDetailPane2({
|
|
|
27822
27959
|
avoidGroupingEdits: viewModel.avoidGroupingEdits
|
|
27823
27960
|
});
|
|
27824
27961
|
const hasActiveConversation = viewModel.activeConversationId !== null;
|
|
27825
|
-
const
|
|
27826
|
-
const
|
|
27962
|
+
const agentsLoadedEmpty = !viewModel.providerTargetsLoading && viewModel.providerTargets.length === 0;
|
|
27963
|
+
const selectedProviderTargetComingSoon = viewModel.selectedProviderTarget?.disabled === true && (viewModel.providerReadinessGate === null || viewModel.providerReadinessGate?.status === "coming_soon");
|
|
27964
|
+
const emptyProviderReadinessGate = !hasActiveConversation ? viewModel.providerReadinessGate ?? (selectedProviderTargetComingSoon ? { status: "coming_soon" } : null) : null;
|
|
27827
27965
|
const activePrompt = viewModel.pendingInteractivePrompt ?? viewModel.pendingApproval;
|
|
27828
27966
|
const activePromptRequestId = activePrompt?.requestId ?? null;
|
|
27829
27967
|
const sessionChrome = useMemo11(
|
|
@@ -28564,11 +28702,36 @@ var AgentGUIDetailPane = memo3(function AgentGUIDetailPane2({
|
|
|
28564
28702
|
[bottomDockComposerProps]
|
|
28565
28703
|
);
|
|
28566
28704
|
const emptyHeroProvider = viewModel.selectedProviderTarget?.provider ?? viewModel.data.provider;
|
|
28567
|
-
const
|
|
28568
|
-
const
|
|
28705
|
+
const emptyHeroRuntimeProviderLabel = labels.emptyProviderForProvider?.(emptyHeroProvider) ?? labels.emptyProvider ?? "";
|
|
28706
|
+
const emptyHeroProviderLabel = viewModel.selectedProviderTarget?.label ?? emptyHeroRuntimeProviderLabel;
|
|
28707
|
+
const emptyHeroBaseLabel = labels.emptyForProvider?.(emptyHeroProvider) ?? labels.empty;
|
|
28708
|
+
const emptyHeroLabel = emptyHeroRuntimeProviderLabel ? emptyHeroBaseLabel.replace(
|
|
28709
|
+
emptyHeroRuntimeProviderLabel,
|
|
28710
|
+
emptyHeroProviderLabel
|
|
28711
|
+
) : emptyHeroBaseLabel;
|
|
28569
28712
|
const emptyHeroIconPresentations = useMemo11(
|
|
28570
|
-
() => viewModel.conversationFilter.kind === "all" ?
|
|
28571
|
-
|
|
28713
|
+
() => viewModel.conversationFilter.kind === "all" ? viewModel.providerTargets.map((target) => ({
|
|
28714
|
+
agentTargetId: target.agentTargetId ?? target.targetId,
|
|
28715
|
+
provider: target.provider,
|
|
28716
|
+
iconUrl: agentGUIProviderRailIconPresentation(
|
|
28717
|
+
target.provider,
|
|
28718
|
+
target.iconUrl
|
|
28719
|
+
).iconUrl
|
|
28720
|
+
})) : [
|
|
28721
|
+
{
|
|
28722
|
+
...agentGUIProviderIconPresentation(
|
|
28723
|
+
emptyHeroProvider,
|
|
28724
|
+
viewModel.selectedProviderTarget?.iconUrl
|
|
28725
|
+
),
|
|
28726
|
+
agentTargetId: viewModel.selectedProviderTarget?.agentTargetId ?? viewModel.selectedProviderTarget?.targetId
|
|
28727
|
+
}
|
|
28728
|
+
],
|
|
28729
|
+
[
|
|
28730
|
+
emptyHeroProvider,
|
|
28731
|
+
viewModel.conversationFilter.kind,
|
|
28732
|
+
viewModel.providerTargets,
|
|
28733
|
+
viewModel.selectedProviderTarget
|
|
28734
|
+
]
|
|
28572
28735
|
);
|
|
28573
28736
|
const disabledProviderTarget = selectedProviderTargetComingSoon ? viewModel.selectedProviderTarget ?? null : null;
|
|
28574
28737
|
const shouldRenderProviderUnavailableState = !hasActiveConversation && disabledProviderTarget !== null && renderProviderUnavailableState !== void 0;
|
|
@@ -28967,7 +29130,14 @@ var AgentGUIDetailPane = memo3(function AgentGUIDetailPane2({
|
|
|
28967
29130
|
viewportTestId: "agent-gui-timeline",
|
|
28968
29131
|
viewportClassName: `${AgentGUINode_styles_default.timeline} ${hasActiveConversation ? AgentGUINode_styles_default.timelineWithComposer : AgentGUINode_styles_default.timelineCentered} ${!isTimelineScrolledToTop ? AgentGUINode_styles_default.timelineScrolledFromTop : ""} ${showUnavailableChatEmpty ? AgentGUINode_styles_default.timelineUnavailableChatEmpty : ""}`.trim(),
|
|
28969
29132
|
viewportContentStyle: AGENT_GUI_TIMELINE_SCROLL_AREA_CONTENT_STYLE,
|
|
28970
|
-
children: !hasActiveConversation ?
|
|
29133
|
+
children: !hasActiveConversation ? agentsLoadedEmpty ? renderAgentsEmpty ? /* @__PURE__ */ jsx35(Fragment9, { children: renderAgentsEmpty() }) : /* @__PURE__ */ jsx35(
|
|
29134
|
+
"div",
|
|
29135
|
+
{
|
|
29136
|
+
className: AgentGUINode_styles_default.emptyHero,
|
|
29137
|
+
"data-testid": "agent-gui-agents-empty",
|
|
29138
|
+
children: /* @__PURE__ */ jsx35("div", { className: AgentGUINode_styles_default.emptyHeroBody, children: /* @__PURE__ */ jsx35("h2", { className: AgentGUINode_styles_default.emptyHeroTitle, children: labels.agentsEmpty }) })
|
|
29139
|
+
}
|
|
29140
|
+
) : shouldRenderProviderUnavailableState && disabledProviderTarget ? /* @__PURE__ */ jsx35(Fragment9, { children: renderProviderUnavailableState?.({
|
|
28971
29141
|
provider: disabledProviderTarget.provider,
|
|
28972
29142
|
providerLabel: labels.emptyProviderForProvider?.(
|
|
28973
29143
|
disabledProviderTarget.provider
|
|
@@ -29191,7 +29361,7 @@ var AgentGUIEmptyHeroPane = memo3(function AgentGUIEmptyHeroPane2({
|
|
|
29191
29361
|
/* @__PURE__ */ jsx35("div", { className: AgentGUINode_styles_default.emptyHeroIconSlot, children: heroIconPresentations.length > 1 ? /* @__PURE__ */ jsx35(
|
|
29192
29362
|
AgentGUIHeroAgentCarousel,
|
|
29193
29363
|
{
|
|
29194
|
-
|
|
29364
|
+
activeAgentTargetId: selectedProviderTarget?.agentTargetId ?? selectedProviderTarget?.targetId,
|
|
29195
29365
|
icons: heroIconPresentations,
|
|
29196
29366
|
providerTargets,
|
|
29197
29367
|
onProviderSelect,
|
|
@@ -29258,8 +29428,15 @@ var AgentGUIProviderReadinessGatePane = memo3(
|
|
|
29258
29428
|
"use memo";
|
|
29259
29429
|
const heroIconUrl = resolveAgentGUIHeroIconUrl(provider);
|
|
29260
29430
|
const launchpadIconPresentations = useMemo11(
|
|
29261
|
-
() =>
|
|
29262
|
-
|
|
29431
|
+
() => providerTargets.map((target) => ({
|
|
29432
|
+
agentTargetId: target.agentTargetId ?? target.targetId,
|
|
29433
|
+
provider: target.provider,
|
|
29434
|
+
iconUrl: agentGUIProviderRailIconPresentation(
|
|
29435
|
+
target.provider,
|
|
29436
|
+
target.iconUrl
|
|
29437
|
+
).iconUrl
|
|
29438
|
+
})),
|
|
29439
|
+
[providerTargets]
|
|
29263
29440
|
);
|
|
29264
29441
|
const pendingAction = gate.pendingAction ?? null;
|
|
29265
29442
|
const isPending = pendingAction !== null;
|
|
@@ -29280,7 +29457,7 @@ var AgentGUIProviderReadinessGatePane = memo3(
|
|
|
29280
29457
|
showAllProviders ? /* @__PURE__ */ jsx35(
|
|
29281
29458
|
AgentGUIHeroAgentCarousel,
|
|
29282
29459
|
{
|
|
29283
|
-
|
|
29460
|
+
activeAgentTargetId: selectedProviderTarget?.agentTargetId ?? selectedProviderTarget?.targetId,
|
|
29284
29461
|
icons: launchpadIconPresentations,
|
|
29285
29462
|
providerTargets,
|
|
29286
29463
|
onProviderSelect,
|
|
@@ -29450,7 +29627,7 @@ function EmptyHeroTitle({
|
|
|
29450
29627
|
return /* @__PURE__ */ jsx35(Fragment9, { children: label });
|
|
29451
29628
|
}
|
|
29452
29629
|
const providerEnd = providerStart + providerLabel.length;
|
|
29453
|
-
const
|
|
29630
|
+
const selectedAgentTargetId = selectedProviderTarget?.targetId ?? `local:${selectedProviderTarget?.provider ?? ""}`;
|
|
29454
29631
|
const canSwitchProvider = providerTargets.length > 1 && selectedProviderTarget && onProviderSelect;
|
|
29455
29632
|
const providerName = label.slice(providerStart, providerEnd);
|
|
29456
29633
|
return /* @__PURE__ */ jsxs22(Fragment9, { children: [
|
|
@@ -29458,7 +29635,7 @@ function EmptyHeroTitle({
|
|
|
29458
29635
|
canSwitchProvider ? /* @__PURE__ */ jsxs22(
|
|
29459
29636
|
Select3,
|
|
29460
29637
|
{
|
|
29461
|
-
value:
|
|
29638
|
+
value: selectedAgentTargetId,
|
|
29462
29639
|
onValueChange: (nextTargetId) => {
|
|
29463
29640
|
const target = providerTargets.find(
|
|
29464
29641
|
(candidate) => candidate.targetId === nextTargetId
|
|
@@ -29468,7 +29645,7 @@ function EmptyHeroTitle({
|
|
|
29468
29645
|
}
|
|
29469
29646
|
onProviderSelect({
|
|
29470
29647
|
provider: target.provider,
|
|
29471
|
-
|
|
29648
|
+
agentTargetId: target.targetId
|
|
29472
29649
|
});
|
|
29473
29650
|
},
|
|
29474
29651
|
children: [
|
|
@@ -30065,43 +30242,6 @@ function conversationSyncStatesRenderEqual(left, right) {
|
|
|
30065
30242
|
function conversationProjectsRenderEqual2(left, right) {
|
|
30066
30243
|
return left === right || (!left || !right ? !left && !right : left.id === right.id && left.path === right.path && left.label === right.label && left.sectionKey === right.sectionKey && left.createdAtUnixMs === right.createdAtUnixMs && left.updatedAtUnixMs === right.updatedAtUnixMs && left.lastUsedAtUnixMs === right.lastUsedAtUnixMs);
|
|
30067
30244
|
}
|
|
30068
|
-
var agentGUIProviderRailOrder = [
|
|
30069
|
-
"codex",
|
|
30070
|
-
"claude-code",
|
|
30071
|
-
"cursor",
|
|
30072
|
-
"tutti-agent",
|
|
30073
|
-
"nexight",
|
|
30074
|
-
"opencode",
|
|
30075
|
-
"hermes",
|
|
30076
|
-
"openclaw"
|
|
30077
|
-
];
|
|
30078
|
-
var agentGUIProviderRailDefaultProviders = [
|
|
30079
|
-
"codex",
|
|
30080
|
-
"claude-code",
|
|
30081
|
-
"cursor",
|
|
30082
|
-
"hermes",
|
|
30083
|
-
"openclaw"
|
|
30084
|
-
];
|
|
30085
|
-
var agentGUIProviderRailDisabledProviders = /* @__PURE__ */ new Set([
|
|
30086
|
-
"nexight",
|
|
30087
|
-
"hermes",
|
|
30088
|
-
"openclaw"
|
|
30089
|
-
]);
|
|
30090
|
-
function agentGUIProviderRailOrderIndex(provider) {
|
|
30091
|
-
const index = agentGUIProviderRailOrder.indexOf(provider);
|
|
30092
|
-
return index < 0 ? agentGUIProviderRailOrder.length : index;
|
|
30093
|
-
}
|
|
30094
|
-
function agentGUILaunchpadIconPresentations() {
|
|
30095
|
-
return [
|
|
30096
|
-
agentGUIProviderRailIconPresentation("codex"),
|
|
30097
|
-
agentGUIProviderRailIconPresentation("claude-code"),
|
|
30098
|
-
agentGUIProviderRailIconPresentation("cursor"),
|
|
30099
|
-
agentGUIProviderRailIconPresentation("tutti"),
|
|
30100
|
-
agentGUIProviderRailIconPresentation("opencode"),
|
|
30101
|
-
agentGUIProviderRailIconPresentation("hermes"),
|
|
30102
|
-
agentGUIProviderRailIconPresentation("openclaw")
|
|
30103
|
-
];
|
|
30104
|
-
}
|
|
30105
30245
|
function agentGUIConversationProviderIconUrl(provider) {
|
|
30106
30246
|
return resolveAgentGuiSessionProviderFlatIconUrl(provider);
|
|
30107
30247
|
}
|
|
@@ -30130,37 +30270,8 @@ function agentGUIProviderRailAriaLabel(label, badgeLabel) {
|
|
|
30130
30270
|
function agentGUIProviderTargetMatchesConversationFilter(target, filter) {
|
|
30131
30271
|
return filter.kind === "agentTarget" && (target.agentTargetId?.trim() ?? "") === filter.agentTargetId;
|
|
30132
30272
|
}
|
|
30133
|
-
function agentGUIProviderRailTargets(providerTargets, providerTargetsLoading
|
|
30134
|
-
|
|
30135
|
-
return [];
|
|
30136
|
-
}
|
|
30137
|
-
if (providerRailMode === "exact") {
|
|
30138
|
-
return providerTargets;
|
|
30139
|
-
}
|
|
30140
|
-
const comingSoon = new Set(comingSoonProviders);
|
|
30141
|
-
const source = providerTargets.length > 0 && !agentGUIProviderRailTargetsAreFullLocalFallback(providerTargets) ? providerTargets : [];
|
|
30142
|
-
const seenProviders = new Set(source.map((target) => target.provider));
|
|
30143
|
-
const missingDefaultProviders = agentGUIProviderRailDefaultProviders.filter(
|
|
30144
|
-
(provider) => !seenProviders.has(provider)
|
|
30145
|
-
);
|
|
30146
|
-
if (source.length > 0 && missingDefaultProviders.length === 0) {
|
|
30147
|
-
return source;
|
|
30148
|
-
}
|
|
30149
|
-
return [
|
|
30150
|
-
...source,
|
|
30151
|
-
...missingDefaultProviders.map(
|
|
30152
|
-
(provider) => agentGUIProviderRailDisabledProviders.has(provider) || comingSoon.has(provider) ? createDisabledPlaceholderAgentGUIProviderTarget(provider) : createLocalAgentGUIProviderTarget(provider)
|
|
30153
|
-
)
|
|
30154
|
-
];
|
|
30155
|
-
}
|
|
30156
|
-
function agentGUIProviderRailTargetsAreFullLocalFallback(providerTargets) {
|
|
30157
|
-
if (providerTargets.length !== agentGUIProviderRailOrder.length) {
|
|
30158
|
-
return false;
|
|
30159
|
-
}
|
|
30160
|
-
const fallbackProviders = new Set(agentGUIProviderRailOrder);
|
|
30161
|
-
return providerTargets.every(
|
|
30162
|
-
(target) => fallbackProviders.has(target.provider) && target.ref.kind === "local" && target.ref.provider === target.provider && target.targetId === `local:${target.provider}`
|
|
30163
|
-
);
|
|
30273
|
+
function agentGUIProviderRailTargets(providerTargets, providerTargetsLoading) {
|
|
30274
|
+
return providerTargetsLoading ? [] : providerTargets;
|
|
30164
30275
|
}
|
|
30165
30276
|
var AGENT_GUI_PROVIDER_RAIL_DRAG_HYSTERESIS_PX = 8;
|
|
30166
30277
|
var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
@@ -30171,10 +30282,8 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30171
30282
|
selectedProviderTarget,
|
|
30172
30283
|
providerTargets,
|
|
30173
30284
|
providerTargetsLoading,
|
|
30174
|
-
providerRailMode,
|
|
30175
30285
|
renderProviderRailEmpty,
|
|
30176
30286
|
providerRailAllPresentation,
|
|
30177
|
-
comingSoonProviders,
|
|
30178
30287
|
onRequestComposerFocus,
|
|
30179
30288
|
onSelectConversationFilterTarget,
|
|
30180
30289
|
onUpdateConversationFilter
|
|
@@ -30216,51 +30325,16 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30216
30325
|
[providerRailOrderStorageKey]
|
|
30217
30326
|
);
|
|
30218
30327
|
const railProviderTargets = useMemo11(
|
|
30219
|
-
() => agentGUIProviderRailTargets(
|
|
30220
|
-
|
|
30221
|
-
providerTargetsLoading,
|
|
30222
|
-
comingSoonProviders,
|
|
30223
|
-
providerRailMode
|
|
30224
|
-
),
|
|
30225
|
-
[
|
|
30226
|
-
comingSoonProviders,
|
|
30227
|
-
providerRailMode,
|
|
30228
|
-
providerTargets,
|
|
30229
|
-
providerTargetsLoading
|
|
30230
|
-
]
|
|
30328
|
+
() => agentGUIProviderRailTargets(providerTargets, providerTargetsLoading),
|
|
30329
|
+
[providerTargets, providerTargetsLoading]
|
|
30231
30330
|
);
|
|
30232
30331
|
const providerTiles = useMemo11(() => {
|
|
30233
|
-
|
|
30234
|
-
|
|
30235
|
-
|
|
30236
|
-
targets.forEach((target, index) => {
|
|
30237
|
-
originalIndexByTarget.set(
|
|
30238
|
-
`${target.provider}\0${target.targetId}`,
|
|
30239
|
-
index
|
|
30240
|
-
);
|
|
30241
|
-
});
|
|
30242
|
-
return targets.sort((left, right) => {
|
|
30243
|
-
const orderDelta = agentGUIProviderRailOrderIndex(left.provider) - agentGUIProviderRailOrderIndex(right.provider);
|
|
30244
|
-
if (orderDelta !== 0) {
|
|
30245
|
-
return orderDelta;
|
|
30246
|
-
}
|
|
30247
|
-
return (originalIndexByTarget.get(
|
|
30248
|
-
`${left.provider}\0${left.targetId}`
|
|
30249
|
-
) ?? 0) - (originalIndexByTarget.get(
|
|
30250
|
-
`${right.provider}\0${right.targetId}`
|
|
30251
|
-
) ?? 0);
|
|
30252
|
-
});
|
|
30253
|
-
})();
|
|
30254
|
-
return applyAgentGUIProviderRailOrder(orderedTargets, providerRailOrder);
|
|
30255
|
-
}, [providerRailMode, providerRailOrder, railProviderTargets]);
|
|
30256
|
-
const visibleProviderTiles = useMemo11(() => {
|
|
30257
|
-
if (!providerTiles.some((target) => target.provider === "tutti-agent")) {
|
|
30258
|
-
return providerTiles;
|
|
30259
|
-
}
|
|
30260
|
-
return providerTiles.filter(
|
|
30261
|
-
(target) => target.provider !== "nexight" || target.disabled !== true
|
|
30332
|
+
return applyAgentGUIProviderRailOrder(
|
|
30333
|
+
railProviderTargets,
|
|
30334
|
+
providerRailOrder
|
|
30262
30335
|
);
|
|
30263
|
-
}, [
|
|
30336
|
+
}, [providerRailOrder, railProviderTargets]);
|
|
30337
|
+
const visibleProviderTiles = providerTiles;
|
|
30264
30338
|
const selectedProviderTargetIsPlaceholder = selectedProviderTarget?.disabled === true;
|
|
30265
30339
|
const allTileSelected = conversationFilter.kind === "all" && !selectedProviderTargetIsPlaceholder;
|
|
30266
30340
|
const selectAllProviders = useCallback11(() => {
|
|
@@ -30270,7 +30344,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30270
30344
|
if (fallbackTarget) {
|
|
30271
30345
|
onSelectConversationFilterTarget({
|
|
30272
30346
|
provider: fallbackTarget.provider,
|
|
30273
|
-
|
|
30347
|
+
agentTargetId: fallbackTarget.targetId
|
|
30274
30348
|
});
|
|
30275
30349
|
}
|
|
30276
30350
|
}
|
|
@@ -30286,7 +30360,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30286
30360
|
(target) => {
|
|
30287
30361
|
onSelectConversationFilterTarget({
|
|
30288
30362
|
provider: target.provider,
|
|
30289
|
-
|
|
30363
|
+
agentTargetId: target.targetId
|
|
30290
30364
|
});
|
|
30291
30365
|
onRequestComposerFocus();
|
|
30292
30366
|
},
|
|
@@ -30363,7 +30437,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30363
30437
|
"[data-provider-tile='true']"
|
|
30364
30438
|
)
|
|
30365
30439
|
).map((element) => {
|
|
30366
|
-
const targetId = element.dataset.
|
|
30440
|
+
const targetId = element.dataset.agentTargetId?.trim() ?? "";
|
|
30367
30441
|
if (!targetId || targetId === activeDragState.draggedTargetId) {
|
|
30368
30442
|
return null;
|
|
30369
30443
|
}
|
|
@@ -30429,7 +30503,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30429
30503
|
)
|
|
30430
30504
|
);
|
|
30431
30505
|
const dropTargets = tileElements.map((element) => {
|
|
30432
|
-
const targetId = element.dataset.
|
|
30506
|
+
const targetId = element.dataset.agentTargetId?.trim() ?? "";
|
|
30433
30507
|
if (!targetId || targetId === activeDragState.draggedTargetId) {
|
|
30434
30508
|
return null;
|
|
30435
30509
|
}
|
|
@@ -30459,7 +30533,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30459
30533
|
},
|
|
30460
30534
|
[dragState, previewMode, providerTargetsLoading, setProviderRailDragState]
|
|
30461
30535
|
);
|
|
30462
|
-
if (
|
|
30536
|
+
if (!providerTargetsLoading && visibleProviderTiles.length === 0 && renderProviderRailEmpty) {
|
|
30463
30537
|
return /* @__PURE__ */ jsx35(
|
|
30464
30538
|
"div",
|
|
30465
30539
|
{
|
|
@@ -30467,8 +30541,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30467
30541
|
role: "tablist",
|
|
30468
30542
|
"aria-label": labels.providerSwitchLabel,
|
|
30469
30543
|
"aria-busy": providerTargetsLoading,
|
|
30470
|
-
"data-empty": "true"
|
|
30471
|
-
children: renderProviderRailEmpty()
|
|
30544
|
+
"data-empty": "true"
|
|
30472
30545
|
}
|
|
30473
30546
|
);
|
|
30474
30547
|
}
|
|
@@ -30482,29 +30555,31 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30482
30555
|
onDragOver: handleProviderRailContainerDragOver,
|
|
30483
30556
|
onDrop: commitProviderRailDragDrop,
|
|
30484
30557
|
children: [
|
|
30485
|
-
/* @__PURE__ */ jsxs22(
|
|
30486
|
-
|
|
30487
|
-
|
|
30488
|
-
|
|
30489
|
-
|
|
30490
|
-
|
|
30491
|
-
|
|
30492
|
-
|
|
30493
|
-
|
|
30494
|
-
|
|
30495
|
-
|
|
30496
|
-
|
|
30497
|
-
|
|
30498
|
-
|
|
30499
|
-
|
|
30500
|
-
|
|
30501
|
-
|
|
30502
|
-
|
|
30503
|
-
|
|
30504
|
-
|
|
30505
|
-
|
|
30506
|
-
|
|
30507
|
-
|
|
30558
|
+
visibleProviderTiles.length > 1 ? /* @__PURE__ */ jsxs22(Fragment9, { children: [
|
|
30559
|
+
/* @__PURE__ */ jsxs22(
|
|
30560
|
+
"button",
|
|
30561
|
+
{
|
|
30562
|
+
type: "button",
|
|
30563
|
+
role: "tab",
|
|
30564
|
+
"aria-label": labels.conversationFilterAll,
|
|
30565
|
+
"aria-selected": allTileSelected,
|
|
30566
|
+
className: AgentGUINode_styles_default.providerRailTile,
|
|
30567
|
+
"data-selected": allTileSelected ? "true" : "false",
|
|
30568
|
+
disabled: previewMode,
|
|
30569
|
+
onClick: selectAllProviders,
|
|
30570
|
+
children: [
|
|
30571
|
+
/* @__PURE__ */ jsx35(
|
|
30572
|
+
AgentGUIUnifiedProviderIcon,
|
|
30573
|
+
{
|
|
30574
|
+
presentation: providerRailAllPresentation
|
|
30575
|
+
}
|
|
30576
|
+
),
|
|
30577
|
+
/* @__PURE__ */ jsx35("span", { className: AgentGUINode_styles_default.providerRailTileLabel, children: labels.conversationFilterAll })
|
|
30578
|
+
]
|
|
30579
|
+
}
|
|
30580
|
+
),
|
|
30581
|
+
/* @__PURE__ */ jsx35("span", { "aria-hidden": "true", className: AgentGUINode_styles_default.providerRailSeparator })
|
|
30582
|
+
] }) : null,
|
|
30508
30583
|
providerTargetsLoading ? [0, 1, 2].map((index) => /* @__PURE__ */ jsx35(
|
|
30509
30584
|
"button",
|
|
30510
30585
|
{
|
|
@@ -30526,7 +30601,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30526
30601
|
`provider-target-loading-${index}`
|
|
30527
30602
|
)) : null,
|
|
30528
30603
|
visibleProviderTiles.map((target) => {
|
|
30529
|
-
const providerSelected = target.disabled === true ? selectedProviderTarget?.provider === target.provider && selectedProviderTarget?.targetId === target.targetId : agentGUIProviderTargetMatchesConversationFilter(
|
|
30604
|
+
const providerSelected = visibleProviderTiles.length === 1 ? true : target.disabled === true ? selectedProviderTarget?.provider === target.provider && selectedProviderTarget?.targetId === target.targetId : agentGUIProviderTargetMatchesConversationFilter(
|
|
30530
30605
|
target,
|
|
30531
30606
|
conversationFilter
|
|
30532
30607
|
);
|
|
@@ -30551,7 +30626,7 @@ var AgentGUIProviderRail = memo3(function AgentGUIProviderRail2({
|
|
|
30551
30626
|
"data-drag-over": dragState?.overTargetId === target.targetId ? dragState.position : void 0,
|
|
30552
30627
|
"data-dragging": dragState?.draggedTargetId === target.targetId ? "true" : void 0,
|
|
30553
30628
|
"data-provider-tile": "true",
|
|
30554
|
-
"data-
|
|
30629
|
+
"data-agent-target-id": target.targetId,
|
|
30555
30630
|
"data-selected": providerSelected ? "true" : "false",
|
|
30556
30631
|
disabled: previewMode,
|
|
30557
30632
|
draggable: !previewMode && !providerTargetsLoading,
|
|
@@ -33302,10 +33377,7 @@ function resolveAgentGUIRailStatusProvider(input) {
|
|
|
33302
33377
|
return target ? target.provider : null;
|
|
33303
33378
|
}
|
|
33304
33379
|
function agentGuiStateEquals(left, right) {
|
|
33305
|
-
return left === right || left.provider === right.provider && (left.agentTargetId ?? null) === (right.agentTargetId ?? null) && (left.
|
|
33306
|
-
left.providerTargetRef,
|
|
33307
|
-
right.providerTargetRef
|
|
33308
|
-
) && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId && (left.lastActiveConversationTitle ?? null) === (right.lastActiveConversationTitle ?? null) && left.conversationRailWidthPx === right.conversationRailWidthPx && left.conversationRailCollapsed === right.conversationRailCollapsed && (left.composerOverrides?.model ?? null) === (right.composerOverrides?.model ?? null) && (left.composerOverrides?.reasoningEffort ?? null) === (right.composerOverrides?.reasoningEffort ?? null) && (left.composerOverrides?.planMode ?? null) === (right.composerOverrides?.planMode ?? null) && (left.composerOverrides?.permissionModeId ?? null) === (right.composerOverrides?.permissionModeId ?? null) && composerOverridesByProviderEqual(
|
|
33380
|
+
return left === right || left.provider === right.provider && (left.agentTargetId ?? null) === (right.agentTargetId ?? null) && left.lastActiveAgentSessionId === right.lastActiveAgentSessionId && (left.lastActiveConversationTitle ?? null) === (right.lastActiveConversationTitle ?? null) && left.conversationRailWidthPx === right.conversationRailWidthPx && left.conversationRailCollapsed === right.conversationRailCollapsed && (left.composerOverrides?.model ?? null) === (right.composerOverrides?.model ?? null) && (left.composerOverrides?.reasoningEffort ?? null) === (right.composerOverrides?.reasoningEffort ?? null) && (left.composerOverrides?.planMode ?? null) === (right.composerOverrides?.planMode ?? null) && (left.composerOverrides?.permissionModeId ?? null) === (right.composerOverrides?.permissionModeId ?? null) && composerOverridesByProviderEqual(
|
|
33309
33381
|
left.composerOverridesByProvider,
|
|
33310
33382
|
right.composerOverridesByProvider
|
|
33311
33383
|
) && composerOverridesByAgentTargetIdEqual(
|
|
@@ -33343,7 +33415,7 @@ function composerOverridesByAgentTargetIdEqual(left, right) {
|
|
|
33343
33415
|
return true;
|
|
33344
33416
|
}
|
|
33345
33417
|
function areAgentGUINodePropsEqual(previous, next) {
|
|
33346
|
-
return previous.nodeId === next.nodeId && previous.workspaceId === next.workspaceId && previous.currentUserId === next.currentUserId && previous.workspacePath === next.workspacePath && previous.workspaceFileReferenceAdapter === next.workspaceFileReferenceAdapter && previous.resolveDroppedFileReferences === next.resolveDroppedFileReferences && previous.selectProjectDirectory === next.selectProjectDirectory && previous.referenceSourceAggregator === next.referenceSourceAggregator && previous.resolveWorkspaceReferenceEntryIconUrl === next.resolveWorkspaceReferenceEntryIconUrl && previous.resolveMentionReferenceTarget === next.resolveMentionReferenceTarget && previous.resolveWorkspaceReferenceInitialTarget === next.resolveWorkspaceReferenceInitialTarget && previous.onWorkspaceFileReferencesAdded === next.onWorkspaceFileReferencesAdded && previous.agentSettings.avoidGroupingEdits === next.agentSettings.avoidGroupingEdits && previous.title === next.title && agentGuiStateEquals(previous.state, next.state) && previous.position.x === next.position.x && previous.position.y === next.position.y && previous.width === next.width && previous.height === next.height && previous.desktopSize.width === next.desktopSize.width && previous.desktopSize.height === next.desktopSize.height && previous.onLinkAction === next.onLinkAction && previous.onHandoffConversation === next.onHandoffConversation && previous.onCapabilitySettingsRequest === next.onCapabilitySettingsRequest && previous.onAgentProviderLogin === next.onAgentProviderLogin && previous.accountMenuState === next.accountMenuState && previous.
|
|
33418
|
+
return previous.nodeId === next.nodeId && previous.workspaceId === next.workspaceId && previous.currentUserId === next.currentUserId && previous.workspacePath === next.workspacePath && previous.workspaceFileReferenceAdapter === next.workspaceFileReferenceAdapter && previous.resolveDroppedFileReferences === next.resolveDroppedFileReferences && previous.selectProjectDirectory === next.selectProjectDirectory && previous.referenceSourceAggregator === next.referenceSourceAggregator && previous.resolveWorkspaceReferenceEntryIconUrl === next.resolveWorkspaceReferenceEntryIconUrl && previous.resolveMentionReferenceTarget === next.resolveMentionReferenceTarget && previous.resolveWorkspaceReferenceInitialTarget === next.resolveWorkspaceReferenceInitialTarget && previous.onWorkspaceFileReferencesAdded === next.onWorkspaceFileReferencesAdded && previous.agentSettings.avoidGroupingEdits === next.agentSettings.avoidGroupingEdits && previous.title === next.title && agentGuiStateEquals(previous.state, next.state) && previous.position.x === next.position.x && previous.position.y === next.position.y && previous.width === next.width && previous.height === next.height && previous.desktopSize.width === next.desktopSize.width && previous.desktopSize.height === next.desktopSize.height && previous.onLinkAction === next.onLinkAction && previous.onHandoffConversation === next.onHandoffConversation && previous.onCapabilitySettingsRequest === next.onCapabilitySettingsRequest && previous.onAgentProviderLogin === next.onAgentProviderLogin && previous.accountMenuState === next.accountMenuState && previous.agents === next.agents && previous.agentsLoading === next.agentsLoading && previous.allAgentsPresentation?.iconUrl === next.allAgentsPresentation?.iconUrl && previous.slashCommandFallbackMode === next.slashCommandFallbackMode && previous.renderSidebarFooter === next.renderSidebarFooter && previous.renderAgentsEmpty === next.renderAgentsEmpty && previous.renderAgentUnavailableState === next.renderAgentUnavailableState && previous.renderAgentReadinessState === next.renderAgentReadinessState && previous.onAgentAvailabilityAction === next.onAgentAvailabilityAction && previous.defaultAgentTargetId === next.defaultAgentTargetId && previous.onClose === next.onClose && previous.onResize === next.onResize && previous.onUpdateNode === next.onUpdateNode && previous.onRememberComposerDefaults === next.onRememberComposerDefaults && previous.onOpenConversationWindow === next.onOpenConversationWindow && previous.isMaximized === next.isMaximized && previous.isMuted === next.isMuted && previous.onMinimize === next.onMinimize && previous.onToggleMaximize === next.onToggleMaximize && previous.onShowMessage === next.onShowMessage && previous.workspaceAgentProbes === next.workspaceAgentProbes && previous.onAgentProbeDemandChange === next.onAgentProbeDemandChange && previous.onAgentProbeRefreshRequest === next.onAgentProbeRefreshRequest && previous.providerAuthAccountLabels === next.providerAuthAccountLabels && previous.managedAgentsState === next.managedAgentsState && previous.contextMentionProviders === next.contextMentionProviders && previous.workspaceAppIcons === next.workspaceAppIcons && previous.embedded === next.embedded && previous.previewMode === next.previewMode && previous.isActive === next.isActive && previous.composerFocusRequestSequence === next.composerFocusRequestSequence && previous.newConversationRequestSequence === next.newConversationRequestSequence && previous.openSessionRequest === next.openSessionRequest && previous.prefillPromptRequest === next.prefillPromptRequest;
|
|
33347
33419
|
}
|
|
33348
33420
|
var AgentGUINode = memo4(function AgentGUINode2({
|
|
33349
33421
|
nodeId,
|
|
@@ -33371,18 +33443,16 @@ var AgentGUINode = memo4(function AgentGUINode2({
|
|
|
33371
33443
|
onCapabilitySettingsRequest,
|
|
33372
33444
|
onAgentProviderLogin,
|
|
33373
33445
|
accountMenuState = null,
|
|
33374
|
-
|
|
33375
|
-
|
|
33376
|
-
|
|
33446
|
+
agents = [],
|
|
33447
|
+
agentsLoading = false,
|
|
33448
|
+
allAgentsPresentation = null,
|
|
33377
33449
|
slashCommandFallbackMode = "provider-default",
|
|
33378
|
-
|
|
33379
|
-
|
|
33380
|
-
|
|
33381
|
-
|
|
33450
|
+
renderAgentsEmpty,
|
|
33451
|
+
renderAgentUnavailableState,
|
|
33452
|
+
renderAgentReadinessState,
|
|
33453
|
+
onAgentAvailabilityAction,
|
|
33382
33454
|
renderSidebarFooter,
|
|
33383
|
-
|
|
33384
|
-
providerReadinessGates = null,
|
|
33385
|
-
defaultProviderTargetId = null,
|
|
33455
|
+
defaultAgentTargetId = null,
|
|
33386
33456
|
onWorkspaceFileReferencesAdded,
|
|
33387
33457
|
onOpenConversationWindow,
|
|
33388
33458
|
onClose,
|
|
@@ -33419,6 +33489,67 @@ var AgentGUINode = memo4(function AgentGUINode2({
|
|
|
33419
33489
|
() => typeof i18n?.t === "function" ? createWorkspaceFileManagerI18nRuntime(i18n) : null,
|
|
33420
33490
|
[i18n]
|
|
33421
33491
|
);
|
|
33492
|
+
const normalizedAgents = useMemo12(
|
|
33493
|
+
() => normalizeAgentGUIAgents(agents),
|
|
33494
|
+
[agents]
|
|
33495
|
+
);
|
|
33496
|
+
const internalAgentTargets = useMemo12(
|
|
33497
|
+
() => projectAgentGUIAgentsToInternalTargets(normalizedAgents),
|
|
33498
|
+
[normalizedAgents]
|
|
33499
|
+
);
|
|
33500
|
+
const agentByTargetId = useMemo12(
|
|
33501
|
+
() => new Map(
|
|
33502
|
+
normalizedAgents.map((agent) => [agent.agentTargetId, agent])
|
|
33503
|
+
),
|
|
33504
|
+
[normalizedAgents]
|
|
33505
|
+
);
|
|
33506
|
+
const selectedDirectoryAgent = useMemo12(() => {
|
|
33507
|
+
const selectedAgentTargetId = state.agentTargetId?.trim() || defaultAgentTargetId?.trim() || "";
|
|
33508
|
+
return agentByTargetId.get(selectedAgentTargetId) ?? normalizedAgents[0] ?? null;
|
|
33509
|
+
}, [
|
|
33510
|
+
agentByTargetId,
|
|
33511
|
+
defaultAgentTargetId,
|
|
33512
|
+
normalizedAgents,
|
|
33513
|
+
state.agentTargetId
|
|
33514
|
+
]);
|
|
33515
|
+
const internalProviderReadinessGates = useMemo12(() => {
|
|
33516
|
+
if (!selectedDirectoryAgent || selectedDirectoryAgent.availability.status === "ready") {
|
|
33517
|
+
return {};
|
|
33518
|
+
}
|
|
33519
|
+
const agentTargetId = selectedDirectoryAgent.agentTargetId;
|
|
33520
|
+
return {
|
|
33521
|
+
[selectedDirectoryAgent.provider]: {
|
|
33522
|
+
status: selectedDirectoryAgent.availability.status,
|
|
33523
|
+
pendingAction: selectedDirectoryAgent.availability.pendingAction ?? null,
|
|
33524
|
+
onAction: (_provider, action) => {
|
|
33525
|
+
onAgentAvailabilityAction?.({ agentTargetId, action });
|
|
33526
|
+
}
|
|
33527
|
+
}
|
|
33528
|
+
};
|
|
33529
|
+
}, [onAgentAvailabilityAction, selectedDirectoryAgent]);
|
|
33530
|
+
const renderInternalAgentUnavailableState = useMemo12(() => {
|
|
33531
|
+
if (!renderAgentUnavailableState) {
|
|
33532
|
+
return void 0;
|
|
33533
|
+
}
|
|
33534
|
+
return ({ target }) => {
|
|
33535
|
+
const agentTargetId = target.agentTargetId?.trim() || target.targetId;
|
|
33536
|
+
const agent = agentByTargetId.get(agentTargetId);
|
|
33537
|
+
return agent ? renderAgentUnavailableState({ agent }) : null;
|
|
33538
|
+
};
|
|
33539
|
+
}, [agentByTargetId, renderAgentUnavailableState]);
|
|
33540
|
+
const renderInternalAgentReadinessState = useMemo12(() => {
|
|
33541
|
+
if (!renderAgentReadinessState) {
|
|
33542
|
+
return void 0;
|
|
33543
|
+
}
|
|
33544
|
+
return ({ target, showAllProviders }) => {
|
|
33545
|
+
const agentTargetId = target?.agentTargetId?.trim() || target?.targetId;
|
|
33546
|
+
const agent = agentTargetId ? agentByTargetId.get(agentTargetId) : selectedDirectoryAgent;
|
|
33547
|
+
return agent ? renderAgentReadinessState({
|
|
33548
|
+
agent,
|
|
33549
|
+
showAllAgents: showAllProviders
|
|
33550
|
+
}) : null;
|
|
33551
|
+
};
|
|
33552
|
+
}, [agentByTargetId, renderAgentReadinessState, selectedDirectoryAgent]);
|
|
33422
33553
|
const handleLinkAction = useCallback13(
|
|
33423
33554
|
(action) => {
|
|
33424
33555
|
const agentTargetId = state.agentTargetId?.trim() || null;
|
|
@@ -33543,12 +33674,10 @@ var AgentGUINode = memo4(function AgentGUINode2({
|
|
|
33543
33674
|
data: state,
|
|
33544
33675
|
openSessionRequest,
|
|
33545
33676
|
prefillPromptRequest,
|
|
33546
|
-
providerTargets,
|
|
33547
|
-
providerTargetsLoading,
|
|
33548
|
-
|
|
33549
|
-
|
|
33550
|
-
providerReadinessGates,
|
|
33551
|
-
defaultProviderTargetId,
|
|
33677
|
+
providerTargets: internalAgentTargets,
|
|
33678
|
+
providerTargetsLoading: agentsLoading,
|
|
33679
|
+
providerReadinessGates: internalProviderReadinessGates,
|
|
33680
|
+
defaultAgentTargetId,
|
|
33552
33681
|
previewMode,
|
|
33553
33682
|
onDataChange: handleDataChange,
|
|
33554
33683
|
onRememberComposerDefaults,
|
|
@@ -33806,6 +33935,7 @@ var AgentGUINode = memo4(function AgentGUINode2({
|
|
|
33806
33935
|
planImplementationSend: t("agentHost.agentGui.planImplementationSend"),
|
|
33807
33936
|
planImplementationSkip: t("agentHost.agentGui.planImplementationSkip"),
|
|
33808
33937
|
noRunningResponse: t("agentHost.agentGui.noRunningResponse"),
|
|
33938
|
+
agentsEmpty: t("agentHost.agentGui.agentsEmpty"),
|
|
33809
33939
|
empty: t("agentHost.agentGui.empty", { provider: displayProviderLabel }),
|
|
33810
33940
|
homeSuggestions: buildAgentHomeSuggestions(
|
|
33811
33941
|
t,
|
|
@@ -34430,10 +34560,10 @@ var AgentGUINode = memo4(function AgentGUINode2({
|
|
|
34430
34560
|
{
|
|
34431
34561
|
viewModel,
|
|
34432
34562
|
renderSidebarFooter,
|
|
34433
|
-
renderProviderRailEmpty,
|
|
34434
|
-
renderProviderUnavailableState,
|
|
34435
|
-
renderProviderReadinessGateState,
|
|
34436
|
-
providerRailAllPresentation,
|
|
34563
|
+
renderProviderRailEmpty: renderAgentsEmpty,
|
|
34564
|
+
renderProviderUnavailableState: renderInternalAgentUnavailableState,
|
|
34565
|
+
renderProviderReadinessGateState: renderInternalAgentReadinessState,
|
|
34566
|
+
providerRailAllPresentation: allAgentsPresentation,
|
|
34437
34567
|
slashCommandFallbackMode,
|
|
34438
34568
|
actions: viewActions,
|
|
34439
34569
|
isActive,
|
|
@@ -34528,7 +34658,6 @@ export {
|
|
|
34528
34658
|
AgentGuiI18nProvider,
|
|
34529
34659
|
AgentQueuedPromptRuntimeProvider,
|
|
34530
34660
|
agentActivityRuntimeCapabilityEnabled,
|
|
34531
|
-
agentGUIDefaultTargetProviders,
|
|
34532
34661
|
agentGuiDockIconUrl,
|
|
34533
34662
|
agentGuiDockIconUrls,
|
|
34534
34663
|
agentGuiI18nModule,
|
|
@@ -34536,15 +34665,10 @@ export {
|
|
|
34536
34665
|
agentHostSnapshotFromAgentActivitySnapshot,
|
|
34537
34666
|
buildAgentActivitySnapshotProjection,
|
|
34538
34667
|
createAgentQueuedPromptRuntime,
|
|
34539
|
-
createLocalAgentGUIProviderTarget,
|
|
34540
|
-
createLocalAgentGUIProviderTargets,
|
|
34541
|
-
createSharedAgentGUIProviderTarget,
|
|
34542
34668
|
getAgentActivityRuntime,
|
|
34543
34669
|
getAgentCustomMentionKind,
|
|
34544
34670
|
getOptionalAgentActivityRuntime,
|
|
34545
|
-
|
|
34546
|
-
localAgentGUIProviderTargetId,
|
|
34547
|
-
normalizeAgentGUIProviderTargets,
|
|
34671
|
+
normalizeAgentGUIAgents,
|
|
34548
34672
|
preloadAgentMentionBrowse,
|
|
34549
34673
|
projectCoreSessionStatus,
|
|
34550
34674
|
registerAgentCustomMentionKind,
|
|
@@ -34552,7 +34676,6 @@ export {
|
|
|
34552
34676
|
resetAgentCustomMentionKindsForTests,
|
|
34553
34677
|
resetAgentQueuedPromptRuntimeForTests,
|
|
34554
34678
|
resolveAgentGUIExpandedWindowFrame,
|
|
34555
|
-
resolveAgentGUIProviderTarget,
|
|
34556
34679
|
selectNeedsAttentionCount2 as selectNeedsAttentionCount,
|
|
34557
34680
|
selectNeedsAttentionItems2 as selectNeedsAttentionItems,
|
|
34558
34681
|
setAgentActivityRuntimeForTests,
|